Index
Niki – der Roboter 2.0

Eine Lernumgebung für Pascal mit integriertem Editor und Compiler

Niki-Hilfe  gibt eine Übersicht über die folgenden Themen:

Was ist NIKI?

NIKI-Menü

Programmsteuerung

Aufgaben und Beispiele


Einleitung

NIKI - der Roboter

NIKI - der Roboter ist eine geschlossene Programmierumgebung mit eigenem Compiler und Editor für den Anfangsunterricht in PASCAL.

Die Idee zu diesem Programm entstammt Materialien zur Lehrerfortbildung in Nordrhein-Westfalen und geht ursprünglich auf das amerikanische Vorbild Karel the Robot von Richard E. Pattis zurück.

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.

Außerdem verfügt er über Sensoren, die ihm das Wahrnehmen seiner Umgebung ermöglichen.

NIKI-Programme sind gewöhnliche Pascal-Programme mit allen Kontrollstrukturen (Verzweigungen und Schleifen),  aber ohne Variablen.


Niki-Menü
Das Niki - Menü

Im folgendem werden die einzelnen Menüpunkte der NIKI-Programmierumgebung erläutert.

Datei

Bearbeiten

Start

NIKI-Optionen

Arbeitsfeld

Teach-in


Datei
Datei-Menü

Neu

legt eine neue Datei im Editor an und macht bei Bedarf gleichzeitig das Editorfenster sichtbar.

Öffnen

lädt eine Programmdatei von Diskette/Festplatte in ein neues Editorfenster.

Speichern

der aktuelle Editorinhalt wird auf Diskette oder Festplatte geschrieben.

Speichern unter

Eine Programmdatei kann unter einem neuen Namen gespeichert werden. Dies ist beispielsweise sinnvoll, wenn ein Programm für ein anderes Arbeitsfeld weiterentwickelt werden soll.

Schließen

Das aktuelle Editorfenster wird geschlossen.

Drucken

Der Inhalt des aktuellen Editorfensters wird auf dem Drucker ausgegeben.

Beenden

Das Programm wird beendet. Eine Warnbox weist auf einen nicht gespeicherten Programmtext bzw. Arbeitsfeld hin.


Arbeitsfeld
Arbeitsfeld-Menü

Dieser Menü-Punkt dient zum Erstellen neuer Arbeitsfelder und zum Verändern bereits vorhandener Arbeitsfelder. Das Arbeitsfeld besteht aus 10 x 15 Quadraten, die den Aktionskreis von NIKI ausmachen. Zwischen den Quadraten können Hindernisse positioniert werden. Auf jedem Quadrat haben maximal 9 Gegenstände Platz.

Verändern

Hinter dieser Funktion verbirgt sich ein komfortable Möglichkeit, das Arbeitsfeld zu verändern. Sobald der Menü-Punkt angewählt wird, verändert der Mauszeiger seine Form in ein Rechteck. Fährt man nun mit dem Mauszeiger auf das Arbeitsfeld, verändert der Mauszeiger ständig seine Form, je nachdem in welchem Bereich eines Feldes er sich befindet.

Es gibt vier aktive Mauszeiger:

- Oval mit Pfeil

In dieser Stellung kann durch Drücken der linken Maustaste die Position von NIKI verändert werden. Mehrmaliges Drücken an der Stelle, an der sich der Roboter bereits befindet, ändert die Richtung von NIKI.

- Kleiner Kreis

Durch Drücken der linken Maustaste können Gegenstände in dem Quadrat abgelegt werden. Es ist Platz für maximal neun Gegenstände. Mit Hilfe der rechten Maustaste werden die Gegenstände wieder entfernt.

- Waagerechter und senkrechter Balken

Befindet sich der Mauszeiger auf den Grenzflächen zwischen den einzelnen Quadraten, verwandelt er sich in einen waagerechten bzw. senkrechten Balken. Jetzt können Hindernisse durch Drücken der linken Maustaste gelegt und mit der rechten Maustaste entfernt werden.

