Microsoft Office Access
uređuje Branislav Mihaljev, MVP

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

Još o Accessu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 
Suština pasijansa
Suština pasijansa
 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 Praktikum na Webu
 

Matrice promenljivih

Nivo:  NIVO 2 - klinite za objašnjenje


Nastavljamo priču o promeljivama koju smo započeli ranijem prilogu, gde smo objasnili tipove promenljivih i njihov životni vek. Ovog puta govorimo o višedimenzionalnim promenljivama: iako se u prvi mah čini da je složeno, reč je o vrlo korisnom načinu koji će vam često biti potreban.

Pogledajte i raniji prilog na ovu temu
 

U mnogim slučajevima potrebno je definisati veliki broj promenljivih koje će pamtiti isti tip podataka. Na primer, ako vodite troškove za 365 dana u godini, kreiraćete jednodimenzionalnu matričnu promenljivu, umesto 365 različitih. Prostim deklarisanjem promenljivih kriptičnim oznakama, programer bi se lako izgubio u metežu, neretko zaboravljajući koja promenljiva čemu služi. Dobar način da se ovo izbegne je davanje naziva promenljivama, umesto slovnih oznaka. Pamćenje naziva promenljivih je olakšano jer sam naziv uvek asocira na vrednost koja joj se dodeljuje.

Najfleksibilniji način definisanja velikog broja promenljivih je korišćenjem matrice. Matrica promenljivih je zapravo konačna kolekcija vrednosti koje dele isti tip i naziv. Jedina razlika između "obične" promeljive i one u matrici je ta što promenljiva u matrici ima svoj indeks, kao što se u jednoj ulici nalazi više kuća sa različim brojevima. Prosta matrica, na primer, može sadržati tri elementa sa respektivnim indeksima 0, 1 i 2. Matrice su naročito korisne kada treba proći kroz isti program nekoliko puta i zapamtiti različite vrednosti. Primenom matričnih promenljivoh ne samo da ćete skratiti program i uštedeti svoje vreme, nego će i program raditi efikasnije.

Promenljivu za pamćenje 365 novčanih vrednosti za sve dane u godini ćete deklarisati sa:

Dim Godina (1 To 365) As Currency

Ovaj prosti oblik matrične promenljive je jednodimenzionalan i može pamtiti samo po jednu novčanu vrednost za svaki dan u godini. Proširivanjem izraza, dimenzionisaćete matricu za pamćenje vrednosti za svaki od 24 časa svakog dana:

Dim Godina (1 To 365, 1 To 24) As Currency

Na sličan način ćete dimenzionisati dvodimenzinalnu matricu za praćenje npr. ocena četiri odeljenja sa po 30 učenika:

Dim Ucenici (1 To 4, 1 To 30) As Integer

U ovom slučaju, učenike ćete pratiti preko njihovih šifara jer je matrica definisana kao tip Integer. Promenljiva tpia Integer rezerviše po dva bajta memorije za svaku vrednost, odnosno za ovu matricu biva rezervisano najmanje 248 bajta memorije (4*30*2). Učenike možete pratiti i preko njihovih imena (tekst) dodeljujući im ocene (broj):

Dim Ucenici (1 To 4, 1 To 30)

Ovakvim deklarisanjem promenljive bez tipa, promenljiva postaje Variant i može uzimati bilo koju tekstualnu ili brojčanu vrednost. Tip Variant rezerviše za sebe 16 bajta memorije ukoliko pamti brojčanu vrednosti, odnosno 22 bajta memorije ako pamti tekstualnu vrednost; zato u ovom slučaju promenljivu odvaja najmanje 1920 bajta memorije (4*30*16).

Dvodimenzionalna matrica je prost primer višedimenzionalne matrice. Matrica u VBA može imati najviše 60 dimenzija.
 

Jednom prilikom sam dobio interesantno pitanje od programera iz Vojske Jugoslavije, koji se interesovao kako može pratiti jednog vojnika koji pripada vodu, četi, brigadi, itd. Za vojnika je trebalo da napravi program koji će pratiti njegove ocene i kretanje kroz formacijske jedinice, vodeći računa o ostalim podacima. Isprva mi se učinilo logičnim da se svakom vojniku dodeli jedinstveni identifikacioni broj i da se sa njegovim ocenama i kretanjem kroz formacije operiše sa gomilom promenljivih. Ispostavilo se da je rešenje prilično jednostavno korišćenjem matričnih promenljivih.

Za razliku od obične, matričnu promenljivu definišemo ne samo po tipu već i po granicama. U prethodnom izrazu, prvi broj u jednoj deklaraciji predstavlja donju granicu, a drugi gornju. Poslužimo se primerom u kome ćemo definisati matricu za praćenje jednog parametra u radnim danima (kojih ima pet) samo za prvu radnu smenu (standardno radno vreme 07-15 h):

Dim RadniUcinak (1 To 5, 7 To 15)

Ili, ako proširimo izraz sa parametrom po minutima:

Dim RadniUcinak (1 To 5, 7 To 15, 1 To 60)

Izraz se može proširivati uvođenjem parametra za radni učinak, pauze, izostajanje sa rada, itd. Imajte u vidu da matrica u gornjem slučaju pamti 2.400 vrednosti i ona treba da pojednostavi program, a ne da ga iskomplikuje i uspori!

Matričnu promeljivu možete definisati i bez granica; u tom slučaju, ona postaja dinamična:

Dim Dinamicna () As Long

Dinamična matrica je naročito korisna (ali se i izbegava!) kada u matricu treba da smestite unapred nepoznati broj podataka; tada ćete joj kasnije u programu postaviti granice, što je poželjan zahvat. Recimo, gornjoj matrici kasnije u proceduri možete postaviti granicu na pet elemenata; ukoliko je bazni parametar nula, to glasi ovako:

ReDim Dinamicna (4)

Ako ste u modulu predvideli da je bazni parametar uvek 1 (postavili ste klauzulu Option Base 1 na početku modula), onda matrica dobija granicu na pet elemenata ovako:

ReDim Dinamicna (5)

Izrazom ReDim ograničavate broj vrednosti koje promeljiva može pamtiti ili oslobađate memoriju rezervisanu za nju, ali pripazite: tako ćete izbrisati sadržaj svih vrednosti! Da biste promenili dimenziju matrice bez gubljenja vrednosti, poslužite se klauzulom Preserve:

ReDim Preserve Dinamicna (5)

 

  (C) 2000-2011 Praktikum na Webu

Branislav Mihaljev, Access bajtovi, PC 86


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2011; Valinor Design; sva prava pridržana.