25. Pętla „do” Pętle „do”, używamy jeżeli WIEMY ile razy będzie wykonywana pętla Konstrukcja: do zmiena_sterująca=wartość_początkowa, wartość_końcowa, krok blok instrukcji enddo Przed pierwszym wykonaniem pętli sprawdzany jest warunek, czy wartość początkowa jest mniejsza lub równa od wartości końcowej (przy dodatniej wartości kroku). Jeżeli warunek jest spełniony następuję wykonanie instrukcji znajdujących się wewnątrz pętli. Po każdym wykonaniu bloku instrukcji, do wartości zmiennej sterującej dodawana jest wartość kroku, jeżeli otrzymana wartość jest mniejsza lub równa wartości końcowej, następuje ponowne wykonanie instrukcji wewnątrz pętli (przy dodatniej wartości kroku). Liczba cykli = (wartość_końcowa-wartość_początkowa+krok)/krok Np. 3-krotne wypisanie napisu „Witaj’ Jeżeli krok=1 to można pominąć jego wartość ……. ……. do i=1,3,1 do i=1,3 write(*,*) ‘Witaj’ write(*,*) ‘Witaj’ enddo enddo …. …. Wariant, w którym pytamy użytkownika ile razy wyświetlić napis: ….. write(*,*) ‘Ile razy wyswieltic napis?’ read(*,*) j do i=1,j,1 write(*,*) ‘Witaj’ enddo …. Zmienne i, j muszą być zadeklarowane wcześniej w programie!!!! 17 Poniższy program wypisuje wartości drugich potęg liczb z zakresu od 1 do 10: program pr50 IMPLICIT NONE integer::i do i=1,10,1 write(*,*) 'x: ',i,' x^2: ',i*i enddo ! Konstrukcje petli "do" w ponizszym wariancie wykorzystujemy zwykle w ! sytuacji, w ktorej piszac program, wiemy ile razy chcemy wykonac petle end Wariant rozbudowany o pytanie o początek i koniec zakresu oraz o wartość kroku: program pr51 IMPLICIT NONE integer::i,p,z,k write(*,*) 'Podaj poczatek zakresu' read(*,*) p write(*,*) 'Podaj zakonczenie zakresu' read(*,*) z write(*,*) 'Podaj wartosc kroku' read(*,*) k do i=p,z,k write(*,*) 'x: ',i,' enddo x^2: ',i*i end 26. Ćwiczenia - napisz program (pr52.f90), który 4 razy wyświetli napis „Witam Cie serdecznie”; - napisz program (pr53.f90), który spyta się użytkownika ile razy wyświetlić napis „wykonuje petle do” i to wykona; - napisz program (pr54.f90), który wyliczy wartości pierwiastka kwadratowego liczb z zakresu 1 do 20; - napisz program (pr55.f90), który wypisze co drugą liczbę całkowitą z zakresu od 1 do 20 i zsumuje ich wartość; - napisz program (pr56.f90), który zapyta się użytkownika ile liczb chce zsumować, następnie będzie prosił o podawania kolejnych liczb i na końcu wypisze ich sumę; - zmodyfikuj powyższy program, o liczenie średniej z podanych przez użytkownika liczb (pr57.f90); - napisz program (pr58.f90), który wypisze liczby parzyste z zakresu 1:20. wykorzystaj pętle „do” oraz funkcję mod(n,m) która zwraca resztę z dzielenia liczby n przez m (zastosuj liczby całkowite jako typ argumentów funkcji mod) 18 - napisz analogiczny program (pr59.f90), który wypisuje liczby nieparzyste z zakresu podanego przez użytkownika 27. Pętla „do” z instrukcją „cycle” Instrukcja „cycle” umieszczona w pętli „do” powoduję, przerwanie bieżącego cyklu pętli „do” i rozpoczęcie kolejnego cyklu. Przykład: poniższy program wypisze liczby 1, 2, 4. Liczba 3, NIE zostanie wypisana. program pr60 integer::i do i=1,4 if (i==3) cycle write(*,*) i enddo end 28. Pętla „do” z instrukcją „exit” Instrukcja „exit” powoduje, przerwanie wykonywanie pętli bez rozpoczynanie kolejnego cyklu. Program zaczyna wykonywanie instrukcji znajdujących się po pętli. Taką instrukcje można wykorzystać do wyjścia z „nieskończonej pętli do” (do „blok instrukcji” enddo). Przykład: poniższy program wypisze liczby 1, 2, liczby 3 i 4 nie zostaną wypisane. program pr61 integer::i do i=1,4 if (i==3) exit write(*,*) i enddo end 29. Ćwiczenia - napisz program (pr62.f90), który wyświetla liczby parzyste z zakresu podanego przez użytkownika; użyj instrukcji „cycle”; - napisz program (pr63.f90), który wyświetla liczby nieparzyste z zakresu podanego przez użytkownika; użyj instrukcji „cycle”; - napisz program (pr64.f90), który sumuje liczby podawana przez użytkownika (najpierw pytamy ile liczb zamierz podać), jeżeli podczas podawania liczb, użytkownik wpisze liczbę „0” to znaczy, że chcę skończyć sumowanie (nawet jeżeli ilość liczb jest mniejsza niż ilość zadeklarowana); użyj instrukcji „exit”. - napisz program (pr65.f90), który wyliczy wartości funkcji z=x*y dla x i y zmieniających się w zakresie od -1 do 1 z krokiem 0.1. Użyj zagnieżdżonych pętli do Przykład zagnieżdżonych pętli do: …… 19 do i=1,10 do j=1,10 write(*,*) i,’ ‘,j enddo enddo 20