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>