Durch nochmaliges Anwählen des Menüpunktes wird das Verändern des Arbeitsfeldes beendet.

Neu

öffnet ein leeres Arbeitsfeld und setzt NIKI in die Ausgangsposition auf das linke untere Quadrat.

Zurücksetzen

bringt das Arbeitsfeld wird in den Zustand, den es beim Laden oder beim letzten Verändern hatte.  Beim Starten eines NIKI -Programms wird das Arbeitsfeld automatisch zurückgesetzt.

Speichern und Laden

Arbeitsfelder können mit diesen Menüpunkten auf der Festplatte gesichert, bzw. von dort geladen werden.


Teach-in

In diesem Menü sind die Einträge zum Steuern von NIKI im Handbetrieb. Gleichzeitig sind die NIKI-Befehle auch über die Tastatur erreichbar.

Im Teach-in-Modus kann eine exemplarische Befehlssequenz ausgeführt werden und anschließend als Programm beliebig oft wiederholt werden.

Sequenz aufzeichnen

Nach Aufrufen dieses Menüpunktes werden alle NIKI-Anweisungen, mit denen NIKI entweder durch Anwählen der entsprechende Menüpunkte oder durch die Tastatur gesteuert wird, aufgezeichnet.

Beendet wird diese Befehlssequenz im Teach-in-Modus durch wiederholte Anwahl des Menüpunktes.

Sequenz starten

aktiviert ein Teach-in-Programm. Das Arbeitsfeld wird vorher zurückgesetzt und die Sequenz gestartet. Tritt während des Programmablaufs ein Fehler auf, wird die Programmausführung abgebrochen.

Laden und Speichern

Teach-in-Programme können mit Speichern auf Diskette oder Festplatte gesichert oder ein gespeichertes Programm mit Laden von dort wieder in den Rechner gelesen werden.

Die Teach-in-Programme werden als Texte in Form von NIKI -Prozeduren abgespeichert. Der Prozedurname entspricht dabei dem Dateinamen ohne Extention.

Man kann solche Teach-in-Programme als Includes zu Niki-Programmen hinzuladen und hat damit eine einfache, aber wirksame Methode, lange Befehlssequenzen ohne viel Tipparbeit zu erzeugen.

NIKI kann im Handbetrieb mit den vier folgenden Befehlen gesteuert werden:

vor

NIKI geht einen Schritt in Richtung des Pfeils. Läuft er gegen ein Hindernis, erscheint ein entsprechender Hinweis.

drehe_links

NIKI dreht sich nach links. Dabei verändert er die Blickrichtung um 90 Grad.

nimm_auf

NIKI nimmt einen Gegenstand auf. Ist kein Gegenstand vorhanden, erscheint ein entsprechender Hinweis.

gib_ab

NIKI legt einen Gegenstand auf dem Arbeitsfeld ab. Hat er keinen Gegenstand zum Ablegen oder enthält das Feld schon neun Gegenstände, erscheint eine Fehlermeldung.


Programm
Start-Menü

Dieser Menüpunkt ermöglicht den Programmablauf und die Programmentwicklung.

Start

Wenn Sie das Programm starten, übersetzt der Compiler den im aktuellen Editor befindlichen Text.

Tritt dabei ein syntaktischer Fehler auf, erscheint eine entsprechende. Der Text-Cursor blinkt hinter der Fehlerstelle, so dass Sie gezielt den Fehler beheben können.

War die Übersetzung erfolgreich, wird das Arbeitsfeld zurückgesetzt und das NIKI-Programm startet sofort. Tritt während des Programmablaufs ein Fehler in der Ausführung auf, wird das NIKI-Programm mit einem entsprechenden Hinweis beendet.

Compilieren

Übersetzt das NIKI-Programm, ohne es auszuführen.

Einzelschritt

