1.6. Flussdiagramme: Der Programmablauf im Diagramm. Übungen Übung 1: Aufräumen1 Zu folgender Aufgabenstellung hast du bereits ein Programm geschrieben: Karol soll alle Ziegelsteine aufheben, die auf seinem geraden Weg zur Wand vor sich findet. Dabei dürfen auf jedem Feld beliebig viele Ziegelsteine liegen (auch einmal gar keine). a. Im folgenden ist ein mögliches Hauptprogramm gegeben. Zeichne hierzu ein Flussdiagramm. Programm wiederhole solange NichtIstWand FeldAufräumen Schritt *wiederhole *Programm b. Entwirf für das Unterprogramm "FeldAufräumen" ohne Vorlage ein Flussdiagramm. Übung 2: Invertieren1 Und noch einmal ein altbekanntes Programm: Vor Karol liegt eine (lückenhafte) Ziegelreihe. Er soll in Blickrichtung bis zur Wand gehen und die vor ihm liegende Ziegelreihe invertieren. Zeichne zu folgender Programmversion ein Flussdiagramm: wiederhole solange NichtIstWand wenn IstZiegel dann Aufheben sonst Hinlegen *wenn Schritt *wiederhole Übung 3: Flussdiagramme für Bedingungen Erinnerst du dich: Man kann Karol auch eigene Bedingungen beibringen.
a. Zeichne für die Bedingung "IstZiegelRechts" ein Flussdiagramm. b. Entwirf ein Flussdiagramm zu einer Bedingung "IstHintenWand". Übung 4: Was macht Karol? Karols Welt sei quadratisch eingestellt, d.h. die Welt ist gleich breit wie lang. Außerdem stehe Karol in einer Ecke, so dass rechts von ihm und hinter ihm eine Wand sei, d.h. vorne und links sei frei. Gegeben sei für diese Situation folgende Anweisung als Flussdiagramm: a. Versuche anhand des Flussdiagramms zu beschreiben, was Karol macht. b. Setze das Flussdiagramm als Programm für Karol um und teste es. Verbessere gegebenenfalls die Beschreibung aus a). c. Dieses Unterprogramm sei Teil eines Hauptprogramms. Das Flussdiagramm des Hauptprogramms ist im Folgenden dargestellt:
In dieses Hauptprogramm sind weitere Unterprogramme eingebaut. Die Anweisung "ZurEckeGehen" bringt Karol von jeder Position in eine der Ecken. Bei "Umdrehen" dreht er sich an Ort und Stelle in die entgegengesetzte Richtung um und bei Aufruf von "ZurWandGehen" geht Karol in Blickrichtung bis zur nächsten Wand. Was leistet das Hauptprogramm? d. Zeichne auch zu den drei Unterprogrammen "Umdrehen", "ZurWandGehen" und "ZurEckeGehen" je ein Flussdiagramm. Übung 5: Karol soll Ziegel umlegen (Programm "Umlegen1+2") Karol soll Ziegel von der einen auf die andere Seite des Raumes transportieren. Zu Beginn seiner Tätigkeit steht er neben der potenziellen Ziegelreihe mit Blickrichtung zum Ziel. a. Vorerst sollen an der Wand nur einzelne Ziegel liegen, Karol weiß allerdings nicht wo. Entwickle das zugehörige Programm zuerst als Flussdiagramm. Zerlege dabei das Problem in geeignete Teilprobleme durch geschickte Auslagerung von Unterprogrammen.
b. Schreibe nach deinen Flussdiagrammen ein Programm für Karol. c. Teste das Programm aus b) und verbessere gegebenenfalls die Flussdiagramme aus a). d. Jetzt dürfen die Ziegel auch gestapelt werden. Unter der Menüfolge "Einstellungen/Karol" kannst du die Anzahl der Ziegel kontrollieren lassen, die Karol mit sich tragen kann. Wenn Karol Ziegel aufgenommen hat nimmt die Bedingung "hatziegel" solange den Wert "wahr" an, bis er den letzten wieder abgelegt hat.
Löse Aufgabe a)-c) unter diesen geänderten Voraussetzungen Übung 6: Karol soll aufräumen (Programm "Aufräumen2") Im Direkteingabemodus kannst du in Karols Welt ein Chaos aus Ziegelsteinen anrichten. Karol soll den Raum aufräumen. a. Entwickle das zugehörige Programm zuerst als Flussdiagramm. Lagere geeignete Anweisungen in Unterprogramme aus, für die du separate Flussdiagramme entwerfen sollst. Ein kleiner Tipp: Wichtige Teilschritte der Aufgabe haben wir bereits gelöst (vgl. Aufgabe 1). Aus Aufgabe 1 lässt sich mit Gewinn eine Anweisung "ReiheAufräumen" gewinnen. Ach ja, mit den Bedingungen "IstNorden", "IstWesten",... kannst du leicht die Blickrichtung von Karol überprüfen. b. Schreibe nach deinen Flussdiagrammen ein Programm für Karol. c. Teste das Programm aus b) und verbessere gegebenenfalls die Flussdiagramme aus a).