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 >