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