Lernpfad:Lerntheke Marsrover/26
Neben der while
-Schleife gibt es noch zwei andere Schleifen-Strukturen in Java: Die do
-while
-Schleife und die for
-Schleife.
Bei der while
-Schleife steht die Bedingung ganz am Anfang, im Schleifenkopf. Daher nennt man sie auch kopfgesteuerte Schleife.
while( Bedingung ) {
// Befehle
}
Bei der do
-while
-Schleife steht die Bedingung am Ende, nach dem Schleifenrumpf. Daher nennt man sie nachgesteuerte Schleife.
do {
// Befehle
} while( Bedingung );
Übernimm die gezeigte kopfgesteuerte Schleife in den Rover und führe sie einmal auf der Karte unten aus. Ändere sie dann in eine nachgesteuerte Schleife um und beobachte wieder, was passiert.
Versuche zu beschrieben, was der Unterschied zwischen den beiden Schleifenarten ist.
public void act() {
while( !huegelVorhanden("vorne") ) {
setzeMarke();
fahre();
}
}
".\n.\n.\n.\n.........RH"
public void act() {
do {
setzeMarke();
fahre();
} while( !huegelVorhanden("vorne") );
}
Die nachgesteuerte Schleife wird immer mindestens einmal ausgeführt, auch, wenn die Bedingung sofort false
ist. Die kopfgesteuerte Schleife wird ggf. gar nicht ausgeführt.
Die for
-Schleife wird vor allem dann benutzt, wenn ein Programmteil eine bestimmte Anzahl Male wiederholt werden soll. Daher nennt man sie Zählschleife.
for( int i = 0; i < 100; i += 1 ) {
// Befehle
}
In der Zählschleife wird zuerst eine Zählvariable (hier i) deklariert. Dann wird eine Bedingung festgelegt, bis wann die Schleife laufen soll (bis die Bedingung false
ist). Und schließlich wird die Schrittweite bestimmt, wie sich die Zählvariable nach jedem Durchlauf verändern soll (hier erhöht sich i immer um 1).
Übernimm die gezeigte Zählschleife in den Rover und probiere sie auf einer Zufallskarte aus. Probiere dann andere Werte für den Initialwert der Zählvariablen, die Schleifenbedingung und die Schrittweite aus.
public void act() {
for( int i = 0; i < 8; i += 1 ) {
fahre();
if( i%2 == 0 ) {
setzeMarke();
}
}
}
a%b
berechnet den Rest, wenn man a
durch b
teilt. Zum Beispiel gilt 5%3==2
.
Achtung: Machst du bei einer Wiederholung einen Fehler, dann kann es zu einer Endlosschleife kommen (also einer Schleife, die niemals anhält).
Programmiere mit jeder der drei Schleifenarten eine Endlosschleife.
Zum Beispiel:
while( true ) {
fahre();
}
oder
int zahl i = 100;
while( i > 0 ) {
fahre();
i += 1;
}
Zum Beispiel:
do {
fahre();
} while( true );
oder
int zahl i = 100;
do {
fahre();
i += 1;
} while( i > 0 );
Zum Beispiel:
for( int i = 1; i > 0; i+=1 ) {
fahre();
}
oder
for( int i = 0; i != 99; i += 2 ) {
fahre();
}
Das ist Greenfoot | Der Mars-Rover | Die Welt des Mars-Rover | Das ist Java | Die Rover-Arena | Greenfoot benutzen | Java Syntax | Variablen | Methoden | Bedingte Anweisungen | Schleifen | Objekte | Arrays | Die Fähigkeiten des Rovers | Steine analysieren I | Steine analysieren II | Strukturiertes programmieren | Programme strukturieren I | Programme strukturieren II | Fallunterscheidungen I | Anfragen | Fallunterscheidungen II | Variablen | Objektvariablen | Wiederholungen I | Wiederholungen II | Rover-Liebe | Steine analysieren III | Gefangen im Labyrinth I | Marken-Maler | Fleißige Rover | Gefangen im Labyrinth II | In der Rover-Arena | Parameter