Pętla while

W JavaScript jak w większości powszechnie używanych języków programowania występuje pętlawhile

Na początku zostaje sprawdzony warunek, jeśli jest on prawdziwy zostają wykonane instrukcje. Po ich wykonaniu zostaje ponownie sprawdzony warunek i cała procedura się powtarza. Pętla zostaje przerwana, gdy warunek nie jest prawdziwy. Sprawdzanie prawdziwości warunku odbywa się na zasadach opisanych w poprzedniej części kursu. Można powiedzieć, że pętla wykonuje się dopóki warunek jest prawdziwy, stąd pochodzi jej nazwa.

Napisz program, który wypisze na ekran wszystkie liczby od 1 do 101 podzielne przez 5. Każda liczba powinna być wypisana w nowej linii.

var i = 5;

while(i < 101) {

console.log(i);

i += 5;

};

Pętla do while

Pętlawhilejest bardzo użyteczna, pojawiają się jednak sytuacje, gdy nie jest ona najbardziej optymalnym rozwiązaniem. Załóżmy, że chcemy pobrać od użytkownika jakieś dane. Jak wiadomo takie dane nie zawsze zostają podane poprawnie, np. jeśli pobieramy od użytkownika jego nowe hasło, to nie może ono być pustym ciągiem znaków. Działanie takiego prostego programu można by oprzeć na pętliwhile.

1234 pobierz_dane();while(dane_niepoprawne){pobierz_dane();}

Można uznać, że powyższy przykład napisany jest w pseudokodzie, chodzi nam w tej chwili wyłącznie o zobrazowanie pewnego problemu. Działanie tego przykładu wygląda następująco: pobieramy dane od użytkownika, a następnie sprawdzamy czy są niepoprawne, jeśli tak to ponownie pobieramy dane i znowu je sprawdzamy. Jeśli natomiast dane są poprawne, to przechodzimy do dalszej części programy.

Powyższy przykład jest bardzo prosty, ale już w nim widać, że dwa razy powtarzamy pewną część kodu, co praktycznie zawsze jest złym rozwiązaniem. Poznajmy pętlędo whilektóra pomoże nam ulepszyć nasz kod.

123 do{pobierz_dane();}while(dane_niepoprawne);

Ten przykład wygląda dużo lepiej niż poprzedni. Jak się pewnie domyślasz, pętlado whilenajpierw wykonuje blok kodu, a następnie sprawdza warunek, jeśli jest on prawdziwy, to blok zostaje wykonany ponownie.

do whiledziała bardzo podobnie do zwykłej pętliwhilejedyna różnica polega na tym, że w pętlido whileblok kodu zostaje wykonany przed sprawdzeniem warunku, czy jego kod zostanie zawsze wykonany przynajmniej raz.

Zadanie 2

Napisz program, który pobiera liczby tak długo, jak długo są one dodatnie, oraz wyznacza ich sumę. Gdy użytkownik wpisze liczę ujemną lub zero program wypisuje sumę i kończy działanie.

Rozwiąż zadanie

Dodatkowe możliwości

W poprzednim rozdziale poznaliśmy instrukcjebreak. Jak pewnie pamiętasz jej działanie polegało na przerywaniu wykonywania obecnego bloku kodu i przekazanie sterowania poza}. Poznaliśmy jej działanie z instrukcjąswitch, ale można jej też używać z pętląwhilejej działanie wygląda w tym przypadku bardzo podobnie. Jeśli wewnątrz bloku pętliwhilezostanie wykonana instrukcjabreakcała pętla zostaje przerwana, a sterowanie zostaje przekazane poza blok pętli.

Być może zastanawiasz się dlaczego wstawićbreakdo bloku pętliwhile, który po prostu przerwie działanie pętli. Spójrzmy na poniższy przykład.

1234567 while(warunek1){instrukcje1;if(warunek2){break;};instrukcje2;};

Stosując instrukcjębreakwidać, że możemy przerwać pętlę w dwóch miejscach, po sprawdzeniuwarunek1lub po sprawdzeniuwarunek2, daje nam to większe możliwości.

Kolejną instrukcją umożliwiającą nam większe sterowanie pętlą jestcontinue. Jeśli podczas wykonywania bloku pętli zostaje napotkana ta instrukcja, wykonywanie bloku zostaje przerwane, jednak wykonywanie programu nie wychodzi poza pętlę, lecz przechodzi po ponownego sprawdzenia warunku i dalszego wykonywania pętli.

1234567 while(warunek1){instrukcje1;if(warunek2){continue;};instrukcje2;};

Prześledźmy działanie powyższego przykładu. Na początek zostaje sprawdzonywarunek1jeśli jest on poprawny zostaną wykonaneinstrukcje1, a następnie sprawdzonywarunek2. Jeśli jest on prawdziwy zostaje wykona instrukcjacontinue, która przenosi sterowanie na ponowne sprawdzeniewarunek1. W przypadku gdywarunek2był nieprawdziwy zostaną wykonaneinstrukcje2a następnie ponowne sprawdzeniewarunek1.

Jak widać użycie instrukcjibreakicontinuedaje większe możliwości w sterowaniu działania pętli. Warto jednak wiedzieć, że w większości przypadków, można uniknąć używania tych instrukcji. Używanie ich w miejscach gdzie można tego nie robić spowoduje wyłączne pogorszenie czytelności naszego kodu.

Zadanie 3

W tym zadaniu jest dostępny kod programu, który wypisuje liczby podzielne przez 5 pomiędzy 0 a 100 z pominięciem tych podzielnych przez 3. Celem zadania jest takie przerobienie programu, aby ten nie używał instrukcjicontinue.
Operator%oznacza resztę z dzielenia.

Rozwiąż zadanie

results matching ""

    No results matching ""