Massiivi andmetüüpide mõistmine ja rakendamine Delphis

Massiivid võimaldavad meil viidata sama nimega muutujate seeriale ja kasutada selle seeria üksikute elementide välja kutsumiseks numbrit (indeksi). Massiividel on nii ülemine kui ka alumine piir ning massiivi elemendid on nendes piirides külgnevad.

Massiivi elemendid on väärtused, mis on kõik sama tüüpi (string, täisarv, kirje, kohandatud objekt).

Delphis on kahte tüüpi massiive: kindla suurusega massiiv, mis jääb alati samaks - staatiline massiiv, ja dünaamiline massiiv, mille suurus võib käitusel muutuda.

Staatilised massiivid

Oletame, et kirjutame programmi, mis laseb kasutajal iga päeva alguses sisestada mõned väärtused (nt kohtumiste arv). Me valiksime teabe salvestamise loendisse. Me võiksime selle nimekirja nimetada Ametisse nimetamine, ja iga number võidakse salvestada nimedega Kohtumised [1], Kohtumised [2] jne.

Loendi kasutamiseks peame selle esmalt deklareerima. Näiteks:

 var Kohtumised: täisarvu massiiv [0..6]; 

deklareerib muutuja nimega Appointments, millel on 7-täisarveline ühemõõtmeline massiiv (vektor). Selle deklaratsiooni kohaselt tähistab Ametisse nimetamine [3] neljandat täisarvu väärtust Ametisse nimetamine. Sulgudes olevat arvu nimetatakse indeksiks.

instagram viewer

Kui loome staatiline massiiv kuid ärge määrake väärtusi kõigile selle elementidele, sisaldavad kasutamata elemendid juhuslikke andmeid; nad on nagu initsialiseerimata muutujad. Järgnevat koodi saab kasutada kõigi kohtumiste massiivi elementide 0-le seadmiseks.

 jaoks k: = 0 kuni 6 tehke kohtumised [k]: = 0; 

Mõnikord peame seotud teavet massiivis jälgima. Näiteks arvutiekraanil iga piksli jälgimiseks peate viitama selle X- ja Y-koordinaatidele, kasutades nuppu mitmemõõtmeline massiiv väärtuste salvestamiseks.

Delphi abil saame deklareerida mitme mõõtmega massiive. Näiteks kuulutab järgmine avaldus kahemõõtmelise 7x24 massiivi:

 var DayHour: array [1..7, 1..24] of Real; 

Elementide arvu arvutamiseks mitmemõõtmelises massiivis korrutage iga indeksi elementide arv. Ülalnimetatud muutuja DayHour jätab seitsmendas reas ja 24 veerus 168 (7 * 24) elementi. Väärtuse leidmiseks kolmanda rea ​​ja seitsmenda veeru lahtrist kasutaksime: DayHour [3,7] või DayHour [3] [7]. Järgmist koodi saab kasutada kõigi DayHour massiivi elementide 0-le seadmiseks.

 i jaoks: = 1 kuni 7 teha
jaoks j: = 1 kuni 24 korda
DayHour [i, j]: = 0;

Dünaamilised massiivid

Võib-olla ei tea te täpselt, kui suurt massiivi teha. Võib-olla soovite omada massiivi suuruse muutmine käitustasemel. Dünaamiline massiiv deklareerib selle tüübi, kuid mitte suuruse. Dünaamilise massiivi tegelikku suurust saab käitusaeg muuta, kasutades SetLength protseduur.

 var Õpilased: massiiv string; 

loob ühemõõtmelise dünaamilise ridade massiivi. Deklaratsioon ei eralda õpilastele mälu. Massiivi loomiseks mällu kutsume protseduuri SetLength. Arvestades näiteks ülaltoodud deklaratsiooni,

 SetLength (õpilased, 14); 

eraldab 14 stringist koosneva massiivi, mida on indekseeritud vahemikus 0 kuni 13. Dünaamilised massiivid on alati täisarvuga indekseeritud, alustades alati 0 kuni 1 väiksemaks kui nende suurus elementides.

Kahemõõtmelise dünaamilise massiivi loomiseks kasutage järgmist koodi:

 var maatriks: kahekordse massiivi massiiv;
alustada
SetLength (maatriks, 10, 20)
lõpp;

mis eraldab ruumi kahemõõtmelise 10-kordse massiivi kahekordse ujukomaga väärtuste jaoks.

Dünaamilise massiivi mäluruumi eemaldamiseks määrake massiivi muutujale null, näiteks:

 Maatriks: = null; 

Väga sageli ei tea teie programm kompileerimise ajal, kui palju elemente on vaja; seda arvu ei teata enne tööaega. Dünaamiliste massiividega saate eraldada ainult nii palju mälumahtu, kui on vaja antud ajahetkel. Teisisõnu, dünaamiliste massiivide suurust saab käitusel muuta, mis on dünaamiliste massiivide üks peamisi eeliseid.

Järgmine näide loob täisarvude massiivi ja kutsub massiivi suuruse muutmiseks välja funktsiooni Kopeeri.

 var
Vektor: täisarvu massiiv;
k: täisarv;
alustada
SetLength (vektor, 10);
jaoks k: = madal (vektor) kuni kõrge (vektor) teha
Vektor [k]: = i * 10;
...
// nüüd vajame rohkem ruumi
SetLength (vektor, 20);
// siin mahutab vektorimassiiv kuni 20 elementi // (sellel on neid juba 10);

Funktsioon SetLength loob suurema (või väiksema) massiivi ja kopeerib olemasolevad väärtused uus massiiv. Funktsioonid Madal ja Kõrge tagavad juurdepääsu igale massiivi elemendile, vaatamata oma koodis tagasi õigetele alumisele ja ülemisele indeksi väärtusele.

instagram story viewer