wiederholung

3. WIEDERHOLUNG

 

 

DU LERNST HIER...

 

dass du eine oder mehrere Programmzeilen zu einem Programmblock zusammenfassen und ihn dann eine bestimmte Anzahl mal wiederholt durchlaufen kannst. Dadurch ersparst du dir viel Schreibarbeit und das Programm wird übersichtlicher.

 

 

MUSTERBEISPIEL

 

Um ein Quadrat zu zeichnen, muss die Turtle vier Mal die Befehle forward(100) und left(90) ausführen. Du kannst dies in TigerJython elegant mit repeat programmieren.

from gturtle import *

makeTurtle()
repeat 4:
    forward(100) 
    left(90)
► In Zwischenablage kopieren
 

Die Wiederholung wird mit repeat 4: eingeleitet. Dabei ist der Doppelpunkt sehr wichtig. Vergisst du ihn, so ergibt sich bei der Programmausführung eine Fehlermeldung: "Am Ende der Zeile fehlt ein Doppelpunkt".

Die Befehle im nachfolgenden Programmblock musst du alle gleichweit einrücken. Du verwendest dazu immer 4 Leerschläge, du kannst aber auch die Tabulator-Taste brauchen, um sie zu erzeugen. Man spricht bei der Wiederholstruktur auch vom Durchlaufen einer Schleife.

 

 

ZUM SELBST LÖSEN


  1.

Experimentiere mit dem Programm aus dem Musterbeispiel. Ändere die Anzahl Wiederholungen und den Drehwinkel so, dass die Turtle die folgenden Figuren zeichnet.

 
a)
b)
c)
d)
  2. Zeichne eine Treppe mit 7 Stufen.  

  3.

Zeichne die nebenstehende Figur. Dazu brauchst du auch die Befehle back() und dot().

 
  4.

Zeichne eine Perlenkette, die aus 18 Perlen (dots) besteht. Zwischen den Perlen muss die Turtle jeweils einige Schritte vorwärts gehen und um einen kleinen Winkel (z.B. 20°) nach links drehen.

 

  5.

Nach einer Idee von Joshua Goldstein ergeben sich hübsche Bilder, wenn die Turtle wiederholt forward-right-Befehlspaare ausführt. Zeichne die Grafiken mit

a)  forward(300) , right(151) und 92 Wiederholungen

b)  forward(200), right(159.72) und 63 Wiederholungen.
Du kannst du Turtle verstecken und sie zu Beginn noch mit back() nach unten versetzen, damit die Grafik im Fenster besser eingepasst ist.

c) Suche über eine Internet-Suchmaschine mit den Stichworten goldstein turtle den Originalartikel von J. Goldstein und erstelle einige weitere von dort inspirierten Bilder (auch mit mehreren forward-right-Paaren).

 

 

 

ZUSATZSTOFF: VERSCHACHTELTE SCHLEIFEN

 

Richtig spannend und anspruchsvoll wird es, wenn du zwei repeat-Strukturen ineinander verschachtelst. Du musst dann immer denken, dass zuerst die "innere", weiter eingerückte Wiederholstruktur durchlaufen wird, bevor sich die "äussere", weniger eingerückte Struktur wiederholt. Versuche zu verstehen, was hier ausgeschrieben wird.

repeat 2:
    print "aussen-vorher"
    repeat 3:
        print "innen"
    print "aussen-nachher"

Den zeitlichen Ablauf kannst du an folgender Aufnahme erkennen, wo der Pfeil zeigt, welche Zeile in einem bestimmten Moment ausgeführt wird.

Mit diesem Kenntnissen bist  du jetzt in der Lage, die folgende Leiter mit zwei ineinander geschachtelten repeat-Strukturen zu zeichnen. Die Idee ist die Folgende: Die innere Schleife zeichnet  ein einzelnes Quadrat und die Turtle befindet sich nachher wieder in der linken unteren Ecke des Quadrats. Sie wird dann in der äusseren Schleife vorgeschoben und das Quadrat wird erneut gezeichnet.

from gturtle import *

