i

Beispiel - Zahlen raten

Rate die Zahl!

Kennst du das Spiel "Zahlen raten"?

Zahlenraten

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:

Struktogramm

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.

Suche

v
6.3.2.8.1
dev.inf-schule.de/imperative-programmierung/python/konzepte/ablaufmodellierung/beispiel_zahlenraten
dev.inf-schule.de/6.3.2.8.1
dev.inf-schule.de/@/page/yv90uapQWMC31dKT

Rückmeldung geben