Einsendung:

Darf man Endlosschleifen benutzen?

 Mir wurde anfangs beigebracht: Programmiere keine Sprünge in Dein Programm. Dies würden Sie aber mit

   while(true)

letztendlich machen. Sonst kommen Sie aus der Schleife nicht wieder heraus.

Korrekt erkannt. Nach den klassischen Regeln des strukturierten Programmierens war diese Endlosschleife böse, ganz böse.
Aber ich bin der Meinung, daß diese Regeln zum großen Teil veraltet sind. Man muß wirklich versuchen, irgendwie Klarheit in seine Programme zu bekommen. Wenn man dazu von den althergebrachten Regeln abweichen muß, dann muß es eben sein. Recht deutlich wird das in der Lektion "logische Ausdrücke".
Eigentlich soll man nämlich nicht direkt aus einer Funktion mit return herausgehen, sondern das nur ganz am Ende der Funktion machen. Sie werden aber zugeben müssen, daß der Trick mit dem direkt Herausspringen das Programm viel klarer macht. Das wäre sicher nicht mehr der Fall, wenn die Funktion über mehrere Bildschirme ginge. So, wie das früher oft zu sehen war. Aber diese Zeiten sind vorbei.
Die meisten Funktionen passen bequem auf einen Bildschirm und davon sind die meisten kürzer als 6 Zeilen. Das liegt daran, daß man so viel Funktionalität in die Klassen legen kann. Jetzt ist einfach ein anderer Stil angesagt.
Die Version

   endlosschleife
      mensch zieht
      wenn gewonnen
         ausgabe mensch hat gewonnen
         ende
      rechner zieht
      wenn gewonnen
         ausgabe rechner hat gewonnen
         ende

ist sehr übersichtlich. Das liegt an der Gleichartigkeit der beiden Teile (mensch und rechner). Das Programm ist sozusagen "langweilig", und das ist überhaupt das beste, was einem Programm passieren kann. So ein langweiliges Programm kann nämlich keine Fehler haben.

Schreiben Sie "langweilige" Programme!

Würde man den Sprung (ende) vermeiden wollen, dann sähe das ungefähr so aus:

   schleife solange keiner gewonnen hat
      mensch zieht
      wenn gewonnen
         ausgabe mensch hat gewonnen
      sonst
         rechner zieht
         wenn gewonnen
            ausgabe rechner hat gewonnen

Ich halte die zweite Version für schwieriger zu verstehen. Das ist der ganze Grund für die häßliche Endlosschleife.
Fazit: Vergessen Sie alle Stilregeln, die Sie von Pascal kennen. Das gilt auch für Regeln, die Ihr EDV-Lehrer von Pascal kennt und sie einfach nach C++ übertragen hat. Entscheiden Sie jedesmal von Neuem unter dem Aspekt, was am einfachsten zu verstehen ist. Die bloße Einfachheit Ihrer Programme vermeidet Fehler wesentlich wirkungsvoller, als es eine starre Form könnte.
Lesen Sie fremden Code, um neue Ideen zu bekommen, wie man etwas einfacher schreiben kann.



Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00