Fortran: FORTRAN 77: Arithmetische Ausdrücke
<<< zur Fortran-Startseite | |
<< FORTRAN 77 | Fortran 90/95 >> |
< Felder | Logische Ausdrücke > |
Arithmetische Operatoren
[Bearbeiten]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
[Bearbeiten]Die Prioriät der arithmetischen Operatoren entspricht den mathematischen Gesetzmäßigkeiten.
- Klammerung vor allem anderen, z. B.
(A+B)*C
A*C+B*C
- Exponentiation vor Punktrechnung, z. B.
A*B**C
A*(B**C)
- Punktrechnung vor Strichrechnung, z. B.
A+B*C
A+(B*C)
Berechnungsfolge bei gleicher Priorität
[Bearbeiten]- Klammerung, Punktrechnung und Strichrechnung:
Beispiel:A*B/C*D
((A*B)/C)*D
- Exponentiation:
Beispiel:A**B**C
A**(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
[Bearbeiten]Operanden gleichen Datentyps
[Bearbeiten]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
[Bearbeiten]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
[Bearbeiten]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 > |