Masyvo duomenų tipų supratimas ir įgyvendinimas „Delphi“

Masyvai leidžia mums nurodyti kintamųjų seriją tuo pačiu pavadinimu ir naudoti numerį (rodyklę) atskiriems tos serijos elementams iškviesti. Masyvai turi tiek viršutinę, tiek apatinę ribas, o masyvo elementai yra gretimi tose ribose.

Masyvo elementai yra reikšmės, kurios yra to paties tipo (eilutė, sveikasis skaičius, įrašas, pasirinktinis objektas).

„Delphi“ yra dviejų tipų masyvai: fiksuoto dydžio masyvas, kuris visada išlieka to paties dydžio, - statinis masyvas, ir dinaminis masyvas, kurio dydis gali pasikeisti vykdant.

Statiniai masyvai

Tarkime, kad mes rašome programą, kuri leidžia vartotojui kiekvienos dienos pradžioje įvesti tam tikras reikšmes (pvz., Susitikimų skaičių). Mes pasirinktume saugoti informaciją sąraše. Galėtume vadinti šį sąrašą Skyrimai, ir kiekvienas numeris gali būti saugomas kaip Susitikimai [1], Susitikimai [2] ir pan.

Norėdami naudoti sąrašą, pirmiausia turime jį deklaruoti. Pavyzdžiui:

 var Paskyrimai: sveikojo skaičiaus masyvas [0..6]; 

deklaruoja kintamąjį, vadinamą Paskyrimai, turintis vientisą 7 sveikųjų skaičių matricą (vektorių). Atsižvelgiant į šią deklaraciją, Paskyrimai [3] reiškia ketvirtąją sveikųjų skaičių Paskyrimai. Skaičius skliausteliuose vadinamas indeksu.

instagram viewer

Jei sukursime statinis masyvas bet nepriskirkite reikšmių visiems jo elementams, nenaudojamuose elementuose yra atsitiktinių duomenų; jie yra tarsi neinicializuoti kintamieji. Šis kodas gali būti naudojamas norint nustatyti visus susitikimų masyvo elementus 0.

 jei k: = nuo 0 iki 6, paskyrimai [k]: = 0; 

Kartais reikia sekti susijusią informaciją masyve. Pvz., Norėdami sekti kiekvieną kompiuterio ekrane esantį pikselį, naudodamiesi a, turite nurodyti jo X ir Y koordinates daugialypis masyvas reikšmėms saugoti.

Su Delphi galime deklaruoti kelių matmenų masyvus. Pvz., Šis teiginys deklaruoja dvimatį 7 iki 24 masyvą:

 var DayHour: masyvas [1..7, 1..24] iš „Real“; 

Norėdami apskaičiuoti daugialypio masyvo elementų skaičių, padauginkite kiekvienos rodyklės elementų skaičių. Aukščiau paskelbtas „DayHour“ kintamasis atideda 168 (7 * 24) elementus 7 eilutėse ir 24 stulpeliuose. Norėdami gauti reikšmę iš langelio trečioje eilutėje ir septintame stulpelyje, mes naudojame: DayHour [3,7] arba DayHour [3] [7]. Šis kodas gali būti naudojamas visiems „DayHour“ masyvo elementams nustatyti 0.

 i: = nuo 1 iki 7 padaryti
j: = nuo 1 iki 24 daryti
DayHour [i, j]: = 0;

Dinaminiai masyvai

Galbūt tiksliai nežinote, koks yra masyvo dydis. Galbūt norėsite keičiant masyvo dydį vykdymo metu. Dinaminis masyvas deklaruoja jo tipą, bet ne dydį. Faktinį dinaminio masyvo dydį galima pakeisti vykdymo metu naudojant „SetLength“ procedūra.

 var studentai: styginių masyvas; 

sukuria vienmatį dinaminį stygų masyvą. Deklaracija neskiria atminties Studentams. Norėdami sukurti masyvą atmintyje, mes vadiname „SetLength“ procedūra. Pavyzdžiui, atsižvelgiant į aukščiau pateiktą deklaraciją,

 „SetLength“ (studentai, 14 m.); 

skiria 14 stygų masyvą, indeksuotą nuo 0 iki 13. Dinaminės masyvai visada yra indeksuojami sveikaisiais skaičiais, visada pradedant nuo 0 iki 1 mažesniu nei jų dydis elementuose.

Norėdami sukurti dvimatį dinaminį masyvą, naudokite šį kodą:

 var Matrix: dvigubo masyvo masyvas;
prasideda
„SetLength“ („Matrix“, 10, 20)
galas;

kuris skiria erdvę dvimačiam, 10 iš 20 masyvo dvigubo slankiojo kablelio reikšmėms.

Norėdami pašalinti dinaminės masyvo atminties vietą, masyvo kintamajam priskirkite nulį, pvz .:

 Matrica: = nulis; 

Labai dažnai jūsų programa kompiliavimo metu nežino, kiek elementų reikės; tas skaičius nebus žinomas iki vykdymo laiko. Naudodami dinaminius masyvus, galite skirti tik tiek, kiek reikia tam tikru metu. Kitaip tariant, dinaminių masyvų dydį galima pakeisti vykdymo metu, o tai yra vienas iš pagrindinių dinaminių masyvų pranašumų.

Kitas pavyzdys sukuria sveikųjų skaičių masyvą ir iškviečia funkciją Kopijuoti, kad pakeistų masyvo dydį.

 var
Vektorius: sveikojo skaičiaus masyvas;
k: sveikasis skaičius;
prasideda
„SetLength“ („Vector“, 10);
k: = Žemas (Vektorius) į Aukštas (Vektorius) daryti
Vektorius [k]: = i * 10;
...
// dabar mums reikia daugiau vietos
„SetLength“ („Vector“, 20);
// čia vektorinis masyvas gali talpinti iki 20 elementų // (jo jau yra 10 iš jų) pabaiga;

Funkcija „SetLength“ sukuria didesnį (arba mažesnį) masyvą ir nukopijuoja esamas reikšmes į naujas masyvas. Žemos ir aukštos funkcijos užtikrina prieigą prie kiekvieno masyvo elemento, neieškant savo kodo teisingų apatinių ir viršutinių indekso verčių.