Variablen

Das erste Programm, das du geschrieben hast, führte immer zum gleichen Ergebnis. Häufig ist es jedoch wünschenswert, dass der Rechner Daten verarbeitet, die ihm der Benutzer mitteilt. 
Dazu muss das Programm Informationen lesen und speichern können.

1. Schritt: Variablenvereinbarung

Um veränderliche Informationen (Variable) für den Programmablauf speichern zu können, besitzt der Rechner einen Arbeitsspeicher. Diesen kann man sich wie einen großen Küchenkasten mit vielen Schubladen vorstellen.

Da es für den Programmierer verwirrend ist, mit diesen Nummern zu arbeiten, gibt man den Variablen in vielen Programmiersprachen Namen, die dann vom Programm bestimmte Speicherbereiche zugeordnet bekommen. Zusätzlich muss man mitteilen, welche Information man speichern möchte, z.B. ganze Zahlen, Kommazahlen oder Buchstaben. 
Variablen sind Speicherbereiche, die während des Programmablaufs unterschiedliche Werte enthalten können.

Form der Variablenvereinbarung in Oberon-2:

VAR
   a, hans, franz: INTEGER;
   b: CHAR;

Im Beispiel wurden drei Variablen vom Typ INTEGER (ganze Zahlen) und eine Variable vom Typ CHAR (Zeichen) angelegt. Die Einrückungen sind nicht notwendig, erhöhen aber die Übersicht. Gewöhne sie dir gleich an!

2. Schritt: Zuweisung

Bisher wurden die Variablen angelegt, sie besitzen einen Namen, aber noch keinen Inhalt. Nachdem man nun Speicherplatz geschaffen hat, kann man diese "Schubladen" auch füllen, man sagt: man weist den Variablen einen Wert zu.

Schreibweise in Oberon-2:

Variablenname := Wert

Beispiel: Nacheinander werden folgende Zuweisungen durchgeführt:
zahl3 := 107; 
zahl4 := zahl3; 
summe := 0 ;
summe := summe + zahl4;
summe :=summe - 7;

Zunächst erhält hier die Variable zahl 3 den Wert 107. Anschließend wird der Inhalt der Variable zahl3 an zahl4 übergeben; zahl4 enthält nun auch den Wert 107. Summe erhält den Wert 0. Die letzte Zeile ist so zu lesen: "Nimm den Wert der Variablen Summe (also 0) und addiere dazu den Wert von zahl4. Speichere das Ergebnis in der Variable summe." In der Variable summe befindet sich nun also auch der Wert 107. Am Ende wird von summe 7 subtrahiert; der Wert ist nun also 100.

Aufgabe: Was macht das folgende Programm?

Überlege zuerst und probiere es dann aus!

3. Schritt: Ein- und Ausgabe

Das Programm kann nun schon Variablen anlegen, Inhalte speichern und sie weiter verarbeiten. Nun benötigt man noch die Fähigkeit zur Ein- und Ausgabe der Informationen auf dem Bildschirm.
Um nicht jedesmal den Programmtext ändern zu müssen, wenn man zwei Zahlen zusammenzählen will, gibt es (bereits fertige) Methoden, die dem Benutzer ermöglichen, von außen auf den Programmablauf einzuwirken.

Eingabe von Zahlen in Oberon-2:

* Display. ReadInt (zahl, 10, ch) liest eine ganze Zahl in die Variable zahl ein. Sie darf maximal 10 Stellen haben. Falls ein Fehler bei der Eingabe auftritt, so speichert das Programm Informationen über den Fehler in der Variablen ch (Vom Typ CHAR, also ein Zeichen).
Eingabe z.B.: 123. Im Bild siehst du die Variablen vorher und nachher.

* Display. ReadChar (ch) liest ein Zeichen in die Variable ch ein.
Gibt der Benutzer nun ein g ein, wird der Variablenwert entsprechend verändert.

Ausgabe auf den Bildschirm:

