RoboSheep
Software zum spielerischen Lernen
 
Home | Download | Hilfe

Sprachregeln

  • die Sprache unterscheidet zwischen Gross-und Kleinschreibung
  • Anweisungen müssen mit einem Semikolon abgeschlossen werden
  • rekursive Funktionsaufrufe werden nicht unterstützt
  • Ausdrücke werden von links nach rechts und von innen nach aussen ausgewertet

    Typen

    TypWertebereich
    tile tDirt, tGreen, tShortGreen, tTree, tMark
    dir dNorth, dEast, dSouth, dWest
    bool TRUE, FALSE
    int -2.147.483.648 .. 2.147.483.647
    float 5.0 x 10^-324 .. 1.7 x 10^308
    string Zeichenkette mit " geklammert.
    void

    Hinweise:
    • Ein konstanter float-Wert wird mit .(Punkt) angegeben.
    • In Zeichenketten stehen folgende Sonderausdrücke zur Verfügung: /" (für ein doppeltes Hochkomma), // (für ein Slash), /r (Wagenrücklauf), /n (Zeilenumbruch).
    • int kann auf float zugewiesen werden (zuweisungskompatibel)
    • jeder Typ kann auf string zugewiesen werden (zuweisungskompatibel)

    Ausdrücke

    Ein Ausdruck hat immer einen Typ und einen Wert.
    Der einfachste Ausdruck ist eine Konstante aus einem der definierten Typen.
    Ein Ausdruck kann auch eine Variable, ein Funktionsaufruf oder das Ergebnis einer Operation sein.
    Besondere Ausdrücke sind Vergleichsoperationen. Diese Ausdrücke haben immer den Typ bool.
    Es können nur Operanden des selben Typs oder zuweisungskompatible Typen verglichen werden.

    Operatoren

    Operator Typ Beschreibung
    + int Addition
    - int Substraktion
    * int Multiplikation
    / float Division
    div int ganzzahlige Division
    % int Restdivision
    or bool oder
    and bool und
    not bool unäreres nicht

    Hinweise:
    • die Operatoren sind nach Bindung aufsteigend sortiert. zB bindet ein and stärker als ein div

    Vergleichsoperatoren

    Operator Beschreibung
    <= kleiner gleich
    >= grösser gleich
    == gleich
    != ungleich
    < kleiner
    > grösser

    Hinweise:
    • die Operatoren sind nach Bindung aufsteigend sortiert
    • die Bindung von Vergleichsoperatoren ist immer schwächer als die von Operatoren
    • steht ein boolscher Ausdruck fest, werden alle übrigen Teilausdrücke nicht ausgewertet (Links-Rechts-Auswertung)

    Kommentare

    // kommentiert die gesamte Zeile aus.

    Anweisungen

    alle Angaben in eckigen Klammern [ ] sind als optional zu verstehen

    Zuweisung: Variable = Ausdruck
    Variable - Name einer zuvor deklararierten Variable
    Ausdruck - der Ausdruck muss vom selben Typ sein wie die Variable
    meineZahl = (2 * 3) + 3;
    tile1 = tile2;
    deineZahl = meineZahl + deineZahl;
    tile2 = getNextTile(1);
    istWahr = (meineZahl == 18) or not (tile1 == tile2);

    bedingte Anweisung:
    if (bool)
      [code]
    [elseif (bool)]
      [code]
    [else]
      [code]
    endif
    bool - ein Ausdruck vom Typ bool
    code - eine Liste beliebig vieler Anweisungen
    Der erste Codeblock wird ausgeführt, wenn der Ausdruck TRUE ergibt. Ist der Ausdruck FALSE wird der zweite Codeblock ausgeführt.
    Bedingte Anweisungen können beliebig oft verschachtelt werden.
    if (meineZahl == 1)
      tile1 = tile2;
      meineZahl = 3;
    endif

    if (meineZahl == 1)
      tile1 = tile2;
      meineZahl = 3;
    else
      tile2 = tile1;
      meineZahl = -1;
    endif

    if (meineZahl == 1)
      tile1 = tile2;
      meineZahl = 3;
    elseif (meineZahl == 2)
      tile2 = tile3;
      meineZahl = 4;
    else
      tile2 = tile1;
      meineZahl = -1;
    endif

    if (meineZahl == 1)
      tile1 = tile2;
    else
      if (meineZahl == 3)
        tile1 = tile2;
        meineZahl = 4;
      else
        tile2 = tile1;
        meineZahl = -1;
      endif
      tile2 = tile1;
      meineZahl = -1;
    endif


    Schleife:
    while (bool)
      [code]
    endwhile
    bool - ein Ausdruck vom Typ bool
    code - eine Liste beliebig vieler Anweisungen
    Der Codeblock wird ausgeführt, solange der Ausdruck TRUE ergibt.
    Schleifen können beliebig oft verschachtelt werden.
    while (meineZahl < 6)
      meineZahl = meineZahl + 3;
      deineZahl = meineZahl + deineZahl;
    endwhile

    Variablendeklaration: Typ Name [Zuweisung]
    Typ - einer der möglichen Typen ausser void
    Name - ein beliebiger eindeutiger Name. Darf nicht gleich einem Schlüsselwort sein und keine Operatoren enthalten.
    Zuweisung - die Variable kann bei der Deklaration initialisiert werden
    int meineZahl;
    tile tile1;
    int deineZahl = -1;
    tile tile2 = tGreen;
    bool istWahr = TRUE;

    Funktionsdeklaration:
    function Name[([ref] Typ Parameter; ..)]: Typ
      [code]
    endfunction
    Typ - einer der möglichen Typen (void = kein Rückgabewert)
    Name - ein beliebiger eindeutiger Name. Darf nicht gleich einem Schlüsselwort sein und keine Operatoren enthalten.
    code - eine Liste beliebig vieler Anweisungen
    ([ref] Typ Parameter; ..) - eine optionale semikolongetrennte Liste mit Parametern
    ref optionale Deklaration eines Referenz-Parameters. Referenz-Parameter müssen auch beim Funktionsaufruf mit ref angegben werden.
    result stellt innerhalb der Funktion den Rückgabewert der Funktion dar
    function meineFunktion(int parameterZahl; bool parameterWahr): tile
      int privateZahl = parameterZahl + 1;
      result = tGreen;
    endfunction

    function meineProzedur: int
      int privateZahl = 4 + 1;
      result = privateZahl + 4;
    endfunction

    function meineProzedur2(bool parameter): void
      globalerWert = parameter and (a > meineProzedur);
    endfunction

    function meineProzedur3(ref bool parameter): void
      parameter = not parameter;
    endfunction

    bool meinBool = TRUE;
    meineProzedur3(ref meinBool);
    //meinBool ist jetzt FALSE


  • RoboSheep ist Freewareby DataJockey