Parameter
Unterprogramme mit einem Parameter
In der folgenden Aufgabe wird das Konzept von Parametern eingeführt. Sie ermöglichen, dass man vorher festgelegte/bestimmte Variablen nutzt, um Unterprogramme flexibler einzusetzen.
Aufgabe: Ein Unterprogramm mit einem Parameter
Wir analysieren das folgende kurze Programm:
# Unterprogramm
def walk(distance):
i = 0
while i < distance:
kara.move()
i = i+1
# Hauptprogramm
kara.putLeaf()
walk(3)
kara.putLeaf()
kara.turnRight()
kara.turnRight()
walk(3)
(a) Verschaffe dir einen Überblick, indem du das Programm einmal ausprobierst. Stelle dafür Kara irgendwo in die Landschaft und beobachte, was passiert, wenn das Programm abläuft.
(b) Beschreibe möglichst präzise, was das Unterprogramm walk(...)
leistet. Welche Rolle spielt dabei die Variable distance
? Was passiert, wenn man nicht walk(3)
, sondern walk(5)
etc. schreibt? Schaue dir danach die nachfolgende Erklärung an.
Bei dieser Variable handelt es sich um einen Parameter. In Python ist es möglich, dass ein Unterprogramm einen Parameter nutzt:
- Im Unterprogrammaufruf wird dann nicht nur das Unterprogramm aufgerufen (z.B.
turnAround()
), sondern auch ein Parameter dem Unterprogramm „übergeben“:walk(3)
oderwalk(5)
. Ist kein Parameter vorgesehen, bleibt die Klammer leer; das erklärt auch, warum wirmove()
etc. mit den Klammern schreiben müssen. - In der Unterprogrammdeklaration wird festgelegt, was der Parameter eigentlich tun soll: Hier beeinflusst er, wie lange die Schleife in den Zeilen 4 bis 6 ausgeführt wird.
(c) Erkläre, wozu die Zeile 6 hier nötig ist. Was würde passieren, wenn man sie weglassen würde?
(d) Lasse das Unterprogramm unverändert. Passe das Hauptprogramm so an, dass Kara ein Quadrat der Seitenlänge 5 abläuft und die Eckpunkte mit Blättern markiert. Nutze dafür das Unterprogramm.
(e) Passe das Unterprogramm so an, dass Kara nach jedem Schritt ein Kleeblatt ablegt. Ändere auch den Namen des Unterprogramms, z.B. in walkAndPut(...)
.
(f) Optional: Deklariere nun auch ein Unterprogramm quadrat(seitenlaenge)
, das dazu führt, dass Kara ein Quadrat mit der Seitenlänge seitenlaenge
läuft und die Kanten mit Kleeblättern markiert. Wenn du möchtest, kannst du auch Unterprogramme für andere geometrische Formen erstellen.