deutsch     english     français     Drucken

 

2.6 VARIABLEN

 

 

EINFÜHRUNG

 

Im vorhergehenden Kapitel hast du Quadrate gezeichnet, deren Seitenlänge im Programm fest eingebaut waren. Manchmal möchtest du aber die Seitenlänge mit einem Eingabedialog einlesen. Dazu muss das Programm die eingegebene Zahl als Variable speichern. Du kannst eine Variable als einen Behälter (Container) auffassen, auf dessen Inhalt du mit einem Namen zugreifst. Kurz gesagt, hat eine Variable einen Namen und einen Wert. Den Namen der Variablen darfst du frei wählen. Nicht erlaubt sind Schüsselwörter und Namen mit Sonderzeichen. Zudem darf der Name nicht mit einer Zahl beginnen.


Mit der Schreibweise a = 2 erstellst du den Behälter, auf den  du mit dem Namen a zugreifst und legst die Zahl 2 hinein. In Zukunft sagen wir, dass du damit eine Variable a definierst und ihr einen Wert zuweist.

 

a = 2 : Variablendefinition (Zuweisung)

Du kannst in den Behälter nur ein einziges Objekt legen. Wenn du später unter dem Namen a die Zahl 3 speichern willst, so schreibst du a = 3 [mehr...Da in Python auch Zahlen Objekte sind, ist a eine Referenzvariable
und eine neue Zuweisung erzeugt ein neues Objekt. Der Speicherplatz
für das alte Objekt wird duch den Garbage Collector freigegeben.
].
 

a = 3 : neue Zuweisung

Was geschieht, wenn du nun a = a + 5 schreibst? Du  nimmst die Zahl, die sich gegenwärtig im Behälter befindet, auf den du mit a zugreifst, also die Zahl 3 und addierst dazu 5. Das Resultat 8 speicherst du wieder unter dem Namen a.

Das Gleichheitszeichen hat also in Computerprogrammen nicht dieselbe Bedeutung wie in der Mathematik. Es ist keine Gleichung, sondern eine Variablendefinition oder eine Zuweisung [mehr...In einigen Programmiersprachen verwendet man darum für
die Zuweisung eine andere Schreibweise, z.B.  := oder MAKE
].

PROGRAMMIERKONZEPTE: Variablendefinition, Zuweisung

 

 

VARIABLENWERT EINLESEN UND VERÄNDERN

 

Im Programm kannst du mit Hilfe einer Dialogbox der Variablen x einen Wert zwischen 10 und 100 zuweisen. Diesen Wert veränderst du nachfolgend in der Wiederholstruktur und zeichnest dadurch eine Spirale.


 


from gturtle import *

makeTurtle()

x = inputInt("Enter a number between 5 and 100")
repeat 10: 
    forward(x) 
    left(120)
    x = x + 20  
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 
Mit Variablen kannst du Werte speichern, die du im Laufe des Programms lesen und verändern kannst. Jede Variable hat einen Namen und einen Wert. Mit dem Gleichheitszeichen definierst du eine Variable und weist ihr einen Wert zu [mehr... Variablenwerte werden im Hauptspeicher des Rechners abgelegt und gehen verloren,
wenn das Programm endet oder der Computer abgeschaltet wird.
].

 

 

UNTERSCHEIDE ZWISCHEN VARIABLEN UND PARAMETER

 

Du solltest zwischen einer Variablen und einem Parameter unterscheiden. Parameter sind nur innerhalb einer Funktion gültig und transportieren Daten in eine Funktion, während Variablen überall möglich sind. Beim Aufruf erhält der Parameter einen Wert und kann im Innern der Funktion wie eine Variable verwendet werden [mehr... Ein Parameter ist also eine Eingangspforte, um Daten ins Innere der Funktion zu transferieren].

Um den Unterschied klar zu machen, verwendest du in deinem Programm in der Funktion quadrat() den Parameter seite. Mit einem Eingabedialog liest du eine Zahl ein und speichert sie in der Variablen s. Beim Aufruf von quadrat() übergibst du dem Parameter Seite den Variablenwert von s.

 


 


from gturtle import *

def square(sidelength):    
    repeat 4: 
        forward(sidelength) 
        right(90)
      
makeTurtle()
s = inputInt("Enter the side length")
square(s)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 

Du musst zwischen der Variable s und dem Parameter seite unterscheiden. Parameter sind in der Funktionsdefinition Platzhalter und können beim Aufruf wie Variablen aufgefasst werden, die nur im Inneren der Funktion bekannt sind.

Ruft man die Funktion mit einer Variablen auf, so wird der Variablenwert in der Funktion benutzt.   quadrat(laenge)  zeichnet somit ein Quadrat mit der Seitenlänge laenge [mehr... Eigentlich wird der Variablenwert als Parameterwert verwendet (Wertübergabe, pass-by-value)].

 

 

GLEICHE NAMEN FÜR VERSCHIEDENE DINGE

 

Wie du weisst, sollen Parameter- und Variablennamen ausdrücken, auf was sie sich beziehen. Sie sind aber eigentlich frei wählbar. Deshalb ist es üblich, bei gleichen Bezügen den gleichen Namen für Parameter und Variablen zu wählen. Es ergeben sich dadurch im Programm keine Namenskonflikte, du musst aber zum Verständnis des Programms den Unterschied im Auge behalten.

 


 


from gturtle import *

def square(sidelength):    
    repeat 4: 
        forward(sidelength) 
        right(90)
      
makeTurtle()
sidelength= inputInt("Enter the side length")
square(sidelength)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 
Auch wenn du für gewisse Parameter und Variablen den gleichen Namen verwendest, solltest du  Parameter und Variablen begrifflich auseinander halten.

 

 

AUFGABEN

 

1.

Nach Eingabe der Anzahl Ecken in einer Dialogbox soll die Turtle ein regelmässiges n-Eck zeichnen. Beispielsweise wird nach der Eingabe 8 ein 8-Eck gezeichnet. Den passenden Drehwinkel soll das Programm berechnen.  Spiele dazu Turtle und überlege dir, wie weit du dich drehen musst, um die nächste Seite zu zeichnen. Erinnere dich an das Zeichnen eines gleichseitigen Dreiecks.

 

2.

Nach der Eingabe eines Winkels in einer Dialogbox zeichnet die Turtle 30 Strecken der Länge 100, wobei sie nach jeder Strecke um den gegebenen Winkel nach links dreht. Experimentiere mit verschiedenen Winkeln und zeichne schöne Figuren. Mit hideTurtle() kannst du das Zeichnen beschleunigen.

 

3.

Die Turtle soll 10 Quadrate zeichnen. Definiere zuerst einen Befehl quadrat mit dem Parameter seite. Die Seitenlänge des ersten Quadrats ist 8. Bei jedem nächsten Quadrat ist die Seitenlänge um 10 grösser.

 

4.

Du kannst in einer Dialogbox die Seitenlänge des grössten Quadrats eingeben. Die Turtle zeichnet dann 20 Quadrate. Nach jedem Quadrat wird die Seitenlänge um den Faktor 0.9 kleiner und die Turtle dreht um den Winkel 10° nach links.