|
Pętle - Kurs języka JavaScript
Stworzenie skryptu który ma po kolei wykonać kilka operacji jest proste, jak to przedstawiłem w poprzednich lekcjach kursu. Jednak nierzadko zdarza się iż pewną operację lub sekwencję operacji warto byłoby wykonać wielokrotnie, chociażby z tego względu aby zaoszczędzić sobie pisania. Owszem można skopiować dany fragment skryptu tyle razy ile potrzeba, ale do jest kiepskie rozwiązanie. Po pierwsze tak przygotowany skrypt jest trudny w utrzymaniu - wyobraź sobie tylko że skopiowałeś(aś) go 20 razy, i musisz w tych 20 miejscach nanieść jakąś poprawkę. Po drugie takie podejście nie zawsze jest możliwe - czasami trzeba powtarzać daną operację, za każdym razem sprawdzając czy określony warunek jest spełniony (np. wczytywać od użytkownika kolejne liczby aż do momentu aż wpisze on liczbę zero). Do rozwiązania tego typu problemów stosuje się pętle. Użycie pętli spowoduje że określony fragment skryptu będzie wykonany określoną z góry ilość razy, lub też do momentu aż podany warunek zostanie spełniony. Pętla forPierwszą pętlą którą omówię jest pętla for ( inicjalizacja; test_logiczny; inkrementacja ) instrukcja; lub for ( inicjalizacja; test_logiczny; inkrementacja ) { instrukcja1; instrukcja2; ... } Jak pokazują powyższe przykłady, instrukcja
Zatem pętla która ma wypisać kolejne cyfry od 0 do 9 może wyglądać następująco: for (n = 0; n < 10; ++n) document.write(n); Zwróć uwagę na sposób w jaki testuję warunek zakończenia pętli - stosuję ostrą nierówność. Oczywiście można też użyć nieostrej nierówności i uzyskać ten sam rezultat: for (n = 0; n <= 9; ++n) document.write(n); W pewnych przypadkach gdy potrzebujesz coś wykonać 10 razy ale nie interesuje Cię wartość licznika pętli możesz też liczyć od 1 do 10: for (n = 1; n <= 10; ++n) zrob_cos_ciekawego(); Osobiście polecam tą pierwszą wersję (z ostrą nierównością) z prostego powodu - tablice w JavaScript są indeksowane od zera, i łatwo można odczytać ilość elementów w tablicy. Poza tym konsekwentne stosowanie jednej wersji zmniejsza prawdopodobieństwo że napiszemy pętlę która wykonuje się o jeden raz za mało lub za dużo, czyli uprości to uruchamianie własnych skryptów. Każdy z trzech elementów znajdujących się wewnątrz okrągłych nawiasów pętli for (n = wartosc_startowa(); czy_kontynuowac(n); n = nastepna_wartosc(n)) zrob_cos_smiesnego(n); Można także napisać pętlę która posiada kilka liczników (lub inaczej mówiąc wykonuje kilka instrukcji). Można to zrobić w częściach for (n = 0, k = 1; n < 10; ++n, k += 3) document.write(n * k); Pętle można też oczywiście zagnieżdżać - poniższy przykład po uruchomieniu wypisze wszystkie iloczyny liczb od 0 do 9: for (n = 0; n < 10; ++n) for (k = 0; k < 10; ++k) document.write(n * k); Powyżej napisałem że instrukcja for (;;) document.write("pętla nieskończona<br>"); W praktyce taką pętlę stosuje się rzadko. Jeżeli już, to razem z instrukcjami które pozwalają na jej przerwanie. Jedną z takich instrukcji jest for (n = 0; ; ++n) { if (n == 10) break; document.write(n); } Pozostałe instrukcje które powodują przerwanie pętli to Kolejną instrukcją którą warto poznać jest for (n = 0; n < 10; ++n) { if (n % 2 != 0) continue; document.write(n); } Oczywiście w praktyce lepiej jest inkrementować licznik o 2 - powyższy przykład umieściłem tylko dla zademonstrowania zastosowania komendy Pętla whilePętla while ( test_logiczny ) instrukcja; lub while ( test_logiczny ) { instrukcja1; instrukcja2; ... } Jest ona funkcjonalnym odpowiednikiem następującej wersji pętli for ( ; test_logiczny; ) instrukcja; Zachowuje się też identycznie jak podana wersja pętli Taką pętlę stosuje się zwykle gdy nie występuje jawnie inicjalizacja pętli i/lub jej inkrementacja, lub też są one bardziej złożone i przez to zapisanie ich w ramach instrukcji Znany nam już przykład z wypisywaniem cyfr od 0 do 9 wygląda tak z zastosowaniem pętli n = 0; while (n < 10) { document.write(n); ++n; } Wewnątrz pętli Pętla do/whilePętla do instrukcja; while ( test_logiczny ) lub do { instrukcja1; instrukcja2; ... } while ( test_logiczny ); W działaniu te dwie pętle różnią się momentem kiedy sprawdzana jest prawdziwość warunku W poniższych przykładach liczba 10 zostanie wypisana tylko w drugim przypadku: n = 10; while (n < 10) { document.write(n); ++n; } n = 10; do { document.write(n); ++n; } while (n < 10); Wewnątrz pętli Pętla for/inPętla ta służy do łatwego wyliczania kolejnych elementów tablic i właściwości obiektów. Posiada ona następującą składnię: for (zmienna in tablica_lub_obiekt) instrukcja; lub for (zmienna in tablica_lub_obiekt) { instrukcja1; instrukcja2; ... }
Znany już przykład z wypisywaniem cyfr będzie tak wyglądał z zastosowaniem tej pętli: tablica = Array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ); for (n in tablica) { document.write(n); } Oczywiście w tej pętli można też stosować instrukcje
Dodaj linka na swojej stronie! Po prostu skopiuj poniższy kod i wklej go na swojej stronie WWW. Gotowy link będzie wyglądał w taki sposób: |
| ||||||||||||||||||||||||||||||||||||