makeTurtle()
repeat 7:
    repeat 4:
        forward(30) 
        right(90)
    forward(30)
► In Zwischenablage kopieren
 

 

 

ZUM SELBST LÖSEN


  6.

Versuche zuerst auf einem Blatt Papier herauszufinden, was das folgende Programm zeichnet. Lass es dann laufen, um deine Vermutung zu bestätigen.

from gturtle import *
makeTurtle()
  
repeat 5:
    repeat 4:
        forward(100)
        right(90)
    left(36) 

   

 

3-1
Didaktische Hinweise:

Hier wird zum erstemal eine Programmstruktur, nämlich die Wiederholstruktur eingeführt, die zu den wichtigsten Mitteln der strukturierten Programmierung gehört. Von jetzt an wird immer darauf geachtet, dass das Wiederholen von Aktionen nicht durch Kopieren und Einfügen von gleichen Programmzeilen, sondern durch eine modulare Programmstrukturierung erreicht wird.

Ein solches Vermeiden von Codeduplikation hat folgende Vorteile:

Eine andere wichtige Strukturierungsmethode ist die Definition von Funktionen.

3-2
Didaktische Hinweise:

Das Keyword repeat gehört nicht zur Syntax von Python, sondern wurde speziell in TigerJython eingebaut, damit schon sehr früh, d.h. vor der Einführung von Variablen, Wiederholstrukturen möglich sind. Diese werden als ganz natürlich empfunden, denn auch im Alltag spricht man davon, eine Aktion n-mal zu wiederholen.

Will man zu Python kompatibel bleiben, so kann später repeat n: immer durch
for i in range(n):
ersetzt werden.

Endlosschleifen können durch Weglassen der Zahl der Wiederholungen, also mit
repeat:
eingeleitet werden.

3-3
Didaktische Hinweise:

Von Anfang an ist darauf zu achten, dass ein Programm nicht nur funktioniert, sondern auch schön geschrieben ist. Dabei ist auf einen konsequenten, d.h. immer gleich bleibenden Formatierungsstil zu achten, der sich an die Gewohnheiten der Programmier-Community (den Style Guide) hält. Bei der Darstellung des Codes stossen die individuellen Freiheiten an ihre Grenzen.

Eine Codeformatierung gemäss einem Style Guide hat den Vorteil, dass Programme von verschiedenen Personen leicht gelesen und der Code problemlos ausgetauscht werden kann.

Gänzlich abzulehnen sind Programme, die in verschiedenen Teilen unterschiedliche Formatierungen aufweisen, beispielsweise bei denen Blöcke einmal 4 Leerschläge und an anderer Stelle 3 Leerschläge eingerückt sind.

Trotz einer freiheitlichen Einstellung bei der Realisierung von Programmierideen ist im Zusammenhang mit der Gestaltung des Codes eine gewisse Lehrpersonen-Pedanterie angebracht.

Überdies ist es natürlich erforderlich, dass  abgegebene Programmskelette und Beispielcode genau gleich formatiert sind, so wie wir es in diesem Lehrgang  vorzeigen.

3-4
Fachliche Hinweise:

Ersetze in deinem Programm die Zeile

makeTurtle()
durch die Zeile
makeTurtle("sprites/beetle.gif")

Jetzt läuft statt der Schildkröte ein Käfer herum. In der Bildbibliothek von TigerJython sind nochviele geeignete Bilder vorhanden. Ihre Bezeichnung findest du, wenn du oben im TigerJython-Fenster Hilfe - APLU Dokumentation - Bildbibliothek wählst.

Du kannst auch ein eigenes Bild verwenden. Kopiere es als GIF oder PNG in das Unterverzeichnis sprites des Verzeichnisses, in dem sich dein Programm gefindet. Beachte, dass das Bild einen transparenten Hintergrund und die richtige Orientierung haben muss.

 

 

 

3-5
Didaktische Hinweise:

Man unterschätze die Schwierigkeiten bei verschachtelten Schleifen nicht. Es ist wichtig, dass man die zeitliche Abfolge der Aktionen gut versteht und dazu kann die Aufnahme mit dem Debugger von TigerJython hilfreich sein.