diff --git a/Sonderuebung/WiSe24-25/01_DO_loops_overview.f95 b/Sonderuebung/WiSe24-25/01_DO_loops_overview.f95 new file mode 100644 index 0000000000000000000000000000000000000000..cdcf5cfca70b916b810c463a987c27646aff2232 --- /dev/null +++ b/Sonderuebung/WiSe24-25/01_DO_loops_overview.f95 @@ -0,0 +1,112 @@ +! Eine kurze Übersicht über die Arten von Schleifen in Fortran + +program do_loops + implicit none + + INTEGER :: i, j ! Zählvariabelen + INTEGER :: start = 0, end = 10, step = 2 + + + !!! Zählschleifen !!! + ! Allgemeine Struktur : + ! DO zählvariable = start, end, step + ! content + ! END DO + ! i wird im ersten Durchlauf auf start gesetzt + ! und erhöht sich in jedem Duchlauf um step + ! step ist Standartmäßig 1 + ! Schleife läuft bis i >= end + + !! Zählvariable darf in der Schleife nicht geändert werden + + DO i = 1, 4 ! gibt die ganzen Zahlen 1 bis 4 aus + WRITE(*,*) i + END DO + + WRITE(*,*) ! Leerzeile in Ausgabe + + DO i = 0, 10, 2 ! gibt alle geraden Zahlen von 0 bis 10 aus + WRITE(*,*) i + END DO + + WRITE(*,*) ! Leerzeile in Ausgabe + + DO i = start, end, step ! Start, End und Step können auch Variablen sein + WRITE(*,*) i + END DO + + WRITE(*,*) ! Leerzeile in Ausgabe + + DO i = 5, 1, -1 ! gibt alle ganzen Zahlen von 5 bis 1 aus + WRITE(*,*) i + END DO + + + + WRITE(*,*) "press enter to continue" + READ(*,*) + + !!! DO WHILE !!! + ! Allgemeine Struktur : + ! DO WHILE (austrittsbedingung) + ! content + ! END DO + ! Schleife läuft solange die Austrittsbedingung wahr ist + ! Prüft die Austrittsbedingung immer am Anfang der Schleife + + !! Falls Austrittsbedingung nie falsch wird hat man unendliche Schleife + !! Dringend Vermeiden !! + + i = 1 + DO WHILE (i <= 5) ! Gibt die Zahlen 1 bis 5 aus + WRITE(*,*) i + i = i + 1 + END DO + + WRITE(*,*) ! Leerzeile in Ausgabe + + i = 1 + DO WHILE (i <= 2**4) ! Gibt die ersten 5 Zweierpotenzen aus + WRITE(*,*) i + i = i * 2 + END DO + + !!! folgendes immer vermeiden : + !i = 1 + !DO WHILE (i /= 0) ! Unendliche Schleife, i wird niemals 0 + ! i = i + 1 + !END DO + + WRITE(*,*) ! Leerzeile in Ausgabe + + + + !!! DO mit IF-EXIT Austrittsbedingung !!! + ! mit EXIT kann man aus einer Schleife austreten + ! Diese kann iA überall in der Schleife stehen + + !! Immer zusammen mit IF verwenden + + i = 1 + DO ! Zählt von 1 bis 5 + i = i + 1 + + IF (i > 5) EXIT + + WRITE (*,*) i + END DO + + + WRITE(*,*) ! Leerzeile in Ausgabe + + !!! Nisten + ! Die innere Schleife muss komplett innerhalt der äußeren Schleife stehen + ! Bei Zählschleifen müssen unterschiedliche Zählvariablen genutzt werden + + DO i = 1, 3 + DO j = 1, 2 + WRITE(*,*) i, j + END DO + END DO + +end program do_loops \ No newline at end of file