Masīva datu tipu izpratne un ieviešana Delfos

Masīvi ļauj mums atsaukties uz mainīgo virkni ar tādu pašu nosaukumu un izmantot numuru (indeksu), lai izsauktu atsevišķus elementus šajā sērijā. Masīviem ir gan augšējās, gan apakšējās robežas, un masīva elementi šajās robežās ir blakus.

Masīva elementi ir vērtības, kas visi ir viena veida (virkne, vesels skaitlis, ieraksts, pielāgots objekts).

Delfā ir divu veidu masīvi: fiksēta izmēra masīvs, kas vienmēr paliek vienāds - statisks masīvs - un dinamisks masīvs, kura izmērs var mainīties izpildlaika laikā.

Statiskie masīvi

Pieņemsim, ka mēs rakstām programmu, kas ļauj lietotājam katras dienas sākumā ievadīt dažas vērtības (piemēram, tikšanos skaitu). Mēs izvēlētos informāciju glabāt sarakstā. Mēs varētu saukt šo sarakstu Iecelšana, un katrs numurs var tikt saglabāts kā Tikšanās [1], Tikšanās [2] utt.

Lai izmantotu sarakstu, tas vispirms ir jādeklarē. Piemēram:

 var Iecelšana: Integer [0..6] masīvs; 

deklarē mainīgo ar nosaukumu Appointments, kam ir viendimensiju masīvs (vektors) ar 7 veselām vērtībām. Ņemot vērā šo deklarāciju, Iecelšana [3] apzīmē ceturto veselo vērtību iecelšanā. Skaitli iekavās sauc par indeksu.

instagram viewer

Ja mēs izveidojam statiskā masīva bet nepiešķiriet vērtības visiem tā elementiem, neizmantotie elementi satur nejaušus datus; tie ir kā neinicializēti mainīgie. Šo kodu var izmantot, lai visus iecelšanas masīva elementus iestatītu uz 0.

 k: = no 0 līdz 6 do Tikšanās [k]: = 0; 

Dažreiz mums ir nepieciešams izsekot saistītai informācijai masīvā. Piemēram, lai izsekotu katram datora ekrānā esošajam pikselim, jāatsaucas uz tā X un Y koordinātām, izmantojot a daudzdimensionāls masīvs vērtību saglabāšanai.

Izmantojot Delphi, mēs varam deklarēt vairāku dimensiju masīvus. Piemēram, šāds paziņojums deklarē divdimensiju masīvu 7 līdz 24:

 var DayHour: masīvs [1..7, 1..24] no Real; 

Lai aprēķinātu elementu skaitu daudzdimensiju masīvā, reiziniet elementu skaitu katrā indeksā. Iepriekš deklarētais mainīgais DayHour atceļ 168 (7 * 24) elementus 7 rindās un 24 kolonnās. Lai iegūtu vērtību no šūnas trešajā rindā un septītajā kolonnā, mēs izmantosim: DayHour [3,7] vai DayHour [3] [7]. Šo kodu var izmantot, lai visus DayHour masīva elementus iestatītu uz 0.

 i: = no 1 līdz 7 jādara
j: = no 1 līdz 24 darīt
DayHour [i, j]: = 0;

Dinamiskie masīvi

Jūs, iespējams, nezināt precīzi, cik lielu masīvu izveidot. Jūs varētu vēlēties mainot masīva lielumu izpildlaikā. Dinamiskais masīvs deklarē tā veidu, bet ne tā lielumu. Dinamiskā masīva faktisko lielumu izpildes laikā var mainīt, izmantojot SetLength procedūra.

 var Studenti: virkņu masīvs; 

izveido viendimensionālu virkņu masīvu. Deklarācija nepiešķir atmiņu studentiem. Lai izveidotu masīvu atmiņā, mēs saucam par SetLength procedūru. Piemēram, ņemot vērā iepriekš minēto deklarāciju,

 SetLength (Studenti, 14 gadi); 

piešķir masīvu no 14 virknēm, indeksējot no 0 līdz 13. Dinamiskie masīvi vienmēr tiek indeksēti ar skaitļiem, vienmēr sākot no 0 līdz vienam, kas ir mazāks par to lielumu elementos.

Lai izveidotu divdimensiju dinamisko masīvu, izmantojiet šo kodu:

 var Matrix: dubultā masīva masīvs;
sākt
SetLength (Matrix, 10, 20)
beigas;

kas piešķir vietu divdimensiju, divkāršā peldošā komata vērtību 10 līdz 20 masīvam.

Lai noņemtu dinamiskā masīva atmiņas vietu, masīva mainīgajam piešķiriet nulli, piemēram:

 Matrica: = nulle; 

Ļoti bieži jūsu programma sastādīšanas laikā nezina, cik elementu būs nepieciešams; šis skaitlis nebūs zināms līdz izpildlaika laikam. Izmantojot dinamiskos blokus, jūs varat atvēlēt tikai tik daudz krātuves, cik nepieciešams noteiktā laikā. Citiem vārdiem sakot, dinamisko masīvu lielumu var mainīt izpildlaikā, kas ir viena no galvenajām dinamisko masīvu priekšrocībām.

Nākamais piemērs izveido veselu skaitļu masīvu un pēc tam izsauc funkciju Kopēt, lai mainītu masīva lielumu.

 var
Vektors: Integer masīvs;
k: vesels skaitlis;
sākt
SetLength (vektors, 10);
k: = zems (vektors) līdz augsts (vektors) darīt
Vektors [k]: = i * 10;
...
// tagad mums vajag vairāk vietas
SetLength (vektors, 20);
// šeit vektoru masīvs var saturēt līdz 20 elementiem // (tam jau ir 10 no tiem) beigas;

Funkcija SetLength izveido lielāku (vai mazāku) masīvu un esošās vērtības kopē uz jauns masīvs. Funkcijas Zema un Augsta nodrošina piekļuvi visiem masīva elementiem, neatskatoties kodā uz pareizajām apakšējām un augšējām indeksa vērtībām.

instagram story viewer