Übungen - Kontrollstrukturen
Aufgabe 1: Fallunterscheidungen
Beschreibe die Struktur der folgenden Python-Fallunterscheidungen jeweils mit einem Struktogramm und den Verarbeitungsablauf mit einem Flussdiagramm.
(a)
zahl = randint(-1, 1)
if zahl < 0:
print('Das Spiel ist aus.')
else:
print('Das Spiel geht weiter.')
print('Bitte nochmal würfeln.')
(b)
zahl = randint(-1, 1)
if zahl < 0:
print('verloren')
print('Du musst eine Spielmünze hergeben.')
if zahl > 0:
print('gewonnen')
print('Du erhältst eine Spielmünze.')
(c)
zahl = randint(-1, 1)
if zahl > 0:
print('Spielfigur einen Schritt nach rechts')
else:
if zahl < 0:
print('Spielfigur einen Schritt nach links')
else:
print('Spielfigur nicht bewegen')
Aufgabe 2: Wiederholungen
Entwickle jeweils zunächst ein Struktogramm zur Ablaufmodellierung. Übersetze es dann in ein Programm.
(a) Zwei Würfel sollen geworfen werden. Der Benutzer gibt an, wie oft dies geschehen soll. Zudem gibt er eine Augensumme vor. Das Programm ermittelt dann, wie oft diese Augensumme in der Würfelserie vorkommt.
(b) Drei Würfel sollen geworfen werden. Der Benutzer gibt an, wie oft dies geschehen soll. Das Programm ermittelt dann, wie oft es vorkommt, dass die drei Würfel verschiedene Augenzahlen anzeigen.
Aufgabe 3: Wiederholungen
Löse die folgenden Probleme mit einem Simulationsprogramm. Entwickle zunächst ein Struktogramm zur Beschreibung deiner Löseidee.
(a) Vier Würfel werden geworfen. Lohnt es sich, darauf zu wetten, dass keine 6 darunter vorkommt?
(b) Zwei Würfel werden 24 mal geworfen. Lohnt es sich, darauf zu wetten, dass keine Doppelsechs darunter vorkommt?
Aufgabe 4: Typische Fehler analysieren
(a) Das folgende Programm zur Simulation eines Würfels enthält einen gravierenden Fehler. Findest du ihn, ohne das Programm zu testen?
# Vorbereitung
from random import randint, seed
seed()
# Eingabe
anzahl = int(input('Anzahl der Würfelwürfe: '))
# Verarbeitung und Ausgabe
zaehler = 0
while zaehler < anzahl:
augen = randint(1, 6)
print('Würfelergebnis: ', augen)
(b) Das folgende Programm zur Simulation eines Würfels enthält einen gravierenden Fehler. Findest du ihn, ohne das Programm zu testen?
# Vorbereitung from random import randint, seed seed() # Verarbeitung while augen != 6: augen = randint(1, 6) zaehler = zaehler + 1 # Ausgabe print('Anzahl der Würfe, bis eine 6 gefallen ist: ', zaehler)
(c) Formuliere Regeln, die man beim Programmieren mit Wiederholungen unbedingt beachten sollte.
Aufgabe 5: Ablaufmodellierung
Entwickle jeweils zunächst ein Struktogramm zur Ablaufmodellierung. Übersetze es dann in ein Programm.
(a) Betrachte das Werfen eines Würfels. Wie oft kommt es vor, dass man nach einer 6 gleich noch eine 6 würfelt? Entwickle ein geeignetes Simulationsprogramm zur Klärung dieser Frage.
(b) Betrachte das Werfen einer Münze. Wenn dreimal hintereinander die Münze mit "Kopf oben" gefallen ist, was ist dann wahrscheinlicher - dass beim nächsten Wurf die Münze mit "Kopf oben" oder mit "Zahl oben" fällt? Entwickle ein geeignetes Simulationsprogramm zur Klärung dieser Frage.
Aufgabe 6: Ablaufmodellierung
(a) Dir wird folgendes Spiel angeboten: Es werden drei Würfel geworfen. Fällt keine 6, so musst du 1 Euro zahlen. Fällt dagegen mindestens eine 6, so erhälst du so viele Euro, wie du 6en geworfen hast. Ermittle mit einem Simulationsprogramm, ob das Angebot gut ist.
(b) Entwickle selbst ein Spiel, bei dem gewürfelt wird. Fange am besten mit einer ganz einfachen Spielversion an.