Skip to content
Snippets Groups Projects
Commit 2f6532d8 authored by dali662d's avatar dali662d
Browse files

Upload New File

parent fec4e2c9
No related branches found
No related tags found
No related merge requests found
! 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
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment