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:04] – hof | gf_informatik:karatutorial:leaves [2026-08-28 06:43] (aktuell) – hof | ||
|---|---|---|---|
| Zeile 21: | 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 27: | 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 51: | 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 73: | 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 80: | Zeile 110: | ||
| < | < | ||
| | | ||
| - | T>LLLLLLLLT | + | T>L L L L T |
| | | ||
| - | TLLLLLLLTLT | + | TLLL LLT T |
| | | ||
| | | ||
| | | ||
| - | TLTLLLLLTLT | + | TLT TLT |
| | | ||
| | | ||
| Zeile 96: | Zeile 126: | ||
| kara.turnRight() | kara.turnRight() | ||
| kara.move() | kara.move() | ||
| - | kara.removeLeaf() | + | |
| + | | ||
| </ | </ | ||
| < | < | ||
| Zeile 102: | Zeile 133: | ||
| </ | </ | ||
| </ | </ | ||
| - | |||
| ### Verzweigung mit Alternative | ### Verzweigung mit Alternative | ||
| Zeile 122: | Zeile 152: | ||
| kara.move() | kara.move() | ||
| < | < | ||
| - | assert world_leaves() == 3, "keine Blätter erwartet" | + | assert world_leaves() == 3 |
| </ | </ | ||
| </ | </ | ||
| Zeile 160: | 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 193: | 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() | ||