Beispiel - Zahlen raten
Rate die Zahl!
Kennst du das Spiel "Zahlen raten"?
Person A denkt sich eine Zahl aus einem vorher vereinbarten Bereich aus. Person B versucht, mit möglichst wenig Rateversuchen die Zahl herauszufinden. Person A gibt nur Rückmeldungen der Form "zu klein", "zu groß" oder "Treffer".
Ziel ist es, ein Programm zu entwickeln, das die Rolle von Person A übernimmt.
Spielabläufe
Bevor man ein Programm schreiben kann, muss man erst einmal genaue Vorstellungen vom Ablauf der Datenverarbeitung haben.
Ich habe mir eine Zahl ausgedacht! 63? Zu groß! 30? Zu klein! 40? Zu klein? 45? Zu groß! 44? Treffer!
Ablaufmodellierung
Das Verfahren lässt sich in Worten z.B. so beschreiben:
Zunächst wird die Ratezahl festgelegt. Solange die Ratezahl nicht gefunden ist, wird ein Vorschlag entgegengenommen. Wenn der Vorschlag kleiner als die Ratezahl ist, dann wird die Rückmeldung 'Zu klein!' gegeben, wenn der Vorschlag größer als die Ratezahl ist, dann wird die Rückmeldung 'Zu groß!' gegeben, ansonsten wird die Rückmeldung 'Treffer!' gegeben. Die Ratezahl ist dann gefunden.
Das Verfahren lässt sich mit einem Struktogramm weiter präzisieren:
...
Aufgabe 1
(a)
Programmiersprachen stellen in der Regel einen Baustein zur Erzeugung von (Pseudo-) Zufallszahlen
zur Verfügung. In Python heißt dieser Baustein random
und kann wie folgt benutzt werden.
>>> from random import randint
>>> randint(1, 6)
2
>>> randint(1, 6)
5
>>> randint(2, 5)
5
>>> augen = randint(1, 6)
>>> augen
6
Probiere das selbst einmal aus.
(b) Entwickle passend zum Struktogramm ein Programm und teste es.
# Import des Baustein zum Erzeugen von Zufallszahlen
from random import randint
# Initialisierung
ratezahl = randint(0, 99)
...
Mehrere Spielabläufe
Wenn man mehrere Ratespiele zulässt, dann könnte der Ablauf so aussehen:
Nochmal raten? Antwort (j/n): j Ich habe mir eine Zahl ausgedacht! ... Treffer! Nochmal raten? Antwort (j/n): j Ich habe mir eine Zahl ausgedacht! ... Treffer! Nochmal raten? Antwort (j/n): n Ok!
Aufgabe 2
(a) Formuliere das erweiterte Verfahren zunächst in Worten.
(b) Beschreibe es anschließend mit einem Struktogramm.
(c) Entwickle dann ein Programm passend zum Struktogramm und teste es.