2.4 FUNKTIONEN

 

 

EINFÜHRUNG

 

In einem grösseren Bild kommen Figuren wie Dreiecke und Quadrate mehrmals vor. Die Turtle weiss aber nicht, was ein Dreieck oder ein Quadrat ist. Du musst also jedes Mal der Turtle mit einem vollständigen Programmcode erklären, wie sie die Figuren zeichnet. Geht das nicht auch einfacher?

Es geht einfacher! Du kannst der Turtle nämlich neue Befehle beibringen, z.B.ein Quadrat oder Dreieck zu zeichnen, und musst ihr dann nur sagen, sie soll diesen Befehl ausführen, also ein Quadrat oder ein Dreieck zeichnen. Um einen neuen Befehl zu definieren, wählst du einen beliebigen Bezeichner, beispielsweide quadrat, und schreibst def quadrat(): Danach notierst du alle Anweisungen, die zum neuen Befehl gehören. Damit der Computer weiss, was zum neuen Befehl gehört, müssen diese Anweisungen eingerückt sein.

PROGRAMMIERKONZEPTE: Modulares Programmieren, Funktionsdefinition, Funktionsaufruf

 

 

EIGENE BEFEHLE DEFINIEREN

 

In diesem Programm definierst du mit def den neuen Befehl quadrat(). Die Turtle weiss danach, wie sie ein Quadrat zeichnen kann, sie hat aber noch keines gezeichnet.

Mit dem Befehl quadrat() zeichnet die Turtle an jeder aktuellen Position ein Quadrat mit der Seitenlänge 100. In unserem Beispiel ist es ein rotes, ein blaues und ein grünes Quadrat.

 


from gturtle import *

def square():
    repeat 4: 
        forward(100) 
        left(90) 

makeTurtle()
setPenColor("red")
square()
right(120)
setPenColor("blue")
square()
right(120)
setPenColor("green")
square()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 
Mit def bezeichner(): definierst du einen neuen Befehl. Wähle einen Namen, der die Tätigkeit wiederspiegelt. Alle Anweisungen, die zum neuen Befehl gehören, müssen eingerückt sein.
def bezeichner():
    Anweisungen

Vergiss die Klammern und den Doppelpunkt nach dem Bezeichner nicht! In Python nennt man neue Befehle auch Funktionen. Wenn du die Funktion quadrat() verwendest, sagt man auch, die Funktion werde "aufgerufen".

Wir gewöhnen uns daran, die Funktionsdefinitionen im Programmkopf anzuordnen, da diese vor ihrem Aufruf definiert sein müssen.

 

 

AUFGABEN

 

1.

Definiere einen Befehl sechseck(), mit dem du ein Sechseck zeichnen kannst. Verwende diesen Befehl, um die nebenstehende Figur zu zeichnen.

 

 

2a.

Definiere einen Befehl für ein Quadrat, das auf der Spitze steht und zeichne damit die nebenstehende Figur.

 

 

2b*.

Du kannst gefüllte Quadrate zeichnen, indem du die Befehle startPath() und fillPath() verwendest.

 

 

3a.

Du erlebst in dieser Aufgabe, wie du unter Verwendung von Funktionen eine Aufgabe schrittweise lösen kannst [mehr... Es handelt sich um einen fundamentalen Programmierstil, genannt prozedurales Programmieren].

Definiere eine Funktion bogen(), mit dem die Turtle einen Bogen zeichnet und sich dabei insgesamt um 90 Grad nach rechts dreht. Mit speed(-1) kannst du die Turtlegeschwindigkeit auf den maximalen Wert setzen.

 

 

3b.

Ergänze das Programm mit der Funktion blumenblatt(), welche zwei Bogen zeichnet. Die Turtle sollte am Ende aber wieder in Startrichtung stehen.

 

 

3c.

Ergänze das Programm so, dass blumenblatt() ein rot gefülltes Blatt zeichnet. Setze mit setPenColor("red") die Stiftfarbe auf rot, damit die Umrandungslinie die gleiche Farbe hat.

 

 

3d.

Erweitere das Programm mit der Funktion blume(), dass eine 5-blättrige Blume gezeichnet wird. Damit die Blume noch schneller entsteht, kannst mit hideTurtle() die Turtle bereits am Anfang unsichtbar machen.

 

 

3e*.

Ergänze die Blume mit einem Stiel.