EINFÜHRUNG |
Für das Programmieren ist das Konzept der Variablen sehr wichtig. Daher musst du dir besondere Mühe geben, es möglichst vollständig zu verstehen. Du weisst bereits, dass eine Variable ein Speicherplatz ist, der mit einem Namen angesprochen wird und in dem sich ein Wert befindet. Du weisst auch, dass Parameter als "flüchtige" Speicherplätze aufgefasst werden können, die beim Aufruf der Funktion einem Wert erhalten, auf den die Funktion während ihrer Abarbeitung zugreifen kann. |
EIN MOSAIK AUS 10x10 STEINEN |
from gpanel import * makeGPanel(0, 400, 0, 400) for y in range(0, 400, 10): for x in range(0, 400, 10): setColor(getRandomX11Color()) move(x + 5, y + 5) fillRectangle(10, 10) delay(1) |
MEMO |
Immer wenn ein Gitter durchlaufen wird, eignen sich zwei ineinander geschachtelte for-Schleifen. Überlege dir genau, warum tatsächlich die Steine zeilenweise von unten nach oben gelegt werden. Du benötigst bei move() eine Verschiebung, weil die Steine mittig verankert werden. Die Methode getRandomX11Color() gibt dir (als Wort) eine der Farben aus der X11-Farbpalette zurück, die du dann setColor() übergeben kannst. Du lässt zuerst die Funktion getRandomX11Color() und dann die Funktion setColor() ausführen. |
MAGISCHE ZAHLEN |
Jetzt musst du dir wieder den ganzen Programmcode durchgehen und Zeile und Zeile verstehen, um den Fehler zu finden. Wenn das nötig ist, um ein Programm an eine neue Situation anzupassen (Wiederverwendung), so war dein Programm zwar richtig, aber schlecht geschrieben. Du solltest dir einen guten Programmierstil angewöhnen, damit du Programme leicht an neue Situationen anpassen kannst. Wie musst du vorgehen? Statt die Steingrösse als fixe Zahl in den Code zu schreiben, definierst du eine Variable size, die du überall, wo die Steingrösse eine Rolle spielt, an Stelle der fixen Zahl einsetst. Um das Programm noch besser zu strukturieren, schreibst du zudem noch für das Legen eines Steins eine eigene Funktion drawStone(). from gpanel import * def drawStone(x, y): setColor(getRandomX11Color()) move(x + size/2, y + size/2) fillRectangle(size, size) makeGPanel(0, 400, 0, 400) size = 50 for x in range(0, 400, size): for y in range(0, 400, size): drawStone(x, y) |
MEMO |
Die Verwendung fixer Zahlenwerte, die über das Programm verteilt eingesetzt werden, führt zu schlecht wiederverwendbaren Programmen. Statt dessen sollte man Variablen definieren und diese an Stelle der Zahlen verwenden. Um anzudeuten, dass diese nirgends verändert werden dürfen, schreibt man solche Variablen manchmal in Grossbuchstaben und nennt sie Konstanten. Auf eine Variable, die im Hauptblock definiert wird, kann auch in jeder Funktion lesend zugegriffen werden. Wir nennen eine solche Variable darum auch eine globale Variable. Den Code für längere in sich abgeschlossene Aktionen sollte man in eine eigene Funktion verpacken. Dies hat mehrere Vorteile: Zum einen erkennt man am Funktionsnamen, was die Funktion tun soll, zum zweiten kann man sie mehrmals aufrufen, ohne den Code neu schreiben zu müssen und zum dritten wird das Programm damit übersichtlicher und verständlicher. Diese Art der Programmierung nennt man strukturierte Programmierung (oder auch prozedurale Programmierung) und sie ist ein wichtiges Merkmal eines guten Programmierstils. |
AUFGABEN |
|