TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
variablen

6. VARIABLEN

 

 

DU LERNST HIER...

 

den wichtigen Begriff der Variablen kennen. Darunter versteht man in der Informatik Namen, die als Platzhalter für Werte dienen, die sich im Laufe der Programmausführung ändern können.

 

 

MUSTERBEISPIELE

 

Damit du das Programm flexibel verändern kannst, willst du die Anzahl der Ecken eines n-Ecks mit einer Variablen n festlegen. Dazu machst du eine Zuweisung, beispielsweise n = 7 für ein Siebeneck. Dabei wird der Name n mit der Zahl 7 verbunden und n kann dann im Programm mehrmals gelesen, aber auch verändert werden.

Um die Grafik noch etwas attraktiver zu machen, zeichnest du ein gefülltes n-Eck, indem du am Anfang mit fillToPoint() sagst, dass alle nachfolgend gezeichneten Linien zum Anfangspunkt, hier der Homeposition, gefüllt werden.

 




from gturtle import *

makeTurtle()
fillToPoint()
    
n = 7
repeat n:
    forward(100)
    right(360 / n)
► In Zwischenablage kopieren

Du kannst jetzt leicht auch  beliebige andere n-Ecks zeichnen. Mache dies für ein paar andere Werte von n. Im Gegensatz zur Mathematik kann der Variablenname, auch Variablenbezeichner genannt,  aus einem ganzen Wort bestehen. Bei der Wahl des Namen hältst du dich an die gleichen Regeln wie bei der Wahl von Funktionsnamen.

Der Wert der Variablen kann sich im Laufe des Programms durch eine erneute Zuweisung auch ändern. Beispielsweise für die Seitenlänge size eines Quadrats:

from gturtle import *

makeTurtle()
size = 20
repeat 4:
   forward(size)
   right(90)

size = 70
repeat 4:
   forward(size)
   right(90)
► In Zwischenablage kopieren
 

 

Du kannst bei der erneuten Zuweisung sogar den alten Wert verwenden, also size = size + 50 schreiben. Dabei musst du dir vorstellen, dass schrittweise Folgendes geschieht:

  • der alte Wert 20 von size wird in ein Rechenwerk übertragen
  • die Zahl 50 wird dazugezählt
  • der neue Wert 70 wird wieder als size abgelegt.
from gturtle import *

makeTurtle()
size = 20
repeat 4:
   forward(size)
   right(90)

size = size + 50
repeat 4:
   forward(size)
   right(90)
► In Zwischenablage kopieren
 

 

Diese Schreibweise ist sehr elegant. Beispielsweise kannst du damit die Turtle mit einem kurzen Programm 10 ineinander geschachtelte Quadrate zeichnen lassen:

from gturtle import *

makeTurtle()
size = 20
repeat 10:
    repeat 4:
        forward(size)
        right(90)
    size = size + 20
► In Zwischenablage kopieren
 

 

 

MERKE DIR...

 

Eine Variable entsteht dann, wenn du ihr mit dem Gleichheitszeichen einen Wert zuweist. Du kannst ihren Wert jederzeit durch eine neue Zuweisung ändern und dabei sogar ihren eigenen (alten) Wert gebrauchen. Du darfst die dabei verwendete Schreibweise nicht mit einer mathematischen Gleichung verwechseln. Die Programmanweisung:

n = n + 1

hat nichts mit einer mathematischen Gleichung zu tun, also mit der Aufgabe, n so zu bestimmen, dass sich links und rechts von Gleichheitszeichen derselbe Wert ergibt.

Für n = n + 1 gibt es noch die Kurzschreibweise n += 1 , die genau das Gleiche macht.

 

 

ZUM SELBST LÖSEN

 

1.


Variablen werden auch zum Einlesen vor Werten verwendet. Mit der Anweisung

n = inputInt("Gib die Eckenzahl ein")
 
