Wiederholung mit Endbedingung

Das Bild zeigt die Wohnung von Franz, bestehend aus einem Zimmer mit zwei Türen und einem Gang. In seinem Zimmer herrscht immer ein Riesenchaos, so dass er es nur von oben nach unten durchschreiten kann. Häufig muss Franz morgens seinen Schlüssel im Zimmer suchen, bevor er die Wohnung verlassen kann. 
Wie müsste eine Anweisung für Franz lauten, wenn er morgens nicht schlaftrunken ohne Schlüssel aus dem Haus rennen will?

In kurzen Worten lautet die Anweisung an Franz: 
Wiederhole "suche Schlüssel" bis "Schlüssel gefunden". 

Im allgemeinen Fall hat so eine Wiederholung die Form

Wiederhole "Anweisung" bis "Bedingung"

Beachte:

Eine Bedingung muss man immer eindeutig mit ja oder nein beantworten können! 

Auch in der Informatik gibt es eine solche Wiederholung, bei der man am Ende prüft, ob eine bestimmte Bedingung eingetreten ist, also eine Wiederholung mit Endbedingung. Das Struktogramm wurde der Wohnung von Franz nachempfunden (oder umgekehrt!).

Beispiel:

Im Jahr 1999 lebt eine Anzahl von 6 Milliarden (6.0E9) Menschen auf der Erde. Jedes Jahr erhöht sich diese auf das 1,018-fache. Nach wie viel Jahren ist diese Anzahl erstmals auf mehr als 7 Milliarden (7.0E9) angewachsen?


Musterlösung

Weitere Aufgaben:

1. Wachstum der Bevölkerung in Indien in den letzten 50 Jahren

Ohne große Probleme kann man das Programm nun so verändern, dass es die Entwicklung der Bevölkerungszahl in einem bestimmten Land darstellt. Als Beispiel dient Indien:

Wachstumsfaktor: 1.021
Bevölkerungszahl im Jahr 1950: ca. 357 600 000

a) Ersetze die entsprechenden Größen im bestehenden Programm!
b) Wie viele Menschen leben 1999 in Indien?
c) In welchem Jahr überschreitet Indien die Milliardengrenze?

Musterlösung 


2. Wann lebte der erste Mensch auf der Erde?

Rechnet man "in die Zukunft", so muss man die Jahreszahl immer um 1 erhöhen und die Bevölkerungszahl mit dem Wachstumsfaktor multiplizieren.

Rechnet man dagegen "in die Vergangenheit", so muss man die Jahreszahl immer um 1 erniedrigen und die Bevölkerungszahl durch den Wachstumsfaktor teilen
a) Berechne mit dem Programm, wann "weniger als ein Mensch" (anzahl<1) auf der Erde gelebt haben müsste! 
b) Was ist an dieser Berechnung wohl falsch?

Musterlösung

3. Benutzereingabe des Wachstumsfaktors
Verändere das Programm so, dass der Benutzer der Wachstumsfaktor von Hand eingeben kann (entweder nur am Anfang oder nach jedem Jahr neu). Probiere es mit den Werten aus obigen Beispielen aus! (Für Profis: den Wert des Wachstumsfaktors nur alle 10 Jahre verändern lassen!)

Musterlösung 


4. Benutzereingabe der Endbedingung
Nun soll der Benutzer auch das Jahr eingeben können, bis zu dem gerechnet wird (Variable EndJahr). Die Besingung muss dann also lauten: jahr = EndJahr

Musterlösung

Zurück zur Übersicht der Arten der Wiederholung