Fortran: Fortran 95: Datentypen
<<< zur Fortran-Startseite | |
<< Fortran 95 | Fortran 2003 >> |
< Programmaufbau | Felder > |
Dieses Kapitel handelt von Datentypen, Variablen, Konstanten und der Wertzuweisung.
Datentypen
[Bearbeiten]Arithmetische Datentypen
[Bearbeiten]Datentyp | Kommentar | Beispiele (Konstanten) |
---|---|---|
integer |
Ganzzahlen | 15, -6500, 200000000 |
real |
Gleitkommazahlen einfacher Genauigkeit | 3.1415, -5.5, .7e3, 12.5E-5 |
(double precision ) |
Gleitkommazahlen doppelter Genauigkeit (aus FORTRAN 77) | 3.1415D0, -5.5D0, .7d3, 12.5D-5 |
complex |
Komplexe Zahlen (zwei real -Zahlen) |
(3.1415, -5.5), (1.4, 7.1E4) |
double precision
ist in Fortran 95 nur noch aus historischen Gründen (FORTRAN 77) vorhanden. Fortran 95 bietet für Datentypen höherer Genauigkeit bzw. mit größerem Zahlenbereich andere Sprachmittel. Diese Thematik wird später erläutert (Datentypen höherer Genauigkeit).
Binär-, Oktal- oder Hexadezimalzahlen können als "boz literal constants" angegeben werden:
Schreibweise 1 | Schreibweise 2 | Kommentar |
---|---|---|
B"zahl" | B'zahl' | Binäre Zahl |
O"zahl" | O'zahl' | Oktalzahl |
Z"zahl" | Z'zahl' | Hexadezimalzahl |
Beispiel:
Fortran 90/95-Code (free source form) |
program bsp implicit none integer :: a a = Z"AB1C" write(*,*) a ! Ausgabe: 43804 a = O"7134" write(*,*) a ! Ausgabe: 3676 a = B'101110110001' write(*,*) a ! Ausgabe: 2993 end program bsp |
Logischer Datentyp
[Bearbeiten]Datentyp | Kommentar | Mögliche Werte |
---|---|---|
logical | Logischer Datentyp (wahr oder falsch) | .TRUE., .FALSE. |
Zeichenketten
[Bearbeiten]Datentyp | Kommentar | Beispiel (Konstante) |
---|---|---|
character(n) | Zeichenkette (String) mit einer Länge von n Zeichen | 'Hallo, Welt!', "Hallo, Welt!" |
character(len=n) | -"- | |
character*n | -"- (FORTRAN 77-Stil, sollte nicht mehr verwendet werden) | |
character | Zeichenkette (String) mit einer Länge von einem Zeichen | 'H', "h" |
Beachte: Zeichenketten können in Fortran 95 in Apostrophe oder Anführungszeichen eingeschlossen werden.
Beispiel:
"Wie geht's?"
'Er sagte: "Hallo"'
Variablen
[Bearbeiten]Eine Variable ist charakterisiert durch einen
- symbolischen Namen
- Datentyp
- Wert
- Speicherplatz
Beim Programmstart hat eine Variable keinen definierten Wert. Eine Variable kann ihren Datentyp auf zwei Arten erhalten, durch implizite oder explizite Typanweisung.
Implizite Typanweisung
[Bearbeiten]Bei der impliziten Typanweisung bestimmt der Anfangsbuchstabe des Variablenbezeichners den Datentyp.
Datentyp | Anfangsbuchstabe der Variablen |
---|---|
integer | Buchstaben I bis N (oder i bis n) |
real | restliche Buchstaben |
Beispiel:
Fortran 90/95-Code (free source form) |
program bsp b1 = 8.9 c1 = 3. i1 = B1/C1 write (*,*) i1 ! Das Ergebnis ist 2, da i1 implizit als integer definiert ist end program bsp |
Die Standardzuordnung der Anfangsbuchstaben kann durch das Schlüsselwort implicit
auch geändert werden. Infolge der durch implizite Typanweisung entstehenden Fehlermöglichkeiten ist es sinnvoll, die implizite Typanweisung komplett auszuschalten. Dies wird durch die Anweisung
implicit none
gleich nach der program
-Anweisung erreicht. Dann muss der Datentyp jeder Variablen explizit festgelegt werden.
Explizite Typanweisung
[Bearbeiten]Beispiel:
Fortran 90/95-Code (free source form) |
program bsp implicit none real :: b real :: c real :: i ! alternativ auch als real :: b, c, i b = 8.9 c = 3. i = b/c write (*,*) i ! Das Ergebnis ist 2.966666 end program bsp |
Benannte Konstanten
[Bearbeiten]Benannte Konstanten werden in Fortran 95 folgendermaßen festgelegt:
datentyp, parameter :: symname = wert |
Beispiele:
real, parameter:: PI = 3.1415, PIFAC = PI/2.0
character(5), parameter :: str = 'Hallo'
Der zugewiesene Wert kann eine Konstante (Literal) oder eine schon definierte benannte Konstante sein.
Für die Zeichenkettenlänge ist bei benannten Konstanten auch eine *-Schreibweise möglich. Dies erspart die explizite Angabe der Stringlänge.
Beispiel:
Fortran 90/95-Code (free source form) |
program bsp implicit none character(*), parameter :: a = 'Jetzt wird auch die Stringlaenge festgelegt' write(*,*) a ! Ausgabe: Jetzt wird auch die Stringlaenge festgelegt end program bsp |
Wertzuweisung
[Bearbeiten]Wertzuweisungen haben wir schon kennengelernt:
variable = ausdruck |
Beispiel:
k = 1 k = k + 2
Die Wertzuweisung an eine Variable ist, wie am vorigen und auch am nächsten Beispiel zu ersehen, nicht zu verwechseln mit einer mathematischen Gleichung. Der Ausdruck
k + 2 = 5
wäre zwar mathematisch korrekt. Als Wertzuweisung in einem Fortran-Programm ist dies aber keine mögliche Formulierung. k+2
ist kein zulässiger Ausdruck auf der linken Seite des Zuweisungsoperators (L-Wert).
In Fortran ist auch keine Kette von Wertzuweisungen möglich. Der folgende Ausdruck ist nicht erlaubt und liefert eine Fehlermeldung.
i = j = k = 1.5 ! Fehler
<<< zur Fortran-Startseite | |
<< Fortran 95 | Fortran 2003 >> |
< Programmaufbau | Felder > |