MINT lernen

Übung — AFB III (Verallgemeinern und Reflektieren)

Zehn Aufgaben zum Begründen und Beurteilen — hier zählt, dass du erklären kannst, warum ein Programm so zeichnet, wie es zeichnet.

Dein Fortschritt:
0 / 0 Aufgaben
3

Aufgabenblock — AFB III

Begründen statt nur ausführen: Fehler erklären, Programme vergleichen und verallgemeinern. Formuliere deine Antwort erst selbst in ganzen Sätzen, bevor du die Musterlösung aufklappst.

A1
Warum 360 durch n?
AFB III

Begründe in 3–4 Sätzen, warum sich die Turtle bei einem regelmäßigen n-Eck an jeder Ecke um 360° : n drehen muss.

Hinweis: Stell dir vor, du läufst selbst einmal um das Vieleck herum.

Strategie: Am Ende schaust du wieder in die Startrichtung.Warum so? Das Gesamtbild erklärt jeden einzelnen Winkel.
Lösungsskizze: Gesamtdrehung = eine Umdrehung = 360°; alle Ecken gleich → gleich große Teile.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Wenn die Turtle ein geschlossenes Vieleck abläuft, steht sie am Ende wieder am Start und schaut in dieselbe Richtung wie am Anfang. Dafür muss sie sich insgesamt genau einmal ganz herumgedreht haben, also um 360°. Bei einem regelmäßigen n-Eck sind alle n Drehungen gleich groß. Deshalb ist jede einzelne Drehung 360° : n groß.

Fünfeck: 5 · 72° = 360°
A2
Kopieren oder Schleife?
AFB III

Vergleiche die beiden Programme für ein Quadrat: acht einzelne Zeilen mit forward und left oder eine for-Schleife mit zwei eingerückten Zeilen. Nenne zwei Vorteile der Schleife.

Hinweis: Überlege, was passiert, wenn aus dem Quadrat ein Zehneck werden soll.

Strategie: Denke an Länge, Fehler und Änderungen.Warum so? Vorteile zeigen sich erst, wenn man etwas ändern will.
Lösungsskizze: kürzer · Änderung an einer Stelle · weniger Tippfehler · Anzahl leicht anpassbar.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Beide Programme zeichnen dasselbe Quadrat. Die Schleife ist aber kürzer: zwei Befehle statt acht. Soll die Seitenlänge geändert werden, muss man sie nur an einer Stelle ändern statt an vier — das vermeidet Fehler. Und für ein Zehneck ändert man nur range(4) in range(10) und den Winkel, statt 20 Zeilen zu schreiben.

A3
Nur ein Strich?
AFB III

Erkläre, warum dieses Programm nur eine lange gerade Linie zeichnet statt eines Quadrats, und gib die Korrektur an.

for i in range(4):    forward(50)left(90)

Hinweis: Achte darauf, welche Zeilen eingerückt sind.

Strategie: Nur eingerückte Zeilen gehören zur Schleife.Warum so? In Python bestimmt die Einrückung den Block.
Lösungsskizze: left(90) steht nach der Schleife → 4 × forward in dieselbe Richtung → 200 Schritte gerade.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Zur Schleife gehört nur, was eingerückt ist — hier also nur forward(50). Die Turtle läuft deshalb viermal 50 Schritte in dieselbe Richtung und zeichnet eine 200 Schritte lange Linie. Erst danach dreht sie sich einmal um 90°. Richtig ist es, left(90) genauso weit einzurücken wie forward(50).

Das Programm von oben
A4
Vom Vieleck zum Kreis
AFB III

Entwickle ein Programm, das ein regelmäßiges n-Eck mit dem Umfang 360 zeichnet, und beschreibe, wie das Bild aussieht, wenn n sehr groß wird (z. B. n = 90).

Hinweis: Umfang = Anzahl der Seiten · Seitenlänge.

Strategie: Seitenlänge = 360 : n, Winkel = 360 : n.Warum so? Mit einer Variable n passt sich alles automatisch an.
Lösungsskizze: n = 90 → Seite 4, Winkel 4° → sieht aus wie ein Kreis.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Ein mögliches Programm: n = 90, dann for i in range(n): forward(360 / n) und left(360 / n). Weil n Seiten zusammen 360 Schritte lang sein sollen, ist jede Seite 360 : n lang. Bei n = 90 ist jede Seite nur 4 Schritte lang und die Turtle dreht sich jedes Mal nur um 4°. Die Ecken sind dann so klein, dass das Vieleck wie ein Kreis aussieht — genau so zeichnet auch circle() einen Kreis.

n = 90: fast ein Kreis
A5
Zahl oder Variable?
AFB III

Beurteile die Aussage: „Variablen sind unnötig — ich kann auch gleich überall 50 hinschreiben.“

Hinweis: Stell dir vor, die Figur soll größer werden.

Strategie: Wie viele Stellen musst du dann ändern?Warum so? Eine Beurteilung wägt Vor- und Nachteile ab.
Lösungsskizze: Für ein Programm ohne Änderung stimmt es · bei Änderungen/Eingaben: Variable nötig.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Für ein kurzes Programm, das nie geändert wird, funktioniert auch die feste Zahl. Sobald die Größe aber mehrfach vorkommt, muss man bei einer Änderung jede Stelle finden — vergisst man eine, ist die Figur kaputt. Mit einer Variable ändert man nur eine Zeile. Außerdem kann eine Variable einen Wert speichern, der erst beim Ausführen feststeht, z. B. eine Eingabe mit input(). Die Aussage ist also nur für sehr einfache Programme richtig.

A6
Wann lohnt eine Funktion?
AFB III

