This is an old revision of the document!
Was weisst du noch von vor den Herbstferien?
Wir testen dies durch “angeleitetes Programmieren”. Dabei tauchen die wesentlichen Konzepte auf, die du hoffentlich gelernt hast…
In den Aufgabenboxen unten folgt eine schrittweise Anleitung zum Schreiben eines Programms, das vom Benutzer einen Satz erfragt und diesen 100 Mal in Slalom-Form ausgibt:
Gib einen Satz ein: Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! Schleifen sind cool! ...
- (1) Öffne eine neue Datei
slalom.py
in Visual Studio Code in deinem Ordner mit den Python-Programmen.
- (2) Eingabe des Satzes durch den Benutzer: Schreibe in die erste Zeile den Befehl, der vom Benutzer den Satz erfragt (per “Gib einen Satz ein: ”) und diesen in einer Variablen namens
satz
speichert.
- (3) Definiere in der zweiten Zeile eine Variable
einrueckung
und weise ihr den Wert 2 zu.
- (4) Definiere in der dritten Zeile eine Variable
veraenderung
und weise ihr den Wert 1 zu.
Die Idee hinter diesen beiden Variablen: Sie werden verwendet, um den Slalomtext zu erzeugen:
- Bei jeder der 100 Ausgaben müssen wir wissen, wie viele Leerzeichen vor dem Satz ausgegeben werden sollen. Diese Zahl wird in der Variable
einrueckung
gespeichert. - Die Variable
einrueckung
wächst manchmal um eins (wenn der Slalomtext nach rechts wandert), manchmal wird sie um eins kleiner (wenn der Slalomtext nach links wandert. Wir merken uns diese Veränderung der Einrückung in der Variablenveraenderung
, die nur die Werte1
und-1
annehmen wird: Ist sie 1, wandert der Text nach rechts. Ist sie -1, wandert der Text nach links.
- (5) Ergänze am Ende des Programms eine for-Schleife, die den vom Benutzer eingegebenen Satz 100 Mal ausgibt.
- (6) Teste dein Programm!
- (7) Verändere den Befehl zur Ausgabe des Satzes so, dass vor dem Satz so viele Leerzeichen ausgegeben werden, wie die Variable
einrueckung
angibt. (Bitte wirklich die Variable verwenden und nicht einfach den aktuellen Wert - wie in der Infobox beschrieben, verändert sich der Wert voneinrueckung
während des Programmablaufs.)
- (8) Teste dein Programm! Der Text sollte nun 100 Mal jeweils um 2 Leerzeichen eingerückt ausgegeben werden.
- (9) Neue letzte Zeile des Progamms (innerhalb der for-Schleife, also eingerückt): Weise der Variablen
einrueckung
als neuen Wert diejenige Zahl zu, die aus dem aktuellen Wert voneinrueckung
durch Addition der Variablenveraenderung
entsteht.
- (10) Teste dein Programm! Der Text sollte nun immer weiter nach rechts wandern.
- (11) Ergänze am Ende des Programm (innerhalb der for-Schleife): Wenn die Variable
einrueckung
den Wert5
hat, so setze die Variableveraenderung
auf-1
.
- (12) Teste dein Programm! Der Text sollte nun einmal nach rechts und dann nach links wandern.
- (13) Ergänze am Ende des Programm: Wenn die Variable
einrueckung
den Wert0
hat, so setzeveraenderung
auf1
.
- (14) Teste dein Programm! Nun sollte alles klappen und der Slalomtext ausgegeben werden.
- (15) Zum Verzögern der Ausgabe: Schreibe
import time
ganz an den Anfang des Programms undtime.sleep(0.05)
(warte 0.05 Sekunden, also 5 Hundertstelsekunden) ganz ans Ende des Programms (eingerückt oder nicht?)
- (15) Welche (besonders) wichtigen Kontrollstrukturen kommen in dem obigen Programm vor?
- (16) Gib mir Bescheid, damit ich dir erkläre, wie man den Programmablauf schrittweise verfolgen kann! - Oder frage eine:n Mitschüler:in, die/der es bereits weiss. (Breakpoint direkt vor der Schleife setzen, Ausführen mit F5 (oder per Menü “Run”→“Start Debugging”1), dann “F11” (oder Icon “Step into”).
- (17) Verfolge den Programmablauf schrittweise und beobachte die Werte der Variablen! Beobachte mindestens die ersten 10 Durchläufe der for-Schleife, so dass beide Code-Blocks der for-Schleife ausgeführt werden (und sich dabei die Variable
veraenderung
verändert)!
Hoffentlich ist dir nun vollkommen klar, wie das gerade geschriebene Programm funktioniert und warum wir die beiden Variablen einrueckung
und veraenderung
verwenden.
- (18) Bearbeite das Skript weiter (oder beantworte zuvor die folgende Bonusfrage).
- (19) Bonusfrage: Wie kann man die beiden if-statements durch ein einziges if-statement ersetzen?
Link zur Kursseite
1)
Debugging bedeutet Fehlersuche, vgl. https://de.wikipedia.org/wiki/Debuggen#Begriffsherkunft