| |
|
Das Konzept = Niki der Roboter=
|
Niki der Roboter ist eine geschlossene Programmierumgebung mit eigenem Compiler und Editor für den Anfangsunterricht in PASCAL.
NIKI ist das Modell eines programmierbaren Roboters, der sich auf einem Arbeitsfeld der Größe 10 x 15 bewegen und dort Gegenstände aufnehmen und ablegen kann.
| |
| 2 |
|
Was kann dieser Roboter Niki?
|
Zugegeben, es ist noch nicht sehr viel. Ganze 4 Anweisungen kann er abarbeiten:
vor
|
... geht einen Schritt nach vorn
|
drehe_links
|
... dreht sich um 90° nach links
|
| gib_ab
|
... legt einen Gegenstand ab
|
| nimm_auf
|
... hebt einen Gegenstand auf
|
| 
|
| 3 |
|
1. Erweiterung: Prozedurkonzept
|
Das Prozedurkonzept erlaubt es uns, den Quellcode des Programms in nützliche Prozeduren (Bausteine) zu zerlegen. Den Prozeduren gibt man aussagekräftige Bezeichner (Namen), die man dann wie neue Niki-Anweisungen benutzen darf. Syntax: procedurdeklaration Beispiel:
PROGRAM neue_prozedur; PROCEDURE drehe_rechts; {hier wird die Prozedur deklariert} BEGIN
drehe_links;
drehe_links;
drehe_links
END; BEGIN {hier beginnt das Hauptprogramm}
drehe_rechts {Aufruf der Prozedur}
END .
| 
|
| 4 |
|
2. Erweiterung: Sensoren
|
Um Niki auch in unbekannten Arbeitsfeldern einsetzen zu können, wurde er mit Sensoren ausgestattet. Das sind logische Ausdrücke in Form von Bedingungen, die er prüft und die ihm die Rückmeldung WAHR oder FALSCH liefern.
Hindernis-Sensor
|
vorne_frei rechts_frei links_frei
|
Material-Sensor
|
hat_Vorrat platz_belegt
|
Richtungs-Sensor
|
nordwaerts ostwaerts westwaerts suedwaerts
|
Nun fehlen noch Anweisungen, die diese Bedingungen (Sensoren) abfragen, damit Niki darauf reagieren kann. Näheres folgt im Block Kontrollstruktur Schleife.
| 
|
| 5 |
|
Kontrollstruktur Schleife 1: WIEDERHOLE-BIS
|
-
Niki soll nun selbständig das Material finden und aufnehmen. Die Anzahl der Schritte und die Stückzahl des Materials müssen durch seine Sensoren erkannt werden. Die Anweisungen vor und nimm_auf müssen wiederholt ausgeführt werden. Syntax: repeat-until-schleife
Teste folgenden Code in einem Programm mit dem beschriebenen Arbeitsfeld.
REPEAT vor; UNTIL platz_belegt; REPEAT nimm_auf; UNTIL not platz_belegt
Mit Schleife und Prozedur lassen sich nun nützliche Bausteine programmieren:
Procedure Gehe_bis_zur_Wand;
|
Procedure Nimm_alle_auf;
|
Procedure Gib_alle_ab;
|
Begin Repeat vor Until not vorne_frei end;
|
Begin Repeat nimm_auf Until not platz_belegt end;
|
Begin Repeat gib_ab Until not hat_Vorrat end;
|
Schreibe nun ein Programm zur Lösung des folgenden Problems und unter Nutzung der besprochenen Prozeduren: Niki soll alle Steine in die gegenüberliegende Grube legen und zum Ausgangspunkt zurückkehren.
 Lösung zu Aufgabe 5-1 Arbeitsmaterial