Im Einzelschrittmodus lassen Sie das Programm schrittweise ausführen. Dieses Vorgehen ist Ihnen bei der Fehlersuche behilflich, da sich das Editorfenster öffnet und ein Balken die Programmanweisung hervorhebt, die NIKI als nächste abarbeitet. Durch Drücken einer beliebigen Taste durchlaufen Sie das Programm Schritt für Schritt. Verschieben Sie das Textfenster so, daß es die Sicht auf das Arbeitsfeld nicht stört. Mit der ESC-Taste beenden Sie den Einzelschrittmodus.


Editor
Bearbeiten-Menü

Die Menüpunkte beziehen sich auf den jeweils aktuellen Editor. Der Editor unterstützt die Windows-üblichen Funktionen (Kopieren, Ausschneiden und Einfügen) zur Programmentwicklung. Außerdem sind Such- und Ersetzfunktionen integriert.

Kopieren

Der markierte Test wird in die Zwischenablage übernommen.
Achtung: Hat das Arbeitsfeld den Fokus, wird es als Bitmap in die Zwischenablage übernommen. Damit können auf einfache Weise Arbeitsblätter erstellt werden.

Ausschneiden

Der markierte Text wird gelöscht und in die Zwischenablage kopiert.

Einfügen

Der Test aus der Zwischenablage wird an der aktuellen Position der Schreibmarke eingefügt.

Suchen...

Der Dialog zur Suche wird geöffnet.

Suche wiederholen

Die Textsuche wird erneut ausgeführt.

Ersetzen

Der Dialog zum Ersetzen eines Textes wird geöffnet.

Schriftart

Der Dialog zur Auswahl der Schriftart wird geöffnet. Die Schriftart des aktuellen Fensters wird anschließend geändert.


NIKI-Optionen

Mit der Dialogbox lassen sich verschiedene Parameter für die Benutzung von NIKI einstellen.


Programmiersprache
Die Programmiersprache

Die NIKI-Sprache entspricht einer Untermenge von PASCAL. Als Grundelemente kommen nur die NIKI-Anweisungen in Betracht. Die Formulierung der Schlüsselwörter und der Programmanweisungen hängen von der gewählten Programmsprache ab. Je nach Einstellung im Optionen-Dialog können Sie englische oder deutsche Schlüsselwörter benutzen. Die folgenden Ausführungen basieren auf den englischen Bezeichnungen.

Programmaufbau

Kontrollstrukturen

Anweisungen

Sensoren

Compileroptionen

Include-Dateien


Programmaufbau

Jedes NIKI-Programm besteht aus einem Programmkopf und einem Programmrumpf. Der Programmkopf enthält das Schlüsselwort PROGRAM und den Namen des Programms. Der Programmrumpf muß mit BEGIN und END geklammert und beinhaltet Anweisungen, die durch ein Semikolon getrennt werden. Ein Punkt markiert das Programmende.

Nach dem Programmkopf können Prozeduren folgen, die dem Aufbau von Programmen entsprechen. Der Prozedurkopf besteht aus dem Wort PROCEDURE und dem Prozedurnamen, gefolgt von einem Anweisungsblock. Prozeduren können sich dabei selbst aufrufen (Rekursion)

An jeder beliebigen Stelle im Programm können Kommentare eingefügt werden. Beim Übersetzen des Programmtexts ignoriert der Compiler die Kommentare. Zwei Kommentarklammerungen sind möglich:

{ dies ist ein Kommentar mit geschweiften Klammern }

(* dies ist eine Klammer mit einem Stern *)

Beispiele für ein NIKI-Programm:

englisch

deutsch


Beispiel-Programm (englisch)
Program Gehe_auf_das_Podest;

  Procedure drehe_rechts;

  Begin

    drehe_links;

    drehe_links;

    drehe_links

  End;

Begin

  vor;

  vor;

  drehe_links;

  vor;

  drehe_rechts;

  vor

End.


Beispiel-Programm (deutsch)
Programm Gehe_auf_das_Podest;

  Prozedur drehe_rechts;

  Beginn

    drehe_links;

    drehe_links;

    drehe_links;

  Ende;

Beginn

  vor;

  vor;

  drehe_links;

  vor;

  drehe_rechts;

  vor

Ende.