öffnet sich ein Eingabedialog, wo du eine Zahl eingeben kannst. Beim Drücken des OK-Buttons schliesst sich das Dialogfenster und der eingegebene Wert wird der Variablen n zugewiesen. Schreibe damit ein Programm, bei dem der Benutzer die Eckenzahl des gefüllten n-Ecks interaktiv eingeben kann.

2.

Mit Variablen kannst du mit wenig Aufwand schöne Grafiken erstellen. Das nebenstehende Bild entsteht, indem du die Turtle 250 mal um eine Strecke s vorwärts laufen und dann 70 Grad drehen lässt, wobei du bei jedem Durchgang die Strecke um 1 erhöhst. Die anfänglich Streckenlänge ist 5. Mit hideTurtle() wird die Zeichnung schnell gezeichnet. Schreibe das Programm und mache einige selbst erfundene Varianten davon, um andere ähnliche Figuren zu erhalten.

 


3.

Durch Angabe eines Spritebildes in makeTurtle() kannst du das Bild der Turtle beliebig verändern. Die in TigerJython enthaltenen Bilder und ihre Namen findest du in der Menüoption Hilfe | APLU Dokumentation unter Bildbibliothek. Du musst den Bildnamen noch sprites vorstellen und das ganze in Gänsefüsschen setzen, also für das Spinnenbild schreiben:

makeTurtle("sprites/spider.png")

Lass die Spinne das nebenstehende Netz spinnen. Wähle noch andere Spritebilder, z.B. beetle.gif.

 

4.

Die folgende hübsche Figur entsteht, indem die Turtle 120 Quadrate mit der Seitenlänge s zeichnet. Dabei wird bei jedem Durchlauf die Seitenlänge um 2 erhöht und die Turtle um 6 Grad gedreht. Schreibe das Programm.

 

   

 

6-1
Didaktische Hinweise:

Der Variablenbegriff ist von grundlegender Bedeutung, aber ein didaktisches Minenfeld, insbesondere im Zusammenhang mit Basistypen und Referenztypen/Zeiger.

Es gibt im Wesentlichen drei verschiedene methodische Ansätze:

Low-Level-Modell Vorteile Nachteile

Eine Variable wird wie im Maschinecode/Assembler als ein reservierter Hauptspeicherplatz angesehen, der über seine Adresse angesprochen wird

Anschaulicher Bezug zur Maschinenstruktur
Adressen sind zwar im Assembler,  C/C++ und anderen Programmiersprachen mit Zeigern (Pointer) wichtig,  spielen aber in in der Praxis bei vielen anderen Programmiersprachen nur noch eine untergeordnete Rolle oder sind sogar verpönt

Boxmetapher Vorteile Nachteile
Eine Variable wird als eine Box- (oder Schublade) aufgefasst, die mit einem Namen angeschrieben ist und in der sich der Wert befindet
Eine Variable wird als eine Box- (oder Schublade) aufgefasst, die mit einem Namen angeschrieben ist und in der sich der Wert befindet
Die Box kann auch leer sein, eine Variable hat aber immer einen Wert. Die Box kann auch mehrere Dinge enthalten, eine Variable aber nicht.

Das Boxmetapher ist für Python falsch, da eine Variable hier immer eine Referenz auf ein Objekt ist (auch für Zahlen)

Pragmatischer Ansatz Vorteile Nachteile

Variablen sind Bezeichner für einen Wert, der verändert werden kann. Es gibt also einen Bezug oder eine Verbindung (engl. bindung) zwischen dem Namen (Alias) und ihrem Wert (der irgendein Datentyp sein kann)

Der Ansatz entspricht der intuitiven Auffassung von Namen:
"Hans ist ein Bezeichner für eine Person".
Man "verliert" keine Zeit mit problematischen Erklärungen
Man bleibt vage, was die Implementierung der Variablen (das Speichermodell) angeht

Wir folgen in diesem Lehrmittel dem pragmatischen Ansatz.
Für  weitere Gedanken zum Variablenbegriff in Python siehe: www.tigerjython.ch