Globale Variable,
im Deklarationsteil des Hauptprogrammes vereinbarte
Variable. Eine globale Variable ist im gesamten Programm
einschließlich aller Unterprogramme bekannt, und es
kann aus jedem Unterprogramm auf diese Variable
zugegriffen werden.
Eine lokale Variable kann den gleichen Namen wie
eine globale Variable erhalten.
In diesem Fall ist in dem Unterprogramm unter diesem
Namen nur noch die lokale Variable erreichbar.
Der Zugriff auf die globale Variable ist dann nicht mehr möglich.
Mit jedem Aufruf eines Unterprogrammes wird der
Speicherplatz für lokale Variablen neu angelegt.
Der Inhalt der lokalen Variablen geht nach dem
Rücksprung aus dem Unterprogramm verloren.
Die Parameter eines Unterprogrammes stellen ebenfalls
lokale Variablen dar, deren Inhalt beim Aufruf des
Unterprogrammes durch die aktuellen übergebenen Argumente
definiert wird.
PROGRAM LokaleVsGlobaleVariable(input, output); VAR a,b,c: integer; (* globale Variable *) PROCEDURE foo(a: integer); (* a ist lokal *) VAR b,d: integer; (* b und d sind lokal *) BEGIN b:=2*a; (* Zuweisung an lokale Variable *) c:=3*a; (* Zuweisung an globale Variable *) d:=4*a; writeln('In Prozedur: ',a:3,b:3,c:3,d:3) END; BEGIN (* des Hauptprogrammes *) a:=5; (* Zuweisung an globale Variablen *) b:=3; c:=-4; writeln('Vor Prozedur: ',a:3,b:3,c:3); foo(b); writeln('Nach Prozedur:',a:3,b:3,c:3) END.Das Programm erzeugt folgende Ausgabe:
Vor Prozedur: 5 3 -4 In Prozedur: 3 6 9 12 Nach Prozedur: 5 3 9Beim Aufruf eines Unterprogrammes wird im Normalfall der Wert eines aktuellen Argumentes in eine lokale Variable kopiert, auf die dann im Unterprogramm über den Parameternamen zugegriffen werden kann (,, Call-by-value``). Das hat zur Folge, daß
In der Parameterliste werden Parametern, auf die mit
,,Call by reference`` zugegriffen werden soll, das
Wort VAR vorangestellt.
PROGRAM beispiel(input, output); VAR a,b: integer; PROCEDURE hoo(VAR x: integer; y: integer); BEGIN x:=1; y:=2; END; BEGIN (* des Hauptprogrammes *) a:=5; b:=6; hoo(a,b); writeln(a:3,b:3) END.Das Programm erzeugt die Ausgabe
1 6
In der Prozedur war x ein VAR -Parameter
und damit wurde durch die Zuweisung x:=1
die Variable a , die als Argument angegeben war,
verändert.
y dagegen war kein VAR -Parameter;
damit wurde b durch die Zuweisung y:=2
nicht verändert.
Die an VAR -Parameter übergebenen Argumente
dürfen nur Variablen sein.
Konstanten oder arithmetische Ausdrücke sind
hier als Argumente nicht erlaubt.
In anderen Programmiersprachen gibt es nicht immer beide
Zugriffsmöglichkeiten.
In FORTRAN wird stets Call by reference benutzt,
während in C immer Call by value benutzt wird.