| NQC (Not Quite C; nicht ganz C) |
Allgemeiner Überblick
NQC ist eine C-Ähnliche Programmiersprache, d.h. es existieren die gleichen semantischen- und syntaktischen Strukturen wie in der Programmiersprache C. Es gibt natürlich auch Spezialbefehle, um die Sensoren abzufragen oder die Motoren anzusteuern. Jeder Befehl muß, wie in C üblich, mit einem Semikolon abgeschlossen werden und es muß auch auf die Groß-/Kleinschreibung geachtet werden. Es gibt aber auch einige entscheidende Unterschiede zwischen NQC und C. Der vielleicht wichtigste Unterschied liegt in den vorhandenen Datentypen. In C existieren Datentypen wie int, float, char, usw. In NQC dagegen existiert nur der Datentyp int. Ein anderer Unterschied liegt in der Beschreibung von Funktionen (Unterprogrammen). In C kann jedes Unterprogramm Parameter enthalten und auch einen Wert zurückliefern. In NQC dagegen gibt es drei verschiedene Typen von Unterprogrammen. Diese heißen:
- Task,
- Inline-Funktion und
- Unterprogramm.
Task: Die Tasks sind die Hauptfunktionen. Es muß mindestens einen Task mit dem Namen „main“ geben. Tasks können parallel ablaufen. Die Tasks haben keine Parameter und auch keinen Rückgabewert. Es dürfen maximal zehn Tasks definiert werden.
Inline-Funktion: Die Inline-Funktionen sind keine Funktionen im eigentlichen Sinne. Sie können zwar Parameter enthalten (sowohl Werte, als auch Referenzen/Adressen) haben aber keinen Rückgabewert. Deshalb werden sie auch mit void (wie aus C bekannt) eingeleitet. Außerdem könnte man diese Inline-Funktionen auch als Makros bezeichnen, da der Compiler bei jedem Aufruf einer Inline-Funktion den Aufruf durch eine Kopie des Funktionscodes ersetzt. Je mehr Inline-Funktionen man hat und je öfter man diese aufruft, desto größer wird der compilierte Code.
Unterprogramm: Unterprogramme werden mit „sub“ eingeleitet und können von mehreren Aufrufern (Tasks) verwendet werden. Es gibt aber starke Einschränkungen, was die Unterprogramme betrifft. Erstens haben Unterprogramme keine Parameter. Zweitens dürfen Unterprogramme keine anderen Unterprogramme aufrufen. Drittens dürfen höchstens acht Unterprogramme in einem Programm definiert werden, und viertens darf ein Unterprogramm keine lokalen Variablen haben, wenn es von mehr als einem Task aufgerufen wird.
Es gibt noch einen Unterschied zwischen
C und NQC. In C kann man so viele Variablen anlegen wie man will. In NQC darf
ich maximal 32 globale und 16 lokale Variablen verwenden.
Mit NQC kann man den RCX gut programmieren. Man hat vollen Zugriff auf die Motoren
und die Sensoren und man kann sogar mit einem anderen RCX kommunizieren.