Mit Initialisierung bezeichnet man die Vergabe eines Anfangswertes an ein Datenobjektes. Die Initialisierung von Variablen in einem Programm ist bei den meisten Programmiersprachen wichtig, da Variablen oft nach der Deklaration keinen festgelegten Wert haben. Somit können Berechnungen, die von einem Startwert abhängen, leicht falsche Ergebnisse liefern, ohne daß der Fehler im Programm ersichtlich ist.
In Fortran95 gibt es nun folgende Möglichkeiten der Initialisierung:
Die Initialisierung kann direkt hinter der Deklaration erfolgen.
INTEGER :: zaehler = 1, summe = 0&
REAL :: feld1(100) = 1.5 , feld2(50) = / 1., 2., 3., 4., 5.,(i+5.,i=1,45)/&
Den beiden INTEGER&-Größen
zaehler& und
summe& werden hier
die Anfangswerte
1& bzw.
0& zugewiesen. Bei dem
REAL&-Feld
feld1& werden alle 100 Elemente auf einmal mit dem Wert 1.5
belegt. Beim
feld2& sollen die einzelnen Elemente mit verschiedenen
Werten versehen werden. Dies kann mit einer Werte-Liste erreicht werden, in der
man in
/ .. /& eingeschlossen alle Werte einzeln oder mittels
einer impliziten Zählschleife für mehrere Elemente angibt.
Dabei muß jedoch nicht unbedingt mit einem konstanten Wert initialisiert werden,
sondern dieser kann sich auch durch einen arithmetischen Ausdruck ergeben.
Die Initialisierung kann aber auch in einer seperaten Anweisung erfolgen,
der DATA&-Anweisung:
DATA& //, //, ...
Die DATA-Anweisung ist nicht ausführbar und muß nach dem Vereinbarungsteil auftreten (siehe Bild 4.3). ist eine Liste von Namen, denen Anfangswerte zugewiesen werden sollen, und ist eine Liste von (symbolischen) Konstanten, die die eigentlichen Anfangswerte sind. Die kann unterschiedlichste Elemente sowie implizite Schleifen enthalten. Die Liste der Anfangswerte kann vor den Konstanten Wiederholungsfaktoren enthalten. Für jedes Element aus muß ein Wert in vorhanden sein. Das erste Element der Konstantenliste entspricht dem ersten Namen der Namenliste, das zweite der Konstantenliste dem zweiten der Namenliste usw.
Beispiel 1:
INTEGER :: array (200), feld (100), i DATA (array (i), i = 1,111), feld /111*0, 60*1, 40*2/
Die ersten 111 Elmente des Feldes array werden über eine implizite Zählschleife mit Null initialisiert, die ersten 60 Elemente von feld werden mit Eins vorbesetzt und die restlichen 40 mit Zwei. Man beachte, daß nicht alle Elemente von array initialisiert sind, und daß durch die Angabe des Feldnamens feld ohne Indexausdruck alle Elemente dieses Feldes vorbesetzt werden müssen.
Beispiel 2:
REAL z(400) DATA z(1:399:2), z(2:400:2) / 200*1., 200*-1./
Hier wird jedes Element von von Z abwechselnd mit dem Wert 1. und -1. belegt. Der Umgang mit Feldern und Teilfeldern wird in einem späteren Abschnitt genauer besprochen.
Gleichgültig auf welche Art und Weise man ein Datenelement initialisiert, darf dieses nur ein einziges Mal im gesamten Programm geschehen. Bezüglich weiterer Einschränkungen sei auf die weiterführende FORTRAN-Literatur verwiesen.