Dies ist eine alte Version des Dokuments!
Training
Variablen
Was sind Variablen und was nützen sie uns?
Eine Variable ist ein Behälter, in dem Daten gespeichert werden können. Stelle dir z.B. einen Koffer vor, in dem du etwas aufbewahren kannst. Die Vorteile von Variablen sind:
- das Speichern von Werten,
- das automatische Anpassen von Werten,
- ,dass Variablen das Programm agiler machen,
- ,dass Variablen Redundanzen vermeiden können,
- Das Verbessern der Lesbarkeit, der Dynamik und der Anpassbarkeit,
- ,dass Variablen bei der Modularisierung helfen,
- und sich dadurch die Logik von Daten trennen lässt.
Aufgabe 1
Verändern Sie das kleine Programm so, dass
A) Eine Treppe beliebiger Länge gebaut werden kann.
B) Eine Treppe mit verschiedenen Baumaterialien gebaut werden kann.
C)* Eine Treppe verschiedener Höhe gebaut wird.
agent.set_assist(PLACE_ON_MOVE, True) # Agent baut, wenn er sich bewegt agent.set_assist(DESTROY_OBSTACLES,True) # Agent zerstört Hindernisse beim Bauen agent.set_item(RED_CONCRETE,64,1) # 64 Blöcke Sandstein ins erste Fach des Inventars legen agent.move(FORWARD,3) agent.turn(LEFT) agent.move(UP,1) agent.set_assist(PLACE_ON_MOVE, False) agent.move(FORWARD,1) agent.turn(LEFT) agent.set_assist(PLACE_ON_MOVE, True) agent.move(FORWARD,4)
Mögliche Lösungen Aufgabe 1
agent.set_assist(PLACE_ON_MOVE, True) # Agent baut, wenn er sich bewegt agent.set_assist(DESTROY_OBSTACLES,True) # Agent zerstört Hindernisse beim Bauen agent.set_item(RED_CONCRETE,64,1) # 64 Blöcke Sandstein ins erste Fach des Inventars legen #Variablen laenge =5 material = SANDSTONE agent.set_item(material,64,1) #Das Bauen agent.move(FORWARD,3) agent.turn(LEFT) agent.move(UP,1) agent.set_assist(PLACE_ON_MOVE, False) agent.move(FORWARD,1) agent.turn(LEFT) agent.set_assist(PLACE_ON_MOVE, True) agent.move(FORWARD,4)
Funktionen
Warum braucht es Funktionen?
Funktion oder Prozedur (die beiden Begriffe werden hier als Synonym betrachtet) bezeichnet ein Unterprogramm, das durch seinen Namen aufgerufen werden kann. Die Vorteile von Funktionen sind:
- das Vermeiden Redundanzen und das Fördern die Wiederverwendbarkeit
- die bessere Lesbarkeit,
- das Programm wird modularer,
- Komplexe Logikabfolgen werden gekapselt,
- die Fehlerbehebung und Wartung vereinfacht sich,
- eine Teamarbeit ist besser möglich,
- die Wartung und Fehlerbehebung verbessert sich.
Aufgabe 2
Erstellen Sie aus der Aufgabe von vorhin eine Funktion mit dem Namen ‘'treppe’', die eine Treppe baut. Die Höhe ist dabei 2 und die Länge auf 5 festgelegt.
Mögliche Lösung Aufgabe 2
agent.set_assist(PLACE_ON_MOVE, True) # Agent baut, wenn er sich bewegt agent.set_assist(DESTROY_OBSTACLES,True) # Agent zerstört Hindernisse beim Bauen agent.set_item(RED_CONCRETE,64,1) # 64 Blöcke Sandstein ins erste Fach des Inventars legen #Variablen laenge =5 material = SANDSTONE agent.set_item(material,64,1) #Das Bauen def treppe(): agent.move(FORWARD,5) agent.turn(LEFT) agent.move(UP,1) agent.set_assist(PLACE_ON_MOVE, False) agent.move(FORWARD,1) agent.turn(LEFT) agent.set_assist(PLACE_ON_MOVE, True) agent.move(FORWARD,6) #Das Aufrufen der Funktion treppe()
Warum sind Parameter innerhalb einer Funktion nützlich?
Wenn man mit ‘def’ eine eigene Funktion definiert, kann man diese flexibler machen, indem man Parameter verwendet. Dies sind Variablen, die beim Aufruf der Funktion übergeben werden und dann innerhalb der Funktion wie lokale Variablen funktionieren. Um einige Vorteile von Parametern innerhalb von Funktionen zu nennen:
- Es ergibt eine dynamische Eingabe,
- Die Funktion kann wiederverwendet werden,
- Eine bessere Modularität und Lesbarkeit sind gewährleistet,
- Achtung, um eine Funktion zu „starten“, muss diese aufgerufen werden!
Aufgabe 3
Erstellen eine Funktion treppe2(laenge, material), die eine Treppe baut, dabei soll die Länge und das Material festgelegt werden können.
Mögliche Lösung Aufgabe 3
agent.set_assist(PLACE_ON_MOVE, True) # Agent baut, wenn er sich bewegt agent.set_assist(DESTROY_OBSTACLES,True) # Agent zerstört Hindernisse beim Bauen agent.set_item(RED_CONCRETE,64,1) # 64 Blöcke Sandstein ins erste Fach des Inventars legen #Variablen laenge =5 material = SANDSTONE agent.set_item(material,64,1) #Das Bauen def treppe2(laenge,material): agent.set_item(material,64,1) agent.move(FORWARD, laenge) agent.turn(LEFT) agent.move(UP,1) agent.set_assist(PLACE_ON_MOVE, False) agent.move(FORWARD,1) agent.turn(LEFT) agent.set_assist(PLACE_ON_MOVE, True) agent.move(FORWARD, laenge+1) #Das Aufrufen der Funktion treppe2(4,RED_SANDSTONE) </panel> </accordion> ==== Warum ist eine while-Schleife nützlich? ==== <WRAP center nicebox orange> while-Schleifen werden verwendet, wenn man nicht weiss, wie oft der Schleifeninhalt wiederholt werden soll. Die Anzahl Wiederholungen kann beispielsweise von einer Eingabe abhängen. While-Schleifen sind können auch als Endlos-Schleife formuliert werden (while true: …) Einige nennenswerte Vorteile sind: * Die Flexibilität durch Bedingungsgesteuerte Ausführung * Die Dynamische Kontrolle * While ist geeignet für Endlos-Schleifen (''while True'') * Komplexe Bedingungen können mit while umgesetzt werden. * While ist nützlich für Iterationen ohne definierte Anzahl </WRAP> <WRAP nicebox green> **Aufgabe 4**\\ Erstellen eine Funktion ''treppe3(laenge, material, hoehe)'', die eine Treppe baut, dabei soll die Länge, die Höhe (wie viele Stufen) und das Material festgelegt werden können. Dabei darf es für die Treppenhöhe nur eine gerade Anzahl Stufen geben. Dabei soll eine while-Schleife verwendet werden. </WRAP> <accordion> <panel title="Mögliche Lösung Aufgabe 2"> <code python>