Universität Ulm -Abteilung Angewandte Informationsverarbeitung
1.Übungsblatt (04.05.00 bis 11.05.00)
zur Vorlesung Allgemeine Informatik II (SS 00)


Aufgabe 1 (15 Punkte)

Zuviele Unfälle passieren auf der Treppe! Deshalb fahren Sie bei nächster Gelegenheit mit dem Aufzug an der Uni vom 3.Stock nach unten. Ihr Sportlehrer hat Ihnen eingetrichtert, dass Ausgänge immer im 1.Stock zu finden sind.... So landen Sie nach Drücken des Knopfs "1" in Niveau 1 und also im Keller der Uni (Ein Lob an den Architekten!). Gerade als Sie aus dem Aufzug treten, und die Tür sich hinter Ihnen schließt, fällt zu allem Überfluß das Licht aus, weil in der Chemie-Abteilung wieder mal ein Versuch unbeaufsichtigt zu Ende lief ...
Panik erfaßt Sie zuerst - aber dann erwacht die coole Naturwissenschaftlerin in Ihnen. Sie wissen, dass irgendwo in diesem Labyrinth ein Ausgang sein muss ... und zwar entlang an der gleichen Wand, die Sie gerade hinter sich haben ... Schlagartig geht Ihnen auf, warum der Mensch eine linke Hand hat: nämlich um im Dunkeln durch unbekannte Irrgärten durchzufinden! Sie erfinden zu Ehren Ihrer linken Hand die Linke-Hand-Regel-für-Irrgärten und landen damit sicher am Aufgang zum Treppenhaus, durch das Sie dem Irrsinn an der Uni ein weiteres Mal entrinnen können!

Linke-Hand-Regel: man legt einfach die linke Hand auf eine Wand am Eingang und läßt die Wand erst wieder los, wenn man den Ausgang gefunden hat :-) .

Sie wollen Ihr Wissen ein für alle Mal dokumentieren und beschließen, es in ein Oberon-Programm zu packen, das in der Lage ist, durch Irrgärten der maximalen Größe 128x128 zu finden.

Ihr Programm soll von der Standardeingabe Irrgärten der folgenden Bauart (in eine CHAR-Matrix) einlesen können:
(einige Beispielirrgärten finden Sie hier)

Ihr Programm soll einen Weg durch den Irrgarten finden und dabei den eingeschlagenen Weg mit "*" kennzeichnen. Damit man den Ablauf genau verfolgen kann, soll nach jedem Schritt - und natürlich am Ende - das Labyrinth am Bildschirm ausgegeben werden ("Einzelschrittmodus").

Beispiel: (a) stellt den Durchlauf durch das Labyrinth (b) nach der Linken-Hand-Regel dar:

                                    XXXXXXX           XXXXXXX
                  X**XX*X           X  XX X
                  X*XX***           X XX   <Ausgang
                  **X**XX   Eingang>  X  XX
                  X***XXX           X   XXX
                  XXXXXXX           XXXXXXX
                    (a)               (b)

(Das Labyrinth (b) soll von Ihrem Programm eingelesen werden können!)
(Weiteres Beispiel)

Wenn Sie sich ganz sicher sind, dass Ihr Programm funktioniert, können Sie den Einzelschrittmodus auch wieder ausschalten und nur das durchlaufene Labyrinth anzeigen. Im Tutorium sollten Sie aber auch den Einzelschrittmodus vorführen können!