Pętla WHILE - przykład działania - szukanie największego wspólnego dzielnika
| DZIAŁANIE: | Największy wspólny dzielnik liczb 32 oraz 24 wynosi : 8 |
Kod:

Ewentualne Objaśnienia:
Zajmiemy się teraz dwoma pętlami mianowicie pętla while oraz do
while. Czym się różnią od siebie będę mówił wraz z biegiem czasu, natomiast
teraz powiem czym się różnią one obie od poznanej już pętli for.
Mianowicie pętla for jak już zapewne zauważyliście działa ( powtarza się )
określoną liczbę razy. Natomiast pętle while oraz do while działają, aż do
pewnego z góry ustalonego skutku. W pętli for zawsze wiemy ile razy ma ona się
powtarzać natomiast w przypadku while czy do while działa ona tyle razy ile
trzeba, aż do pewnego skutku.
Konstrukcja pętli while:
while (warunek)
{
instrukcje w pętli
}
A teraz odnośnie przykładu.
Jest to skrypt obliczający największy wspólny dzielnik korzystając z odmianę
algorytmu Euklidesa. Dobrałem takie liczby, żeby można było to łatwo
przeanalizować. Liczby jak widać 32 oraz 24. Łatwo w głowie policzyć, że
największa liczbą przez którą dzieli się ( bez reszty oczywiście ) 24 oraz 32 to
liczba 8.
Więc teraz jak działa skrypt?
Pętla while jak widać działa do pewnego momentu - do momentu aż zmienne $a oraz
$b będą sobie równe ( warunek $a != $b ) czyli warunek różności zmiennych $a i
$b jest konieczny aby pętla się wykonywała ( powtarzała ).
Patrzmy dalej. w pętli mamy instrukcję warunkową if. Jeśli zmienna $a jest
mniejsza od zmiennej $b ( czyli 32 < 24 NIE PRAWDA ) - więc jak widać
instrukcja ta jest pomijana. Jedziemy dalej - zmienna $a teraz równa się $a - $b
czyli $a = 32-24 = 8. Pętla sprawdza czy zmienne są różne ( tak bo 8 jest różne
od 24 ).
Instrukcja warunkowa sprawdza czy $a < $b ( tak bo 8 jest mniejsze od 24 ). Do
zmiennej pomocniczej wpisana jest wartość 8, do zmiennej $a wartość 24, do
zmiennej $b wartość 8. Po wyjściu z instrukcji warunkowej zmienna $a przyjmuje
wartość $a = $a - $b czyli $a = 24 - 8 = 16.
Znowu pętla while sprawdza czy $a != $b ( tak bo 16 jest różne od 8 ).
Instrukcja warunkowa sprawdza czy $a < $b ( nie bo 16 nie jest mniejsze od 8).
Instrukcja warunkowa nie jest wykonywana. Pod zmienną $a jest podstawiona
wartość 16 - 8 = 8. Pętla while sprawdza warunek czy $a != $b - warunek nie jest
spełniony bo obie zmienne mają teraz wartość 8. Więc pętla przestaje działać (
powtarzać się jak kto woli ).
Następuje przejście do momentu: print (" $a"); . Czyli zmienna $a czyli
liczba 8 jest wypisywana na ekranie do już poprzednio wyświetlonego tekstu.
Jak widać nie jest to jakiś mega skomplikowany przykład, ale warto rozumieć, że pętla while oraz jak zaraz zobaczycie do while działa aż do pewnego momentu, my sami nie wiemy ile razy się ona powtórzy - działa aż do skutku. Natomiast w pętli for z góry ustalamy ile razy pętla będzie się powtarzać!