Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| ef:loesungen_beispiele [2022/09/14 10:58] – [Aufgaben A] lehmannr | ef:loesungen_beispiele [2022/09/20 15:14] (aktuell) – lehmannr | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| ==== Aufgaben A ==== | ==== Aufgaben A ==== | ||
| - | - Der Agent baut einen Block, dreht sich nach links, baut 2 Blöcke, dreht sich nach links, baut 3 Blöcke... bis 6 Blöcke. Es entsteht eine linksdrehende Spirale. Wenn er aussen angekommen ist, baut er 10 Blöcke gerade aus und baut dann erneut eine Spirale - insgesamt 4 Mal. | + | - Der Agent baut einen Block, dreht sich nach links, baut 2 Blöcke, dreht sich nach links, baut 3 Blöcke... bis 6 Blöcke. Es entsteht eine linksdrehende Spirale. Wenn er aussen angekommen ist, baut er 10 Blöcke gerade aus und baut dann erneut eine Spirale - insgesamt 4 Mal. Erst wenn die Funktion '' |
| - <Code ausführen> | - <Code ausführen> | ||
| - | - <sxh python> | + | - <sxh python> |
| - | agent.set_assist(DESTROY_OBSTACLES, | + | agent.set_assist(DESTROY_OBSTACLES, |
| def baueSpirale(richtung): | def baueSpirale(richtung): | ||
| - | for zahl in range(1,7): | + | for zahl in range(1, |
| | | ||
| | | ||
| - | for i in range(4): | + | for i in range(4): |
| baueSpirale(LEFT) | baueSpirale(LEFT) | ||
| agent.move(FORWARD, | agent.move(FORWARD, | ||
| </ | </ | ||
| + | | ||
| + | ==== Aufgaben B ==== | ||
| + | - Solange n grösser ist als 1 ruft die Funktion sich selbst auf, mit jeweils einem um 2 verkleinerten Argument. Zunächst wird rec1(10) aufgerufen. Dies zeichnet ein Quadrat der Grösse 10x10, danach teleportiert sich der Agent um 1 nach oben, 1 nach Osten und 1 nach Süden. Danach wird dieselbe Funktion aufgerufen mit dem Argument 8 und es wird ein Quadrat der Grösse 8x8 gezeichnet etc. bis 2x2 und wenn rec(0) aufgerufen wird, bricht das Programm ab. Es entsteht eine Pyramide. | ||
| + | - Die zweite Funktion '' | ||
| + | |||
| + | ==== Aufgaben C ==== | ||
| + | - Bei '' | ||
| + | - **Mutable** bedeutet veränderbar, | ||
| + | - In Python sind alle Variablentypen (Zahlen, Zeichenketten, | ||
| + | |||
| + | ==== Aufgaben D ==== | ||
| + | - Zunächst wird eine Funktion mit zwei Parametern definiert ('' | ||
| + | - Am Schluss werden '' | ||
| + | |||
| + | ==== Aufgaben E ==== | ||
| + | <sxh python> | ||
| + | |||
| + | Materialien = [RED_SANDSTONE, | ||
| + | |||
| + | for i in [0, | ||
| + | agent.set_item(Materialien[i], | ||
| + | |||
| + | for i in range(1, | ||
| + | agent.set_slot(i) | ||
| + | agent.place(BACK) | ||
| + | agent.move(FORWARD, | ||
| + | </ | ||
| + | |||
| + | ==== Aufgaben F ==== | ||
| + | <sxh python> | ||
| + | l1 = range(9) # => [0, | ||
| + | l2 = range(0, | ||
| + | l3 = range(20, | ||
| + | |||
| + | player.say(l1) | ||
| + | player.say(l2) | ||
| + | player.say(l3) | ||
| + | </ | ||
| + | |||
| + | ==== Aufgaben G ==== | ||
| + | === Linie Duo mit dem Agenten === | ||
| + | |||
| + | <sxh python> | ||
| + | def linie_duo(n, | ||
| + | agent.set_item(mat1, | ||
| + | agent.set_item(mat2, | ||
| + | for i in range(n): | ||
| + | agent.set_slot(1) | ||
| + | agent.move(FORWARD, | ||
| + | agent.place(BACK) | ||
| + | agent.set_slot(2) | ||
| + | agent.move(FORWARD, | ||
| + | agent.place(BACK) | ||
| + | |||
| + | linie_duo(5, | ||
| + | </ | ||
| + | |||
| + | === linie_duo ohne den Agenten === | ||
| + | <sxh python> | ||
| + | def linie_duo_neu(n, | ||
| + | for i in range(3, | ||
| + | blocks.place(mat1, | ||
| + | blocks.place(mat2, | ||
| + | |||
| + | linie_duo_neu(10, | ||
| + | </ | ||
| + | === linie_duo mit modulo und einem einfachen range-Befehl === | ||
| + | <sxh python> | ||
| + | def linie_duo_neu2(n, | ||
| + | for i in range(3, | ||
| + | if (i%2==0): | ||
| + | blocks.place(mat1, | ||
| + | else: | ||
| + | blocks.place(mat2, | ||
| + | |||
| + | linie_duo_neu2(10, | ||
| + | </ | ||