Python Online
Home    .  
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.

Programm:
from gturtle import *

makeTurtle()
repeat 4:
    forward(100) 
    left(90)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

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: Doppelpunkt ':' fehlt.

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(), Stiftfarbe "blue" und Turtlefarbe "cyan".

 

  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(300), 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 Artikel 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.

In deinem Beispiel zeichnet die innere Schleife 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.

Programm:

from gturtle import *

makeTurtle()
repeat 7:
    repeat 4:
        forward(30) 
        right(90)
    forward(30)
Programmcode markieren (Ctrl+C kopieren Ctrl+V einfügen)
 

 

 

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:

  • das Programm wird kürzer und damit übersichtlicher
  • eine Änderung oder Korrektur an einer Stelle des Programmblocks betrifft automatisch jeden Durchgang. Wiederholt man den Code, so muss die Änderung mehrmals vorgenommen werden

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.