Kapitel IV - Von der Faulheit der Programmierer
Lösung der Lernfortschrittskontrolle
Bitte vergleiche deine Lösung mit der hier angegebenen Musterlösung. Wenn du der Meinung bist, dass deine Ergebnisse bei mindestens 5 von 7 Aufgaben richtig sind, dann melde dich zum Kapiteltest beim Lehrer. Ansonsten solltest du vorher die Inhalte aus Kapitel IV nochmals durcharbeiten und gewissenhaft lesen. Vielleicht hilft es dir, wenn du in Zukunft versuchst, parallel zu der Bearbeitung des Lerntextes eine knappe Zusammenfassung der wichtigsten Inhalte zu schreiben.
Zur weiteren Vertiefung des Stoffes kannst du dir auch selbst Übungsaufgaben ausdenken: Du könntest beispielsweise das Treppenprogramm so erweitern, dass am Ende der Treppe nach unten eine Treppe nach oben folgt. Oder schreibe ein Programm, das 10 Vierecke nebeneinander zeichnet.
Aufgabe 1
Innerhalb eines Programmes werden die folgenden beiden Anweisungen ausgeführt.
seitenlaenge = 11umfang = 4*seitenlaenge
- Erläutere die beiden Anweisungen.
-
Es wird anschließend die Anweisung
ausgeführt. Ändert sich der Wert der Variablen umfang?seitenlaenge = 12
Aufgabe 1 (Lösung)
- Der Variablen seitenlaenge wird der Wert 11 zugewiesen. Anschließend wird der Variablen umfang der Wert 44 zugewiesen. Dies geschieht in mehreren Schritten: Zuerst werden alle auftretenden Variablen durch ihre Werte ersetzt. Der arithmetische Ausdruck wird berechnet und anschließend wird das Ergebnis der Variablen umfang zugewiesen.
- Nein, der Wert ändert sich nicht. Wird eine Änderung gewünscht, so muss die Anweisung 02 wiederholt ausgeführt werden.
Aufgabe 2
Gib die "Regeln" bei der Wahl von Variablennamen an.
Aufgabe 2 (Lösung)
-
Die entsprechende "Beschriftung", die wir Name oder Variable genannt haben, muss die folgenden Regeln einhalten:
- Namen dürfen nur aus Buchstaben (ohne ä,ö,ü oder ß), Ziffern oder einem Unterstrich (_) bestehen. Das erste Zeichen darf allerdings KEINE Ziffer sein.
- Es dürfen einige reservierte Wörter nicht als Namen benutzt werden.
- Nach Möglichkeit soll der Name für ein Objekt mit einem Kleinbuchstaben beginnen.
-
Der Name sollte sinnvoll gewählt sein.
Stellen wir uns diesbezüglich einfach vor, dass wir bei sinnvoller Beschriftung der Schubladen schneller das gewünschte Objekt finden, als wenn wir einen anderen Namen wählen würden. Wer würde denn in einer Schublade, die mit "Schere" beschriftet ist, nach etwas essbarem suchen?
Aufgabe 3
In einem Programm, das zum Zeichnen ein Objekt der Klasse Turtle nutzt, wird folgende Anweisung ausgeführt:
myTurtle.forward(strecke)Gib an und erläutere, welche drei Anweisungen vorher ausgeführt werden müssen, damit das Programm lauffähig ist.
Aufgabe 3 (Lösung)
-
Der Variablen strecke muss ein Wert zugewiesen werden.
strecke = 12 -
Der Bauplan der Klasse Turtle muss geladen worden sein.
from turtle import Turtle -
Ein Objekt der Klasse Turtle muss erzeugt worden sein und unter der Variablen myTurtle gespeichert worden sein.
Alternativ kann auch die entsprechende Erzeugung mit direktem Kostümwechsel aufgerufen werden.myTurtle = Turtle()
Aufgabe 4
- Erläutere, was man unter einer Kontrollstruktur versteht.
- Im aktuellen Kapitel haben wir uns intensiv mit einer Kontrollstruktur auseinandergesetzt. Eine zweite Konstrollstruktur haben wir bereits dem Namen nach kennengelernt. Gib die Bezeichnungen der beiden Kontrollstrukturen an.
- Bei der Kontrollstruktur, mit der wir uns intensiv beschäftigt haben, unterscheidet man zwischen zwei unterschiedlichen Arten. Erläutere kurz beide Arten und gib an, mit welcher Art wir uns beschäftigt haben.
- Durch Aufruf der range()-Funktion mit dem Argument 12 erzeugt man ein Tupel. Gib an, wie viele Werte das Tupel enthält und welche dies sind.
Aufgabe 4 (Lösung)
- Mittels Kontrollstrukturen ist es möglich, den Ablauf eines Programmes zu steuern. Durch den Einsatz von Kontrollstrukturen wird nicht nur eine Anweisung nach der anderen ausgeführt, sondern es wird möglich, bestimmte Anweisungen zu wiederholen oder nur einen Teil der Anweisungen auszuführen.
- Schleifen und Verzweigungen
-
Bei der Kontrollstruktur "Schleife" unterscheidet man zwischen zwei grundlegenden Arten:
-
Zählschleifen
Bei diesen Schleifen ist vorher festgelegt, wie oft eine oder mehrere Anweisungen wiederholt werden. -
Bedingte Schleifen
Bei diesen Schleifen werden die zugehörigen Anweisungen solange wiederholt, wie eine bestimmte Bedingung erfüllt ist, beispielsweise solange, wie der Benutzer die linke Maustaste drückt.
-
Zählschleifen
- Das Tupel umfasst 12 Werte. Dabei handelt es sich um Zahlen, die bei 0 beginnen und in diesem Fall bis zur Zahl 11 gehen.
Aufgabe 5
Der folgenden Aufgabe liegt das vorliegende Programm zu Grunde:
# # Autor(en) Christian Graf# # Datum 13.04.2011# # Beschreibung ???from turtle import TurtlequadratTurtle = Turtle("turtle")a = 10b = 10for i in range(4):quadratTurtle.forward(a)quadratTurtle.left(90)quadratTurtle.forward(b)quadratTurtle.right(90)a = a + 10b = b + 10
- Gib an, welche Variablen und welche Kontrollstruktur in dem vorliegenden Programm verwendet werden.
- Zeichne die Ausgabe des Programms. Eine Vorwärtsbewegung um 10 Bildpunkte soll auf einem Blatt Papier der Vorwärtsbewegung um ein Kästchen entsprechen.
- Erstelle auf Basis deiner Zeichnung einen geeigneten Kopfkommentar.
- Markiere in deiner Zeichnung die Position der Turtle am Programmende.
- Schaut das Turtle-Objekt am Ende wieder in die ursprüngliche Richtung?
- Gib an, was unter Linux passiert, wenn man das Programm ausführt.
Aufgabe 5 (Lösung)
-
Variablen: quadratTurtle, a und b
Kontrollstruktur: for-Schleife
-
# # Zeichnung einer aufsteigenden Treppe mit immer größer werdenden Stufen - s.o.
- Ja. Dies liegt daran, dass eine Drehung um 90° nach links anschließend durch eine Drehung um 90° nach rechts wieder rückgängig gemacht wird.
- Das Programm wird ganz normal ausgeführt und die entsprechenden Anweisung werden durchgeführt. Allerdings bleibt das Fenster nicht geöffnet, sondern wird nach Programmende sofort geschlossen. Um dies zu verhinden, musst du die bekannte Anweisung am Ende ergänzen!
Aufgabe 6
Schreibe ein Programm, das das Quadrat der Zahlen 0 bis 99 ausgibt.
Aufgabe 6 (Lösung)
# # Autor(en) Christian Graf# # Datum 13.04.2011# # Beschreibung Ausgabe der Zahlen 0, 1, usw. bis 99 zum Quadratfor zahl in range(100):print(zahl**2)
Aufgabe 7
Schreibe ein Programm, das die folgende Ausgabe - zwischen den beiden Bereitschaftszeichen der Python-Shell - erzeugt:
(leere Zeile)**********
Hinweis: (leere Zeile) soll nicht ausgegeben werden. Dies dient lediglich der Information, dass hier eine leere Zeile ausgegeben werden soll.
Aufgabe 7 (Lösung)
# # Autor(en) Christian Graf# # Datum 13.04.2011# # Beschreibung Ausgabe eines Dreieckes aus *for anzahl in range(5):print("*"*anzahl)
Die Anweisungen in der Schleife werden für die Variablenwerte 0,1,2,3 und 4 ausgeführt. "*"*0 ergibt eine leere Zeichenkette, was zur Ausgabe einer Leerzeile führt. "*"*1 ergibt "*" und "*"*2 ergibt entsprechend "**", wie wir es in den vorherigen Kapiteln bereits kennengelernt haben.
Wenn du der Meinung bist, dass deine Ergebnisse bei mindestens 5 von 7 Aufgaben richtig sind, dann melde dich zum Kapiteltest beim Lehrer.