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:
Implementierung des Ablaufmodells
Programmiersprachen stellen in der Regel einen Baustein zur Erzeugung von (Pseudo-) Zufallszahlen
zur Verfügung. In Python heißt dieser Baustein random
. Mit der
Anweisung seed()
wird der Zufallsgenerator van Python initialisiert.
Mit der Funktion randint(...)
lassen sich dann die Zufallszahlen generieren.
Teste selbst. Erzeuge analog eine Zufallszahl aus dem Zahlenbereich 0..99.
Aufgabe 1
Entwickle passend zum Struktogramm ein Programm und teste es.
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.