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.
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. |
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; |
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.
Arbeitsumgebung Sensor | Arbeitsumgebung Sprung | Arbeitsumgebung Rekursion | Arbeitsumgebung Halle |
---|---|---|---|
Programm Sensor | Programm Sprung | Programm Rekursion | Programm Halle |
---|---|---|---|