1 Pętle
Tematem przewodnim zajęć jest zapoznanie się z dwiema podstawowymi konstrukcjami do tworzenia pętli:
Polecenia
while
while ( w ) { B; }
Polecenie
do
–while
do { B } while ( w );
W miejscu gdzie pojawiają się trzy kropeczki wstawiamy polecenie/polecenia, które będą wykonywane w pętli tak długo, jak długo warunek jest prawdziwy.
Polecenie while
(oraz do
– while
) istotnie różnią się od polecenia if
. Na pierwszy rzut oka różnica nie jest specjalnie wielka:
if (m > n)
{
m = m - n;
}
while (m > n)
{
m = m - n;
}
ale istota pierwszego przykładu (if
) jest taka: sprawdź czy
W drugim przypadku (while
) tak długo jak
W pierwszym przypadku będzie jedno sprawdzenie i (gdy wynik będzie pozytywny) jedno wykonanie odejmowania.
W przypadku drugim będzie cykl: sprawdzenie warunku — ewentualne wykonanie odejmowania; zawsze po wykonanym odejmowaniu sprawdzany będzie ponownie warunek. Gdy warunek nie będzie spełniony — przechodzimy do wykonywania kolejnego polecenia.
Algorytm Euklidesa
Wszystkie zmienne są typu int
!
Zadania do wykonania
Zapoznać się z różnymi wariantami algorytmu Euklidesa:
Napisać program realizujący algorytm Euklidesa w wersji „z resztą”. Algorytm powinien być zaprogramowany na co najmniej dwa sposoby: z wykorzystanie instrukcji
while
ido
–while
. Ewentualnym, trzecim sposobem może być użycie pętlifor
.
Wersja „z odejmowaniem"
Dane są dwie dodatnie liczby całkowite
Jeżeli
jest równe — koniec, największym wspólnym dzielnikiem jest .Jeżeli
przyjmij ; w przeciwnym razie przyjmijPrzejdź do kroku 1.
lub raczej, wersję zmodyfikowaną:
Tak długo jak
powtarzaj:- Jeżeli
przyjmij ; w przeciwnym razie przyjmij
- Jeżeli
Największym wspólnym dzielnikiem jest
.
Wersja „z resztą”
Dane są dwie dodatnie liczby całkowite
[E1] : [Znajdowanie reszty] Podziel
przez i niech oznacza resztę z tego dzielenia.[E2] : [Czy wyszło zero?] Jeśli
, zakończ algorytm; odpowiedzią jest .[E3] : [Upraszczanie] Wykonaj
, i wróć do kroku E1.
Na czym polega problem?
Porównajmy uproszczone schematy blokowe
Algorytmu E
polecenia
while
petli
do
while
zaczyna się od warunku, jak jest spełniony — wykonujemy jakieś polecenia i powtarzamy
do
— najpierw wykonujemy jakieś polecenie, później sprawdzamy warunek i jeżeli jest spełniony — powtarzamy.
Algorytm E ma instrukcje przed warunkiem (jak do
) i po warunku (jak while
). Natomiast jego istotą jest aby operacje były wykonywane w kolejności:
instrukcje 1
W każdym przypadku korzystając ze standardowych poleceń pętlowych trzeba te „nadmiarowe" instrukcje uwzględnić.
Na koniec słów parę o pętli for
for(A ; B ; C)
{
D
}
Realizowane będzie jako
Jak można jej użyć do realizacji Algorytmu Euklidesa?