Erläutere an einem Beispiel, wann eine eigene Funktion mit def sinnvoller ist als eine for-Schleife.

Hinweis: Eine Schleife wiederholt an derselben Stelle direkt hintereinander.

Strategie: Was ist, wenn dieselbe Figur an verschiedenen Orten und in verschiedenen Größen gebraucht wird?Warum so? Der Unterschied liegt im Wiederverwenden.
Lösungsskizze: Schleife: sofort n-mal hintereinander · Funktion: Baustein mit Namen, beliebig oft, mit Parametern.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Eine for-Schleife wiederholt Befehle direkt hintereinander, zum Beispiel die vier Seiten eines Quadrats. Braucht man aber drei Häuser an verschiedenen Stellen und in verschiedenen Größen, schreibt man einmal def haus(groesse): und ruft haus(40), haus(60) und haus(30) nach jeweils einem goto() auf. Die Funktion bekommt einen Namen, macht das Programm lesbarer und kann mit Parametern unterschiedlich ausgeführt werden. Oft steckt in der Funktion selbst wieder eine Schleife.

A7
Genau zwei rote?
AFB III

Das Programm unten wiederholt achtmal: Zufallszahl ziehen, bei w == 1 rot zeichnen, sonst blau. Prüfe die Aussage: „Bei jedem Start sind genau zwei der acht Striche rot.“

import randomfor i in range(8):    w = random.randint(1, 4)    if w == 1:        pencolor("red")    else:        pencolor("blue")    forward(20)

Hinweis: Welche Werte kann w annehmen, und wie oft ist davon einer die 1?

Strategie: Jeder Durchlauf zieht neu — unabhängig von den anderen.Warum so? Zufall bedeutet: im Mittel, nicht garantiert.
Lösungsskizze: Chance je Strich 1 von 4 · im Mittel 8 · ¼ = 2 · aber auch 0 oder 5 möglich.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: w ist bei jedem Durchlauf eine der Zahlen 1, 2, 3 oder 4, also ist die Chance für rot jeweils 1 zu 4. Bei acht Strichen sind im Mittel 8 · ¼ = 2 Striche rot. Weil aber jeder Durchlauf neu und unabhängig zieht, können es bei einem Start auch 0, 1, 3 oder mehr rote Striche sein. Die Aussage ist also falsch: Genau zwei ist nur der Durchschnitt über viele Starts.

A8
Warum schließt der Stern?
AFB III

Begründe, warum right(144) nach fünf Strichen einen geschlossenen Stern ergibt, right(150) nach fünf Strichen aber nicht.

Hinweis: Berechne jeweils die Gesamtdrehung nach fünf Strichen.

Strategie: Geschlossen heißt: wieder am Start und Blick wie am Anfang.Warum so? Eine Figur schließt sich nur bei vollen Umdrehungen.
Lösungsskizze: 5 · 144° = 720° = 2 · 360° · 5 · 150° = 750° → kein Vielfaches von 360°.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Damit die Figur sich schließt, muss die Turtle am Ende wieder in die Startrichtung schauen, die Gesamtdrehung muss also ein Vielfaches von 360° sein. Bei right(144) sind es 5 · 144° = 720°, genau zwei volle Umdrehungen — der Stern schließt sich. Bei right(150) sind es 750°, also 30° zu viel. Die Turtle steht nach fünf Strichen woanders und schaut in eine andere Richtung.

right(150): nicht geschlossen
A9
left oder setheading?
AFB III

Beurteile die Aussage: „Nach left(90) schaut die Turtle immer nach oben.“ Gib ein Gegenbeispiel an.

Hinweis: Unterscheide zwischen Drehen um einen Winkel und Einstellen einer Richtung.

Strategie: Was passiert, wenn die Turtle vorher schon nach oben schaut?Warum so? Ein einziges Gegenbeispiel widerlegt ein „immer“.
Lösungsskizze: left: relativ zur aktuellen Richtung · setheading: absolut · Gegenbeispiel left(90) zweimal.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Die Aussage stimmt nur, wenn die Turtle vorher nach rechts (0°) schaut, zum Beispiel direkt nach dem Start. left(90) dreht relativ: Es zählt 90° zur aktuellen Richtung dazu. Gegenbeispiel: Nach left(90) und noch einmal left(90) schaut die Turtle nach links (180°). Nur setheading(90) stellt die Blickrichtung unabhängig vom Vorher immer auf oben.

A10
Das Haus planen
AFB III

Bewerte den Plan von Tim: Er will ein Haus zeichnen und schreibt zuerst alles in ein langes Programm ohne Funktionen, weil „das schneller geht“. Formuliere eine Empfehlung für das Projekt.

Hinweis: Denke an das Projekt in 3.7: mehrere Teile, später Änderungen.

Strategie: Welche Teile kommen mehrfach vor (Fenster, Bäume)?Warum so? Bewerten heißt: Kriterium nennen und entscheiden.
Lösungsskizze: kurzfristig schneller · langfristig unübersichtlich · Empfehlung: Teile als Funktionen, testen, dann zusammensetzen.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Für ein ganz kleines Bild ist Tims Weg schnell erledigt. Ein Haus mit Fenstern, Tür und Garten wird aber schnell lang und unübersichtlich; Fehler sind schwer zu finden, und jedes Fenster müsste man neu abtippen. Besser ist es, Teile wie fenster(x, y) oder baum(x, y) als Funktionen zu schreiben, einzeln zu testen und dann im Hauptprogramm aufzurufen. Meine Empfehlung: in Bausteinen planen — das kostet am Anfang etwas Zeit, spart sie aber bei jeder Änderung.