Variablen
Variablen sind in DDP, wie in anderen Sprachen, “Container” mit Namen in denen Werte gespeichert werden.
Deklaration
Variablen können folgendermaßen erstellt (oder deklariert) werden:
<Datentyp mit Artikel> <Variablenname> ist <Ausdruck>.
Es gibt eine Besonderheit bei Variablen mit dem Datentyp “Wahrheitswert”.
Wenn man solche Variablen mit einem Ausdruck deklarieren will, sollte man stattdessen diese Syntax benutzen:
Der Wahrheitswert <Variablenname> ist <wahr oder falsch>, wenn <Ausdruck>.
Diese Syntax funktioniert auch mit Rückgaben in Funktionen:
Die öffentliche Funktion Ist_Leer_Text mit dem Parameter liste vom Typ Text Liste, gibt einen Wahrheitswert zurück, macht: Gib wahr, wenn die Länge von liste gleich 0 ist zurück. Und kann so benutzt werden: "<liste> leer ist"
Eine Liste von allen Datentypen findest du im Artikel Datentypen
Beispiele:
Die Zahl a ist 10. Die Kommazahl b ist 4,32. Der Text c ist "Hallo!". Der Wahrheitswert d ist wahr. Der Wahrheitswert e ist falsch wenn 1 gleich 1 ist.
Zuweisung
Die Zuweisung ist die Änderung des Wertes einer Variable. In DDP gibt es mehrere Wege Variablen zu ändern.
Mit dem Schlüsselwort ist
kann man Variablen nur einem Literal zuweisen:
a ist 30.
Um einer Variable das Ergebnis eines Ausdrucks zuzuweisen, muss Speichere ... in
verwendet werden:
Speichere pi durch 2 in b.
Extern sichtbare Variablen
Der DDP Kompilierer benutzt eine Technik namens name mangling. Das heißt, die Namen von Funktionen und Variablen sind im Quellcode nicht dieselben wie in der entstehenden Binärdatei.
Wenn man also eine Variable zwischen DDP und C Quellcode teilen will muss man das name mangling ausschalten, indem man die Variable als “extern sichtbar” markiert:
[test.ddp] Die extern sichtbare Zahl z ist 22.
// test.c
#include "ddptypes.h"
#include <stdio.h>
extern ddpint z;
int main(void) {
printf("%ld", z);
return 0;
}
Spezielle Zuweisungen
Es gibt noch einige Zuweisungsoperatoren mit deren Hilfe Variablen direkt verändert werden können,
ohne sie selbst in einem Ausdruck verwenden zu müssen.
In anderen Sprachen sind das sogenannte “compound assignements” also Operatoren wie +=, -=, *=, etc.
.
Diese Operatoren können verwendet werden um Code lesbarer zu gestalten.
Addition
Erhöhe <variable> um <a>
equivalent zu
Speichere <variable> plus <a> in <variable>
Subtraktion
Verringere <variable> um <a>
equivalent zu
Speichere <variable> minus <a> in <variable>
Multiplikation
Vervielfache <variable> um <a>.
equivalent zu
Speichere <variable> mal <a> in <variable>
Division
Teile <variable> durch <a>.
equivalent zu
Speichere <variable> durch <a> in <variable>
Negation
Negiere <variable>.
equivalent zu
Speichere -<variable> in <variable>
bzw.
Speichere nicht <variable> in <variable>
Bitshift
Verschiebe <variable> um <a> Bit nach Links
Verschiebe <variable> um <a> Bit nach Rechts
equivalent zu
Speichere <variable> um <a> Bit nach Links verschoben in <variable>
Speichere <variable> um <a> Bit nach Rechts verschoben in <variable>