Dokumentation

Programmablauf: if, for und Makros

<- Variablen und arithmetische Ausdrücke
-> Arrays
if/else
Die for-Schleife
Makros
Dateien einbinden (#include)

Alle hier angegebenen Strukturen können beliebig ineinander verschachtelt werden.
 

if/else

Mit der if/else-Anweisung kann die Ausführung eines Befehlsblocks von einer Bedingung abhängig gemacht werden:

if (Bedingung)
  Befehl;
oder
if (Bedingung){
  Befehlsblock;
  ...
}
"Bedingung" muss ein arithmetischer Ausdruck sein, dessen Ergebnis ein Integer ist. Ist der Wert ungleich null, so wird der Befehl bzw. der Befehlsblock (zwischen { und }) ausgeführt, ansonsten wird er übersprungen. z.B.:
if (i<10)
  new sphere{
    pos=[i,0,0];
  }
Hier wird eine neue Kugel an der Stelle [i,0,0] nur erzeugt, wenn i kleiner als 10 ist.
Mit else kann zusätzlich ein Befehlsblock angegeben werden, der ausgeführt wird, wenn die Bedingung NICHT erfüllt ist. z.B.:
if (i<10)
  new sphere{
    pos=[i,0,0];
  }
else
{
  new cube{
    pos=[i,-1,0];
  }
  new cube{
    pos=[i,1,0];
  }
}
Hier wird eine Kugel erzeugt, wenn i<10 ist, ansonsten werden zwei Würfel erzeugt.

[
nach oben]
 

Die for-Schleife

Mit der for-Schleife kann ein Befehlsblock beliebig oft durchlaufen werden.

for(init; Bedingung; Schritt)
  Befehl;
bzw.
for(init; Bedingung; Schritt){
  Befehlsblock;
  ...
}
Dabei ist "init" ein Ausdruck, der einmal am Anfang ausgeführt wird. Der Befehl(-sblock) wird nun so oft ausgeführt, wie "Bedingung" noch erfüllt ist. "Schritt" ist ein Ausdruck, der nach jedem Durchlauf einmal ausgeführt wird. Eine übliche Form wäre z.B.:
for(i=0; i<10; ++i)
{
  new sphere{
    pos=[i,0,0];
  }
}
Mit dieser Schleife werden zehn Kugeln erzeugt. Die erste ist an der Stelle [0,0,0], die lezte an der Stelle [9,0,0].

[
nach oben]
 

Makros

Wird ein Befehlsblock mehrfach verwendet, so kann man ihn zu einem Makro zusammenfassen:

macro Name{
  Befehlsblock;
  ...
}
Das Makro kann danach jederzeit einfach durch seinen Namen aufgerufen werden:
  Name;
Für den Namen gelten die gleichen Regeln wie für Variablennamen.
Die Ausführung des Makros geschieht genau so, als ob der Befehlsblock direkt an der Stelle des Aufrufs gestanden hätte. Makros können sich daher auch selbst und gegenseitig aufrufen (natürlich muss man für einen geeigneten Rekursionsabbruch sorgen).
Ein Beispiel:
macro MeinObjekt{
  new sphere{
    pos=spherepos;
  }
  new cube{
    pos=spherepos+[0,1,0];
  }
}

..

spherepos=[1,0,0];
MeinObjekt;

spherepos=[2,0,0];
MeinObjekt;
Hier werden zwei Kugeln an den Positionen [1,0,0] und [2,0,0] sowie zwei Würfel an den Positionen [1,1,0] und [2,1,0] erzeugt.

[
nach oben]
 

Dateien einbinden (#include)

Ähnlich wie in C kann man mit der #include-Anweisung eine andere Datei einbinden:

#include"Dateiname"
Die Verarbeitung geschieht dann so, als würde der Inhalt der Datei "Dateiname" an der Stelle der #include-Anweisung eingefügt sein.

[
nach oben]

Martin Melcher