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.

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 muss 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 vollständiges NIKI-Programm in englisch und deutsch.

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:

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 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;

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.

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;

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= *).

Durch das Einbinden von Include-Dateien kann der Quelltext auf mehrere Dateien verteilt werden, was die Projektarbeit erheblich vereinfacht.

Mit der Compileroption „I“ gefolgt vom Dateiname der Include-Datei können Sie Include-Dateien in NIKI-Programme einfügen. Die Include-Datei wird dann auf dem aktuellem Pfad gesucht.

Beispielsweise wird durch „{$ IBASIS.PAS }“ die Datei „BASIS.PAS“ zum Quelltext hinzugeladen. Auf diese Weise lassen sich auch Teach-in-Sequenzen zu einem Programmtext laden. Die Sequenz wird durch Aufruf des entsprechenden Dateinamens gestartet.