Lernpfad:Lerntheke Marsrover/26: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{Karte}}
{{Karte|Hilfe=8,11}}
 
Neben der <code>while</code>-Schleife gibt es noch zwei andere Schleifen-Strukturen in {{Java}}: Die <code>do</code>-<code>while</code>-Schleife und die <code>for</code>-Schleife.
 
Bei der <code>while</code>-Schleife steht die ''Bedingung'' ganz am Anfang, im Schleifenkopf. Daher nennt man sie auch ''kopfgesteuerte Schleife''.
<syntaxhighlight lang="Java">
while( Bedingung ) {
  // Befehle
}
</syntaxhighlight>
 
Bei der <code>do</code>-<code>while</code>-Schleife steht die Bedingung am Ende, nach dem Schleifenrumpf. Daher nennt man sie ''nachgesteuerte Schleife''.
<syntaxhighlight lang="Java">
do {
  // Befehle
} while( Bedingung );
</syntaxhighlight>
 
{{Aufgabe:Start|Icon=Greenfoot Rover.png}}
Ü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.
 
<syntaxhighlight lang="java">
public void act() {
    while( !huegelVorhanden("vorne") ) {
        setzeMarke();
        fahre();
    }
}
</syntaxhighlight>
{{Aufgabe:End}}
{{Roverkarte|.\n.\n.\n.\n.........RH}}
{{Lösung:Start|Nachgesteuerte Schleife}}
<syntaxhighlight lang="java">
public void act() {
    do {
        setzeMarke();
        fahre();
    } while( !huegelVorhanden("vorne") );
}
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:Start|Vergleich der Schleifenarten}}
DIe nachgesteuerte Schleife wird immer ''mindestens einmal'' ausgeführt, auch, wenn die Bedingung sofort <code>false</code> ist. Die kopfgesteuerte Schleife wird ggf. gar nicht ausgeführt.
{{Lösung:End}}
 
Die <code>for</code>-Schleife wird vor allem dann benutzt, wenn ein Programmteil eine bestimmte Anzahl Male wiederholt werden soll. Daher nennt man sie ''Zählschleife''.
<syntaxhighlight lang="Java">
for( int i = 0; i < 100; i += 1 ) {
  // Befehle
}
</syntaxhighlight>
 
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 <code>false</code> 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).
 
{{Aufgabe:Start|Icon=Greenfoot Rover.png}}
Ü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.
 
<syntaxhighlight lang="Java">
public void act() {
    for( int i = 0; i < 8; i += 1 ) {
        fahre();
        if( i%2 == 3 ) {
            setzeMarke();
        }
    }
}
</syntaxhighlight>
{{Aufgabe:End}}
{{Hinweis|Der Modulo-Operator <code>a%b</code> berechnet den Rest, wenn man <code>a</code> durch <code>b</code> teilt. Zum Beispiel gilt <code>5%3{{=}}{{=}}2</code>.}}
 


{{Kasten|
Diese Karte ist noch nicht ganz fertig. Such dir erstmal eine der anderen Karten im Index aus.
|Farbe={{Farbe:Warnung}}}}
<!-- do-while und Zählschleifen -->


{{Inhalt/Lerntheke}}
{{Inhalt/Lerntheke}}
8.581

Bearbeitungen