Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:karatutorial:leaves [2026-08-27 13:00] – hof | gf_informatik:karatutorial:leaves [2026-08-28 06:43] (aktuell) – hof | ||
|---|---|---|---|
| Zeile 9: | Zeile 9: | ||
| * Mehrere Iterationen | * Mehrere Iterationen | ||
| * Verschachtelte Iteration | * Verschachtelte Iteration | ||
| + | * Selektion | ||
| + | * mit Blatt (`if kara.onLeaf()`) | ||
| + | * if-else (Blätter sammeln / legen) | ||
| + | * L3: | ||
| * Algorithmik | * Algorithmik | ||
| * Von der Idee zum Programm: | * Von der Idee zum Programm: | ||
| Zeile 17: | Zeile 21: | ||
| * Sequenz | * Sequenz | ||
| * Iteration (was ist die Bedingung für `while`?) | * Iteration (was ist die Bedingung für `while`?) | ||
| + | * L4: | ||
| + | * Bool' | ||
| + | * L5: | ||
| + | * Variablen | ||
| + | * Schleifen mit Zähler | ||
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 23: | Zeile 32: | ||
| Neben Pilzen gibt es in der Kara-Welt auch Kleeblätter (en. _leaf_). Während ein einzelner Pilz von Kara herumgeschoben werden kann, können Blätter gelegt und aufgenommen werden. Die folgenden Funktionen stehen zur Verfügung: | Neben Pilzen gibt es in der Kara-Welt auch Kleeblätter (en. _leaf_). Während ein einzelner Pilz von Kara herumgeschoben werden kann, können Blätter gelegt und aufgenommen werden. Die folgenden Funktionen stehen zur Verfügung: | ||
| - | * `kara.onLeaf()` wahr (`True`), falls sich Kara auf einem Kleeblatt befindet. | + | * `kara.onLeaf()` |
| * `kara.putLeaf()` legt ein Blatt ab. | * `kara.putLeaf()` legt ein Blatt ab. | ||
| + | * Schlägt fehlt und beendet das Programm, wenn bereits ein Blatt vorhanden ist. | ||
| * `kara.removeLeaf()` nimmt ein Blatt auf. | * `kara.removeLeaf()` nimmt ein Blatt auf. | ||
| + | * Schlägt fehlt und beendet das Programm, wenn kein Blatt vorhanden ist. | ||
| Zeile 47: | Zeile 58: | ||
| </ | </ | ||
| </ | </ | ||
| - | |||
| ### Verzweigungen | ### Verzweigungen | ||
| Wir können nur Blätter aufnehmen, wenn eines vorhanden ist. Um eine Anweisung nur dann auszuführen, | Wir können nur Blätter aufnehmen, wenn eines vorhanden ist. Um eine Anweisung nur dann auszuführen, | ||
| Zeile 69: | Zeile 79: | ||
| Der Fachbegriff für eine Verzweigung ist **Selektion** (Auswahl einer Anweisung). | Der Fachbegriff für eine Verzweigung ist **Selektion** (Auswahl einer Anweisung). | ||
| + | |||
| + | ### Aufgabe: Blätter verteilen | ||
| + | |||
| + | Schreibe Code, der gerade umgekehrt funktioniert: | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | < | ||
| + | assert world_leaves() == 8, "8 Blätter erwartet" | ||
| + | </ | ||
| + | < | ||
| + | while not kara.treeFront(): | ||
| + | if not kara.onLeaf(): | ||
| + | kara.putLeaf() | ||
| + | kara.move() | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| ### Aufgabe Labyrinth-Gärtner | ### Aufgabe Labyrinth-Gärtner | ||
| Zeile 76: | Zeile 110: | ||
| < | < | ||
| | | ||
| - | T>LLLLLLLLT | + | T>L L L L T |
| | | ||
| - | TLLLLLLLTLT | + | TLLL LLT T |
| | | ||
| | | ||
| | | ||
| - | TLTLLLLLTLT | + | TLT TLT |
| | | ||
| | | ||
| Zeile 92: | Zeile 126: | ||
| kara.turnRight() | kara.turnRight() | ||
| kara.move() | kara.move() | ||
| - | kara.removeLeaf() | + | |
| + | | ||
| </ | </ | ||
| < | < | ||
| Zeile 98: | Zeile 133: | ||
| </ | </ | ||
| </ | </ | ||
| - | |||
| ### Verzweigung mit Alternative | ### Verzweigung mit Alternative | ||
| Zeile 118: | Zeile 152: | ||
| kara.move() | kara.move() | ||
| < | < | ||
| - | assert world_leaves() == 3, "keine Blätter erwartet" | + | assert world_leaves() == 3 |
| </ | </ | ||
| </ | </ | ||
| - | |||
| ### Aufgabe: Blattwanderung | ### Aufgabe: Blattwanderung | ||
| Schreibe Python-Code mit folgenden Eigenschaften: | Schreibe Python-Code mit folgenden Eigenschaften: | ||
| - | * Kara soll sich folgende Anweisungen befolgen, solange sie auf keinen Pilz stösst. | + | * Kara soll folgende Anweisungen befolgen, solange sie auf keinen Pilz stösst. |
| * Wenn Kara auf einem Blatt steht, | * Wenn Kara auf einem Blatt steht, | ||
| * soll sie nach links wenden; | * soll sie nach links wenden; | ||
| Zeile 157: | Zeile 190: | ||
| </ | </ | ||
| < | < | ||
| - | assert kara.x == 8, "Kara sollte | + | assert kara.x == 8, "Kara sollte |
| - | assert kara.y == 1, "Kara sollte | + | assert kara.y == 1, "Kara sollte |
| </ | </ | ||
| </ | </ | ||
| + | ### Aufgabe: Pilzsuche | ||
| + | Lies das folgende Python-Programm für Kara und beschreibe es in natürlicher Sprache. Bestimme, auf welchem Feld Kara landen wird. | ||
| + | |||
| + | <WRAP group> | ||
| + | <WRAP column twothirds> | ||
| + | <code python> | ||
| + | while not kara.treeFront(): | ||
| + | if kara.onLeaf(): | ||
| + | kara.turnLeft() | ||
| + | if kara.mushroomFront(): | ||
| + | kara.turnRight() | ||
| + | kara.move() | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column third> | ||
| + | {{.: | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <nodisp 2> | ||
| + | ++++Lösung| | ||
| + | Kara landet auf dem Feld **B6**: | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | T L | ||
| + | T M T | ||
| + | T M ML T | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | while not kara.treeFront(): | ||
| + | if kara.onLeaf(): | ||
| + | kara.turnLeft() | ||
| + | if kara.mushroomFront(): | ||
| + | kara.turnRight() | ||
| + | kara.move() | ||
| + | </ | ||
| + | ++++ | ||
| + | </ | ||
| ### Aufgabe Golfplatz (schwierig) | ### Aufgabe Golfplatz (schwierig) | ||
| Zeile 190: | Zeile 269: | ||
| while kara.onLeaf(): | while kara.onLeaf(): | ||
| kara.removeLeaf() | kara.removeLeaf() | ||
| - | # Wenden, bis Bahn frei | + | # Wenden |
| - | | + | |
| kara.turnRight() | kara.turnRight() | ||
| kara.move() | kara.move() | ||