Википедија:Вики гимназијалац/Array (nizovi) Delphi

Из Википедије, слободне енциклопедије

Uvod[уреди]

слика 1

Koncept nizova u Delfiju je jednostavn: nizovi nam omogućuju da vracamo niz varijabli pod istim imenom i da koristitimo broj (indeks) da ih razlikujemo. Nizovi imaju i gornje i donje granice, a elementi niza zavise od okvira tih granica. Elementi niza su vrednosti koje su istog tipa (string, integer, proizvoljan objekat).

U Delfiju, postoje dve vrste nizova: fiksne veličine niza koji uvek ostaju iste veličine – static array i dynamic array čija velicina moze da se menja.


Statički Nizovi[уреди]

Pretpostavimo da pišemo program koji omogućava korisniku da unese neke vrednosti (npr. broj sastanaka) na početku svakog dana. izabrali bi da sacuvamo informacije u listi. Mozemo da ih nazovemo “Sastanci”, a svaki broj može biti skladišten kao Sastanci[1], Sastanci[2], itd. Da biste koristili listu, moramo prvo da je deklarisemo. Na primer:

var Sastanci : array[0..6] of Integer;

deklariše promenlјivu Sastanci koji cuva jednodimenzionalni niz (vektor) od 7 celobrojnih vrednosti. Imajući u ovo u vidu, Sastanci [3] označava četvrtu celobrojnu vrednost u Sastancima. Broj u zagradi se zove indeks. Ako ćemo napraviti statički niz, ali ne dodelјujemo vrednosti svim elementima, neoznaceni elementi sadrže nasumične podatke. Sledeći kod može da se koristi za podešavanje svih elemenata u nizu Sastanci do 0.

for k := 0 to 6 do Sastanci[k] := 0;

слика 1

Ponekad moramo da pratitimo odnos svih informacija u nizu. Na primer, da bismo pratili svaki piksel na ekranu računara, morate da znamo njegove X i Y koordinate. Ovo se može uraditi uz pomoc višedimenzionalnog niza za skladištenje vrednosti. Sa Delfijem, možemo da proglasimo nizove sa više dimenzija. Na primer, sledeća izjava proglašava dvodimenzionalni niz 7x24:

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

Da bismo izračunali broj elemenata u višedimenzionalnom nizu, pomnožitcemo broj indeksa. DanSat promenlјiva, izdvaja 168 (7 * 24) elementa, u 7 redova i 24 kolona. Da bismo dobili vrednost iz ćelije u trećem redu i sedmoj koloni koristilibismo: DanSat [3,7] ili DanSat [3] [7]. Sledeći kod može da se koristi za podešavanje svih elemenata u nizu DanSat na 0.

for i := 1 to 7 do
for j := 1 to 24 do
DanSat[i,j] := 0;

Dinamički Nizovi[уреди]

слика 1

Moze da se dogodi da ne znamo tačno kolikovelik niz treba da napravimo. Možda budemo hteli da promenimo velicinu niza tokom izvrsavanja. Dinamički niz oznacava svoju vrstu, ali ne i veličinu. Stvarna veličina dinamičkog niza može se menjati u vreme izvršavanja upotrebom SetLength funkcije. Na primer:

var Studenti : array of string;

stvara jednodimenzionalan dinamički niz stringova. Kod ne dodeljuje memoriju za studente. Da bismo kreirali niz u memoriji, koristimo SetLength funkciju. Na primer, s obzirom na gore navedenu izjavu,

SetLength(Studenti, 14) ;

pravi niz od 14 stringova, indeksiranih od 0 do 13. Dinamički nizovi su uvek integer indeksa, uvek polazeći od 0 do jedne manje njihove veličine u elementima. Da bismo kreirali dvodimenzionalni dinamican niz, koristimo sledeći kod:

var Matrica: array of array of Double;
begin
SetLength(Matrica, 10, 20)
end;

koje dodelјuje prostor za dvodimenzionalni, 10 x 20, niz.

Vrlo često, program ne zna koliko elemenata će biti potrebno, taj broj neće biti poznati sve do samog koriscenja. Sa dinamičkim nizovima možemo samo izdvoji onoliko koliko je potrebno za memorisanje, u datom trenutku. Drugim rečima, veličina dinamičkih nizova može se menjati u vreme izvršavanja, što je jedan od klјučnih prednosti dinamičnih nizova. Sledeći kod kreira niz celobrojnih vrednosti, a zatim poziva funkciju Copy da bismo promenili veličinu niza.

var
Vektor: array of Integer;
k : integer;
begin
SetLength(Vektor, 10) ;
for k := Low(Vector) to High(Vektor) do
Vektor[k] := i*10;
SetLength(Vector, 20) ;
end;

Literatura[уреди]

1. ^ Računarstvo i informatika ya 3. razred, Milan Čabarakapa.

Reference[уреди]

[1]