<<< zur Fortran-Startseite
<< FORTRAN 77Fortran 90/95 >>
< Logische AusdrückeStringoperationen >

Zum Vergleichen zweier arithmetischer Ausdrücke oder von Strings gibt es in FORTRAN 77 Vergleichsoperatoren. Das Ergebnis eines Vergleichs ist immer logischer Wert (.TRUE. oder .FALSE.).

Vergleichsoperatoren für arithmetische Typen

Operator Kommentar Mathematische Entsprechung
A .LT. Bless than (kleiner als)
A .LE. Bless equal (kleiner gleich)
A .GT. Bgreater than (größer als)
A .GE. Bgreater equal (größer gleich)
A .EQ. Bequal (gleich)
A .NE. Bnot equal (ungleich)

Beispiel:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      PROGRAM BSP                                
 
      INTEGER A, B
 
      A = 5
      B = 6
 
      WRITE (*,*) A .LT. B
C  Ausgabe: T
 
      END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

Beispiel:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      PROGRAM BSP                                
 
      CHARACTER*5 A, B
 
      A = 'Halli'
      B = 'Hallo'
 
      WRITE (*,*) A .LT. B
C  Ausgabe: T
 
      END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

Beim Rechnen mit Fließkommazahlen (Datentypen: REAL, DOUBLE PRECISION, COMPLEX) sind die systemimmanenten Rechenungenauigkeiten zu beachten. Aus diesem Grund sollten Fließkommazahlen nicht auf strikte (Un)Gleichheit geprüft werden, sondern Vergleiche sollten einen kleinen Toleranzbereich aufweisen: .

Beispiel (hier mit und :

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      X = LOG(A)

C  Statt... 
      IF (X .EQ. 2)
C  besser
      IF (ABS(X - 2) .LT. .00001)

12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

Zeichenkettenvergleiche

Das Ergebnis eines Vergleichs von Zeichenketten mittels Vergleichsoperatoren ist teilweise systemabhängig. Ausnahmen sind .EQ. und .NE.. Systemunabhängige Resultate sind durch Verwendung der entsprechenden lexikalischen Standardfunktionen erhältlich. Dort wird immer die Reihenfolge im ASCII-Zeichensatz verwendet.

Beispiel:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      PROGRAM BSP
 
      IMPLICIT LOGICAL(A-Z)
      
      CHARACTER*15 A, B

      A = 'Hallö'
      B = 'hallo'
       
      WRITE (*,*) 'A gleich B? ', A .EQ. B
      WRITE (*,*) 'A kleiner als B (Operator)? ', A .LT. B
      WRITE (*,*) 'A kleiner als B (Funktion)? ', LLT (A, B)
C  Ausgabe:
C   A gleich B?  F
C   A kleiner als B (Operator)?  T
C   A kleiner als B (Funktion)?  T

      END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

Operatorenpriorität

  1. Klammerung
  2. Arithmetische Operatoren
  3. Vergleichsoperatoren
  4. Logische Operatoren
  5. Zuweisungsoperator

Beispiel:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      PROGRAM BSP
 
      IMPLICIT LOGICAL(A-Z)
      
      REAL A, B, C
      LOGICAL X, RES

      A = 5.5
      B = -1.2
      C = 8.6
      X = .FALSE.

      RES = X .AND. A - B .GT. C .OR. A .LE. C       
C entspricht infolge Op.priorität: 
C   RES = ((X .AND. ((A-B) .GT. C)) .OR. (A .LE. C))
        
      WRITE (*,*) RES
C Ausgabe: T

      END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

Vergleichsoperatoren und logische Operatoren finden in erster Linie bei Verzweigungen und Schleifenbedingungen Verwendung.


<<< zur Fortran-Startseite
<< FORTRAN 77Fortran 90/95 >>
< Logische AusdrückeStringoperationen >
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.