Die kleine Schildkröte (3)

Dieses Kapitel beginnt mit ein paar Erklärungen. Ich muss ein paar neue Worte erklären, damit wir uns über Ellas Programmiersprache unterhalten können. Ein solches Wort haben wir schon im letzten Kapitel kennengelernt: Variable. Das waren die Kreidetäfelchen, auf denen sich Ella Dinge merken kann.

Wir haben bisher drei Befehle kennengelernt, die Ella versteht:

  • forward
  • left
  • shape

Befehle haben einen Namen, der aus den Buchstaben A bis Z (groß oder klein) besteht. Umlaute ö, ä, ü sowie ß sind nicht erlaubt. Und Befehle können Parameter haben. Parameter beschreiben, wie der Befehl genau wirken soll. Unsere Befehle hatten bisher alle genau einen Parameter:

BefehlParameterBedeutung
forward100Schrittlänge
left90Drehwinkel
shape„turtle“Ellas Aussehen

Die Parameter werden in Klammern hinter dem Befehlsnamen angegeben: forward(100), left(90) oder shape(„turtle“).

Wir können Ella auch neue Befehle beibringen. Lasst uns Ella erklären, wie man ein Vieleck zeichnet. Ein Vieleck ist ein Ding mit vielen Ecken. Ein Vieleck mit drei Ecken ist ein Dreieck, eines mit vier Ecken ein Viereck. Ella soll lernen, Vielecke mit verschieden vielen Ecken zu zeichnen:

from turtle import *
shape("turtle")

def vieleck(ecken):
    for i in range(ecken):
       forward( 400 / ecken )
       left( 360 / ecken )

Achte beim Eingeben auf die Einrückung! Die Leerzeichen sind wichtig, damit Ella versteht, wie der neue Befehl funktioniert.

Wenn Du das Programm mit dem „Run >“-Knopf startest, passiert nichts. Wir haben Ella einen neuen Befehl beigebracht, ihr aber nicht gesagt, dass sie diesen Befehl auch ausführen soll.
Also erweitern wir unser Programm:

from turtle import *
shape("turtle")

def vieleck(ecken):
    for i in range(ecken):
       forward( 400 / ecken )
       left( 360 / ecken )

vieleck(7)

Lass uns genauer anschauen, was hier passiert ist. Den neuen Befehl bringen wir Ella mit der folgenden Zeile bei:

def vieleck(ecken):

def ist die Abkürzung für „definiere“. Das Wort „definieren“ bedeutet „bestimmen“, „festlegen“ oder „erklären“. Wir bestimmen einen neuen Befehl und erklären gleich auch, was dieser Befehl machen soll.

vieleck ist der Name unseres neuen Befehls. Den Namen dürfen wir uns ausdenken. Der Name darf aus einem Wort bestehen und das Wort darf aus den Buchstaben A bis Z bestehen, groß oder klein. Statt vieleck hätten wir auch einen anderen Namen können, zum Beispiel polygon (englisch für Vieleck) oder zeichneVieleck. Bei dem letzten Namen kannst Du zwei Wörter erkennen. Aber da zwischen den Wörtern kein Leerzeichen steht, ist das für den Computer nur ein Wort und die Ein-Wort-Regel wird eingehalten. Solche Namen aus mehreren Wörtern wirst Du beim Programmieren häufiger sehen. Man schreibt hierbei die Anfangsbuchstaben der Wörter häufig groß, um die langen Namen besser lesen zu können.

In den runden Klammern legen wir die Parameter für diesen Befehl fest. Unser Befehl hat einen Parameter, und diesen Parameter haben wir ecken genannt. Dies ist wieder ein Name und für diesen gelten die selben Namensregeln wie für die Namen von Befehlen. Innerhalb der Funktion ist ecken auch der Name einer Variablen. Du erinnerst Dich: Variablen sind die kleinen Kreidetafeln, auf denen sich Ella etwas merken konnte. Rufen wir unseren Befehl so wie in der letzten Zeile unseres Programms mit vieleck(7) auf, dann steht auf der Tafel mit dem Nameneckeneine 7.

Nachdem wir Ella erklärt haben, wie der neue Befehl heißt und wie er aufgerufen wird, müssen wir Ella noch beibringen, was sie tun soll. Dies beschreiben wir ihr in einem kleinen Programm. Damit Ella weiß, welche Befehle zur Erklärung gehören, rücken wir diese wieder ein. Genau so, wie wir es im letzten Kapitel bei Schleifen gelernt haben:

def vieleck(ecken):
    for i in range(ecken):
       forward( 400 / ecken )
       left( 360 / ecken )

Das Programm besteht aus einer Schleife, die genau ecken Mal ausgeführt wird. In jeder Runde der Schleife führt Ella zwei Befehle aus. Damit Ella weiß, dass diese beiden Befehle in der Schleife stehen, sind diese doppelt eingerückt.

In der letzten Zeile unseres Programms rufen wir unsere neue Funktion auf:

vieleck(7)

Wenn Ella diese Zeile liest, bemerkt sie zuerst, dass diese Zeile nicht mehr eingerückt ist. Damit gehört diese Zeile nicht mehr zur Erklärung unseres neuen Befehls. Diese Zeile ist also ein Befehl. Ella erkennt den Namen vieleck und weiß, dass dieser einen Parameter hat. Ella bereitet eine Kreidetafel mit dem Namen ecken vor und schreibt 7 auf die Tafel.

Danach schaut Ella nach, was sie tun soll und führt die Schleife aus. Wenn sie das gemacht hat, hat sie 7 Linien gemalt und sich 7 mal gedreht, bis sie wieder da ankommt, wo sie losgelaufen ist. Ella hat also ein Siebeneck gemalt

Übungen

Mit diesen Übungsaufgaben kannst Du das oben gelernte ausprobieren. Wenn Du Dir Lösungen zu den Aufgaben anschauen möchtest, kannst Du Dir die Lösungsseite anschauen. Wenn Du eine andere Lösung für die Aufgabe gefunden hast, dann ist Deine Lösung aber genau so richtig wie die auf der Lösungsseite!

  1. Ändere unser Programm so, dass Ella erst ein Dreieck, dann ein Viereck und dann ein Fünfeck zeichnet.
  2. Ändere unser Programm so, dass Ella 10 Vierecke malt. Zwischen den Vierecken soll sie sich um 36 Grad drehen. Versuche, dafür eine Schleife mit for i in range(10): zu benutzen.
  3. Schreibe einen Befehl, der einen Stern zeichnet und probiere ihn aus.
    • Der Befehl soll einen Parameter strahlen haben, der die Anzahl der Strahlen bestimmt.
    • Der Winkel zwischen den Strahlen des Sterns ist
      360 / strahlen.
    • Die Strahlen des Sterns sollen 100 lang sein
    • Wenn Ella rückwärts gehen soll, dann drehe sie um 180°, gehe dann vorwärts und drehe sie wieder um 180°, um wieder in die selbe Richtung wie vorher zu schauen