Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
phtg:fdif:karatutorial:loops [2024-06-26 08:07] – [Wiederholungen und Schleifen] hofphtg:fdif:karatutorial:loops [2024-07-04 20:02] (aktuell) – [Wiederholungen und Schleifen] hof
Zeile 1: Zeile 1:
 ## Wiederholungen und Schleifen ## Wiederholungen und Schleifen
-Statt einen Befehl mehrere Male hintereinander hinzuschreiben, können wir eine Anweisung oder eine ganze Sequenz auch mit einer _Schleife_ wiederholen. Die untenstehende Schleife lässt Kara _solange_ (Englisch: `while`) vorwärts laufen, bis sie vor einem Pilz steht.+Statt einen Befehl mehrere Male hintereinander hinzuschreiben, können wir eine Anweisung oder eine ganze Sequenz auch mit einer _Schleife_ wiederholen. Die untenstehende Schleife lässt Kara _solange_ (Englisch: _while_) vorwärts laufen, als sie **nicht** vor einem Pilz steht.
  
-Dafür können wir Kara fragen, ob auf dem Platz vor ihr ein Pilz ist, mit `kara.mushroomFront()`. Da Kara solange weiterlaufen wollen, als **kein** Pilz vor ihr ist, müssen wir den Rückgabewert gerade umdrehen, das geschieht mit dem Ausrufezeichen vor `kara`.+Dafür können wir Kara fragen, ob auf dem Platz vor ihr ein Pilz ist, mit `kara.mushroomFront()`. Da Kara solange weiterlaufen wollen, als **kein** Pilz vor ihr ist, müssen wir Karas Antwort gerade **umdrehen**, das geschieht mit dem **Ausrufezeichen** vor `kara`.
  
 <HTML> <HTML>
Zeile 26: Zeile 26:
 **Beachte:** **Beachte:**
   * Die Bedingung von `while` muss in runden Klammern stehen.   * Die Bedingung von `while` muss in runden Klammern stehen.
-  * Die zu wiederholenden Anweisungen werden in geschweiften Klammern eingeschlossen.+  * Die zu wiederholenden Anweisungen werden in geschweiften Klammern `{}` eingeschlossen. 
 +  * Sobald die Bedingung falsch wird, wird das Programm nach der Schleife fortgesetzt. 
  
 ### Aufgabe 2 ### Aufgabe 2
-Schau dir die untenstehende Kara-Welt gut an. Kannst du ein Kara-Programm schreiben, das mit zwei Schleifen zum Pilz kommt? Dafür kannst du mit `kara.treeFront()` herausfinden, ob vor Kara ein Baum steht.+Schau dir die untenstehende Kara-Welt gut an. Kannst du ein Kara-Programm schreiben, das **mit zwei Schleifen** zum Pilz kommt? Dafür kannst du mit `kara.treeFront()` herausfinden, ob vor Kara ein Baum steht.
  
 <HTML><script type="text/p5"> <HTML><script type="text/p5">
Zeile 102: Zeile 104:
 </code> </code>
 ++++ ++++
 +### Verschachtelte Schleifen
 +Eine `while`-Schleife lässt sich auch innerhalb einer anderen Schleife verschachteln.
 +#### Aufgabe 3A
 +
 +<WRAP todo>
 +Löse diese Aufgabe zu zweit oder in der Gruppe, falls du gerade in der Klasse bist!
 +</WRAP>
 +
 +Betrachte den folgenden Code! Wie wird sich Kara bewegen?
 +
 +<HTML><script type="text/p5">
 +while (!kara.mushroomFront()) {
 +  while (kara.treeFront()) {
 +    kara.turnLeft();
 +  }
 +  kara.move();
 +}
 +KaraWorld.create(
 +  `TTTTTTTTT
 +         T
 +   TTTTTT  T
 +   T>    T
 +   T TT T  T
 +        TT
 +         T
 +         T
 +   TTTTTTTTT`);
 +</script></HTML>
 +
 +Kara geht geradeaus, solange kein Pilz vor ihr steht. Wenn sie dabei auf einen Baum trifft, wendet sie nach links, bis der Weg frei ist. Funktioniert das bereits immer? Kannst du ein Labyrinth entwerfen, aus dem Kara nicht hinausfindet?
 +
 +++++Antwort|
 +Kara kann sich in _Taschen_ fangen, die sich nicht mit Links-Drehungen verlassen fangen. Wäre zum Beispiel der Baum unten rechts nicht vorhanden, würde sie nicht zum Pilz finden:
 +
 +<HTML><script type="text/p5">
 +while (!kara.mushroomFront()) {
 +  while (kara.treeFront()) {
 +    kara.turnLeft();
 +  }
 +  kara.move();
 +}
 +KaraWorld.create(
 +  `TTTTTTTTT
 +         T
 +   TTTTTT  T
 +   T>    T
 +   T TT T  T
 +         T
 +         T
 +         T
 +   TTTTTTTTT`);
 +</script></HTML>
 +++++
 +
  
 ### Weiter ### Weiter
-Gratuliere, du hast dein ersten Kara-Schleifen geschrieben! Weiter gehts mit [[phtg:fdif:karatutorial:verzweigungen]].+Gratuliere, du hast deine ersten Kara-Schleifen geschrieben! 
 + 
 +Um wirklich ein Programm schreiben zu können, das aus vielen oder sogar allen Labyrinthen findet, möchten wir etwas von der folgenden Form haben: 
 + 
 +<code javascript> 
 +while (!kara.mushroomFront()) { 
 +    // Wahl zwischen turnLeft, turnRight oder move, je nach Situation. 
 +
 +</code> 
 + 
 +Wir könnten das vielleicht mit mehreren verschachtelten Schleifen erreichen, aber Kara hat noch mehr auf Lager! 
 + 
 +Weiter gehts mit [[phtg:fdif:karatutorial:verzweigungen]].
  
  
  • phtg/fdif/karatutorial/loops.1719389265.txt.gz
  • Zuletzt geändert: 2024-06-26 08:07
  • von hof