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:logik [2026-08-28 12:26] – [Präzedenz (Operatorrangfolge)] hof | gf_informatik:karatutorial:logik [2026-08-30 19:43] (aktuell) – [Präzedenz (Operatorrangfolge)] hof | ||
|---|---|---|---|
| Zeile 10: | Zeile 10: | ||
| Die Funktion `kara.treeFront()` gibt einen _Wahrheitswert_ zurück: Entweder wahr oder falsch, in Python `True` oder `False`. Kara soll solange weiterlaufen, | Die Funktion `kara.treeFront()` gibt einen _Wahrheitswert_ zurück: Entweder wahr oder falsch, in Python `True` oder `False`. Kara soll solange weiterlaufen, | ||
| - | In der Informatik nennen wir einen Wahrheitswert auch [[wpde> | + | In der Informatik nennen wir einen Wahrheitswert auch [[wpde> |
| ### Konjunktion (Und-Verknüpfung) | ### Konjunktion (Und-Verknüpfung) | ||
| - | Betrachte folgendes Beispiel: Kara soll immer dann ein neues Blatt legen, wenn rechts von ihr ein Baum steht **und** noch keines vorhanden ist: | + | Betrachte folgendes Beispiel: Kara soll immer dann ein neues Blatt legen, wenn noch keins vorhanden ist **und** |
| < | < | ||
| Zeile 34: | Zeile 34: | ||
| **Merke**: | **Merke**: | ||
| - | * mit dem Schlüsselwort `and` können | + | * mit dem Schlüsselwort `and` können |
| * Eine Und-Verknüpfung heisst **[[wpde> | * Eine Und-Verknüpfung heisst **[[wpde> | ||
| * mit `kara.treeRight()` und `kara.treeLeft()` können wir Bäume neben Kara feststellen. | * mit `kara.treeRight()` und `kara.treeLeft()` können wir Bäume neben Kara feststellen. | ||
| * `not` bindet enger als `and`: das `not kara.onLeaf()` negiert nur die Blatt-Bedingung, | * `not` bindet enger als `and`: das `not kara.onLeaf()` negiert nur die Blatt-Bedingung, | ||
| - | #### Aufgabe Tunnel | + | #### Aufgabe |
| Hilf Kara, den Tunnel zu markieren. Schreibe Python-Code wie folgt: | Hilf Kara, den Tunnel zu markieren. Schreibe Python-Code wie folgt: | ||
| Zeile 69: | Zeile 69: | ||
| </ | </ | ||
| </ | </ | ||
| - | |||
| ### Disjunktion (Oder-Verknüpfung) | ### Disjunktion (Oder-Verknüpfung) | ||
| - | Natürlich | + | Wir können auch zwei Booleans so verknüpfen, |
| + | #### Aufgabe D2: Tunnelräumung | ||
| Schreibe Code, der immer dann ein Blatt entfernt, wenn links oder rechts von Kara ein Baum steht. Stoppe, wenn du einen Baum vor dir hast. | Schreibe Code, der immer dann ein Blatt entfernt, wenn links oder rechts von Kara ein Baum steht. Stoppe, wenn du einen Baum vor dir hast. | ||
| Zeile 102: | Zeile 102: | ||
| - Disjunktion (`or`) | - Disjunktion (`or`) | ||
| - | Im Beispiel: | + | Im Beispiel |
| * beim ersten Blatt dreht Kara links (die erste Hälfte der Disjunktion ist wahr: beide Bedingungen `kara.onLeaf() and not kara.treeLeft()` sind wahr). | * beim ersten Blatt dreht Kara links (die erste Hälfte der Disjunktion ist wahr: beide Bedingungen `kara.onLeaf() and not kara.treeLeft()` sind wahr). | ||
| * beim Pilz dreht Kara ebenso links (die zweite Hälftet der Disjunktion ist wahr: `kara.mushroomFront()`). | * beim Pilz dreht Kara ebenso links (die zweite Hälftet der Disjunktion ist wahr: `kara.mushroomFront()`). | ||
| Zeile 131: | Zeile 131: | ||
| </ | </ | ||
| - | #### Aufgabe | + | |
| + | #### Aufgabe | ||
| Betrachte folgenden Code und Karas Welt! Auf welchem Feld wird Kara am Ende des Programms sein? | Betrachte folgenden Code und Karas Welt! Auf welchem Feld wird Kara am Ende des Programms sein? | ||
| Zeile 158: | Zeile 159: | ||
| Kara landet auf `J4`. | Kara landet auf `J4`. | ||
| - | < | + | < |
| < | < | ||
| | | ||
| Zeile 184: | Zeile 185: | ||
| ++++ | ++++ | ||
| </ | </ | ||
| + | |||
| + | #### Aufgabe D4: Blätter um die Bäume | ||
| + | Schreibe Python-Code, | ||
| + | * Kara macht die folgenden Schritte, solange kein Pilz vor ihr steht: | ||
| + | * wenn links oder rechts ein Baum steht und kein Blatt vorhanden ist: | ||
| + | * dann legt sie eins hin. | ||
| + | * wenn ein Baum vor ihr ist, | ||
| + | * so wendet dreht sie einmal nach rechts. | ||
| + | * andernfalls: | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | T M TTT TT | ||
| + | T > | ||
| + | T T TTT T | ||
| + | TT TTT LT | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | < | ||
| + | while not kara.mushroomFront(): | ||
| + | if (kara.treeLeft() or kara.treeRight()) and not kara.onLeaf(): | ||
| + | kara.putLeaf() | ||
| + | if kara.treeFront(): | ||
| + | kara.turnRight() | ||
| + | else: | ||
| + | kara.move() | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | | ||
| + | T M TTT TT | ||
| + | T L LLLL LT | ||
| + | T T TTT LT | ||
| + | | ||
| + | | ||
| + | TTL MT TT | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||