Blöcke (1)
Ein Grundkonzept bei den blockorientierten Sprachen
(das sind die Familien von Algol, Pascal, C und einige weitere;
auch die meisten objektorientierten Sprachen gehören dazu)
ist der Block.
-
Unter einem Block verstehen wir einen abgeschlossenen,
zusammenhängenden Teilbereich im Programmtext.
Blöcke können ineinandergeschachtelt sein, aber sie
überlappen sich nicht.
-
Ein Block bestimmt den Gültigkeitsbereich der
Bezeichner für in ihm erklärte lokale Objekte
(Konstanten, Typen, Variablen,
Prozeduren und Funktionen).
Diese Bezeichner sind durch ihre Vereinbarung
gebunden
und verdecken gleichnamige Objekte in umfassenden Blöcken;
alle dann noch sichtbaren Objekte aus
äußeren Blöcken sind global
und bilden die Umgebung des Blockes.
Der den Block direkt umfassende Block bestimmt die
unmittelbare Umgebung,
von dort aus kommt man schrittweise weiter.
-
Zu einer Prozedur (oder Funktion) gehören eigentlich zwei
Blöcke: der Rumpf der Prozedur mit den zugehörigen lokalen Objekten,
und ein ihn umfassender Block, in dem die Parameter-Angaben hinzukommen
(ein intelligenter Compiler wird die beiden Blöcke
womöglich zusammenfassen).
Ebenso gehören zu dem äußersten Block eines Programms
oder Moduls die Importe und als Umgebung
ein impliziter umfassender Block zum Zugriff auf die
ohne Vereinbarung zugänglichen Standard-Objekte.
-
Ein Block enthält normalerweise Anweisungen.
Damit diese ausgeführt werden können,
muß der Block aktiviert und
seine lokalen Objekte erzeugt werden;
seine Umgebung muß bereits aktiviert sein.
-
Der äußerste Block eines Programms und eines Moduls
wird beim Programmstart aktiviert;
seine Umgebung ist dann schon aktiv.
Eine Prozedur wird beim Aufruf,
eine Funktion bei der Verwendung aktiviert.
Ein eingeschachtelter Block, der gleichzeitig eine Anweisung ist
(in manchen Sprachen wie etwa ALGOL gibt es das),
wird beim Betreten aktiviert.
-
Ein Block wird beim Verlassen wieder deaktiviert;
bei mehreren aktiven Blöcken geschieht die Deaktivierung
in der umgekehrten Reihenfolge ihrer Aktivierung
(Last-In-First-Out, Keller-Prinzip, Stack-Verhalten).
Dieses Verhalten ist wesentlich,
nicht seine technische Realisierung!
zurück |
Inhalt | Index |
vor |
Vorlesung
Klaus Lagally, 22. Februar 2000, 19:36