Lösungsvorschlag Einseitige bedingte Anweisung

Aus ComeniusWiki
Wechseln zu: Navigation, Suche
//Eine Anweisung um den Code zu verkürzen.
Anweisung Umdrehen
   LinksDrehen
   LinksDrehen
*Anweisung

//Um das Problem von einem beliebigen Startpunkt aus lösen zu können, muss sich 
//Karol erst einmal auf eine Startposition in der Ecke bringen.
Anweisung PositionEinnehmen
   wiederhole 2 mal
      wiederhole solange NichtIstWand
         Schritt
      *wiederhole
      LinksDrehen
   *wiederhole
*Anweisung

//Die Anweisung Test überprüft, ob eine Marke vorhanden ist.
//Wenn Karol dabei nicht vor der Wand steht, geht er einen Schritt weiter, 
//dreht sich um, legt einen Ziegel, dreht sich wieder um und macht weiter.
//Steht er vor der Wand, macht er einen Schritt zurück, legt den Ziegel, 
//stellt sich auf den Ziegel und macht dann weiter.
Anweisung Test
   wenn IstMarke dann
      wenn NichtIstWand dann
         Schritt
         Umdrehen
         Hinlegen
         Umdrehen
      sonst
         Umdrehen
         Schritt
         Umdrehen
         Hinlegen
         Schritt
     *wenn
   *wenn
*Anweisung


Anweisung Bahn
   Wiederhole solange NichtIstWand
      Test
      Schritt
      Test            //Lässt man hier den 2.Test aus, werden Marken vor der Wand ignoriert.
   *wiederhole
*Anweisung


Programm
   PositionEinnehmen
   Wiederhole 4 mal
      Bahn
      LinksDrehen
      Schritt
      LinksDrehen
      Bahn
      RechtsDrehen
      Schritt
      RechtsDrehen
    *wiederhole
    Bahn           //Karol läuft vier mal auf und ab und dann noch eine Bahn bis ans Ziel.
*Programm