Kontrollstrukturen

Die Formulierung der Kontrollstrukturen hängt von der gewählten Programmsprache ab. Es können je nach Einstellung im Optionen-Dialog englische oder deutsche Schlüsselwörter verwendet werden. Die Syntax entspricht der von PASCAL.

Folgende Kontrollstrukturen sind in der NIKI-Programmiersprache enthalten:

- Einseitige und zweiseitige Entscheidungsanweisungen

- Wiederholungsanweisungen mit Eingangs- und Ausgangsbedingungen

Kontrollstrukturen in englisch

Kontrollstrukturen in deutsch


Kontrollstrukturen (englisch)
Kontrollstrukturen in englisch:

Verbund-Anweisung:

BEGIN Anweisungen END;

Schleife mit Eingangsbedingung:

WHILE Bedingung DO Anweisung;

Schleife mit Ausgangsbedingung:

REPEAT Anweisungen UNTIL Bedingung;

einseitige Entscheidungsanweisung:

IF Bedingung THEN Anweisung;

zweiseitige Entscheidungsanweisung:

IF Bedingung THEN Anweisung ELSE Anweisung;


Kontrollstrukturen (deutsch)
Kontrollstrukturen in deutsch:

Verbund-Anweisung:

BEGINN Anweisungen ENDE;

Schleife mit Eingangsbedingung:

SOLANGE Bedingung TUE Anweisung;

Schleife mit Ausgangsbedingung:

WIEDERHOLE Anweisungen BIS Bedingung;

einseitige Entscheidungsanweisung:

WENN Bedingung DANN Anweisung;

zweiseitige Entscheidungsanweisung:

WENN Bedingung DANN Anweisung SONST Anweisung;


Niki-Prozeduren
NIKI-Anweisungen

Die folgenden Befehle bilden den Grundwortschatz.

vor 	NIKI geht eine Stelle in Blickrichtung weiter

drehe_links  	NIKI dreht sich um 90° links

nimm_auf	NIKI nimmt einen Gegenstand von seiner Position auf

gib_ab	NIKI legt einen Gegenstand auf seiner Position ab

Arbeitsfeld(Feld)	Das Arbeitsfeld Feld wird geladen

abschalten	Das Programm wird beendet

Der Befehl Arbeitsfeld dient zum Laden eines Arbeitsfeldes von Diskette oder Festplatte. Die Anweisung darf nur als erster Befehl in einem Block stehen, d.h. entweder erster Befehl im Hauptprogramm oder in einer Prozedur. Es wäre also denkbar, NIKI in einem Programm auf mehreren Arbeitsfeldern agieren zu lassen.

Die Anweisung abschalten kann an jeder beliebigen Stelle des Programms aufgerufen werden und schaltet den Roboter ab.


NIKI-Sensoren

