! 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