Puna me flamuj në JavaScript
Tani do të mësojmë të punojmë me flamuj.
Një flamur është një variabël e veçantë, e cila
mund të marrë vetëm dy vlera: true
dhe false. Me ndihmën e flamujve mund të zgjidhen
probleme që kontrollojnë mungesën e diçkaje:
për shembull, mund të kontrollohet nëse në një grup
nuk ka asnjë element me një vlerë të caktuar. Le të fillojmë.
Le të zgjidhim problemin e mëposhtëm: jepet një grup
me numra, duhet të kontrollohet nëse në të
ka një element me vlerën 3 apo jo. Nëse
ka - do të shfaqim '+++', nëse nuk ka -
do të shfaqim '---'.
Për fillim le të përpiqemi të shfaqim '+++'.
Për këtë do të përsërisim nëpër të gjithë elementët e grupit tonë
dhe me një 'if' do të pyesim - a është i barabartë elementi aktual
me vlerën 3. Nëse është i barabartë - do të shfaqim
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Por zgjidhja jonë nuk është shumë e mirë: në fund të fundit, nëse
në grup do të ketë jo një vlerë 3,
por disa, atëherë '+++' do të shfaqet disa
herë. Le të rregullojmë grupin tonë (le të bëjmë
dy elementë me vlerën 3) dhe të bindemi për këtë:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // do të shfaqet disa herë
}
}
Le të rregullojmë problemin: le ta përfundojmë ciklin me ndihmën e
break, nëse elementi tashmë është gjetur:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // përfundojmë ciklin
}
}
Tani le të përpiqemi ta bëjmë në mënyrë që,
nëse në grup nuk ka fare elementë me vlerën
3, të shfaqet '---'. Një keqkuptim i zakonshëm
do të ishte të shtohej else te
'if'-i ynë - në këtë rast '---' do të
shfaqej për të gjithë elementët që nuk janë
3:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // do të shfaqet te elementi 3
} else {
console.log('---'); // do të shfaqet te elementët 1, 2, 4, 5
}
}
Pra, ideja për të shtuar else - është një ide e keqe,
jopune. Për zgjidhjen e problemeve të këtij
tipi (probleme të tilla hasen mjaft
shpesh) përdoren të ashtuquajturat flamuj.
Siç u përmend më lart, një flamur është një
variabël e tillë, e cila mund të marrë dy vlera:
true ose false.
Pra, le të bëjmë variablin flag
me këtë vlerë: nëse është e barabartë me true,
atëherë në grup ka një element 3, por nëse
false, atëherë nuk ka një element të tillë.
Fillimisht le ta vendosim variablin flag
në vlerën false - domethënë do të konsiderojmë,
se elementi 3 nuk gjendet në grup:
let arr = [1, 2, 3, 4, 5];
let flag = false; // konsiderojmë se elementi 3 nuk gjendet në grup
Pastaj do të nisim një cikël me 'if' ashtu siç e bënim
më parë. Nëse cikli zbulon se në grup
ka një element 3 - atëherë do ta vendosim variablin flag
në vlerën true dhe do të dalim nga cikli
me ndihmën e break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // konsiderojmë se elementi 3 nuk gjendet në grup
for (let elem of arr) {
if (elem == 3) {
flag = true; // elementi gjendet - ridefinjojmë variablin flag
break; // dalim nga cikli
}
}
Përgjigjen në pyetjen, nëse në grup ka 3
apo jo, ne mund ta japim vetëm pas ciklit.
Dhe kjo përgjigje tashmë e kemi: pas ciklit
variabli flag mund të ketë mbetur false
ose mund të ketë ndryshuar vlerën e saj në true,
nëse cikli zbuloi në grup 3:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// këtu variabli flag është ose true, ose false
Tani pas ciklit ne mund të bëjmë një 'if', i cili
do të shohë te variabli flag dhe do të shfaqë
në ekran '+++' ose '---':
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('---');
}
Jepet një grup:
let arr = ['a', 'b', 'c', 'd', 'e'];
Kontrolloni nëse në këtë grup ka elementin
'c'. Nëse ka - shfaqni '+++',
por nëse nuk ka - shfaqni '---'.
Shkruani kodin, i cili do të kontrollojë nëse një numër është i thjeshtë apo jo. Një numër i thjeshtë pjestohet vetëm me një dhe me vetveten, dhe nuk pjestohet me numra të tjerë.