Skip to content

Die "Alman"‐Sprache

Simon Johannes Engelhardt edited this page Feb 24, 2025 · 12 revisions

Aufbau der Sprache

1. Beispiel:

definiere f(i: ganzzahl, j: ganzzahl) : ganzzahl{
    gib zurueck i + j;
}

Hier steht definiere für den Anfang einer Funktion. f ist der Name der Funktion. (i: ganzzahl, j: ganzzahl) steht für die Liste an Argumenten, die die Funktion bekommen soll. : ganzzahl definiert den Rückgabwert. gib zurueck gibt einen Wert aus der Funktion zurück. i + j sind zum einen Variablenzugriffe auf die Variablen i und j. Die beiden Werte werden durch das + addiert.

2. Beispiel:

konstante h: ganzzahl = 100;
definiere haupt(): ganzzahl {
  lasse temp = h + h;
  gib zurueck 0;
}

konstante h = 100 definiert eine globale unveränderbare Variable h mit dem Wert 100 vom Typ dezimalzahl. Die haupt -Funktion ist der Haupteinstiegspunkt. Wenn die kompilierte Datei ausgeführt wird, fängt das Programm hier mit der Ausführung an. Die Hauptfunktion muss eine Ganzzahl zurückgeben (0, wenn alles gut gelaufen ist, sonst eine andere Zahl). lasse temp = h + h; definiert eine lokale veränderbare Variable temp mit dem Wert h+h, was zu 200 evaluieren würde.

3. Beispiel:

definiere haupt(): ganzzahl {
    lasse i: ganzzahl = 20;
    waehrend(i > 0) {
      wenn (i % 2 == 0) {
        drucke("%g\n", i);
        i = i - 1;
        fahre fort;
      } ansonsten wenn (i % 3 == 0) {
        drucke("%g\n", i);
        breche;
      }
      drucke("%g\n", i);
      i = i - 1;
    }
}

waehrend(i > 0) definiert eine While-Schleife, die so lange läuft, bis i kleiner gleich 0 ist. drucke("%g\n, i) gibt den Wert von i zusammen mit einem Linebreak auf der Konsole aus. breche bricht die Schleife ab, fahre fort überspringt den derzeitigen Schleifendurchlauf und fängt den nächsten an.

4. Beispiel:

definiere ifElse(n: ganzzahl): nichts {
  wenn (n == 1) {
    drucke("1");
  } ansonsten wenn (n == 2) {
    drucke("2");
  } ansonsten wenn (n == 3) {
    drucke("3");
  } ansonsten {
    drucke("Ich kenne keine anderen Zahlen");
  }
} 

Das wenn, ansonsten wenn, ansonsten ist ein if-else-if-else Konstrukt.

5. Beispiel:

definiere haupt(): ganzzahl {
  ifElse(3);
}

Hier wird die in 4. definierte Funktion aufgerufen, mit dem 1. Parameter gesetzt wird auf 3. Eine Funktion kann beliebig viele Argumente definieren, die dann in genau der definierten Anzahl und entsprechendem Typ bei einem Funktionsaufruf übergeben werden müssen.

definiere haupt(): ganzzahl {
  ifElse("Test"); // Falscher Type
}

Das würde nicht gehen. Hier sieht man auch noch, wie ein Inline-Kommentar geschrieben wird. Für Mulitline-Kommentare schreibt man:

/*
Text
der
nicht
kompiliert
wird.
*/

7. Beispiel

definiere rightAngledTriangle(n: ganzzahl): nichts {
    lasse i: ganzzahl = 0;
    lasse j: ganzzahl = 0;
    waehrend(i < n) {
        j = 0;
        waehrend(j <= i) {
            drucke("*");
            j = j + 1;
        }
        drucke("\n");
        i = i + 1;
    }
}

Verschachtelte Schleifen sind auch möglich.

Operanden

Es sind viele bekannte Operanden verfügbar:

  • + Addition
  • - Subtraktion
  • * Multiplikation
  • / Division
  • % Modulo
  • == Gleichheit
  • != Ungleichheit
  • > Größer als
  • < Kleiner als
  • >= Größer gleich
  • <= Kleiner gleich
  • und Und
  • oder Oder

Es gibt keinen not Operator. Die Operator Precedence ist wie hier beschrieben.

Clone this wiki locally