| <<< zur Fortran-Startseite | |
| << FORTRAN 77 | Fortran 90/95 >> |
| < Felder | Logische Ausdrücke > |
Arithmetische Operatoren
FORTRAN 77 kennt folgende arithmetische Operatoren
| Operator | Kommentar | Mathematische Entsprechung |
|---|---|---|
A + B | Addition | |
A - B | Subtraktion | |
A * B | Multiplikation | |
A / B | Division | |
A ** B | Exponentiation | |
Mit dem Exponentiationsoperator (Potenzierung) war und ist FORTRAN 77 anderen Programmiersprachen einen Schritt voraus. Andererseits kennt FORTRAN 77 den aus vielen anderen Programmiersprachen bekannten Modulo-Operator nicht. Als Überkompensation gibt es für diesen Zweck die MOD()-Funktion sowohl für Ganzzahlen, wie auch für Fließkommazahlen.
Operatorenpriorität
Die Prioriät der arithmetischen Operatoren entspricht den mathematischen Gesetzmäßigkeiten.
- Klammerung vor allem anderen, z. B.
(A+B)*CA*C+B*C - Exponentiation vor Punktrechnung, z. B.
A*B**CA*(B**C) - Punktrechnung vor Strichrechnung, z. B.
A+B*CA+(B*C)
Berechnungsfolge bei gleicher Priorität
- Klammerung, Punktrechnung und Strichrechnung:
Beispiel:A*B/C*D((A*B)/C)*D - Exponentiation:
Beispiel:A**B**CA**(B**C)
Außerdem ist zu beachten, dass niemals zwei Operatoren direkt aufeinander folgen dürfen.
Beispiel: Der Ausdruck 1.5**-1 ist in FORTRAN 77 falsch und führt zu einer Fehlermeldung. Richtig ist 1.5**(-1)
Ergebnisdatentyp
Operanden gleichen Datentyps
Bei Operanden gleichen Datentyps erhält das Ergebnis den Datentyp der Operanden.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
REAL A
A = 3/2
C 3 ist ein INTEGER und 2 ist auch ein INTEGER,
C daher muss das Ergebnis auch ein INTEGER sein, also 1.
C Die Zuweisung an die REAL-Variable A stellt das
C Ergebnis nicht mehr richtig.
WRITE (*,*) A
C Ausgabe: 1.00000
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
Implizite Typumwandlung bei Operanden gemischten Datentyps
Weisen die Operanden unterschiedliche Datentypen auf, so wird bei jeder Operation, falls nötig, das Ergebnis dem höherwertigen Datentyp angepasst.
| INTEGER REAL DOUBLE PRECISION COMPLEX |
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
REAL A
A = 3/2.
C 2. ist ein REAL. Jetzt stimmt das Ergebnis.
WRITE (*,*) A
C Ausgabe: 1.500000
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
Explizite Typumwandlung
FORTRAN 77 besitzt auch Funktionen zur expliziten Umwandlung des Datentyps. Diese werden im Kapitel Standardfunktionen näher beschrieben.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
REAL R
COMPLEX C
R = 2
C = CMPLX(R)
WRITE (*,*) C
C Ausgabe: ( 2.000000 , 0.000000 )
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
| <<< zur Fortran-Startseite | |
| << FORTRAN 77 | Fortran 90/95 >> |
| < Felder | Logische Ausdrücke > |