Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
148 KAPITEL 12. PROGRAMMENTWURF<br />
{<br />
}<br />
return vorn_frei();<br />
Sie sehen, der Entwurf eines Programms ist gar nicht soschwierig, wenn man sich strikt an das<br />
Prinzip der Schrittweisen Verfeinerung halt:<br />
Wenn das Gesamtproblem zu komplex ist, teilen Sie es in einfachere Teilprobleme auf.<br />
Losen Sie die Teilprobleme:<br />
{ Wenn ein Teilproblem zu komplex ist, teilen Sie es in (noch) einfachere Teilprobleme<br />
auf.<br />
{ ...<br />
{ Setzen Sie die Losungen der Teilprobleme zu einer Losung des (ubergeordneten) Teilproblems<br />
zusammen.<br />
Setzen Sie die Losungen der Teilprobleme zu einer Losung des Gesamtproblems zusammen.<br />
12.4 Implementierung<br />
Ziel der Implementierungsphase ist es, den in der Entwurfsphase entwickelten Algorithmus in<br />
ein in einer Programmiersprache formuliertes Programm zu uberfuhren und in den Rechner<br />
einzugeben. Das erste Teilziel haben wir bei den Hamsterprogrammen bereits in der Entwurfsphase<br />
erreicht. Die Moglichkeit, Prozeduren und boolesche Funktionen zu de nieren und diese<br />
mit selbstgewahlten Bezeichnern zu benennen, ermoglichen uns dies. Algorithmenentwurf und<br />
Programmformulierung konnen durch das Prinzip der Schrittweisen Verfeinerung wechselseitig<br />
durchgefuhrt werden: Zunachst wird umgangssprachlich der Losungsalgorithmus zu einem<br />
(Teil-)Problem formuliert. Anschlie end wird dieser direkt in die Syntax der Hamstersprache<br />
Ubertragen. Beispiel:<br />
Problem: Der Hamster soll den Berg erklimmen.<br />
Algorithmus: Erklimme solange eine Stufe wie der Gipfel noch nicht erreicht ist.<br />
Implementierung:<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()