funktionen

4. FUNKTIONEN

 

 

 

DU LERNST HIER...

 

wie du mit benannten Programmblöcken, in Python Funktionen genannt, deine Programme strukturieren kannst. Die Verwendung von Funktionen ist von grosser Wichtigkeit, denn du vermeidest dadurch, dass du gleichen Code mehrmals im Programm hinschreiben musst (Codeduplikation)  und du kannst damit Probleme in kleinere, leichter zu lösende Teilprobleme zerlegen.

 

 

MUSTERBEISPIELE

 

Im letzten Kapitel hast du gelernt. wie die Schlage ein Quadrat zeichnen kann. Dies ist eine typische, in sich geschlossene Aufgabe und wir wollen den dazu benötigten Code in einer Funktion square zusammenfassen. Dazu definierst du die Funktion mit dem Schlüsselwort def wie folgt:

def square():
    repeat 4:
        forward()
        right(90)

Der Computer wird beim Lesen dieser Programmzeilen noch gar nichts machen, sondern sich lediglich merken, was er mit der Funktion square tun soll.

Die Funktionsdefinition besteht also aus einer Kopfzeile mit def und dem Funktionsnamen gefolgt von einer Parameterklammer und einem Doppelpunkt.

Programm:

from oxosnake import *

def square():
    repeat 4:
        forward(3)
        right(90)

makeSnake()
setSpeed(90)
setPos(0, 7)
square()
setPos(4, 7)
square()
 
► In Zwischenablage kopieren

 

Die Befehle im Funktionskörper bilden einen Programmblock und sie müssen daher eingerückt sein.

Hast du die Funktion einmal definiert, so kannst du sie in deinem Programm verwenden, indem du sie mit ihrem Namen aufrufst. Du kannst eine Funktion auch mehrmals aufrufen.

Dein Programm zeichnet zwei Quadrate an verschiedenen Positionen.

 


Es wäre praktisch, wenn du beim Aufruf von square() auch sagen könntest, wo sich die linke untere Ecke der Quadrate befindet, damit du nicht im Hauptprogramm zweimal setPos() aufrufen musst. Dies ist kein Problem, da du in der Definition der Funktion die Koordinaten x und y als Parameter mit Parameternamen x und y einfügen kannst: square(x, y).

Beim Aufruf der Funktion mit square(0, 7) werden dann die Werte x, y der Funktion übergeben und an Stelle der Parameternamen verwendet.

Programm:

from oxosnake import *

def square(x, y):
    setPos(x, y)
    repeat 4:
        forward(3)
        right(90)

makeSnake()
setSpeed(90)
square(0, 7)
square(4, 7)
► In Zwischenablage kopieren


Im nächsten Beispiel willst du ein Schweizerkreuz zeichnen. Du teilst das Programm in Teilaufgaben ein und definiert zuerst eine Funktion shape(), die eine Teilfigur zeichnet. Diese rufst du 4 Mal auf um die Gesamtfigur zu  zeichnen.  

Die Schlange soll dabei eine weisse Spur auf einem roten Hintergrund zeichnen.

 


Der Befehl penDown() bewirkt, dass die Schlange eine Spur hinterlässt. Die Farbe der Spur wird mit setPenColor(WHITE) gesetzt, der Hintergrund wird mit setBgColor(RED) auf rot gesetzt.

Programm:

from oxosnake import *

def shape():
    forward(2)
    right(90)
    forward()
    right(90)
    forward(2)       

makeSnake(speed = 70, pos = (3, 3))
setPenColor(WHITE)
penDown()
  
repeat 4:
   shape()
   left(90)
hide()
setBgColor(RED)   
► In Zwischenablage kopieren

Mit dem Befehl hide() wird die Schlange versteckt.

 

 

MERKE DIR...

 

Um ein etwas komplizierteres Problem zu lösen, teilst du dieses in Teilprobleme ein und löst ein Teilproblem um das andere. Man nennt dies Modularisierung oder strukturierte Programmierung. Funktionen sind  fundamentale Hilfsmittel für die strukturierte Programmierung, denn sie ermöglichen es, ein Teilprogramm mehrmals aufzurufen.

In der Funktionsdefinition kannst du auch Parameter einfügen und die Parameternamen im Funktionskörper verwenden. Beim Aufruf der Funktion werden die Werte in der Parameterklammer der Funktion übergeben und an Stelle der Parameternamen eingesetzt.

Bit dem Befehl setPenColor(color) änderst du die Stiftfarbe, setBgColor(color) ändert den Hintergrund. Am einfachsten ist es, die vordefinierten Farben RED, GREEN, BLUE, WHITE, YELLOW, CYAN, MAGENTA und BLACK zu verwenden.

 

 

ZUM SELBST LÖSEN

 

 

1a.

Mit dem Befehl setPenColor(YELLOW) kannst du die Stiftfarbe auf gelb setzen. Verwende die Funktion square(x, y), um nebenstehende Figur zu zeichnen.

 


1b.

Zeichne die nebenstehende Figur, in dem du zuerst mit dem Befehl setBgColor(MAGNETA) die Hintergrundfarbe änderst und dann mit der gelben Stiftfarbe Quadrate zeichnest.

 


1c.

Die Farben RED, GREEN, BLUE, WHITE, YELLOW, CYAN und MAGENTA sind vordefiniert. Du kannst aber mit setPenColor(r, g, b) jede beliebige RGB-Farbe wählen, wo r, g, b die rote, grüne und blaue Farbkomponente ist (eine Zahl zwischen 0 und 255). Da die LEDs sehr hell leuchten, sind oft Zahlen im Bereich 0 bis 50 vorteilhafter. Zeichne unter Verwendung von square(x, y) einige selbsterfundene farbige Bilder.

 

2.

Die Funktion rectangle() soll ein  Rechteck mit der Höhe 4 und der Breite 1  zeichnen. Am Ende soll die Schlange wieder am Startpunkt sein und nach oben schauen. Definiere diese Funktion und verwende sie, um die nebenstehende Figur zu zeichnen.



 


 



 

 

4-1
Fachliche Hinweise:

Die Farben RED, GREEN, BLUE, WHITE, YELLOW, CYAN, MAGENTA und BLACK sind vordefiniert und können direkt verwendet werden:

Bsp.: setPenColor(CYAN)

Du kannst aber jede beliebige Farbe wählen:
setPenColor(r, g, b), wo r, g, b die rote, grüne und blaue Farbkomponente ist (eine Zahl zwischen 0 und 255).

Bsp.: setPenColor(50, 0, 20)