Seine `Intelligenz' erhält NIKI erst dadurch, daß er über Sensoren verfügt und mit diesen Sensoren flexibel auf seine Umgebung reagieren kann.

Wahr, wenn

vorne_frei	vor NIKI in Blickrichtung kein Hindernis steht

rechts_frei	rechts neben NIKI kein Hindernis ist

links_frei	links neben NIKI kein Hindernis ist

Platz_belegt	sich auf Nikis Position mindestens ein Gegenstand befindet

hat_Vorrat	NIKI mindestens einen Gegenstand als Vorrat besitzt

nordwaerts 	NIKI in Richtung Nord blickt

suedwaerts	NIKI in Richtung Süd blickt

westwaerts	NIKI in Richtung West blickt

ostwaerts	NIKI in Richtung Ost blickt

Die Sensoren können als Bedingungen in die Entscheidungsanweisungen und Wiederholungsanweisungen eingesetzt werden. Sie lassen sich mit NOT negieren, bzw. mit AND und OR verknüpfen. Dabei gelten die in Pascal üblichen Vorrangregeln. Klammern binden stärker als NOT, NOT geht vor AND und dieses vor OR.

Beispiel:

WHILE vorne_frei AND NOT Platz_belegt DO vor;


Compileroptionen

In der vorliegenden Version ist eine Compileroption D zum Umschalten der NIKI-Programmsprache vorgesehen. Man kann so innerhalb eines Programms zwischen der Syntax für deutsche und englische Schlüsselwörtern wählen.

Compileroptionen stehen in Kommentarklammern, denen ein $-Zeichen folgt. Die folgenden Optionen sind möglich:

D+	schaltet auf deutsche Schlüsselwörter ein

D-	schaltet auf englische Schlüsselwörter ein

D=	schaltet zu der vor der letzten Compiler-Option gültigen Version

Gültige Ausdrücke sind z.B.  {$ D+}   oder (*$ D= *).


Include-Dateien

Include-Dateien werden in Niki 2.0 nicht mehr unterstützt. Statt dessen verfügt Niki über ein Unit-Konzept, das Includes überflüssig macht.


Beispiele
NIKI-Beispiele

Mit Hilfe einer kleinen Einführungssequenz lernen Sie die Möglichkeiten der NIKI-Programmierumgebung kennen. Im folgenden werden bei allen Beispielen die englischen Schlüsselwörter verwendet.

Die Grundaufgabe

Handsteuerung

Teach-in-Modus

Programm-Steuerung

Prozeduren

Entscheidungsanweisungen

Schleifen

Rekursion

Weitere Beispiele

Lagerhalle

Müll

Tunnel

Schnitzeljagd


Einführungssequenz
Die Grundaufgabe

NIKI befindet sich auf einem Arbeitsfeld mit einer Treppe und einem Podest. NIKI soll den Gegenstand von der obersten Stufe der Treppe auflesen und zum Podest transportieren und anschließend vor dem Podest stehenbleiben.

Nikis Möglichkeiten sind sehr eingeschränkt. Der Roboter kann Gegenstände aufnehmen und abgeben, er kann sich in Pfeilrichtung nach vorne bewegen und er hat die Möglichkeit, sich nach links zu drehen.


Handsteuerung

Zunächst soll NIKI mit der Hand gesteuert werden. Hierzu bietet sich die Eingabe der Befehle über Tastatur an:

v  -  gehe einen Schritt nach vorne

d -  Drehung um 90° nach links

n -  nimm einen Gegenstand auf

g -  gib einen Gegenstand ab

Eine entsprechende Eingabesequenz könnte dann folgendermaßen aussehen:

vvvvdvdddvdvdddv...

--> Führen Sie jetzt die oben gestellte Aufgabe mit Hilfe der Handsteuerung durch.


Teachin-Modus

Die Handsteuerung benötigt immer noch einen Menschen, der den Roboter steuert. Sinnvoller wäre es, NIKI könnte einen einmal durchgeführten Arbeitsauftrag erlernen und selbständig wiederholen. Dies ist mit Hilfe des Teach-in-Modus möglich.

Wenn man im Menü Teach-in den Eintrag Sequenz aufzeichnen anwählt, werden alle nachfolgenden Arbeitsanweisungen aufgezeichnet. Die Aufzeichnung wird durch Anwahl des gleichen Menüeintrags beendet. Mit Sequenz starten kann NIKI jeweils den gleichen Arbeitsauftrag beliebig oft wiederholen.

Mit Speichern sichert man Sequenzen auf Diskette oder Festplatte.

--> Erstellen Sie eine Teachin-Sequenz für die Anfangsaufgabe und speichern Sie diese unter dem  Namen Treppe0.tip auf Diskette oder Festplatte.


Programmsteuerung

Das Aufzeichnen von Arbeitssequenzen ist schon ein bedeutender Schritt zur Automatisierung. Allerdings kann NIKI hierbei noch nicht auf Veränderungen  seiner Umgebung reagieren. Ein verändertes Arbeitsfeld, z.B. ein fehlender Gegenstand wird einen Fehler auslösen.

Erst mit Hilfe der Programmsteuerung kann NIKI flexibel reagieren.

NIKI-Programme werden mit Hilfe eines Texteditors geschrieben, von einem speziellen Programm, dem Compiler, in NIKI-Anweisungen übersetzt.

Die Programmentwicklung findet im Programm-Menü statt. Mit Editor wird der Programmeditor geöffnet, mit Starten wird das Übersetzungsprogramm gestartet und, falls kein Syntax-Fehler aufgetreten ist, das NIKI-Programm gestartet. Beide Aktionen lassen sich mit Alt+E und Alt+S auch über die Tastatur auslösen.

NIKI-Programme haben eine festgelegten Aufbau. So muß jedes Programm mit dem Schlüsselwort Program und dem  Namen des Programms beginnen. Danach folgt ein Semikolon. Die Niki-Anweisungen werden mit Begin und End geklammert, einzelne Anweisungen durch ein Semikolon getrennt. Das Programmende markiert ein Punkt.

Ein entsprechendes Programm könnte dann folgendermaßen aussehen:

Program Treppe0;

Begin

  vor;

  vor;

  vor;

  drehe_links;

  vor;

  drehe_links;

  drehe_links;

  drehe_links;

  vor;

  ....

End.

--> Vervollständigen Sie das Programm mit den fehlenden Anweisungen.


Prozeduren

Wenn man die Aufgabe als Programmsequenz eingibt, hat man relativ viel Schreibarbeit. Beim Programmtext fällt auf, daß häufig gleiche Programmsequenzen auftauchen. So muß sich NIKI, um sich einmal nach rechts zu drehen, dreimal nach links drehen.

Man kann solche wiederkehrenden Befehlssequenzen zu neuen NIKI-Befehlen zusammenfassen - NIKI kann also neue Befehle erlernen.

Das Formulieren neuer Befehle geschieht mit Hilfe von Prozeduren. In einer Prozedur werden NIKI-Befehle zu einer neuen Anweisung zusammengefaßt.

Beispiel für eine Prozedur;

Procedure drehe_rechts;

Begin

  drehe_links;

  drehe_links;

  drehe_links

End;

Beliebig viele Prozeduren können direkt hinter dem Programmkopf eingefügt werden:

Beispiel Treppe1.pas

--> Änderen Sie das Programm aus der letzten Aufgabe entsprechend.


Beispiel Treppe1
Program Treppe1;

  Procedure drehe_rechts;

  Begin

    drehe_links;

    drehe_links;

    drehe_links

  End;

Begin

  vor;vor;vor;

  drehe_links;

  vor;

  drehe_rechts;

  ....

End.


Entscheidungsanweisungen
Entscheidungen

NIKI bekommt eine neue Aufgabe. Er soll von der Treppe einen Gegenstand auflesen. Es ist aber nicht bekannt, an welcher Stelle auf der Treppe dieser Gegenstand liegt. Ein Arbeitsfeld könnte folgendermaßen aussehen:

Um entscheiden zu können, wo sich ein Gegenstand befindet, benötigt NIKI Sensoren, mit denen er seine Umgebung abtasten kann. NIKI verfügt über mehrere Sensoren.  Der Sensor für Gegenstände heißt Platz_belegt. Niki kann diesen Sensor abfragen und dann entscheiden, ob er einen Gegenstand aufnehmen muß. Dies geschieht mit der Anweisung

If Platz_belegt then nimm_auf;

Eine solche Anweisung wird Entscheidungsanweisung genannt.

--> Veränderen Sie das Programm für die oben gestellte Grundufgabe so, daß sich der Gegenstand an einer beliebigen Stelle auf der Treppe befinden kann.


Schleifen

Das Arbeitsfeld wird jetzt so verändert, daß NIKI die Lage der Treppe und des Podestes nicht kennt. Treppe und Podest stehen hintereinander, aber weder der Abstand zur Treppe noch der Abstand zwischen Treppe und Podest sind bekannt.

{bmc treppe1.bmp

NIKI verfügt allerdings über einen Sensor, mit dem er Hindernisse wahrnehmen kann. Dieser Sensor heißt vorne_frei.

Mit der folgenden Anweisung kann NIKI bis zu einem Hindernis laufen;

While vorne_frei do vor;

Eine solche Anweisung heißt Wiederholungsanweisung oder Schleife.

--> Veränderen Sie das Programm für die oben gestellte Aufgabe so, daß sich Treppe und Podest an einer beliebigen Stelle befinden können.


Rekursion

Da NIKI keine Variablen kennt, läßt sich die folgende Aufgabe nur schwer realisieren:

NIKI soll bis zum Hindernis gehen, sich umdrehen und dann exakt die gleiche Anzahl von Schritten wieder zurückgehen.

Da in der NIKI-Programmiersprache die Möglichkeit besteht, daß sich Prozeduren selbst aufrufen, ist eine Lösung mit Hilfe der Rekursion möglich.

  siehe Programmbeispiel

Die Grundaufgabe wird nun dahingehend erweitern, daß NIKI über eine beliebig hohe Treppe geht. Man kann den Lösungsweg für eine rekursive Prozedur gehe_über_die_Treppe so beschreiben:

Falls noch eine Stufe kommt, dann

 gehe eine Stufe hoch

 gehe über die Treppe

 gehe eine Stufe runter

--> Erweitern Sie die Grundaufgabe entsprechend, so daß NIKI über eine beliebig hohe Treppe gehen kann.


Eine Prozedur heißt rekursiv, wenn sie sich innerhalb eines Anweisungsblockes selbst aufruft. Der Aufruf muß ein bedingter sein und folgende Form haben:

Procedure rekursiv_arbeiten;

Begin

  If <Bedingung> Then

     <Anweisung1>

  Else

     Begin

         <Anweisung2>;

         rekursiv_arbeiten;

         <Anweisung3>

     End;

End;


Beispiel zur Rekursion
Program Gehe_zum_Hindernis_und_zurueck;

  Procedure drehe_um;

  Begin

    drehe_links;

    drehe_links

  End;

  Procedure Zum_Hindernis_und_zurueck;

  Begin

     IF not vorne_frei then

        drehe_um

     Else

         Begin

             vor;

             Zum_Hindernis_und_zurueck;  {Prozedur ruft sich selbst auf}

             vor;

         End;

  End;

Begin

  Zum_Hindernis_und_zurueck

End.


Aufgabe Lagerhalle
Aufabe Lagerhalle

Im Gang einer Lagerhalle sind Paletten abgestellt. NIKI soll so programmiert werden, daß die hohen Paletten (zwei Gegenstände) in die rechte Regalreihe, die kleinen Paletten in die linke Regelreihe einsortiert werden. Entwickeln Sie ein entsprechendes Programm.


Aufgabe Müll

Um die Fabrikhalle herum hat sich Müll angesammelt. NIKI erhält den Auftrag, den Müll einzusammeln und in die Halle auf seine Ausgangsposition zurückzukehren.

Er kennt allerdings die Ausmaße der Halle nicht und weiß auch nicht, wieviel Müll sich auf den einzelnen Feldern befindet. Programmieren Sie ein entsprechendens NIKI-Programm.


Aufgabe Tunnel

NIKI soll ein Arbeitswerkzeug am Ende des Tunnels holen. Der Tunnel ist jeweils ein Feld breit, die genaue Form des Tunnels ist allerdings nicht bekannt.  Erstellen Sie ein entsprechendes Programm.


Aufgabe Schnitzeljagd

NIKI soll einer Spur aus Scheiben folgen. Die Spur besteht aus eins, zwei oder drei Scheiben. Dabei  gibt die Anzahl der Scheiben den Weg vor. Sind keine Scheiben mehr vorhanden, ist die Spur zu Ende und NIKI bleibt stehen.

Es bedeutet:

1 Scheibe  : NIKI geht einen Schritt vor

2 Scheiben: NIKI biegt nach links ab und geht einen Schritt vor

3 Scheiben: NIKI biegt nach rechts ab und geht einen Schritt vor

Konzipieren Sie ein entsprechendes NIKI-Programm.