Variablendeklaration
Eine Variablenvereinbarung hat die Form
VAR <Bezeichner>: <Typ>;
sie führt einen Bezeichner
als Benennung für einen
Behälter ein,
der Werte eines gegebenen Typs aufnehmen kann.
Bei Aktivierung des
Blockes, zu dem die Variable gehört,
wird dem Behälter ein Speicherobjekt
zugeordnet, das über einen Zugriffspfad,
die Referenz, erreichbar ist.
Kommt eine Variablenbenennung im Programmtext vor,
so bedeutet dies je nach dem Kontext Verschiedenes:
-
auf Referenz-Position, also auf der linken Seite einer
Zuweisung oder als
Referenz-Argument einer Prozedur oder Funktion,
ist die Referenz,
also der Bezug auf den Behälter gemeint;
-
auf Wert-Position, also im Rahmen eines Ausdrucks oder als
Wert-Argument einer Prozedur oder Funktion,
bedeutet die Benennung den Inhalt des Behälters.
Bezeichnet eine Variablenbenennung
eine Variable eines strukturierten Typs,
so können von ihr weitere Benennungen
für die Komponenten abgeleitet werden,
denen ebenfalls Referenzen entsprechen.
So ist
- wenn a eine Array-Variable ist,
a[i] eine Benennung für
die Komponente des Array a zum Index-Wert i,
- wenn a eine Verbund-Variable ist,
a.x eine Benennung für die
durch den Selektor x ausgewählte Verbundkomponente.
- Indizierung und Selektion können womöglich mehrfach
angewandt werden; so entstehen kompliziertere Variablenbenennungen,
denen jeweils wieder ein Zugriffspfad auf ein Speicherobjekt entspricht.
Die einer Variablenbenennung entsprechende Referenz ist eine
verallgemeinerte Adresse des zugeordneten Behälters.
Sie braucht nicht direkt eine Maschinenadresse
oder Hausnummer zu sein;
manche Prozessoren besitzen allgemeinere Adressierungsmodi.
Es gibt Programmsysteme, wo die Referenz ihren Wert sogar
während des Programmlaufs ändern kann,
ohne daß der Programmierer das bemerken muß!
Die Referenzen auf Behälter für Werte eines Typs T
bilden selbst eine Klasse Ptr(T),
den T zugeordneten Pointertyp.
Mit Werten eines Pointertyps kann nur sehr eingeschränkt gerechnet
werden (außer in C und seinen Verwandten, und dort ist es riskant),
aber man kann über sie auf den Inhalt des Behälters
lesend und schreibend zugreifen.
zurück |
Inhalt | Index |
vor |
Vorlesung
Klaus Lagally, 22. Februar 2000, 19:36