Einlesen eines Labyrinths II

 [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

PathFinder.m2
WHILE Fgetc(ch, input) DO
   IF ch = nl THEN
      (* ... *)
      INC(line); column := 0;
   ELSE
      IF ch = space THEN
         (* ... *)
         spaceSeen := TRUE;
      ELSIF column = 0 THEN
         spaceSeen := FALSE;
      END;
      IF (line >= maxsize) OR (column >= maxsize) THEN
         WriteString("Das Labyrinth ist zu gross!"); WriteLn;
         RETURN FALSE
      END;
      (* ... *)
      maze[line, column] := ch; INC(column);
   END;
END;

*Sehr häufig wie in diesem Fall gehen Einlese-Schleifen mit vielen Überprüfungen einher.
 
*Tip: Gestalten Sie die Schleifen-Bedingung so einfach wie nur irgend möglich (z.B. wie hier bis zum Erreichen des Eingabe-Endes).
 
*Wenn dann die Schleife beendet ist, brauchen Sie nicht zu untersuchen, warum die Schleife endete.
 
*Behandeln Sie Fehler- und Sonderfälle dadurch, daß sie eine Prozedur mit RETURN FALSE beenden.
 

 [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 04.02.1999