02_IF-ELSE_overview.f95 2.77 KiB
! kurze Übersicht über Alternativen in Fortran
program alternativen
implicit none
INTEGER :: a = 2, b = 2
! Alternativen haben im Allgemeinen folgende Form :
! IF (bedingung 1) THEN
! content
! ELSEIF (bedingung 2) THEN
! content 2
! ELSEIF (bedingung 3) THEN
! ...
! ELSE
! content n
! END IF
!
! Dabei können auch die ELSEIF und ELSE Zweige Weggelassen werden
!
! Bei jedem IF/ELSEIF wird geprüft ob die Bedingung wahr ist
! wenn ja wird der Content unter dem entsprechenden Zweig ausgeführt,
! danach wird NACH dem END IF fortgeführt
! wenn nein und danach ein weiterer ELSEIF Zweig existiert
! wird dieser analog überprüft und evtll ausgeführt
!
! wenn alle vorherigen Bedingungen falsch sind, wird der Content
! des ELSE-Zweiges ausgeführt, soweit dieser existiert
! Bedingungen können u.a. LOGICALS und Vergleiche (siehe unten) sein
! Um mehere Bedingungen zu verknüpfen nutze .AND., .OR, .EQV., .NEQV. und .NOT.
! Alle logischen Operatoren funktionieren wie bekannt
!!! es folgen beispiele
! a = b = 4
IF (a == b) THEN ! == wird zum Vergleich genutzt
WRITE(*,*) "a und b sind gleich"
END IF
WRITE(*,*) ! Leerzeile in Ausgabe
IF (a + b == 4) THEN
WRITE(*,*) "a + b ist gleich 4"
ELSE
WRITE(*,*) "a + b ist ungleich 4"
END IF
WRITE(*,*) ! Leerzeile in Ausgabe
IF (a + b > 0) THEN ! > und >= für strikt größer und größer-gleich
WRITE(*,*) "a + b ist positiv"
ELSEIF (a + b < 0) THEN ! < und <= für strikt kleiner und kleiner-gleich
WRITE(*,*) "a + b ist negativ"
ELSE
WRITE(*,*) "a + b = 0"
END IF
WRITE(*,*) ! Leerzeile in Ausgabe
! Falls es keinen ELSE/ELSEIF Zweig gibt und der Content nach IF nur eine Zeile lang ist
! kann man die IF Bedingung auch einzeilig schreiben
! Dies nutzt man z.B. oft für EXIT-Bedinungen in Schleifen
!
! Die folgenden Altertiven machen also das gleiche
IF (a /= 0) THEN ! nutze /= für Ungleich
WRITE(*,*) "a ist nicht 0"
END IF
IF (a /= 0) WRITE(*,*) "a ist nicht 0"
WRITE(*,*) ! Leerzeile in Ausgabe
!!! Nisten !!!
! Die innere Alternative muss sich komplett in der Äußeren befinden
! Beachtet dass sich genistete Bedingungen nicht gegenseitig ausschließen sollten
IF (a >= b) THEN
IF (a <= b) THEN
WRITE(*,*) "a und b sind gleich"
ELSE
WRITE(*,*) "a ist strikt kleiner als b"
END IF
ELSE
WRITE(*,*) "a ist strikt größer als b"
END IF
end program alternativen