Einleitung


Niki ist eine geschlossene Programmierumgebung mit eigenem Editor und Compiler zum Erlernen der Programmiersprache 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.
Um die Anfangsschwierigkeiten beim Erlernen der Programmierung möglichst gering zu halten, wurde der Sprachumfang der Niki-Sprache gegenüber Pascal stark reduziert (z.B. keine Variablen), so dass durch interessante Problemstellungen ein eher spielerischer Zugang möglich ist. Dabei muss ein Roboter so programmiert werden, dass er auf einem Arbeitsfeld verschiedene Aufgaben bewältigt. Er kann dabei Gegenstände aufnehmen, transportieren und abgeben. Außerdem verfügt er über Sensoren, mit denen er Hindernisse und Gegenstände lokalisieren kann.
Die Niki-Sprache umfasst Prozeduren, Rekursion, die Wiederholungsanweisungen WIEDERHOLE BIS und SOLANGE TUE, und die Verzweigung FALLS DANN SONST. Eine große Bedeutung hat dabei die frühe Einführung des Prozedur-Konzepts. Damit können die wenigen Niki-Anweisungen vor; drehe_links; nimm_auf und gib_ab wirkungsvoll erweitert werden.


Befehle


Niki's Befehle lauten:

Befehl Beschreibung
vor; Niki geht eine Stelle in Blickrichtung weiter.
drehe_links; Niki dreht sich um 90° nach links.
nimm_auf; Niki nimmt eine Scheibe von seiner Position auf.
gib_ab; Niki legt eine Scheibe auf seiner Position ab.
vorne_frei; Wenn vor Niki in Blickrichtung kein Hindernis ist.
rechts_frei; Wenn rechts neben Niki kein Hindernis ist.
links_frei; Wenn links neben Niki kein Hindernis ist.
platz_belegt; Wenn sich auf Niki's Position mindestens eine Scheibe befindet.
hat_vorrat; Wenn Niki mindestens eine Scheibe als Vorrat besitzt.

Kontrollstrukturen


Niki's Kontrollstrukturen lauten:

Kontrollstruktur Beschreibung
Post-Checked-Schleife WIEDERHOLE ...; BIS (NICHT) Bedingung;
Pre-Checked-Schleife SOLANGE (NICHT) Bedingung TUE BEGINN ...; ENDE;
einseitige Fallunterscheidung FALLS Bedingung DANN BEGINN ...; ENDE;
zweiseitige Fallunterscheidung FALLS Bedingung DANN BEGINN ...; ENDE SONST BEGINN ...; ENDE;

Programmbeispiel


Hier ein Beispiel (siehe Bild Arbeitsumgebung Halle) :
Aufgabe: Niki soll 5 Container holen und jede Halle mit einen Container füllen. Wenn er damit fertig ist soll Niki zur Anfangsposition zurückkehren.


PROGRAMM halle;

PROZEDUR hole_container;
BEGINN
drehe_links;
SOLANGE vorne_frei TUE
BEGINN
vor;
ENDE;
SOLANGE platz_belegt TUE
BEGINN
nimm_auf;
ENDE;
drehe_rechts;
drehe_rechts;
SOLANGE vorne_frei TUE
BEGINN
vor;
ENDE;
drehe_links;
ENDE;

PROZEDUR fuelle_halle;
BEGINN
vor;
vor;
drehe_links;
vor;
gib_ab;
drehe_rechts;
drehe_rechts;
vor;
drehe_links;
ENDE;

BEGINN {Hauptprogramm}
hole_container;
SOLANGE vorne_frei TUE
BEGINN
fuelle_halle;
ENDE;
drehe_links;
drehe_links;
SOLANGE vorne_frei TUE
BEGINN
vor;
ENDE;
drehe_rechts;
drehe_rechts;
ENDE.

Bilder


Arbeitsumgebung Sensor Arbeitsumgebung Sprung Arbeitsumgebung Rekursion Arbeitsumgebung Halle
Sensor Sprung Rekursion Halle

Programm Sensor Programm Sprung Programm Rekursion Programm Halle
P Sensor P Sprung P Rekursion P Halle