Delo z zastavicami v JavaScript
Trenutno se bomo naučili delati z zastavicami.
Zastavica je posebna spremenljivka, ki
lahko sprejme le dve vrednosti: true
in false. Z zastavicami je mogoče reševati
naloge, ki preverjajo odsotnost nečesa:
na primer, lahko preverite, ali v matriki
ni elementa z določeno vrednostjo. Poglejmo
si to.
Rešimo naslednjo nalogo: podana je matrika
s števili, preveriti je treba, ali vsebuje
element z vrednostjo 3 ali ne. Če
obstaja - izpišite '+++', če ne -
izpišite '---'.
Za začetek poskusimo izpisati '+++'.
Za to bomo pregledali vse elemente naše matrike
in z if vprašali - ali je trenutni
element enak vrednosti 3. Če je enak - izpišemo
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Toda naša rešitev ni zelo dobra: kajti če
bo v matriki ne ena vrednost 3,
ampak več, se bo '+++' izpisal večkrat.
Popravimo našo matriko (naredimo
dva elementa z vrednostjo 3) in se prepričajmo v to:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // izpisal bo večkrat
}
}
Popravimo težavo: prekinimo zanko s pomočjo
break, če je element že najden:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // prekinemo zanko
}
}
Poskusimo zdaj narediti tako, da
če v matriki sploh ni elementov z vrednostjo
3, izpiše '---'. Pogosta
napačna predstava je dodati else k
našemu ifu - v tem primeru se bo '---'
izpisal za vse elemente, ki niso
3:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // izpiše se na elementu 3
} else {
console.log('---'); // izpiše se na elementih 1, 2, 4, 5
}
}
Torej, ideja o dodajanju else - je slaba
ideja, ne deluje. Za reševanje tovrstnih nalog
(takšne naloge se srečujejo dovolj
pogosto) uporabljajo tako imenovane zastavice.
Kot že omenjeno zgoraj, zastavica je takšna
spremenljivka, ki lahko sprejme dve vrednosti:
true ali false.
Torej, naredimo spremenljivko flag
s takšno vrednostjo: če je enaka true,
potem v matriki obstaja element 3, če pa
false, potem takšnega elementa ni.
Sprva postavimo spremenljivko flag
na vrednost false - to pomeni, da bomo menili,
da elementa 3 v matriki ni:
let arr = [1, 2, 3, 4, 5];
let flag = false; // menimo, da elementa 3 ni v matriki
Nato zaženimo zanko z ifom tako, kot smo to delali
prej. Če zanka odkrije, da v matriki
obstaja element 3 - potem postavimo spremenljivko flag
na vrednost true in izstopimo iz zanke
s pomočjo break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // menimo, da elementa 3 ni v matriki
for (let elem of arr) {
if (elem == 3) {
flag = true; // element obstaja - predefiniramo spremenljivko flag
break; // izstopimo iz zanke
}
}
Odgovor na vprašanje, ali je v matriki 3
ali ne, lahko podamo šele po zanki.
In ta odgovor že imamo: po zanki
je spremenljivka flag lahko ostala false
ali pa je spremenila svojo vrednost na true,
če je zanka odkrila v matriki 3:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// tukaj je spremenljivka flag enaka true ali false
Zdaj lahko po zanki naredimo if, ki
bo pogledal spremenljivko flag in izpisal
na zaslon '+++' ali '---':
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
if (flag === true) {
console.log('+++');
} else {
console.log('---');
}
Podana je matrika:
let arr = ['a', 'b', 'c', 'd', 'e'];
Preverite, ali v tej matriki obstaja element
'c'. Če obstaja - izpišite '+++',
če ne - izpišite '---'.
Napišite kodo, ki bo preverjala število, ali je praštevilo ali ne. Praštevilo je deljivo le z enico in s samim seboj, in ni deljivo z drugimi števili.