Kodulehe loomine, 23. kord

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:

  1. lisame muutuja tagurpidi, millele omistame tühja teksti (“”)
  2. tekitame massiivi tahed, jagades muutuja nimi osadeks
  3. 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:

  1. loendurile i omistatakse algväärtus 0 => i=0;
  2. 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):

  1. kõik tähed läbi uuritud
  2. 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:

  1. 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;
  2. 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)
  3. kontrollime, kas massiivis tahed kohal i väärtuseks a täht =>  if (tahed[i]==”a”)
  4. kui see nii on, siis omistame muutujale olemas väärtuse true => olemas=true;
  5. 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)
  6. siis kuvatakse ekraaniteade “a täht leiti!” => alert(“a täht leiti!”);
  7. vastasel juhul => else
  8. 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:

  1. 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”)
  2. muudeti ekraaniteadete sisu vastavalt muutunud tingimustele