Sunday, December 7, 2014

Massiivid



Kui programmile on vaja ette anda või lasta töödelda mitte ainult ühte muutujat (nagu praeguseni oleme teinud) vaid korraga rohkem (näiteks on vaja otsida klassi õpilaste nimekirjast kindla nimega õpilast või sorteerida klassipäevikust välja kõik 5-lised), siis kasutatakse massiive.

Massiivid on muutujate loendid, mida kasutatakse samatüübiliste andmekogumite säilitamiseks.

Igal massiivil on kindel nimi (identifikaator). Massiiv koosneb elementidest ja igal elemendil on massiivis oma kindel koht ehk järjekorranumber.

Massiividesse:
  • saab salvestada andmete jadasid
  • võib salvestada üheaegselt eri tüüpi andmeid
  • salvestatakse andmed jadas, nii et igal andmel on oma kindel positsioon
Javascriptis näeb massiivi kirjeldamine välja nii:

var massiiviNimi = ["tekst", "järgmine tekst", 3, 2];  

Massiivi nimi on massiiviNimi. 
Massiivi elemendid kirjutatakse nurksulgude [] sisse ja eraldatakse üksteisest komaga, stringid (tekstielemendid) pannakse jutumärkidesse. Massiivi kirjeldamise lõpetab semikoolon.

Elementide järjestamine algab massiivis 0-st ehk siis kui tahame massiivist kätte saada esimese elemendi, siis tuleb tema väljakutsumiseks kirjutada massiiviNimi[0], teise elemendi kättesaamiseks tuleb kirjutada massiiviNimi[1] jne.

massiivi pikkuse (selle, kui palju elemente temas on) saame kätte, kui kirjutame massiiviNimi.length

Allolev for-tsükkel prindib konsoolile kõik massiiviNimi massiivis olevad kirjed.

for (var i = 0; i < massiiviNimi.length; i++) {
    console.log(massiiviNimi[i]);
}


Massiivist mingi kindla väärtuse välja otsimiseks on otstarbekas panna for-tsükli sisse veel ka tingimus (if-lause).
Näiteks allolev skript otsib massiivist välja suurima arvu. Suurima arvu otsimiseks, tuleb teda teiste arvudega võrrelda. Selleks tuleb defineerida uus muutuja (näites muutuja suurus), mille väärtus on esialgu 0. Edasi vaadatakse massiivis olevad arvud ükshaaval läbi (for-tsükkel) ning võrreldakse suurimaga (if-lause, alguses suurim = 0). Kui arv on suurem kui suurim, siis saab suurim uueks väärtuseks selle arvu ning tsükkel läheb massiivi järgmise arvu juurde. Kui järgmine arv on väiksem, siis suurima väärtust ei muudeta (seda muudetakse ainult siis, kui võrreldav arv on suurem). Selliselt saabki üles leida suurima.

var massiiv = [56, 16, 1, 114, 132, 15, 89, 32];
var suurim= 0;

for (i=0; i<massiiv.length;i++)
    {
        if (massiiv[i]>suurim)
           {suurim=massiiv[i];}        
    }
alert(suurim);