Instrukcja przetwarzania warunkowego pozwala na zastąpienie bloku if..else w niektórych przypadkach. Przypisuje się je często do zmiennych. Konstrukcja tej instrukcji wygląda następującą:
(wyrażenie warunkowe)? wartość1 : wartość2
I wypadało by to wytłumaczyć, tak więc czyta się to tak: jeżeli wyrażenie warunkowe jest prawdziwe to całość przyjmuje wartość1, a jeśli jest fałszywe przyjmuje wartość2. Mam nadzieję, że jest to zrozumiałe, a teraz czas na jakiś przykład który sprawdza czy liczba jest dodatnia czy ujemna:
<script type="text/javascript">
<!-- ukrycie kodu przed przeglądarkami nie obsługujących JavaScript
var x = prompt("Podaj liczbę: ");
var wynik = (x < 0)? "ujemna":"dodatnia";
document.write("Ta liczba jest: "+wynik);
// koniec kodu JavaScrip t-->
</script>
A teraz przedstawię to za pomocą użycia instrukcji if..else:
<script type="text/javascript">
<!-- ukrycie kodu przed przeglądarkami nie obsługujących JavaScript
var x = prompt("Podaj liczbę: ");
var wynik;
if(x < 0)
{
wynik = "ujemna";
} else wynik = "dodatnia";
document.write("Ta liczba jest: "+wynik);
// koniec kodu JavaScript -->
</script>
Mam nadzieję, że wszyscy to rozumieją, bo nie jest to trudne. Przetwarzanie warunkowe można również zastosować tak:
<script type="text/javascript">
<!-- ukrycie kodu przed przeglądarkami nie obsługujących JavaScript
document.write("Ta liczba jest: " + (((prompt("Podaj liczbę: ")<0)? "ujemna":"dodatnia"));
// koniec kodu JavaScript -->
</script>
Jest to może bardziej zawiły kod, ale jeśli zastosujemy taki zapis, nie będziemy musieli używać zmiennych pomocniczych.
Pętle
Pętle to wyrażenia programowe służące do wykonywania powtarzających się czynności np. jeśli chcemy wypisać coś na stronie 100 razy, to wpisywanie 100 razy instrukcji document.write("coś") to było by to bardzo uciążliwe. Dzięki pętlą możemy powtórzyć taką czynność 100 razy pisząc tylko raz instrukcję document.write.
Pętla for
Składnia pętli for:
for (wyrażenie początkowe; wyrażenie warunkowe; wyrażenie modyfikujące)
{
blok instrukcji
}
Wyrażenie początkowe stosowane jest do zainicjowania zmiennej używanej jako licznik przebiegu pętli. Wyrażenie warunkowe określa warunek, jaki musi być spełniony, aby wykonać kolejne przejście pętli. Wyrażenie modyfikujące używane jest w celu modyfikacji zmiennej będącej licznikiem pętli. Czas na jakiś przykład:
<script type="text/javascript">
<!-- ukrycie kodu przed przeglądarkami nie obsługujących JavaScript
for(var i = 1; i < 100; i++)
{
document.write("Pętla wykonała: " + i + " przejść");
}
// koniec kodu JavaScript -->
</script>
Wszystko to należy rozumieć tak: dopóki i jest mniejsze od 100 to zwiększamy wartość i o 1(inkrementacja) i wykonuj instrukcję document.write.
Oczywiście zapis pętli można zmienić do takich form:
var i = 1;
for(;warunek; wyrażenie modyfikujące)
{
blok instrukcji
}
for(var i = 1; warunek;)
{
blok instrukcji;
wyrażenie modyfikujące;
}
var i = 1;
for(;warunek;)
{
blok instrukcji;
wyrażenie modyfikujące;
}
Można to robić na różne sposoby, ale najłatwiej i najczytelniej jest umieszczać wszystkie wyrażenie i modyfikacje w nawiasie po słowie kluczowym for. Należy pamiętać, że pomiędzy wyrażeniami wewnątrz nawiasu trzeba umieszczać średnik. Istnieje jeszcze inne rodzaje użycia pętli for np. pętla nieskończona:
for(;;)
{
blok instrukcji;
}
Nie mamy tutaj wyrażenia początkowego, warunkowego ani modyfikującego, więc pętla będzie się wykonywać dopóki nie braknie nam pamięci. Jest również taka możliwość:
for(;;)
{
document.write("Cześć!");
if(i++ > 100) break;
}
Muszę podkreśli tutaj kilka zmian: użyliśmy w instrukcji if warunku odwrotnego do w poprzednich przykładach, dlaczego? Już wyjaśniam, dopóki i jest mniejsze od 100 chcemy aby wykonywała się instrukcja document.write, a jeśli i będzie większe od 100 to warunek będzie spełniony i instrukcje w if wykonają się, u nas jest to kolejna zmiana czyli słowo kluczowe break. Po jej napotkaniu następuje przerwanie wykonywanie pętli, niezależnie od stanu zmiennej sterującej(w naszym przypadku jest to i). Istnieje jeszcze jedna instrukcja modyfikująca zachowanie pętli, jest to continue. Po jej napotkaniu następuje przerwanie bieżącej iteracji i rozpoczęcie kolejnej, czyli przeskoczenia do początku pętli. Tak więc pokarzę to na przykładzie:
<script type="text/javascript">
<!-- ukrycie kodu przed przeglądarkami nieobsługującymi JavaScript
for (var i = 1; i <= 100; i++)
{
if ((i % 2) != 0) // jeśli reszta z dzielenia nie równa się 0
continue; // jeśli warunek będzie spełniony to instrukcja document.write() nie zostanie wykonana...
document.write (i + " "); // ...ponieważ instrukcja continue powoduje przejście do początku pętli
}
// koniec kodu JavaScript -->
</script>
Można oczywiście zapisać to bez słowa kluczowego continue:
<script type="text/javascript">
<!-- ukrycie kodu przed przeglądarkami nieobsługującymi JavaScript
for (var i = 1; i <= 100; i++)
{
if ((i % 2) == 0) // jeśli reszta z dzielenia równa jest 0 to wykona się poniższa instrukcja
document.write (i + " ");
}
// koniec kodu JavaScript -->
</script>
Pętla while
Pętla while ma następującą składnię:
while(wyrażenie warunkowe)
{
blok instrukcji;
}
Wyrażenie warunkowe musi być spełnione, żeby blok instrukcji się wykonał.
Przykład:
<script type="text/javascript">
<!-- ukrycie kodu przed przeglądarkami nieobsługującymi JavaScript
var i = 0;
while(i++ < 100)
{
document.write("Moja strona");
}
// koniec kodu JavaScript -->
</script>
Myślę, że wszystko jest jasne, oczywiście możemy tutaj używać instrukcji break i continue.
Pętla do..while
Pętla do..while ma następującą składnię:
do
{
blok instrukcji;
}
while(wyrażenie warunkowe);
Ta pętla jest bardzo podobna do pętli while, istniejąca różnica to moment sprawdzania wyrażenia warunkowego. While robi to na początku a do..while na końcu, więc jeśli warunek jest fałszywy przy pierwszym przejściu pętla while nie wykona się ani razu, a pętla do..while wykona się raz.
Przykład porównania pętli while i do..while:
var i = 15;
while(i < 10)
{
document.write(i);
i++;
}
var i = 15;
do
{
document.write(i);
i++;
}
while(i < 10);
Podczas przechodzenia pętli while warunek sprawdzany jest na początku i pętla się nie wykona, a pętla do..while sprawdza warunek po wykonaniu się ciała pętli, czyli jeśli warunek jest fałszywy to i tak pętla do..while wykona się raz!
Istnieje jeszcze jedna pętla, ale opiszę ją dopiero podczas omawiania tablic bo jest z nimi związana.
Za niedługo ukaże się kolejna część kursu JavaScript dla początkujących.
Zapraszam do komentowania.
P.S Jeśli tekst zawiera jakieś błędy lub o czymś zapomniałem to proszę o kontrakt.
Zapraszam do komentowania.
P.S Jeśli tekst zawiera jakieś błędy lub o czymś zapomniałem to proszę o kontrakt.