Visual Basic – Dimenzionisanje i manipulacija nizovima (II deo)

Nastavljamo priฤu o naฤinima definisanja nizova, iz prethodnog ฤlanka. Kada samo naveli da postoji moguฤ‡nost ponovnog definisanja istog niza, nismo naveli kako se definiลกu tipovi podataka. Ukoliko koristite „ReDim“ za kreiranje novog niza iz postojeฤ‡eg, na kraju deklaracije ne zaboravite da definiลกete i tip podataka elemenata niza. Na kraju deklaracije ubacite – „As String“, ako definiลกete niz koji ฤ‡e sadrลพati stringove, ili „As Long“ ako ลพelite niz sa tipom Long. Inaฤe, vaลก niz ฤ‡e biti deklarisan kao niz „variant“ elemenata – ลกto je podrazumevani tip podataka za sve varijable kod kojih nije eksplicitno definisan tip podataka. Takoฤ‘e, kada jednom dodelite tip podataka, kasnije ne moลพete promeniti tip (kod redefinisanja niza).

Inaฤe, nizove moลพemo podeliti u dve grupe – statiฤke i dinamiฤke. Niz koji ste definisali sa praznim zagradama (bez dimenzionisanja) moลพete redefinisati sa „ReDim“, zato ลกto je to dinamiฤki niz. Ovo u suลกtini znaฤi da broj elemenata niza moลพete menjati „u hodu“ – drugim reฤima, moลพete koristiti „ReDim“ viลกe puta, u zavisnosti od toga kako niz „raste“. U drugu ruku, neฤ‡ete moฤ‡i da promenite veliฤinu statiฤkog niza, jer je njegova veliฤina determinisana u vreme kompajliranja (prevoฤ‘enja), a ne u vreme izvrลกenja programa. Broj elemenata koji definiลกete na poฤetku, kod statiฤkih nizova, je njihov krajnji domet. Kada redefiniลกete dinamiฤke nizove, vi u stvari kreirate nove nizove, ลกto znaฤi da ฤ‡e svi postojeฤ‡i elementi biti „zbrisani“. Ovo moลพete preduprediti koriลกฤ‡enjem kljuฤne reฤi „Preserve“:


BrGodina = 100
ReDim Godine(BrGodina) As Long
Godine(1) = 5
Debug.Print Godine(1)
ReDim Preserve Godine(200)
Godine(150) = 10
Debug.Print Godine(1)
Debug.Print Godine(150)

U prethodnom primeru, kreiramo dinamiฤki niz ฤije je ime „Godine“, sa stotinu elemenata. Iako smo za dimenzionisanje niza koristili varijablu „BrGodina“, u zagradama smo mogli upisati dimenziju izraลพenu ciframa. „ReDim“ ฤ‡e prihvatiti, i jedan i, drugi naฤin dimenzionisanja, za razliku od „Dim“ definicije koja prihvata samo cifarsku dimenziju, konstantu ili prazne zagrade. Potom smo programskim kodom dodelili vrednost prvom ฤlanu niza, i odmah ga „odลกtampali“ u Debug prozoru (da bi videli prozor pritisnite kombinaciju Ctrl+G). Nakon toga smo redefinisali niz „Godine“ u niz sa 200 elemenata, i to sa Preserve opcijom. Zatim smo, radi testa, 150-tom ฤlanu niza dodelili vrednost – kao ฤlanu ฤiji je indeks veฤ‡i nego prethodno definisanom nizu. I na kraju smo „odลกtampali“ vrednosti prvog i stopedestog elementa niza. Da nismo koristili kljuฤnu reฤ „Preserve“, umesto vrednosti stopedesetog ฤlana niza, dobili bi „praznu liniju“ jer bi se izbrisale vrednosti svih elemenata prethodnog niza. Poลกto je tema zaista ลกiroka, priฤu o nizovima nastavljamo u sledeฤ‡em prilogu.

Pratite Krstaricu na www.krstarica.com