Kurs Javascript - warunki logiczne

Transkrypt

Kurs Javascript - warunki logiczne
STRONA POCZĄTKOWA
Wybierz temat
Warunki
"Jeżeli kupisz mi zabawkę, to nie będę płakał."
Powyższa wypowiedź to typowy warunek, który steruje działaniami rodziców ^^.
Tak samo Javascript udostępnia nam instrukcje warunkowe, które sterują przebiegiem naszego programu.
Instrukcja warunkowa wykonuje wybrany kod, w zależności czy wartość wyrażenia jest prawdą (true) czy fałszem (false).
if
Instrukcja if sprawdza dany warunek, i w zależności od tego czy zwróci true lub false wykona lub nie wykona sekcję kodu zawartą w
klamrach:
Ogólna postać tego wyrażenia wygląda następująco:
1
2
3
4
if (warunek) {
...instrukcje jeżeli warunek jest poprany
}
?
Przykładowo:
1
2
3
4
5
6
var liczba = 1;
?
if (liczba == 1) {
alert('Liczba równa się 1');
}
W każdym z takich warunków stosujemy operatory dzięki którym możemy tworzyć bardziej "zawiłe" warunki:
1
2
3
4
5
6
7
8
var zmienna = 2;
?
if (!zmienna == 2) .... //jeżeli NIE zmienna równa się dwa
if (zmienna != 2) ..... //jeżeli zmienna jest różna od 2
if (zmienna >= 2) ..... //jeżeli zmienna jest większa równa 2
itp.
Możemy także zagnieżdżać wyrażenia w wyrażeniach np:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var liczba = 1;
var druga_liczba = 2;
?
if (liczba > 0) {
if (druga_liczba > 0) {
...//jeżeli liczba > 0 i druga_liczba > 0
}
}
//to samo co powyżej
if (liczba > 0 && druga_liczba > 0) {
...//kod wykonywany jeżeli liczba > 0 i druga_liczba > 0
}
else
converted by Web2PDFConvert.com
Możemy sprawdzić przeciwieństwo warunku if poprzez zastosowanie klauzuli else:
1
2
3
4
5
6
7
var liczba = 5;
if (liczba == 1) {
alert('Liczba równa się 1')
} else {
alert('Liczba nie równa się 1')
}
?
else if
Istnieje też możliwość dokonania kilku sprawdzeń pod rząd z wykorzystaniem klauzuli else if.
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
9
10
if (liczba > 5) {
alert('Liczba
} else if (liczba
alert('Liczba
} else {
alert('Liczba
}
?
jest większa od 5')
< 5) {
jest mniejsza od 5')
równa się 5');
if (liczba > 5) {
alert('Liczba jest większa od 5')
} else if (liczba < 5) {
if (liczba > 3) {
alert('Liczba jest większa od 3 ale mniejsza od 5');
} else if (liczba <= 3) {
alert('Liczba jest mniejsza lub równa 3');
}
}
?
Wynikiem sprawdzenia każdego warunku jest wartość true oraz false. Warunkiem wcale nie musi być równanie matematyczne,
ponieważ wynik jest rzutowany na wartość boolean (czyli przyjmuje true/false). Każda wartość zmiennej, różna od 0, pustego ciągu
znaków i od wartości false da nam w wyniku true.
Przykładowo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var zmienna = 1; //1 = true
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Tak
?
var zmienna = 'przykład'; //przykład = true
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Tak
var zmienna = false; //false = false
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Nie
var zmienna = 0; //0 = false
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
converted by Web2PDFConvert.com
32
33
34
35
36
37
38
39
40
41
42
43
44
alert('Nie')
}
//wypisze się Nie
var zmienna = -1; //-1 = true
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Tak
switch
Instrukcja switch jest kolejnym sposobem testowania warunków działającym na zasadzie przyrównania wyniku do podanych
przypadków.
Konstrukcja tego wyrażenia ma postać:
1
2
3
4
5
6
7
8
9
10
11
?
switch (wyrażenie) {
case przypadek1:
//fragment wykonywany gdy rezultat wyrażenia jest równy rezultat1 - potrzebuje break;
break;
case przypadek2:
//fragment wykonywany gdy rezultat wyrażenia jest równy rezultat2 - potrzebuje break;
break;
default:
//fragment wykonywany gdy powyższe rezultaty nie są równe rezultatowi wyrażenia - nie potrzebuje break;
}
Jak widać powyżej każdy przypadek kończy się instrukcją break, która kończy wykonywanie instrukcji switch. Jeżeli pominiemy tą
instrukcję, wtedy zostaną wykonane kolejne sprawdzenia, co często może powodować błędy. Dodatkowo instrukcja switch ma specjalny
przypadek default który będzie wybierany, gdy wszystkie inne przypadki będą błędne.
Przykładowo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var numer = 4;
?
//poniższy warunek zwróci "Numer równa się cztery"
switch (numer) {
case 1: alert('Numer równa się jeden'); break;
case 2: alert('Numer równa się dwa'); break;
case 3: alert('Numer równa się trzy'); break;
case 4: alert('Numer równa się cztery'); break;
default: alert('Nie wiem ile równa się numer');
}
var narzedzie = "obcęgi";
//poniższy warunek zwróci "Nie wiem co to za narzędzie"
switch (narzędzie) {
case 'wiertarka': alert('Wybrałeś wiertarkę'); break;
case 'śrubokręt': alert('Wybrałeś śrubokręt'); break;
case 'piła': alert('Wybrałeś piłę'); break;
case 'młotek': alert('Wybrałeś młotek'); break;
default: alert('Nie wiem co to za narzędzie');
}
var zwierzak = "kot";
//poniższy warunek przeprowadzi sprawdzenie 3 przypadków, ponieważ 2 pierwsze nie mają instrukcji break;
switch (zwierzak) {
case 'pies' :
case 'kot' :
case 'chomik' :
alert('Domowe zwierzątka');
break;
case 'wielbłąd' :
alert('Pustynne zwierzątko');
break;
converted by Web2PDFConvert.com
36
37
38
39
40
41
break;
default:
alert('Inne zwierzątko');
break;
}
operator ?
Operator ? daje nam takie same możliwości co instrukcja if, z tym, że jest jej skróconą wersją.
Ogólna postać zastosowania tego operatora wygląda tak:
1
2
(wyrażenie) ? zwróć_jeżeli_wyrażenie_true : zwróć_jeżeli_wyrażenie_false
?
Przykładowo wyrażenie if możemy zapisać w jego skróconej wersji:
1
2
3
4
5
6
7
8
9
10
11
12
13
var i = 1;
var jaka = '';
?
if (i > 0) {
jaka = 'dodatnia';
} else {
jaka = 'ujemna';
}
//to samo tylko w skróconej wersji
jaka = (i > 0) ? 'dodatnia' : 'ujemna';
Przykłady zastosowania:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var x = 3;
(x%2==0)?'parzysta':'nieparzysta' //zwróci nieparzysta
?
var wiek = 21
var status = (wiek<18) ? "jesteś za młody" : "zapraszamy na seans" //wypisze się "zapraszamy na seans"
var imie = 'Ola';
alert( (imie=='Ola') ? 'Masz na imię Ola' : 'Nie masz na imię Ola' ) //pokaże Masz na imię Ola
//zagnieżdzone wyrażenia
//sprawdzam liczbę znaków "z" i dostawiam odpowiednie słowo
//np:
//8 znaków
//23 znaki
//14 znaków
//76 znaki
var znaki = 32;
var slowo = (znaki==1) ? "znak" : ( ((znaki%10>1 && znaki%10<5) && znaki>20) ? "znaki" : "znaków");
alert(znaki + ' ' + slowo); //wypisze się 32 znaki
converted by Web2PDFConvert.com