JavaScript for-tsükkel kahanevas järjekorras
For-tsüklit võib vajadusel teostada ka tagurpidi järjekorras. Näitena siis juhus, kus soovime sisestatud nime kuvada tagurpidi:
tagurpidi=""; tahed=nimi.split(""); for (i=(nimi.length-1);i>-1;i--) { tagurpidi=tagurpidi+tahed[i]; } alert(tagurpidi);
Eelneva selgitus siis järgmine:
- lisame muutuja tagurpidi, millele omistame tühja teksti (“”)
- tekitame massiivi tahed, jagades muutuja nimi osadeks
- for-tsüklis:
- loenduri i algväärtuseks on sisestatud nimi pikkus-1 (kuna JavaScript alustab massiivi järjekorranumbrit 0st) => i=(nimi.length-1);
- tsüklit teostatakse seni, kuni jõutakse väärtuseni 0 ehk siis teisisõnu seni, kuni i väärtus on suurem kui -1 => i>-1;
- loenduri i väärtus vähendatakse iga kord 1 võrra => i–;
JavaScript while-tsükkel
Korduvate tegevuste jaoks on võimalik kasutada ka while-tsüklit.
Näitena siis eelnevalt vaadeldud for-tsüklit:
for (i=0;i<nimi.length;i++) { tekst=tekst+"\r\n"+tahed[i]; }
on võimalik ümber kirjutada järgmiselt:
i=0; while (i<nimi.length) { tekst=tekst+"\r\n"+tahed[i]; i++; }
Eelneva selgitus siis seesugune:
- loendurile i omistatakse algväärtus 0 => i=0;
- while-tsükkel:
- algab sõnaga => while
- seejärel sisaldab tingimust, mille puhul tsüklit teostatakse (NB! tingimus on sulgude sees!) => (i<nimi.length)
- tsükli sees suurendatakse loendurit ühe võrra => i++;
Vaatleme nüüd olukorda, kus meil on näiteks vaja leida, kas sisestatud nimi sisaldab a tähte. Selleks saame kasutada while-tsüklit, mille kordamiseks peavad olema mõlemad kaks tingimust täidetud (tingimused on omavahel ühendatud && märkidega):
- kõik tähed läbi uuritud
- a täht leitud
i=0; olemas=false; while ((i<nimi.length) && (!olemas)) { if (tahed[i]=="a") { olemas=true; } i++; } if (olemas) { alert("a täht leiti!"); } else { alert("a tähte ei leitud!"); }
Et kontrollida, kas a tähti leidub sisestatud tekstis, toimime järgmiselt:
- lisame muutuja olemas, mis on tõeväärtusega muutuja (millel võivad olla väärtused true ja false) ja omistame sellele muutujale esialgu väärtuse false => olemas=false;
- lisame while-tsüklile täiendava tingimuse (AND ehk && märkide abil), teostades tsüklit seni, kuni a tähte pole leitud (st muutuja olemas väärtus on false, NB! false väärtust tähistatakse hüüumärgiga muutuja ees !olemas) => (!olemas)
- kontrollime, kas massiivis tahed kohal i väärtuseks a täht => if (tahed[i]==”a”)
- kui see nii on, siis omistame muutujale olemas väärtuse true => olemas=true;
- kui massiivist tahed leiti a täht (st muutuja olemas väärtuseks on true NB! true väärtuse kontrolliks kasutatakse ainult muutuja nime olemas) => if (olemas)
- siis kuvatakse ekraaniteade “a täht leiti!” => alert(“a täht leiti!”);
- vastasel juhul => else
- kuvatakse ekraaniteade “a tähte ei leitud!” => alert(“a tähte ei leitud!”);
Järgnev näide kasutab OR ehk || tingimust, leidmaks, kas sisestatud tähtede hulgas leidub a ja b tähti:
i=0; olemas=false; while ((i<nimi.length) && (!olemas)) { if ((tahed[i]=="a") || (tahed[i]=="b")) { olemas=true; } i++; } if (olemas) { alert("a või b täht leiti!"); } else { alert("a ega b tähte ei leitud!"); }
Võrreldes eelnevaga on tehtud järgnevad muudatused:
- while-tsükli if-lausele lisati juurde teine tingimus – ehk siis kontrollitakse, kas massiivis tahed kohal i on väärtuseks kas a või b => || (tahed[i]==”b”)
- muudeti ekraaniteadete sisu vastavalt muutunud tingimustele