* Display. WriteInt (zahl, 9) gibt die oben gespeicherte Zahl auf dem Bildschirm aus, aber maximal 9 Ziffern. Auf dem Bildschirm sieht man also im Beispiel 123.
* Display. WriteChar (ch) schreibt den Inhalt der Variablen ch auf den Bildschirm, 
im Beispiel also g
* Display. WriteStr ("Text") schreibt den Text in Anführungszeichen auf den Bildschirm.
* Display. WriteLn führt einen Zeilenwechsel herbei.

Aufgabe:

Ergänze das obige Programm "Rechne" zu einem benutzerfreundlichen Programm, bei dem der Benutzer zwei Zahlen eingibt und das für den Benutzer etwa folgendermaßen aussieht:
Geben Sie bitte Zahl 1 ein: 12 
Geben Sie bitte Zahl 2 ein: 55
Die Summe der beiden Zahlen ist 67.

Musterlösung


Einfache Datentypen

Um Informationen auf dem Computer platzsparend zu speichern und sinnvoll zu verarbeiten, gibt es in Oberon (wie auch in fast jeder anderen Programmiersprache) folgende Datentypen, die teilweise auch aus der Mathematik geläufig sind:

Bedeutung Name Operationen Wertbereich
ganze Zahlen INTEGER +,-,*,DIV,MOD -32768..32767 
  SHORTINT +,-,*,DIV,MOD -128.. 127
  LONGINT +,-,*,DIV,MOD -2147483648..2147483647 
reelle Zahlen REAL +,-,*,/ -3.4028e38 ...3.40282e38
(d.h. 3,4 mal 10 hoch 38),
eine 3 mit 38 Nullen.
  LONGREAL +,-,*,/ noch größer!
Zeichen CHAR   z.B. 'b', 'X', '&'
Wahrheitswerte BOOLEAN &, OR, ~ TRUE; FALSE

 

Prozeduren für die Ein- und Ausgabe:

1. Lesen von Benutzereingaben:

* Ganze Zahlen: Display. ReadInt (zahl, länge, abbruchcharacter)
Display. ReadLongInt (zahl, länge, abbruchcharacter)
* Rationale Zahlen: Display. ReadReal (zahl, länge, abbruchcharacter)
Display. ReadLongReal(zahl, länge, abbruchcharacter)
* Zeichen: Display. ReadChar (zeichen)

2. Schreiben auf den Bildschirm:

* Ganze Zahlen: Display. WriteInt (zahl, länge) (egal, welche Art ganzer Zahl)
* Rationale Zahlen: Display. WriteReal (zahl, länge) (egal, welche Art rat. Zahl)
* Zeichen: Display. WriteChar (zeichen)

Mögliche Aufgaben, mit denen Du Deine Kenntnisse erproben kannst:

1. Verändere das Programm "Rechne" vom letzten Mal so, dass Du ...
a) ...LONGINT- oder REAL-Zahlen addieren kannst!
b) ...multiplizieren oder dividieren kannst!

2. Gabriel Daniel Fahrenheit, ein deutscher Glasbläser und Physiker (geb. 1686) fertigte das erste Quecksilberthermometer an. Die nach ihm benannte Temperaturskala wird heute noch in Amerika verwendet. In Europa wird die Temperatur meist in Celsiusgraden gemessen, benannt nach dem schwedischen Astronomen Andres Celsius (geb. 1701). 
Durch ein Programm soll eine in Fahrenheit angegebene Temperatur in Celsiusgrade umgerechnet werden. Dazu dient die folgende Formel:

Celsiusgrade := 5/9* (Fahrenheitgrade - 32)

Der Algorithmus hat in Struktogrammform die folgende Gestalt:

Übersetze dieses Programm in Oberon-2 und teste es!
Musterlösung 

3. Erstelle ein Programm, das vom Benutzer (Verkäufer) einen Kaufpreis und einen Prozentsatz für den Rabatt verlangt und daraus einen neuen Preis berechnet!
Musterlösung

4. Ein Programm mit vielen Variablen, das den Termin des Osterfestes berechnet
Musterlösung