Funktionen

Funktionen ohne Parameter und ohne Rückgabewert

Das Wichtigste in aller Kürze

  • Um Programmcode mehrmals zu verwenden, kann man eine Funktion definieren. Ein solche kann man dann an anderen Stellen im Programm aufrufen.
  • Ein Beispiel für eine Funktion:
def baum():
    setPenWidth(40)
    setPenColor("brown")
    penDown()
    forward(100)
    setPenColor("green")
    dot(100)
    penUp()
    back(100)
  • Die leeren Klammern muss man schreiben!
  • Nachdem man Funktionen definiert hat, kann man das Hauptprogramm schreiben, d. h., Funktionen müssen immer zuerst im Programmtext stehen, weil Python sonst im Hauptprogramm nicht weiß, was damit gemeint sein soll.
  • Ein vollständiges Beispiel:
from gturtle import *

# Funktion für den Baum
def baum():
    setPenWidth(40)
    setPenColor("brown")
    penDown()
    forward(100)
    setPenColor("green")
    dot(100)
    penUp()
    back(100)

# Funktion für das Haus
def haus():
    setPenWidth(2)
    setPenColor("black")
    penDown()
    forward(100)
    right(90)    
    startPath()
    setPenColor("red")
    forward(100)
    left(135)
    forward(71)
    left(90)
    forward(71)
    setFillColor("red")
    setPenColor("black")
    fillPath()
    left(90)
    forward(141)
    left(135)
    forward(100)
    left(135)
    forward(141)
    left(135)
    forward(100)
    penUp()
    back(100)
    left(90)

# Funktion Abstand
def abstand():
    right(90)
    forward(100)
    left(90)

# Hauptprogramm
makeTurtle()

baum()
abstand()
haus()
abstand()
baum()

Übung

Aufgabe. Entwickle für das Beispiel aus dem Clip wenigstens eine weitere Funktion und verwende diese im Hauptprogramm.

Funktionen mit Parameter und ohne Rückgabewert

Das Wichtigste in aller Kürze

  • Man kann bei einer Funktion verlangen, dass ein Parameter angegeben wird. Das ist z. B. auch schon bei forward der Fall, denn sonst wüsste die Turtle nicht, wie weit sie laufen soll.
  • Hier sehen wir eine Funktion, bei der ein Wert angegeben werden muss:
def baum(pHoehe):
    setPenWidth(40)
    setPenColor("brown")
    penDown()
    forward(pHoehe)
    setPenColor("green")
    dot(100)
    penUp()
    back(pHoehe)
  • Bei den Funktionen im letzten Clip haben die leeren Klammern angezeigt, dass kein Parameter verlangt wird.
  • Beim Aufruf muss man nun einen Wert angeben!
  • Ein vollständiges Programm:
from gturtle import *

# Funktion für den Baum
def baum(pHoehe):
    setPenWidth(40)
    setPenColor("brown")
    penDown()
    forward(pHoehe)
    setPenColor("green")
    dot(100)
    penUp()
    back(pHoehe)

# Funktion für das Haus
def haus():
    setPenWidth(2)
    setPenColor("black")
    penDown()
    forward(100)
    right(90)    
    startPath()
    setPenColor("red")
    forward(100)
    left(135)
    forward(71)
    left(90)
    forward(71)
    setFillColor("red")
    setPenColor("black")
    fillPath()
    left(90)
    forward(141)
    left(135)
    forward(100)
    left(135)
    forward(141)
    left(135)
    forward(100)
    penUp()
    back(100)
    left(90)

def abstand(weite):
    right(90)
    forward(weite)
    left(90)

# Hauptprogramm
makeTurtle()

baum(100)

abstand(10)

haus()

abstand(125)

haus()

abstand(75)

baum(50)

Übung

Aufgabe. Modifiziere Deine Funktionen aus dem letzten Abschnitt so, dass sie jeweils mit einem Parameter arbeiten.

Funktionen mit Rückgabewert

Das Wichtigste in aller Kürze

  • Einige Funktionen liefern als Ergebnis einen Wert, den man im Hauptprogramm benutzen kann.
  • Zum Beispiel kann man mit getX() die aktuelle x-Koordinate der Turtle erhalten und diese speichern oder für eine Bedingung in einer Schleife verwenden.
  • Möchte man selbst eine Funktion mit Rückgabewert erstellen, benötigt man die Anweisung return.
  • Ein Beispiel:
def summe(pZahl):
    zaehler = 1
    ergebnis = 0
    while zaehler <= pZahl:
        ergebnis = ergebnis+zaehler
        zaehler = zaehler+1
    return ergebnis
  • Hier noch ein vollständiges Programm:
# Funktion Summe
def summe(pZahl):
    zaehler = 1
    ergebnis = 0
    while zaehler <= pZahl:
        ergebnis = ergebnis+zaehler
        zaehler = zaehler+1
    return ergebnis

# Hauptprogramm
erstes_ergebnis = summe(10)
print("Die Summe der natürlichen Zahlen von 1 bis 10 ist:")
print(erstes_ergebnis)

zweites_ergebnis = summe(100)
print("Die Summe der natürlichen Zahlen von 1 bis 100 ist:")
print(zweites_ergebnis)

print("Die Summe der natürlichen Zahlen von 11 bis 100 ist:")
print(zweites_ergebnis - erstes_ergebnis)

print("Die Summe der natürlichen Zahlen von 901 bis 1000 ist:")
print(summe(1000) - summe(900))

Übungen

Aufgabe 1. Die Turtle soll den Rand des Fensters mit Punkten schmücken:

Punkte am Rand

Entwickle ein geeignetes Programm mithilfe von Funktionen mit Rückgabewert der Turtle.

Aufgabe 2. Die Turtle soll 100 mal an eine zufällige Position springen. Befindet sie sich in der linken Hälfte des Fensters, soll sie einen roten Punkt zeichnen, sonst einen blauen:

Entwickle ein geeignetes Programm .

Aufgabe 3. Entwickle eine Funktion istGerade(pZahl), die True zurückgibt falls pZahl gerade ist und ansonsten false.

Dieses Hauptprogramm kann zum Testen verwendet werden:

# Hauptprogramm
erstes_ergebnis = istGerade(10)
print("Die Zahl 10 ist gerade:")
print(erstes_ergebnis)

zweites_ergebnis = istGerade(33)
print("Die Zahl 33 ist gerade:")
print(zweites_ergebnis)