8.581
Bearbeitungen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Jneug (Diskussion | Beiträge) 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>.}} | |||
{{Inhalt/Lerntheke}} | {{Inhalt/Lerntheke}} |
Bearbeitungen