|
Microsoft Office Access |
|
|
Matrice promenljivihNivo:
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.
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:
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:
Na sličan način ćete dimenzionisati dvodimenzinalnu matricu za praćenje npr. ocena četiri odeljenja sa po 30 učenika:
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):
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).
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):
Ili, ako proširimo izraz sa parametrom po minutima:
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:
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:
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:
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:
|
|
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. |