Programmieren

Variablen und Ausdrücke

In Programmen braucht man eine Möglichkeit, um Werte zu speichern, beispiels­weise Zwischen­ergebnisse von Berechnungen. Dies geschieht mit Hilfe von Variablen. Genau wie in der Mathematik ist eine Variable ein Platzhalter für einen Wert.

Deklaration von Variablen

Der Begriff Platzhalter ist hier wörtlich zu nehmen. Bei der Deklaration einer Variablen stellt der Computer nämlich für den Wert einen Platz im Speicher bereit. Damit der Computer weiß, wie der Inhalt des Speicher­platzes zu interpretieren ist, wird bei der Deklaration der Typ des Wertes festgelegt.

Ein Typ ist ein Wertebereich, d.h. eine Menge von möglichen Werten. Ein Beispiel ist der Typ int (engl.: integer – ganzzahlig). Die möglichen Werte des Typs int sind die ganzen Zahlen im Bereich -2147483648, ..., 2147483647.

Verbunden mit einem Typ sind die zulässigen Operationen, die auf Werte dieses Typs anwendbar sind, z.B. eine Addition beim Typ int.1)

Beispiel:  Mit folgender Anweisung werden zwei Variablen a und b deklariert, die zur Aufnahme von Werten vom Typ int vorgesehen sind.

int a, b;

Eine Variable, die zur Aufnahme eines Wertes vom Typ int vorgesehen ist, wird kurz als int-Variable oder als Variable vom Typ int bezeichnet.

Wertzuweisung an Variablen

Bei einer Wert­zuweisung wird eine Variable mit einem tat­sächlichen Wert belegt.

Beispiel:  Mit folgenden Anweisungen werden zunächst zwei Variablen a und b vom Typ int deklariert. Dann wird der Variablen a der Wert 17 zugewiesen. Anschließend wird der Variablen b der Wert 21 zugewiesen.

int a, b;
a=17;
b=a+4;

Der Computer führt eine Wert­zuweisung durch, indem er zunächst den Ausdruck auswertet, der auf der rechten Seite des Wert­zuweisungszeichens "=" steht. Den ermittelten Wert weist er der Variablen zu, die auf der linken Seite des Wert­zuweisungszeichens steht.

In der zweiten Wert­zuweisung dieses Beispiels wertet der Computer also den Ausdruck a + 4 aus. Er sieht dazu im Speicher nach, welchen Wert a hat (17), und addiert 4 zu diesem Wert. Das Ergebnis 21 weist er der Variablen b zu. Die Variable b hat anschließend den Wert 21.

Die Deklaration einer Variablen und die Zuweisung eines Anfangs­wertes können auch zusammen durchgeführt werden.

Beispiel:  Die Anweisungen aus dem vorigen Beispiel lassen sich auch so schreiben:

int a=17, b=a+4;

Ausdrücke

Auf der linken Seite des Wert­zuweisungszeichens muss immer eine Variable stehen. Auf der rechten Seite muss immer ein Ausdruck stehen. Ein Ausdruck ist ein Term, der vom Computer ausgewertet wird und einen Wert eines bestimmten Typs ergibt. Mögliche Wertetypen in Java sind u.a. Zahlen (Typ int oder double), Zeichen­reihen (Typ String) und Wahrheits­werte (Typ boolean – benannt nach G. Boolezur Person).

Der einfachste Ausdruck ist die direkte Angabe eines Wertes, also einer Zahl, einer Zeichenreihe oder eines Wahrheits­wertes.

Beispiel:  In folgendem Programm­stück werden den Variablen x, s, und w jeweils der Zahlenwert 2, die Zeichenreihe "Hallo" und der Wahrheits­wert true zugewiesen.

int x;
String s;
boolean w;
x=2;
s="Hallo";
w=true;

Der zweit­einfachste Ausdruck ist eine einzelne Variable. Der Computer wertet einen solchen Ausdruck aus, indem er den Wert der Variablen aus dem Speicher liest.

Beispiel:  Der Variablen y wird der Wert von x zugewiesen, also der Wert 2:

