diff --git a/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/04_taschenrechner_mit_do.f95 b/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/04_taschenrechner_mit_do.f95
new file mode 100644
index 0000000000000000000000000000000000000000..1ae0f29697e2170cf8b4fc5a3a45bf6fcf0cdf48
--- /dev/null
+++ b/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/04_taschenrechner_mit_do.f95
@@ -0,0 +1,53 @@
+program taschenrechner
+    implicit none
+    
+    INTEGER :: a, b ! Variablen
+    CHARACTER :: op ! Operator
+    INTEGER :: res  ! Result
+
+    CHARACTER :: end 
+
+    DO 
+        WRITE(*,*) "Gebe zwei Zahlen ein!"
+        READ(*,*) a, b
+
+        WRITE(*,*) "Gebe einen Rechenoperator (+,-,*,/) ein!"
+        DO ! Eingabe wird wiederholt, wenn der Operaor ungültig ist
+            READ(*,*) op
+            IF (op == "+" .OR. op == "-" .OR. op == "*" .OR. op == "/") EXIT
+            WRITE(*,*) "Die Eingabe ist ungueltig. Gebe einen neuen Operator ein."
+        END DO
+
+        SELECT CASE (op)
+        CASE("+")
+            res = a + b
+        CASE("-")
+            res = a - b
+        CASE("*")
+            res = a * b
+        CASE("/")
+
+            DO ! Hiermit wird Division durch 0 ausgeschlossen, ohne die Rechnung abzubrechen
+            IF (b == 0) THEN
+                WRITE(*,*) "Division durch 0 ist veboten! Gebe die zweite Zahl erneut ein."
+                READ(*,*) b
+            END IF
+            END DO
+            
+            res = a / b
+            
+        CASE DEFAULT
+            WRITE(*,*) "Der Eingegebene Operator ist ungueltig."
+        END SELECT
+
+
+        WRITE(*,*) "Das Ergebnis ist ", res
+
+        ! Austrittsbedingung
+        WRITE(*,*) "Soll eine weitere Rechnung statt finden? (j/n)"
+        READ(*,*) end
+        IF(end == "n") EXIT
+
+    END DO
+
+end program taschenrechner
\ No newline at end of file