Funktionen

Mit Hilfe von Funktionen werden Programme in kleinere, leichter zu programmierende Teilprogramme zerlegt. Funktionen sind im Prinzip benannte Programmblöcke, die in einem Programm auch mehrmals verwendet werden können. Das Schlüsselwort def leitet die Definition einer Funktion ein. Darauf folgt der Funktionsname und eine Klammer, die auch Parameter enthalten kann. Die Anweisungen im Funktionskörper müssen eingerückt sein. Der Aufruf einer Funktion erfolgt im Hauptprogramm


Beispiel 1: Die Funktion star() zeichnet einen gefülltes Stern. Im Hauptprogramm wird sie dreimal aufgerufen.

# Tu7.py

from gturtle import *

def star():
    startPath()
    repeat 5:
        forward(80)
        right(144)        
    fillPath()    

makeTurtle()

repeat 3:
    star()
    left(120)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

Erklärungen zum Programmcode:

def star(): definiert die Funktion star
star() ist der Aufruf dieser Funktion

 


Die Funktionsdefinitionen sind immer im Programmkopf angeordnet.

Im Hauptprogramm wird die Funktion aufgerufen

 

Beispiel 2: Das Zeichnen einer Blume wird mit Funktionen in einfachere Teilprogramme zerlegt. Funktionen können auch in anderen Funktionen aufgerufen werden.



  Die Funktion arc() zeichnet einen Viertelkreis
  Um ein Blatt zu zeichnen, schreiben wir eine Funktion petal() ("Blütenblatt"). In dieser wird die Funktion arc() zweimal aufgerufen
 

Die Funktion flower(), die im Hauptprogramm aufgerufen wird, zeichnet eine Blume, die aus 8 Bläter besteht.

# Tu7a.py

from gturtle import *

def arc():
    for i in range(30):
        forward(4)
        right(3)
  
def petal():
    arc()
    right(90)
    arc()

def flower():
    for k in range(8):
        petal()
        right(45)

makeTurtle()
speed(-1) 
flower()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Erklärungen zum Programmcode:

Mit def arc(): wird die Definition der Funktion arc() eingeleitet
arc() ist der Aufruf dieser Funktion

 

  Funktionen mit Parametern

Funktionen können Parameter haben, die es ermöglichen, Werte an Funktionen zu übergeben.

Beispiel 3: Sterne in verschiedenen Farben und Grössen zeichnen

Die Funktion star(s, c) hat die Parameter s und c, wobei s die Grösse des Sternes und c die Farbe bestimmt. Die Werte werden beim Aufruf der Funktion im Hauptprogramm festgelegt.

# Tu7b.py

from gturtle import *

def star(s,c):
    setPenColor(c)
    setFillColor(c)
    startPath()
    repeat 5:
        forward(s)
        right(144)        
    fillPath()    

makeTurtle()
ht()
star(100, "red")
left(120)
star(150, "yellow")
left(120)
star(80, "green")
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

 

Erklärungen zum Programmcode:

Mit def star(s, c): definiert eine Funktion mit den Parametern s und c
star(100,  "red") : Aufruf der Funktion mit den Parameterwerten s = 100 und c = "red"

 

  Funktionen mit variablen Parametern

Beispiel 4: Der Wert der Variable s wird in der while-Struktur verändert und der Funktion square(size) als aktueller Parameter übergeben. Die Bezeichnung des Parameters (size) und die Bezeichnung der Variablen (s) kann, aber muss nicht gleich sein. Man kann auch für beides die Bezeichnung size oder für beides die Bezeichnung s verwenden.

# Tu7c.py

from gturtle import *

def square(size):
    for i in range(4):
        forward(size)
        right(90)

makeTurtle()  
s = 140
while s > 5:
    square(s)
    left(180)
    s = s * 0.9

Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

 


Aufgaben Serie 7

1)
Erstelle folgende Zeichnung, indem du zuerst eine Funktion dreieck definierst. Die Funktion kleeblatt() besteht aus vier Dreiecken. Mit Hilfe der Funkion setPos(x, y) kannst du Kleeblätter an verschiedenen Positionen zeichnen. Zum Spass kannst du die Figuren noch füllen.

 
       

 

2) Zeichne eine Europa-Flagge, indem du zuerst eine Funktion star(), die einen Stern zeichnet, schreibst. Die blaue Hintergrundfarbe erhältst du mit dem Befehl clear("blue").

 

 


3)

Zeichne Blumen in verschiedenen Farben an verschidenen Positionen.

Verwende dabei die Funktionen
arc()
pental()
flower(x, y, color)

 

 



4)

Verwende Funktionen mit Parametern, um Kleeblätter in verschiedenen Grössen und Farben zu zeichnen.

 

 

 



5)

Definiere eine Funktion zickzack, die eine Zickzack-Linie zeichnet. Diese soll enden, wenn die x- oder y-Koordinate aus dem Bereich (-250, 250) herauskommt. Mit getX() bzw. getY() kannst du die aktuellen Turtle-Koordinaten abfragen. Im Haupprogramm sollen 36 solche zickzack-Linien gezeichnet werden, wobei jede Linie an der Position (0, 0) startet und vor der nächsten Linie eine Drehung um 10° erfolgt.

(Um das Ende der Zickzack-Linie zu bestimmen kannst du z.B. folgende while-Bedingung verwenden:
while getX()>-250 and getX()< 250 and getY()>-250 and getY()< 250:

 

 

 



6)

Zum Ausprobieren: SPIROLATERALE
Spirolaterale entstehen durch wiederholtes Zeichnen einer Basisfigur, die durch einen Drehwinkel (a), Anzahl Segmente (q), Länge des ersten Segnmentes (s) und Anzahl Wiederholungen (n) definiert ist.

   
a = 90, q = 7, s = 20, n = 4  
a = 36, q = 12, s = 15, n = 5
  a = 45, q = 7, s = 20, n = 20

# Tu7d.py
from gturtle import *

def figure(a, q, s):
    for i in range(1, q):
        forward(s * i)
        left(180 - a)    

makeTurtle()
#hideTurtle()
n = 4
repeat n:
   figure(90, 8, 20)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Experimentiere mit verschiedenen Parametern. Spirolaterale mit figure (90, 8, 20)  oder figure(36, 10, 15) sind nicht geschlossen. Wie muss a, q und n gewählt werden, damit das Spirolateral geschlossen ist?