int x, y;
x=2;
y=x;

Kompliziertere Ausdrücke entstehen, indem Werte und Variablen mit Rechen­zeichen verknüpft sowie möglicherweise mit Klammern versehen werden.

Beispiel:  In folgendem Programm treten drei Ausdrücke auf, die jeweils eine Zahl, eine Zeichenreihe und einen Wahrheits­wert ergeben.

int x=2, y;
String s;
boolean w;
y=5+(3*x+2)*x;
s="U"+x;
w=x>0;

Die Variable y erhält den Wert 21, die Variable s erhält als Wert die Zeichenreihe "U2" und die Variable w erhält den Wahrheits­wert true.

Bei der Auswertung von numerischen Ausdrücken gelten die gewohnten Rechenregeln der Arithmetik – Klammern werden zuerst ausgewertet, Punkt­rechnung geht vor Strich­rechnung, ansonsten wird von links nach rechts ausgewertet.

Das Zeichen + dient außer zur Addition von Zahlen auch zur Verkettung von Zeichen­reihen. Wird eine Zahl und eine Zeichenreihe mit + verknüpft, so wird die Zahl in eine Zeichenreihe umgewandelt und mit der Zeichenreihe verkettet.

Der Ausdruck x>0 ergibt einen Wahrheits­wert, also entweder true (wahr) oder false (falsch), je nach dem, ob die Bedingung x>0 erfüllt oder nicht erfüllt ist.

Schließlich ist auch noch der Aufruf einer Funktion, die einen Wert zurückgibt, ein Ausdruck.

Beispiel:  Der Variablen b wird das Maximum von a und -a zugewiesen:

b=max(a, -a); 

Voraus­gesetzt ist, dass die Funktion max definiert ist und dass vorher der Variablen a ein Wert zugewiesen worden ist.

Typanpassung

Bei einer Wert­zuweisung muss der Typ des Wertes mit dem Typ der Variablen über­einstimmen. Ausnahmen gibt es im Bereich der numerischen Typen. So ist es etwa möglich, einer Variablen vom Typ double (Kommazahl) einen Wert vom Typ int (Ganzzahl) zuzuweisen. Dabei wird die Ganzzahl automatisch in eine Kommazahl umgewandelt. Beispiels­weise wird eine 3 in 3.0 umgewandelt.

In umgekehrter Richtung ist eine automatische Typanpassung nicht vorgesehen. Einer Variablen vom Typ int kann kein Wert vom Typ double zugewiesen werden, es sei denn, der double-Wert wird vorher explizit umgewandelt. Die explizite Typ­umwandlung wird als Casting bezeichnet (engl.: to cast – gießen). Dabei wird der Wert sozusagen in eine neue Form gegossen.

Beispiel:  Durch die Anweisung a = (int) x; wird der double-Wert 3.85 so zurecht­gestutzt, dass er von einer int-Variablen aufgenommen werden kann. Hierbei werden die Nach­komma­stellen einfach abgeschnitten. Somit erhält die Variable a den Wert 3.

int a;
double x=3.85;
a=(int) x;

Der gewünschte neue Typ wird in Klammern vor den Ausdruck gesetzt, der umgewandelt werden soll; die Typ­umwandlung bezieht sich nur auf den unmittelbar folgenden Teilausdruck (Priorität wie ein Vorzeichen). Soll hiervon abgewichen werden, müssen zusätzliche Klammern gesetzt werden:

int a, b;
double x=3.85;
a=(int) x*2;    //  a = 6
b=(int)(x*2);   //  b = 7

1)  Achtung: Die Addition beim Typ int ist eine Addition modulo 232, d.h. es kommt zu unerwarteten Ergebnissen, wenn der Wertebereich über­schritten wird.

 

Weiter mit:   [Bedingte Anweisungen]   [Literatur]   oder   [up]

 


H.W. Lang   mail@hwlang.de   Impressum   Datenschutz
Diese Webseiten sind während meiner Lehrtätigkeit an der Hochschule Flensburg entstanden