| 
|
| 6 |
|
Kontrollstruktur Schleife 2: SOLANGE-TUE
|
|
Repeat
vor Until not vorne_frei
|
Hier klappt es!
|
Hier versagt es!
|
Syntax: while-do-schleife Die WIEDERHOLE-BIS-Schleife führt erst die Anweisung aus und prüft anschließend die Bedingung. Niki rennt gegen die Wand
Die SOLANGE-TUE-Schleife prüft erst die Bedingung und führt anschließend die Anweisung aus. Niki bleibt stehen
|
Auf dem Arbeitsfeld befinden sich mehrere Wände unterschiedlicher Höhe und mit unterschiedlichen Abständen. Niki soll bei der Markierung hinter der letzten Wand stehen bleiben.
Das Hauptprogramm soll lauten:
|
BEGIN WHILE not platz_belegt DO Begin Gehe_zu_Wand; Umgehe_die_Wand End; END.
|
| 
|
| 7 |
|
Kontrollstruktur Verzweigung: WENN-DANN-SONST
|
Niki befindet sich in einem dunklen Gang, der irgendwo nach rechts oder nach links abzweigen wird. Wie findet er diese Abzweigung? Er benötigt also eine Abfrage von deren Ergebnis der weitere Verlauf des Programms abhängt. Dies nennt man eine Verzweigung. Es kann also sooo oder sooo weitergehen. WENN Abzweigung rechts DANN gehe nach rechts SONST gehe nach links
Pseudo-Code
|
Struktogramm
|
|
WENN bedingung erfüllt
SONST anweisung2
|
|
Syntax: if-then-else-anweisung
Hinweis: Der ELSE-Zweig kann entfallen
Lösung:
Niki muss nach jedem Schritt die IF-THEN-ELSE-anweisung ausführen.
IF rechts_frei THEN BEGIN
drehe_rechts; vor
END ELSE BEGIN
drehe_links_frei; vor
END; ...
7-1 Schreibe ein Programm zur Lösung des beschriebenen Problems. Bedenke, dass die Gänge verschlossen sind.
7-2 Niki soll alle Gegenstände aufsammeln und in die Grube legen. Schreiben ein Programm mit Schleife und Verzweigung!
7-3 Niki wird als Rohrleitungsreiniger eingesetzt und soll die Verstopfung beseitigen. Er sucht sich den Weg durch die Rohrleitung, findet die Verstopfung, beseitigt diese und kehrt an den Ausgangspunkt zurück.
| 
|
| 8 |
|
Komplexe Aufgaben mit allen Kontrollstrukturen
|
Am Ende eines spiralförmigen Ganges liegt ein Gegenstand, den Niki holen soll und am Ausgang ablegt.
 Video Spirale Datei
Niki soll die Durchbrüche in den Schichten finden und den Gegenstand aufnehmen.
 Video Schichten Datei
-
Niki soll den Hauptgang entlanglaufen und in den jeweils rechten Seitengang einbiegen. Dem Vorratsplatz links entnimmt Niki alle Waren und füllt damit die rechts und links vom Seitengang befindlichen Regale auf. Die restlichen Waren legt er wieder auf den Vorratsplatz. Auf dem Rückweg bearbeitet Niki die andere Seite.
Program Kaufhaus; (* weitere Prozeduren *)
PROCEDURE EHE_DEN_HAUPTGANG_ENTLANG;
BEGIN
WHILE VORNE_FREI DO
BEGIN
IF RECHTS_FREI THEN
BEGIN { ARBEITE_IM_SEITENGANG }
GEHE_ZUM_VORRATSPLATZ;
NIMM_VORRAT_MIT;
FUELLE_DIE_REGALE_AUF;
LEGE_DEN_REST_ZURUECK;
GEHE_ZUM_HAUPTGANG_ZURUECK;
END; { ARBEITE_IM_SEITENGANG }
VOR;
END;
END;
|
BEGIN { KAUFHAUS }
ARBEITSFELD(KAUFHAUS);
GEHE_DEN_HAUPTGANG_ENTLANG;
DREHE_UM;
GEHE_DEN_HAUPTGANG_ENTLANG;
DREHE_UM;
END 
|
 Download Arbeitsfeld kaufhaus.rob Datei
 Video Kaufhaus Datei
| 
|
| 9 |
|
Programmier-Praktikum Zeitraum: 09.07-15.07.09
|
| 
|
| 10 |
Dieser Kurs enthält 9 Einheiten, die entsprechend der Behandlung im Unterricht sichtbar gemacht werden!
| 
|