Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
12.3. ENTWURF 145<br />
void erklimme_den_berg()<br />
{<br />
}<br />
Wenden wir uns nun dem Losen der beiden Teilprobleme zu. Beim ersten Teilproblem ist dies<br />
nicht besonders schwierig. Solange wie sich vor ihm keine Mauer be ndet, soll der Hamster ein<br />
feld nach vorne hupfen, am Fu e des Berges legt er ein Korn ab:<br />
// der Hamster soll zum Berg laufen<br />
void laufe_zum_berg()<br />
{<br />
while (vorn_frei())<br />
{<br />
vor();<br />
}<br />
gib(); // am Fusse des Berges legt der Hamster ein Korn ab<br />
}<br />
Die Losung des zweiten Teilproblems ist noch nicht ganz so einfach zu ermitteln. Also nutzen wir<br />
das Prinzip der Verfeinerung erneut { daher der Begri Schrittweise Verfeinerung. Zunachst<br />
stellen wir fest, da die Hohe des Berges nicht festgelegt, also prinzipiell beliebig ist. Diese<br />
Feststellung deutet darauf hin, da der Einsatz einer Wiederholungsanweisung notwendig ist.<br />
Innerhalb dieser Wiederholungsanweisung soll der Hamster jedes Mal eine Stufe erklimmen. Die<br />
Wiederholungsanweisung endet, sobald der Hamster den Gipfel erreicht hat. Wir notieren: " Der<br />
Hamster soll jeweils eine Stufe erklimmen, solange wie er den Gipfel noch nicht erreicht hat.\<br />
Ubertragen wir diese Losungsidee nun in entsprechende Sprachkonstrukte der Programmierung.<br />
Fur die Anweisung " Der Hamster soll eine Stufe erklimmen\ de nieren wir eine weitere Prozedur,<br />
fur die Bedingung " ist der Gipfel erreicht\ eine boolesche Funktion:<br />
// der Hamster soll den Berg erklimmen<br />
void erklimme_den_berg()<br />
{<br />
do<br />
{<br />
erklimme_eine_stufe();<br />
} while (!gipfel_erreicht());<br />
}<br />
// der Hamster soll eine Stufe erklimmen<br />
void erklimme_eine_stufe()<br />
{<br />
}<br />
// hat der Hamster den Gipfel erreicht?<br />
boolean gipfel_erreicht()<br />
{<br />
}