Modulbild

Python: Unterprogramme

lock
Bevorstehend
Ziele dieses Moduls
Keine Ziele hinterlegt.

Unterprogramme


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 Namen, 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, Definition und Aufruf von Unterprogrammen

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 turtle import *

def quadrat():
    for i in range(4):
        forward(100) 
        left(90) 

pencolor("red")
quadrat()

right(120)
pencolor("blue")
quadrat()

right(120)
pencolor("green")
quadrat()

Mit def name(): 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 name():
    Anweisungen

Vergiss die Klammern und den Doppelpunkt nach dem Namen nicht! In Python nennt man neue Befehle auch Unterprogramme oder Funktionen. Wenn du das Unterprogramm quadrat() verwendest, sagt man auch, das Unterprogramm werde «aufgerufen».


 

 

Challenge

Aufgabe 1 – Sechsecke

Exercise1.png

Definiere einen Befehl sechseck(), mit dem du ein Sechseck zeichnen kannst. Verwende diesen Befehl, um die folgende Figur zu zeichnen, welche aus 10 Sechsecken besteht:

 

Aufgabe 2 – Quadrate

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

    Exercise2a.png
  2. Du kannst gefüllte Quadrate zeichnen, indem du die Befehle begin_fill() und end_fill() verwendest.

    Exercise2b.png

Aufgabe 3 – Blume

Du erlebst in dieser Aufgabe, wie du unter Verwendung von Unterprogrammen eine komplexe Aufgabe schrittweise lösen kannst.

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

    Exercise3a.png
  2. Ergänze das Programm mit dem Unterprogramm blumenblatt(), welches zwei Bogen zeichnet. Die Turtle sollte am Ende aber wieder in Startrichtung stehen.

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

    Exercise3c.png
  4. Erweitere das Programm mit dem Unterprogramm blume() so, dass eine fünfblättrige Blume gezeichnet wird.

Exercise3d.png

Zusatzaufgabe 4 – Blume mit Stiel

Ergänze die Blume mit einem Stiel.

Exercise4.png

 

Quellen & Attribution

  • rothe.io Stefan Rothe — „rothe.io“ (), CC BY-NC-SA 4.0 (https://creativecommons.org/licenses/by-nc-sa/4.0/) · Lizenzdetails NCSA