zajecia_2011_12_07_WERSJA _POPRAWIONA

advertisement
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
Download