From 2f6532d8904ee584af09fa9c5783ef999df0b6c0 Mon Sep 17 00:00:00 2001 From: dali662d <dana.liebscher@mailbox.tu-dresden.de> Date: Tue, 29 Oct 2024 08:45:39 +0000 Subject: [PATCH] Upload New File --- .../WiSe24-25/02_IF-ELSE_overview.f95 | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 Sonderuebung/WiSe24-25/02_IF-ELSE_overview.f95 diff --git a/Sonderuebung/WiSe24-25/02_IF-ELSE_overview.f95 b/Sonderuebung/WiSe24-25/02_IF-ELSE_overview.f95 new file mode 100644 index 0000000..4495e76 --- /dev/null +++ b/Sonderuebung/WiSe24-25/02_IF-ELSE_overview.f95 @@ -0,0 +1,91 @@ +! 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 -- GitLab