Fortran: FORTRAN 77: Felder: Unterschied zwischen den Versionen

Aus testwiki
Zur Navigation springen Zur Suche springen
imported>Dirk Huenniger
Keine Bearbeitungszusammenfassung
 
(kein Unterschied)

Aktuelle Version vom 1. Juli 2012, 15:04 Uhr

Fortran:Vorlage: NavigationUS


Bei allem, was mehr oder weniger wie ein Vektor, eine Matrix oder eine sonstige Aneinanderreihung von gleichartigen Elementen aussieht, kann der Einsatz von Feldern (Arrays) sinnvoll sein.

Eindimensionale Felder

Für die Deklaration von eindimensionalen Feldern gibt es mehrere Möglichkeiten. Die Feldgrenzen müssen konstante Werte sein. Die Varianten werden nun anhand von Beispielen gezeigt.

Variante 1: Einfach

REAL ARR(10)

Beachte: Der Feldindex läuft hier von 1 bis 10 und nicht von 0 bis 9, wie es bei vielen modernen Hochsprachen der Fall ist.

Variante 2: Das DIMENSION-Schlüsselwort

REAL ARR
DIMENSION ARR(10)

Variante 3: Verwendung von benannten Konstanten

INTEGER MAXIND                    
PARAMETER (MAXIND=10)                   
REAL ARR(MAXIND)

Hier erfolgt die Festlegung der Feldgröße über eine benannte Konstante.

Variante 4: Explizite Angabe der Indexgrenzen

REAL ARR(0:9)

Hier wird Unter- und Obergrenze explizit angegeben. Der Index läuft nun von 0 bis 9. Auch negative Werte für die Indizes sind möglich, z. B.

REAL ARR(-4:5)

Beispiel

Fortran:Vorlage: Pre1


Ein

WRITE (*,*) ARR

listet den gesamten Feldinhalt.

1.500000       2.500000       0.000000      3.9876625E-34   0.000000      3.9902670E-34 -2.7682916E-05  
-2.7269103E-05 -2.9040850E-05   10.50000

Im Beispielsfall wurden die Feldelemente ARR(3) bis ARR(9) nicht explizit vorbelegt. Sie sind deshalb undefinierten Inhalts und können bei jedem Programmaufruf andere Werte annehmen.

Mehrdimensionale Felder

Für mehrdimensionale Felder gelten die gleichen Varianten wie für eindimensionale Felder. Standardmäßig kann ein Feld bis zu sieben Dimensionen besitzen. Die Speicherreihenfolge ist spaltenorientiert. Das bedeutet, der erste Index variiert am schnellsten: a11,a21,,a(n1)m,anm

Beispiel: Ein 2-dimensionales Feld

Fortran:Vorlage: Pre1

Beispiel: Spaltenorientierte Speicherreihenfolge

Die 3×3-Matrix A=(15040321965) soll in ein Fortran-Programm eingelesen und wieder komplett ausgegeben werden. Zusätzlich soll auch der Wert des Feldelementes a23 (2. Zeile, 3.Spalte, Wert = -2) separat ausgegeben werden.

Fortran:Vorlage: Pre1

Ein-/Ausgabe:

 Werte (spaltenorientierte Eingabe):
1
40
-1
-5
3
9
0
-2
65
 Gesamtfeld =            1          40          -1          -5           3           9           0          
     -2          65
 a23 =           -2

Fortran:Vorlage: NavigationUS