Lernpfad:Lerntheke Marsrover/26

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Wiederholungen II

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 );
Greenfoot Rover.png
Arbeitsauftrag

Ü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();
    }
}
Kartendaten:
".\n.\n.\n.\n.........RH"
Nachgesteuerte Schleife
public void act() {
    do {
        setzeMarke();
        fahre();
    } while( !huegelVorhanden("vorne") );
}
Vergleich der Schleifenarten

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).

Greenfoot Rover.png
Arbeitsauftrag

Ü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();
        }
    }
}
Icon Info.png
Der Modulo-Operator a%b berechnet den Rest, wenn man a durch b teilt. Zum Beispiel gilt 5%3==2.
Greenfoot Rover.png
Arbeitsauftrag

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.

Endlose vorgesteuerte Schleife

Zum Beispiel:

while( true ) {
    fahre();
}

oder

int zahl i = 100;
while( i > 0 ) {
    fahre();
    i += 1;
}
Endlose nachgesteuerte Schleife

Zum Beispiel:

do {
    fahre();
} while( true );

oder

int zahl i = 100;
do {
    fahre();
    i += 1;
} while( i > 0 );
Endlose Zählschleife

Zum Beispiel:

for( int i = 1; i > 0; i+=1 ) {
    fahre();
}

oder

for( int i = 0; i != 99; i += 2 ) {
    fahre();
}