75
UNIVERZITET U SARAJEVU ELEKTROTEHNIČKI FAKULTET OSNOVE PROGRAMIRANJA U VISUAL BASICU ZA PREDMET OSNOVE MEHATRONIKE NA ODSJEKU ZA ELEKTROENERGETIKU - Praktikum za laboratorijske vježbe - Asistent: Viši asistent Mr. Almir Ahmethodžić Nastavnik: Vanr.prof.dr Mirsad Kapetanović

Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Embed Size (px)

Citation preview

Page 1: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

UNIVERZITET U SARAJEVU ELEKTROTEHNIČKI FAKULTET

OSNOVE PROGRAMIRANJA U VISUAL BASICU ZA PREDMET OSNOVE MEHATRONIKE

NA ODSJEKU ZA ELEKTROENERGETIKU

- Praktikum za laboratorijske vježbe -

Asistent: Viši asistent Mr. Almir Ahmethodžić Nastavnik: Vanr.prof.dr Mirsad Kapetanović

Page 2: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

4

Sadržaj

1. UVOD 6 Pokretanje Visual Basica-a Prvi pogled na radno okruženje Toolbox Project explorer Osobine - Properties Form Layout Postavljanje kontrola na formu Pokretanje programa Dodavanje programskog koda

2. OSNOVE DIZAJNIRANJA 18 Uvod Form Kontrole Pristupne tipke Formatiranje Podešavanje osobina u fazi rada programa Izbornici / Meniji

3. OSNOVE PISANJA PROGRAMSKOG KODA 30 Uvod Prozor za pisanje programskog koda – View Code Event procedure Opće procedure / funkcije Parametarske procedure Funkcije Načini prikaza procedura / funkcija Neke važniji događaji Message i Input box Provjera sintakse Auto Member liste Duge linije programskog koda

4. VARIJABLE 44 Deklaracije varijbli Tipovi varijabli DIM ključna riječ Nazivi varijabli Dodjeljivanje vrijednosti varijablama Inicijaliziranje varijabli

Page 3: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

5

Pisanje izraza u naredbama pridruživanja Pravila redoslijeda izvršavanja operacija Operacije sa nizovima riječi (stringovima) Nizovi

Jednodimenzionalni nizovi Višedimenzionalni nizovi Dinmiački nizovi

Korisnički definirani tipovi 5. OSNOVNE NAREDBE 55

Uslovni izrazi Logička poređenja Logičke operacije NOT AND OR XOR EQV IMP Redoslijed izvršavanja

Naredbe odlučivanja IF naredba SELECT CASE naredba

Programske petlje DO petlja FOR petlja

Naredbe za grafički prikaz Naredba LINE Naredba CIRCLE

API Funkcije 6. RAD SA DATOTEKAMA PODATAKA 70

Uvod Datoteke sa slučajnim pristupom

Postupak rada sa datotekama sa slučajnim pristupom Otvaranje datoteka sa slučajnim pristupom Upisivanje podataka Čitanje podataka Pozicioniranje na željeni red unutar datoteke podataka

Tekstualne datoteke Kreiranje i otvaranje tekstualnih datoteka Upisivanje podataka Čitanje podataka Zatvaranje tekstualnih datoteka

Page 4: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

6

1. UVOD

Pokretanje Visual Basica-a U tekstu će se koristiti primjeri i uputstva vezana za Visual Basic 6.0 (VB) koji se isporučuje od strane Microsoft-a kao dio većeg i kompletnijeg paketa programa namijenjenih razvoju aplikacija pod nazivom Visual Studio 6.0. Gotovo sve rečeno moguće je primjeniti kako za starije varijante VB-a tako i za novije inačice ovog programskog jezika.

Slika 1.1 – Pokretanje Visual Basic-a

Page 5: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

7

Nakon instalacije Visual Basica, program je u Windows-ima moguće jednostavno pokrenuti korištenjem izbora Start – All Programs – Microsoft Visual Studio 6.0 – Microsoft Visual Basic 6.0, kao što je to i pokazano na Slici 1.1. Prvi prozor koji se pojavljuje na ekranu nakon pokretanja Visual Basic-a je prozor New Project, slika 1.2.- Project je termin kojim se označava svaki program koji se kreira u Visual Basic-u.

Slika 1.2 – Prozor New Project U ovisnosti od postavki vezanih za pokretanje Visual Basica-a moguće je da se prozor New Project i ne pojavi nakon prvog pokretanja te da se automatski otvori novi podrazumijevani tip projekta (uobičajeno je da je to Strandard EXE tip projekta). Prozor New Project sadrži tri kartice: New, Existing i Recent.

- Na kartici New nalaze se opcije za započinjanje različitih vrsta novih projekata u Visual Basic-u.

- Preko kartice Existing moguće je nastaviti prethodno započeti projekat koji je prethodno spašen.

- Kartica Recent omogućava pokretanje projekata na kojima se radilo tokom prethodnih nekoliko pokretanja Visual Basic-a na datom računaru.

Page 6: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

8

Slika 1.3 – Radna površina Visual Basica-a U svrhu savladavanja osnova Visual Basic-a sasvim je dovoljno da se koristi „standardna“ vrsta projekata pa je samo potrebno na kartici New izabrati opciju Standard EXE čime će se konačno pokrenuti radna površina Visual Basic-a, prikazana na slici 1.3. Tokom savladavanja programiranja i dizajniranja u Visual Basic-u ovo će biti uobičajen način pokretanja novih projekata. Moguće je na prozoru New Project uključiti opciju Don’t show this dialog in the future čime će se spriječiti pokretanje ovog prozora svaki kasniji put prilikom pokretanja Visual Basic-a. U ovom slučaju, svaki put kada se pokrene Visual Basic automatski će se otvoriti novi projekat tipa Standard EXE. Reaktiviranje pokretanja prozora New Project moguće je izborom opcije Promts for project option koja se nalazi na ekranu Options na kartici Environment. Ovaj prozor se pokreće preko izbornika Tools – Options. Prvi pogled na radno okruženje Kao što se moglo vidjeti na slici 3, Visual Basic radno okruženje sastoji se od nekoliko različitih elemenata koji omogućavaju rad na svim koracima neophodnim u razvoju jednog projekta. Na lijevoj strani prozora nalazi se Toolbox, dok se na desnoj strani nalaze Project Explorer, Properties i Form Layout vertikalno poredani jedan iznad drugog:

- Toolbox sadrži kolekciju sličica koje predstavljaju kontrole koje se standardno koriste u svakom Windows programu,

- Project Explorer prikazuje trenutni sadržaj projekta, sve elemente od kojih se projekat sastoji,

Page 7: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

9

- Properties prozor sadrži listu osobina određene kontrole ili objekta i omogućava na brz način promjenu tih osobina te

- Form Layout omogućava jednostavno određivanje položaja prilikom pojavljivanja pojedinih prozora u programu. Inicijalno ovi elementi radnog okruženja se nalaze na pozicijama koje su upravo objašnjene. Međutim, svaki od ovih elemenata može se po želji pomijerati i podešavati po veličini tako da se zadovolje specifični zahtjevi tokom dizajniranja projekta. Svaki od ovih elemenata Visual Basica bit će u kasnijim koracima detaljno objašnjen. Svi su predstavljeni preko vlastitih prozora na radnoj površini Visual Basic-a, a moguće ih je jednostavno dodati ili ukloniti sa radne površine. Uklanjanje se vrši jednostavno klikom na X u gornjem desnom uglu odgovarajućeg prozora. Dodavanje prozora jednog od ova četiri elementa radnog okruženja je moguće korištenjem istoimene opcije na izborniku View:

- Project Explorer ili CRTL+R, - Properties ili F4, - Form Layout Window te - Toolbox,

kao što je to vidljivo na slici 1.4.

Slika 1.4 – Opcije na izborniku View

Page 8: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

10

Projekat se sastoji od nekoliko tipova datoteka koje predstavljaju osnovne elemente projekta kao što su formovi (forms), moduli, izvještaji, ali i datoteke koje kreira sam projekat i koje ne sadrže direktno dizajnerske niti programske elemente. Dakle, jedam jednostavniji projekat se sastoji od:

- Formova (forms) - Prozori koji omogućavaju kreiranje grafičkog dijela programa i koji olakšavaju interakciju između korisnika i programa. Alati koji se nalaze na toolbox-u se koriste za kreiranje grafičkog sadržaja formova. Svaki form takođe sadrži i programski kod koji se izvršava u ovisnosti od mjesta na kome se kod nalazi. Kod se može posebno kreirati u okviru forma, ali i posebno za kontrole koje se nalaze na form-u i izvršavati se u ovisnosti od događaja kojem se ovaj kod pridružuje. Svaki form se u Windows-u spašava kao posebna datoteka podataka sa ekstenzijom FRM. Opciono form može da ima i dodatnu datoteku sa nastavkom FRX u kojoj se pohranjuju neke specifičnosti vezane za posmatrani form. - Moduli (modules) - Posebni elementi projekta koji služe samo za smještaj programskog koda. Najčešće se koriste za kreiranje općih funkcija i procedura koje se neovisno koriste u više dijelova projekta. Spašavaju se u datoteke podataka sa nastavcima BAS. - Izvještaji (data reports) - Elementi projekta koji služe za generisanje različitih izvještaja pripremljenih za štampanje. Spašavaju se u datoteke podataka sa nastavcima DSR. - Projektna datoteka (project file) - Čuva podatke o svim ostalim datotekama i objektima koji se koriste u projektu. Visual Basic spašava ovu datoteku sa nastavkom VBP,Visual Basic Project. Pokretanje projekta je moguće i direktno kroz Windows Explorer dvostrukim klikom na ovu datoteku. Toolbox Osnovne alatke iz toolbox-a, prikazane na slici 1.5, su one koje se i najčešće koriste u svakodnevnom dizajniranju. Treba napomenuti da su prikazane samo najosnovnije i najčešće korištene kontrole te da je moguće dodavanje i korištenje još mnogo specifičnih, ali i ne tako često korištenih kontrola.

Slika 1.5 – Toolbox – Alatke (kontrole)

Page 9: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

11

Tabela 1.1 - Osnovne kontrole i njihova namjena

PictureBox – Kao što samo ime govori služi za smještaj i prikaz slika.

Label – Ispis odgovrajućeg teksta, samostalno kao informacija ili češće kao objašnjenje uz neku drugu kontrolu.

TextBox – Direktan unos teksta. Ulazni podaci bilo u obliku običnog teksta ili u numeričkom obliku se unose u program korištenjem ove kontrole.

Frame – Logičko objedinjavanje nekoliko istovrsnih kontrola u jednu cjelinu. Najčešće se koristi za logičko i vizuelno objedinjavanje više kontrola tipa OptionButton ili CheckBox.

CommandButton – Komandno dugme, služi za pokretanje neke aktivnosti, npr. za potvrđivanje unosa podataka (vjerovatno najčešće korišteno OK dugme), zatvaranja ili otvaranja prozora itd. Kontrola koja se nalazi na gotovo svakoj formi.

CheckBox – Uključivanje odnosno isključivanje pojedinih opcija. Razlikuje se logički od OptionButton-a (poznatog i kao RadioButton) zbog načina korištenja: koristi se u situaciji gdje je moguće odabrati više odgovora. Koristi se često u bloku unutar kontrole Frame.

OptionButton – Uključivanje odnosno isključivanje jedne od opcija u grupi. Koristi se najčešće zajedno sa kontrolom Frame. Pri ovome kontrola Frame ograničava prostor na kome samo jedna od postojećih OptionButton kontrola može biti uključena u jednom trenutku. Ukoliko se ne koristi kontrola Frame onda je opseg zajedničkog djelovanja kontrole form na kome se kontrole nalaze.

ComboBox – Izbor jedne od ponuđenih opcija iz padajuće liste ili upis podatka, slično kao kod TextBox-a. Odavde i naziv Combo jer je moguće podesiti osobine tako da je moguć jedan (izbor jedne od opcija) ili drugi (upis teksta ili numeričkih podataka) način unosa podataka. Takođe je moguće izvršiti i ograničenje na samo izbor ponuđenih podataka. Kombinacija između TextBox-a i ListBox-a.

ListBox –Izbor više od jednog ponuđenog podatka za dalju obradu.

HScrollBar – Horizontalni klizač. Koristi se za grafičko zadavanje numeričkih podataka ili za horizontalnu kontrolu / pomjeranje grafike

VScrollBar – Vertikalni klizač. Koristi se za grafičko zadavanje numeričkih podataka ili za vertikalnu kontrolu / pomjeranje grafike

Timer – Omogućava vremensko izvršavanje odgovarajuće aktivnosti u vremenskim koracima koji se zadaju u veličini milisekundi.

DriveListBox – Izbor lokalnih jedinica / drive-ova. Nešto zastarjala kontrola jer postoje univerzalniji načini i bolje kontrole za pristup hardveru računara.

DirListBox – Pregled direktorija (folder-a) na lokalnom računaru

FileListBox – Pregled datoteka na odabranom direktoriju (folder-u). Kontrola se najčešće koristi zajedno sa DirListBox-om i DriveListBox-om.

Shape – Direktno iscrtavanje osnovnih geometrijskih oblika: pravougaonika, kvadrata, elipsi i krugova.

Line – Iscrtavanje obične linije.

Image – Kontrola slična kontroli PictureBox - prikaz slika odnosno fotografija.

Data – Kontrola za rad sa podacima iz baza podataka.

OLE – Kontrola koja omogućuje ubacivanje bilo koje druge Windows datoteke: video klipa, excel dijagrama, word dokumenta...

Page 10: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

12

Project explorer Kao što je već rečeno, svaki se Visual Basic projekat u fazi dizajniranja i programiranja sastoji se od nekoliko različitih tipova objekata: formova, modula, izvještaja itd. Dizajn i programski kod svakog od ovih objekata spašava se u Windows-u u okviru jedne ili više datoteka. Svaki prozor koji sadrži projekat, a koji se kreira pomoću objekta form, posjeduje datoteku sa nastavkom FRM. Eventualno, ako se na formi nalaze i neke posebne kontrole moguće je da jedan form (prozor), pored FRM datoteke, ima i još jednu datoteku sa nastavkom FRX. Na isti način, moduli, u koji se upisuje isključivo programski kod spašavaju taj kod u datoteke tipa BAS. Objekat koji omogućava pravljenje izvještaja, DataReport spašava se u datoteke sa nastavkom DSR. Project Explorer je prozor koji unutar razvojnog okruženja Visual Basica, slično kao i Windows Explorer unutar Windows-a, hijerarhijski prikazuje pojedine objekte koji su uključeni u projekat. Na slici 6 prikazan je primjer izgleda Project Explorera u koji su dodana dva forma, jedan MDI form, jedan modul i jedan izvještaj. Potrebno je napomenuti da objektima na slici nisu data imena kao što to nalaže pravilo profesionalnog programiranja. U zagradi se nalazi naziv datoteke u kojoj je smješten opis dizajna i programski kod objekta.

Slika 1.6 - Primjer Project Explorer-a Dva osnovna tipa formi su: obični form i MDI form. U jednom projektu može biti više običnih formova, ali može da se kreira samo jedan MDI form. Skraćenica MDI dolazi od engleskog trermina Multi Document Interface i označava program u kome se svi prozori (formovi) otvaraju unutar MDI forme i ne prikazuju se zasebno na Windows traci - taskbar-u. Da bi neki form bio dio MDI forme i da se otvara samo unutar ovog glavnog prozora programa potrebno je da se postavi osobina forma MDIChild na True. Suprotan termin od MDI je SDI koji označava Single Document Interface i u ovom slučaju svaka forma u projektu, grafički se ponaša zasebno iako logički i programski djeluju kao jedna cjelina. Dodavanje objekata u projekat se vrši preko izbora Project sa glavnog izbornika (menija), slika 1.7.

Page 11: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

13

Slika 1.7 - Izbornik Project Dodavanje objekata se vrši korištenjem odgovarajućih opcija za dodavanje (Add Form, Add MDI Form, Add Module...). Na slici je evidentno da opcija Add MDI Form nije dostupna tj. da nije moguće dodati MDI formu. Razlog je u činjenici da je u projekat već dodana jedna MDI forma, što se i vidi na Project Explorer-u na slici 6. Prilikom dodavanja nekog od objekata u projekat, Visual Basic nudi izbor nekoliko podvrsta za gotovo svaki objekat. Podvrste su obično, do nekog nivoa, dizajnirani specifični prozori koji se standardizirano koriste u Windows aplikacijama, npr. Splash Screen, About Dialog, Tip of the Day itd Specijalne vrste prozora, tipa message box-a i input-box-a, su definirane unutar Visual Basica pa za njih nije potrebno definiranje posebnih formi, odnosno datoteka, o njima će biti govora kasnije. Spašavanje projekta se svodi na spašavanje svih datoteka koje predstavljaju sve korištene objekte: formove, module, izvještaje itd. Prilikom spašavanja projekta po prvi put otvarat će se prozori Save As... koji će zahtijevat izbor direktorija za spašavanje i upisivanje naziva datoteka za svaki objekat posebno, te na kraju i za sam projekat kada se definira dirketorij i naziv projektne VBP datoteke.

Page 12: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

14

Osobine - Properties Svaki element projekta, form, modul, svaka kontrola koja se nalazi na formu posjeduje grupu osobina (properties). Ove osobine se u najvećoj mjeri zadavaju u fazi dizajniranja, ali se takođe mogu mijenjati i tokom izvođenja programa, ukoliko se promjena osobine definira u programskom kodu. U fazi dizajniranja osobine se podešavaju u prozoru Properties i to tako da se prvo označi željeni objekt / kontrola te se onda pređe ne podešavanje pojedinih osobina tog objekta / kontrole.

Slika 1.8 - Prozor Properties Najvažnija osobina svakog objekta ili kontrole je njegovo ime (Name). Ovo ime objekta / kontrole se koristi svaki put kada se radi manipulacija sa podacima koje objekat / kontrola sadrži ili kada se mijenja neka osobina objekta / kontrole. Svaki put kada se doda neka kontrola na form, Visual Basic automatski dodjeljuje podrazumijevano ime toj kontroli npr Command1, Check1... U cilju kvalitenog i jasnog pisanja programskog koda preporučuje se promjena ovih default imena koje daje Visual Basic i davanje odgovarajucih i prepoznatljivih imena svakoj kotroli. Imenovanje kontrola, slično kao i deklariranje varijabli je prilično definirano i postoje pravila koja se proporučuju. Neka od ovih pravila bit će kasnije i prezentirana. Prozor Properties nudi dva načina prikaza i organizacije osobina: alfabetski i po kategorijama. Odgovarajući prikazi su odijeljeni preko zasebnih kartica. Prilikom označavanja bilo koje od osobina u dnu prozora se ispisuje i kratko objašnjenje o tome šta označena osobina određuje.

Page 13: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

15

Form Layout Pomoću prozora Form Layout moguće je definirati tačno mjesto pojavljivanja forme na ekranu. Prozor omogućuje veoma jednostavan način određivanja pozicije forme: dovoljno je kliknuti na formu unutar Form Layout-a i držeći lijevu tipku mišu povući form na željeni položaj. Na slici 9 prikazan je izgled Form Layout-a sa jednim MDI formom i dva obična forma od kojih je jedan, Form1, MDI Child tip.

Slika 1.9 - Prozor Form Layout Postavljanje kontrola na formu Postavljanje kontrole na form je veoma jednostavan zadatak: dovoljan je dvostruki klik na željenu kontrolu u Toolbox-u i Visual Basic će automatski dodati tu kontrolu na trenutno aktivni form. Drugi način je da se jednom klikne na odgovarajuću kontrolu u Toolbox-u i da se nakon toga držeći lijevu tipku na mišu napravi pravougaonik na formi. Nakon što se napravi pravougaonik na formi otpuštanjuem lijeve tipke na mišu odabrana kontrola će da se pozicionira na formi dobijajući oblik jednak dimenzijama označenog pravougaonika. Pokretanje programa Program se može pokrenuti u bilo kome trenutku na jedan od slijedeća tri načina:

- Pritiskom funkcijske tipke F5 - Izborom opcije Start sa menija Run - Klikom na plavi trokutić na traci sa alatima.

S obzirom da jedna projekat / program gotovo uvijek ima više od jedne forme potrebno je definirati i koja se to forma inicijalno prva pojavljuje tokom pokretanja projekta / programa. Pored forme može se odabrati i posebna procedura pod nazivom Main koja će se prva izvršiti tokom pokretanja projekta / programa. U okviru ove procedure moguće je programski definirati pojavljivanje inicijalne forme.

Page 14: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

16

Slika 1.10 – Osobine projekta Određivanje inicijalnog pokretanja se određuje korištenjem prozora Projekt Ime Properties na izborniku Project, slika 1.10. Opcija se uvijek nalazi na dnu liste opcija te u ovisnosti od naziva trenutnog projekta ima i odgovarajući naziv (umjesto Project Ime stoji stvarni naziv projekta + Properties.). U listi opcija Startup Object nalazi se spisak svih formi koje su dodane u projekat te procedura Sub Main. Odabirom željene forme podešava se koja će se forma prva prikazati nakon pokretanja programa. Proceduru Sub Main potrebno je kreirati u jednom od javnih modula te ukoliko se ona odabere da bude Startup objekt onda je potrebno unutar ove procedure upisati odgovarajući programski kod koji će da se izvrši pokretanjem programa. Dodavanje programskog koda Programski kod se u Visual Basic-u dodjeljuje pojedinim događajima (Events) za svaku kontrolu na formi, odnosno piše se zasebno u okviru posebnih, općih procedura ili funkcija koje se mogu pozivati sa različitih mjesta. Svaka kontrola posjeduje vlastiti skup mogućih događaja, npr. Click, DblClick, MouseUp, MouseDown, MouseMove itd. Kod koji se upiše unutar odgovarajućeg događaja izvršava se samo ako se taj događaj desi tokom izvođenja programa, npr. kod unutar događaja Click izvršava se samo ako se tokom izvođenja programa klikne na kontrolu kojoj je pod tim događajem upisan programski kod. Za otvaranje prozora za pisanje koda dovoljan dvostruki klik na neku od kontrola na formi ili pak samo dvostruki klik na formu. Takođe je moguće kretanje između objekta i koda pomoću izbornika View gdje se na prva dva mjesta nalaze opcije Code i Object.

Page 15: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

17

Slika 1.11 – Prozor za pisanje programskog koda Prozor u kome se piše programski kod sastoji se od tri dijela:

- glavnog centralnog dijela za pisanje koda, - liste u gornjem lijevom uglu koja služi za izbor kontrole za koju se želi pisati

programski kod - liste u gornjem desnom uglu koja služi za izbor događaja (event-a) za koji se

definira kod. U ovisnosti od vrste kontrole mijenja se i broj i vrsta događaja koji se mogu odabrati za pisanje programskog koda, tako npr. događaji Change i Validate postoje kod kontrole TextBox, ali ne postoje kod kontrole CommandButton. Sama forma za sebe posjeduje grupu događaja za koje se može definirati programski kod, npr. za događaj Load koji se izvršava prilikom učitavanja forme ili događaj te npr. Unload prilikom zatvaranje forme. Svaki programski kod unutar nekog od događaja predstavlja proceduru za sebe. Visual Basic automatski prilikom otvaranja bilo kog događaja ispisuje zaglavlje procedure sa Private Sub i kraj procedure sa End Sub.Cijeli programski kod namijenjen za izvršavanje prilikom datog događaja mora da se nalazi unutar ova dva reda programskog koda. U listi u gornjem lijevom uglu, pored svih kontrola koje su dodane na formu nalazi se i opcija (General). Ova opcija otvara prostor za deklariranje liste varijabli i konstanti koje se mogu koristiti u svim procedurama unutar programskog koda koji pripada posmatranoj formi. Takođe omogućava pristup kreiranim slobodnim procedurama ili funkcijama koje su definirane na nivou forme. Pristup tim procedurama i funkcijama je moguć preko opcija koje se prikazuju u listi na desnoj strani.

Page 16: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

18

2. OSNOVE DIZAJNIRANJA

Uvod Korisničko okruženje se može definirati kao skup svih grafički predstavljenih objekata i proceduralnih tehnika kojima se definira interakcija između programa i korisnika. Način na koji program dobija informacije od korisnika, način prikaza i izbora različitih opcija, različite mogućnosti korištenja tastature i miša, informacije koje program prikazuje korisniku – sve su ovo elementi koje dizajner programa treba da ima na umu tokom procesa dizajniranja korisničkog, grafičkog okruženja. Visual Basic, za razliku od svog prethodnika Basic-a ima na raspolaganju veoma jednostavne i moćne alate za kreiranje ugodnog korisničkog okruženja. Čak i osnovne alatke koje nudi Toolbox omogućavaju ispunjavanje većine uslova neophodnih za kreiranje zadovoljavajućeg okruženja. Sve kontrole na Toolbox-u su intuitivne, korištene u svim Windows aplikacijama i što je najbitinije sve su spremne za korištenje. Dovoljno je samo da se postave na formu i da se podese neki osnovni parametri i kontrole se mogu koristiti. U ovom dijelu će se pokazati neki osnovnni elementi grafičkog okruženja i kako se koriste u fazi dizajniranja. Form Koristi se kao podloga za smještaj svih ostalih kontrola koji pripadaju jednoj logičkoj cjelini i koji se pojavljuju kao zaseban prozor u okviru jednog programa. Kao što je već ranije rečeno u osnovi postoje dvije osnovne vrste formi:

- Obični form i - MDI form.

U jednom projektu može da bude samo jedna MDI forma i ona služi isključivo kao kontajner za sve ostale forme (forme-djeca). Obična forma posjeduje osobinu MDIChild koja određuje da li će se posmatrana forma u programu pojavljivati samostalno (MDIChild=False) ili će se pojavljivati unutar MDI Forme (MDIChild=True).

Page 17: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

19

Potrebno je napomenuti da se na MDI Formu ne mogu direktno postaviti nikakve kontrole osim: PictureBox-a, Timer-a i kontrole Data. Postavljanje kontrola moguće je samo indirektno korištenjem PictureBox-a u koji se onda mogu postavljati ostale kontrole. Najčešće se ova tehnika koristi za postavljanje različitih toolbar-ova na MDI Formu. Osnovna svojstva (properties) koje treba podesiti za ovu vrstu objekta su:

- Name, naziv objekta, najbitnija odrednica jer se za pozivanje bilo koje osobine forma u programskom kodu mora koristiti naziv objekta (kontrole). Napomena: Najčešće se naziv objekta / kontrole sastoji iz dva dijela:

1. prefiksa koji odgovara vrsti kontrole i 2. dijela naziva koji asocira na svrhu kontrole.

Standardni prefiks za objekat Form je frm i strogo se preporučuje da se uvijek koristi kod davanja naziva za ovaj objekat. Nastavak u nazivu forma, a koji se može sastojati i od više riječi (bez razmaka), trebalo bi da se uvijek definira tako da svaka riječ počinje sa prvim velikim slovom, npr frmProracunNaponaLuka. Ovakav način davanja imena objektima / kontrolama je veoma koristan poslije tokom faze programiranja. Naime, tokom pisanje koda, u situacijama kada se poziva neki objekt / kontrola korištenjem njenog imena, izvodi se uvijek malim slovima, u prethodnom primjeru kodira se frmproracunnaponaluka. Nakon završetka ispisivanja reda programskog koda, pritiskom na tipku Enter, ukoliko je ispravno ispisano ime objekta / kontrole, Visual Basic automatski pretvara mala u velika slova na mjestima gdje je to ranije određeno nazivom objekta / kontrole, u prethodnom slučaju slova p, n i l se prevode u P, N i L što omogućava brzu kontrolu korišenja imena objekta / kontrole tokom faze pisanje programskog koda.

- BackColor, podešavanje boje pozadine forma. Standardna je Button Face

(&H8000000F&) za obični form, dok je za MDI Form to Application Workspace (&H8000000C&). Ukoliko to namjena programa specifično ne zahtijeva, ne preporučuje se suviše često mijenjanje boje pozadine pojedinih formi, a pogotovo ne velika šarolikost i veliki kontrasti.

- BorderStyle, podešavanje vrste granične linije forma i načina promjene veličine.

Podrazumijevana vrijednost je 2 – Sizable koja korisniku omogućava promjenu veličine dimenzija forma. Ostale vrijednosti koje mogu da se koriste:

o None – bez ikakve granice / granične linije o Fixed Single – sa graničnom linijom, ali nije moguće da se vrši promjena

veličine forma. U ovom slučaju kontrolna dugmad za Minimiziranje i Restore / Maksimiziranje nisu dostupna na title traci.

o Fixed Dialog, slično kao i Fixed Single o Fixed ToolWindow, slično kao i Fixed Single, uz razliku da ControlBox,

sličica lijevo od Captiona, natpisa na title traci, nije vidljiva. o Sizable ToolWindow, za razliku od Fixed ToolWindow-a, moguća je

promjena dimenzija forma korištenjem miša.

- Caption, natis na title traci forma. - DrawMode – Određuje način grafičkog prikazivanja na formi. Podrazumijevana

vrijednost je 13 – Copy Pen.

Page 18: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

20

- DrawStyle – Definira se vrsta linija za grafičke objekte. DrawWidth – Definira

se širina linija grafičkih objekata. - Font – Izbor vrste, boje i veličine korištenog fonta na samoj formi. - Height i Width – Visina i širina forma. - HelpContextID – Broj reference u help datoteci. Svako poglavlje u help

datotekama posjeduje jedinstveni identifikator – ContextID. Prilikom pritiska na tipku F1 trenutno aktivna kontrola ili form (ona kontrola ili form koji u tom trenutku imaju fokus), poziva help datoteku i prikazuje poglavlje koje ima ContextID jednak broju koji se nalazi definiran u osobinama posmatranog objekta / kontrole. Pretpostavlja se da postoji odgovarajuća help datoteka, u suprotnom se ništa ne događa.

- ControBox, MaxButton i MinButton – Određuje se

da li će form da ima ControlBox, sličicu sa opcijama (Restore, Move, Size, Minimize, Maximize i Close) u gornjem lijevom uglu, te opcije za maksimiziranje odnosno minimiziranje forme (sličice u gornjem desnom uglu forme).

Slika 2.1 – ControlBox

- Moveable – svojstvo kojim se određuje da li korisnik uopće može pomijerati

formu.

- MDIChild – Određuje se da li je forma sastavni dio postojeće MDI forme (True) ili se forma pojavljuje kao samostalan objekt van MDI forme - kontejnera.

- MousePointer – Omogućava definiranje pokazivanja miša u trenucima kada se

pokazivač nalazi iznad forme. Ukoliko se za svaku kontrolu koja se nalazi na formi ne definiraju posebne vrijednosti ove osobine onda je pokazivač identičan iznad forme i iznad kontrola.

- ScaleMode – Određuje se mjerna jedinica koja će se korititi za form i za sve

kontrole na formu. Podrazumijevana mjerna jedinica je Twips, što predstavlja 1/20 dio jednog inča (25.4 mm).

- ShownInTaskBar – Određuje se da li će se prilikom aktiviranja i prikazivanja

forma pojaviti kartica koja označava taj form na TaskBar-u. U slučaju kada je forma MDIChild onda se kartica bez obzira na sve ne pojavljuje na TaskBar-u.

- Left i Top – Definira se položaj forma u odnosu na koordinatni početak koji

polazi iz gornjeg desnog ugla monitora.

- Visible i Enabled – Kontrole kojima se može onemogućiti prikaz forme (Visible = False) odnosno kojom se može prikazati forma ili se može onemogućiti svaki rad sa formom jer postaje neaktivna (Enabled = False) iako je vidljiva.

Page 19: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

21

- WindowState – Omogućava se inicijalni prikaz forme u 0 - normalnom načinu

kako je to definisano osobinama Height, Width, Left i Top, odnosno pomoću osobine StartUpPosition, 1 - minimiziranu na TaskBar-u ili 2 - maksimiziranu preko cijelog ekrana.

Kontrole Najbitnija odrednica svake kontrole je njen naziv (Name). Na isti način kao što je to pokazano u slučaju formova, i kod kontrola se preporučuje slijediti određena pravila kod davanja imena, prije svega se to odnosi na korištenje odgovarajućih prefiksa. U Tabeli 2.1 date su preporuke za davanje prefiksa za najčešće korištene kontrole u Visual Basic-u. Tabela 2.1 – Prporuke za korištenje prefiksa u davanju imena kontrolama Oznaka kontrole Naziv kontrole Prefiks

ComboBox cbo

Check Box chk

Command Button cmd

Data dat

Directory List Box dir

Drive List Box drv

File List Box fil

Frame fra

Horizontal Scroll Bar hsb

Image img

Label lbl

Line lin

List Box lst

Option Button opt

Picture Box pic

Shape shp

Timer tmr

Text Box txt Vertical Scroll Bar vsb

OLE Contqiner ole

Page 20: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

22

Kontrole mogu da budu i indeksirane. To znači da se na jednom formu, za više, obično kontrola iste vrste, koristi isto ime, pri čemu se kontrole razlikuju u osobini Index. Na ovaj način se može formirati grupa (niz) kontrola koje se razlikuju samo u brojčanoj vrijednosti Index-a što može biti kasnije tokom faze programiranja veoma korisno, npr. prilikom korištenja u različitim programskim petljama. Zajedničke osobine gotovo za sve kontrole odnose se na definiranje izgleda i položaja na formu. Za definiranje veličine kontrola podešavaju se svojstva Height (visina) i Width (širina). Podrazumijevana mjerna jedinica u Visual Basicu je twips (dvadeseti dio jednog inča), pa se i vrijednosti za visinu i širinu daju u twips-ovima. U cilju dizjaniranja što profesionalnijeg izgleda potrebno je koristiti u cijelom programu što je moguće standardnije vrijednosti za visine i širine. Kao primjer može poslužiti kontrola CommandButton, koja se najčešće koristi za potvrdu unosa podataka ili pokretanje odgovarajućih aktivnosti. Dimenzije kontrole bi trebalo da su jednoobrazne u cijelom programu, odnosno na svim formama koje se koriste. U slučaju korištenja mjerne jedinice Twips preporučuje se visina između 350 i 400, a širina između 1000 i 1200. Položaj na formi se definira osobinama Left i Top. Vrijednost Left definira udaljenost lijevog ruba kontrole u odnosu na lijevi dio forma, dok se pomoću vrijednosti Top određuje udaljenost gorenjeg ruba kontrole od gornjeg ruba forma. Potrebno je biti oprezan sa mijenjanjem vrste, veličine i boje korištenih fontova jer to može da bude neprofesionalno. Preporuka je da se koriste standardni fontovi kao što je npr. MS Sans Serif, veličine 8. Pomoću opsobine TabStop se određuje da li neka kontrola može dobiti fokus korištenjem tipke Tab na tastaturi. Podrazumijevana vrijednost ove osobine za sve kontrole je True, što označava da svaka kontrola može da dobije fokus jednostavnim korištenjem tipke Tab. Redoslijed prebacivanja fokusa sa jedne na drugu kontrolu se definiše pomoću osobine TabInex. Svaka kontrola na jednoj formi mora da ima jedinstvenu brojčanu vrijednost ove osobine. Prilikom učitavanja i prikazivanja forme, kontrola sa najnižim TabIndex-om, (0 je najmanji broj koji se može pripisati ovoj osobini), preuzima fokus na sebe. Korištenjem tipke Tab na tastaturi fokus prelazi na slijedeću kontrolu koji ima slijedeći redni broj i tako redom, naravno pod uslovom da je osobina TabStop = True. Skrivanje kontrole na formu može da se omogući korištenjem osobine Visible. Postavljanjem vrijednosti False ove osobine za neku kontrolu na formi omogućava nestajanje kontrole sa forme. Drugi, češće korišteni način, da se onemogući pristup kontroli je korištenje osobine Enabled. Postavljanjem vrijednosti ove osobine na False kontrola ostaje vidljiva na formi, ali pristup kontroli više nije moguć, niti pomoću miša niti pomoću tastature. Pristupne tipke Pojedine kontrole koje imaju svojstvo Caption (natpis) mogu iskoristiti svojstvo brzog pristupa, dobijanja fokusa i promjene vrijednosti korištenjem kombinacije ALT tipke i jedne od tipki koja se definira za svaku kontrolu posebno. Primjer kontrola koje imaju osobine Caption su CommandButton, CheckBox i OptionButton.

Page 21: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

23

Za omogućavanje ovog brzog pristupa dovoljno je u natpisu (Caption-u) bilo koje od kontrola iskoristiti jedno jedinstveno slovo ispred kojeg se upiše znak & (ampersand, and). Na ovaj način slovo ispred kojeg se upiše ampersand, ispisuje se sa crticom ispod. Na primjer u slučaju CommandButton-a sa natpisom OK, ako se želi brzi pristup kombinacijom tipki ALT + O potrebno je u osobini Caption unijeti slijedeće: &OK čime se na kontroli ispisuje OK, (podvučeno slovo O). Slično vrijedi i u slučaju kreiranja menija o čemu će biti riječi kasnije. Formatiranje U cilju jednostavnijeg podešavanja položaja pojedinih kontrola na formu moguć je prikaz zamišljene rešetke, Grid-a po cijeloj površini forma koja omogućuje pomjeranje kontrola u koracima koje određuje korak rešetke. Zamišljena rešetka se grafički predočava mrežom tačaka koje imaju unaprijed definirana rastojanja pri čemu vertikalni i horizontalni razmak tačaka ne mora da bude jednak. Opcije za uključivanje, isključivanje i podešavanje rastojanja rešetke je moguće definirati na Tools – Options... na kartici General, slika 2.2

Slika 2.2 – Podešavanje zamišljene rešetke – Grid-a Uključivanje / isključivanje rešetke ostvaruje se preko Check Box- a „Show Grid“ koji se nalazi u okviru Form Grid Settings. Horizonatalno rastojanje tačaka rešetke se podešava u polju Width, a vertikalno u polju Height. Numerička rastojanja za gustoću rešetke se zadaju u Twips-ima. Check Box „Align Controls to Grid“ se koristi za forsiranje pomjeranja kontrola prema položaju tačaka rešetke, tako da ukoliko se uključi ova opcija kontrole mogu zauzimati samo položaje koje određuje rešetka i u skokovima koji odgovaraju rastojanju između pojedinih tačaka rešetke. Za brzo i jednostavno raspoređivanje kontrola na formi može učinkovito da pomognu opcije na izborniku Format koje su prikazane na slici 2.3.

Page 22: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

24

Slika 2.3 – Izbornik Format Većina opcija sa liste prikazane na slici 2.3 ima dodatnu skupinu daljih opcija – alata pomoću kojih se brzo i efikasno mogu podesiti veličine i položaj kontrola na formu. U svakom koraku potrebno je prvo da se označe kontrole na koje se želi primjeniti neki od alata te nakon toga odabrati alat / aktivnost za formatiranje. Označavanje kontrola se najbrže ostvaruje tako što se grupa kontrola označi prevlačenjem miša uz pritisnutu lijevu tipku.

Opcije Align omogućavaju poravnavanje označenih kontrola i to tako da se poravnaju: lijeve strane (Lefts), po vertikalnoj sredini (Centers) i desne strane (Rights), zatim gornji rubovi (Tops), po horizontalnoj srednini (Middles) i donji rubovi (Bottoms), te na kraju moguće je poravnavanje po tačkama zamišljene rešetke (to Grid). Slika 2.4a – Međusobnom poravnavanje kontrola

Opcije Make Same Size omogućavaju brzo podešavanje identičnih veličina više kontrola i to širine (Width), visine (Height) odnosno obje dimenzije (Both). Slika 2.4b – Podešavanje dimenzija više kontrola

Page 23: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

25

Opcije Horizontal i Vertical Spacing omogućavaju podešavanje međusobnog rastojanja između više označenih kontrola. Opcije Make Equal će razmaknuti kontrole tako da su razmaknute međusobno na jednaka rastojanja, Increase i Decrease će povećati odnosno smanjiti međusobno rastojanje za vrijednost definiranu gustinom tačaka zamišljene rešetke, dok će opcija Remove da ukloni rastojanja između kontrola tako da se početak jedne kontrole podudara sa krajem druge itd. Slika 2.4c – Podešavanje rastojanja između kontrola

Opcije Center in Form sadrže dvije mogućnosti Horizontally i Vertically pomoću koji se može kontrola ili više njih pozicionirati u horizontalni odnosno vertikalni centar forma. Opcije Order omogućavaju hijerarhijski raspored kontrola, stavljanje jedne kontrole na drugu Bring to Front ili obratno Send to Back. Nakon što se kontrole razmjeste na formu u zadovoljavajućem rasporedu,uključivanje opcije Lock Controls će onemogućiti slučajno pomjeranje bilo koje kontrole na formu što nekada može da bude veoma korisno. Opcija se obično koristi na kraju faze formatiranja kada se ne želi više mijenjati položaj kontrola. Podešavanje osobina u fazi rada programa Sve do sada rečeno odnosilo se na podešavanje osobina i formatiranje u tzv. design fazi. Promjena osobina bilo koje kontrole ili forma, pored ovoga, može da se izvrši takođe i tokom faze rada (korištenja) programa (runtime). U ovu svrhu potrebno je da se osobine mijenjaju i podešavaju korištenjem programskog koda. Tokom rada, osobine kontrola se mogu mijenjati posebnim naredbama u programskom kodu. Ovo se postiže naredbama koje odgovarajućim svojstvima pridružuju odgovarajuće vrijednosti. Principijelno naredna je u obliku:

nazivKontrole.osobina = vrijednost Naziv kontrole i osobina se uvijek odvajaju tačkom. Izbornici / Meniji Dodavanje, mijenjanje i podešavanje izbornika / menija na formu se može lako uraditi korištenjem Menu Editora koji se otvara izborom istoimene opcije na izborniku Tools. Da bi opcija bila dostupna potrebno je da bude aktivan design prikaz forma na kome se žele izgraditi izbornici / meniji. Na slici 2.5 prikazan je prozor Menu Editor-a.

Page 24: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

26

Slika 2.5 - Menu Editor Za dodavanje novog izbornika / menija potrebno je definirati slijedeće elemente: Caption - Naziv izbornika / menija odnosno opcije koje se pojavljuje na listi opcija izbornika / menija. Linija razgraničenja u listi opcija se formira na način da se u polje Caption unese crtica "-". Name - Naziv izbornika / menija odnosno opcije. Naziv se koristi samo za pristup event proceduri izbornika / menija u programskom kodu, odnosno za pozivanje kontrole i ne pojavljuje se nigdje na meniju ili opciji menija tokom faze korištenja programa. Index - Omogućava kreiranje grupe izbornika / menija sa istim imenom koje se razlikuju u Indeks-u. Shortcut - Kombinacija tipki za pristup opciji izbornika / menija. Checked - Omogućava pojavljivanje Check Box-a lijevo od naslova opcije u izborniku / meniju. Enabled - Omogućava da se izbornik / meni ili opcija na izborniku / meniju pojavi ali i da bude nedostupan za rad. Visible - Omogućava pojavljivanje odnosno skrivanje izbornika / menija ili opcije na izborniku / meniju. WindowList - Omogućava pojavljivanje u izborniku / meniju otvorenih MDI Child formi u jednoj MDI aplikaciji. Desna Strelica - Pomjera selektovani izbornik / meni desno, odnosno opciju jedan nivo niže u hijerarhijskoj strukturi svaki put kada se klikne na strelicu. Moguće je definirati maksimalno 4 podnivoa u sastavu izbornika / menija. Svaka uvučena stavka predstavlja listu opcija ili pod-menija stavke koja je hijerarhijski manje uvučena i nalazi se iznad nje u listi.

Page 25: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

27

Lijeva Strelica - Pomjera selektovani izbornik / meni odnosno opciju jedan nivo više svaki put kada se klikne na strelicu. Strelica gore - Pomjera selektovani izbornik / meni odnosno opciju jedno mjesto gore, zadržava nivo opcije. Strelica dole - Pomjera selektovani izbornik / meni jedno mjesto dole, zadržava nivo opcije Next - Pomjera selekciju na slijedeću liniju u listi izbornika / menija. Insert - Insertuje slobodnu liniju iznad označenog izbornika / menija u listi izbornika / menija Delete - Briše trenutno označenu liniju u listi izbornika / menija. U donjem dijelu prozora Menu Editor nalazi se hijerarhijska lista svih definiranih izbornika / menija u takozvanom Menu List-u. Kao primjer pokazat će se izgradnja jednostavnog izbornika / menija (File) sa standardnim opcijama (New, Open, Save, Save As.., Print i Exit). Bit će korištena jedna MDI Forma i dvije forme Test1 i Test2 koje su MDI djeca-forme. Slično kao kod kontrola i objekata i kod davanja imena izbornicima / menijima i opcijama na izbornicima / menijima dobro je slijediti određenu logiku. Korištenje prefiksa u davanju imena se strogo peporučuje. Pri ovome se preporučuje stavljanje prefiksa men ispred naziva top-level izbornika / menija te prefika mi (menu item) ispred opcija iz liste za svaki top-level izbornik / meni. U listu izbornika / menija su dodane slijedeći podaci: - Meni File, sa nazivom menFile. Položaj izbornika / menija u listi menija je krajnje lijevo i to označava da se radi o top-level izborniku / meniju, odnosno izborniku / meniju koji se nalazi na traci sa izbornicima / menijima i koji ima set vlastitih opcija. Opcija WindowList je uključena samo za ovaj top level što omogućuje prikaz trenutno otvorenih formova-djece u okviru izbornika / menija tokom faze korištenja programa. Ukoliko nema aktivnih formova-djece lista je prazna. - Opcija New, sa nazivom miNew, te sa uključenim Shortcut-om: CTRL+N. - Opcija Open, sa nazivom miOpen, te sa uključenim Shortcut-om: CTRL+O. - Linija razgraničenja, upisuje se jednostavno crtica "-" u Caption i daje se proizvoljno, jedinstveno ime u polje Name. - Opcija Save, sa nazivom miSave, te sa uključenim Shortcut-om: CTRL+S. - Opcija Save As..., sa nazivom miSaveAs, bez Shortcuta-a. - Linija razgraničenja, upisuje se jednostavno crtica "-" u Caption i daje se proizvoljno, jedinstveno ime u polje Name. - Opcija Print, sa nazivom miPrint, te sa uključenim Shortcut-om: CTRL+P - Linija razgraničenja, upisuje se jednostavno crtica "-" u Caption i daje se proizvoljno, jedinstveno ime u polje Name. - Opcija Exit, sa nazivom miExit, te sa uključenim Shortcut-om: CTRL+E.

Page 26: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

28

Sve opcije u okviru menija, osim top-level menija, su pomaknute za jedno mjesto udesno korištenjem desne strelice i time je označena pripadnost opcija meniju ispod koga se hijerarthijski opcije nalaze. Izgled Menu Editor-a, sa podacima podešenim na prethodno objašnjeni način je prikazan na slici 2.6.

Slika 2.6 - Menu Editor za izbornik File Izbornik / meni File dobijen na prethodno opisani način prikazan je na slici 2.7.

Slika 2.7 - Izgled izbornika / menija File

Page 27: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

29

S obzirom da u programu nije bila otvorena niti jedna forma-dijete to se na izborniku / meniju File nije pojavila lista otvorenih formi-djece. Na slici 2.8 prikazan je izgled izbornika / menija File nakon što su učitane i prikazane dvije forme-djeca (Test1 i Test2). Uočavaju se dodatne opcije u listi, te uz formu Test2 pokazan je check box koji označava da je ta forma trenutno aktivna.

Slika 2.8 - Izbornik / meni File sa listom otvorenih prozora Svaki izbornik / meni i opcija iz liste predstavlja kontrolu na formi. Stoga svaki izbornik / meni i opcija iz liste automatski dobijaju svoje mjesto u listi kontrola, pa je za svaku ovu kontrolu moguće definirati prograsmki kod unutar vlastite event procedure. Izbornik / meni i opcije imaju definiranu samo jednu event proceduru: Click. Unutar ove event procedure potrebno je upisati programski kod koji se izvršava svaki put kada korisnik odabere neku od opcija iz izbornika / menija.

Page 28: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

30

3. OSNOVE PISANJA PROGRAMSKOG KODA

Uvod Nakon planiranja i izrade grafičkog okruženja, podešavanja osobina kontrola i formatiranja istih, naredni korak u izradi programa u Visual Basic-u je pisanje programskog koda. Pojedinačni dijelovi programskog koda, procedure, u krajnjem određuju koje sve aktivnosti je moguće izvršiti korištenjem programa. Iako je pisanje programskog koda, vjerovatno najzahtjevniji dio projekta, Visual Basic-ove event procedure omogućavaju jednostavnije organiziranje i kontrolu programskog koda. Prozor za pisanje programskog koda – View Code Dva su najčešće korištena načina otvaranja prozora za pisanje programskog koda:

- Korištenjem Project Explorer-a. Potrebno je prvo označiti form u kojem se želi kreirati nova procedura. Nakon izbora forma, potrebno je kliknuti na View Code button u gornjem lijevom uglu Project Explorer-a, kao što je to prikazano na slici 3.1.

- Dvostukim klikom na kontolu za koju se želi kreirati nova event procedura (takođe je moguće označiti kontrolu i pritisnuti funkcijsku tipku F7)..

Slika 3.1 – Aktiviranje prozora za pisanje programskog koda Prilikom prvog otvaranja prozora za pisanje koda Visual Basic otvara podrazumijevanu (default) event proceduru koja ovisi od odabrane kontrole te automatski dodaje prvu i zadnju liniju programskog koda. Ukoliko već postoji napisan programski kod unutar neke od event procedura onda se otvara jedna od procedura sa programskim kodom. Kretanje između event

Page 29: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

31

procedura se vrši jednostavnim odabirom event procedure iz padajuće liste koja se nalazi u gornjem desnom uglu prozora za upis programskog koda.

Slika 3.2 – Izbor event procedure za kontrolu cmdOK Na slici 3.2 prikazan je primjer sa event procedurama za kontrolu cmdOK, na formu frmStart, projekta Test, (podaci se mogu uočiti na title bar-u prozora). Event procedure Event procedure omogućavaju da program na unaprijed određeni način odgovori na aktivnosti koje korisnik programa izvodi. Ako korisnik klikne na komandno dugme, odabere jednu od ponuđenih opcija, promjeni postavku ili upiše neki podatak, programski kod unutar odgovarajuće event procedure određuje odgovor programa na tu aktivnost korisnika. Poznavajući ovo, moguće je jednostavno iskoristiti mogućnosti event procedura za kreiranje programa. Opći koraci koji su neophodni za pisanje programskog koda unutar event procedure su slijedeći:

- odrediti objekat / kontrolu za koju se želi programirati aktivnost programa, - odrediti događaj (event) za koji se očekuje da se dogodi nad posmatranim

objektom / kontrolom i - napisati programski kod koji određuje aktivnost programa kada korisnik prouzroči

taj događaj. Naziv event procedure za neki određeni objekat / kontrolu je kombinacija dvije ključne riječi:

- naziv objekta / kontrole - naziv koji Visual Basic daje određenom događaju (event-u).

Ove dvije ključne riječi su razmaknute donjom crtom ( _ ), pa potpuni naziv event procedure je određen kao:

Page 30: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

32

NazivKontrole_NazivDogađaja Na primjer, neka se na formi nalazi komandno dugme (CommandButton) za potvrdu unosa podataka OK čiji naziv je, u skladu sa prethodno usvojenom konvencijom, cmdOK. Osnovna event procedura za ovu kontrolu je Click. Programski kod napisan unutar ove procedure izvršava se ukoliko korisnik tokom izvršavanja programa klikne na kontrolu (komandno dugme). Puni naziv event procedure za ovu kontrolu u posmatranom slučaju je: cmdOK_Click. Opće procedure / funkcije Pored procedura koje se izvršavaju usljed pokretanja nekog događaja odnosno izvršavanja aktivnosti od strane korisnika (event procedure) unutar jednog forma mogu da se definiraju i opće procedure odnosno funkcije koje se mogu programski pozivati iz bilo koje druge procedure / funkcije. Kreiranje općih procedura i funkcija u okviru jednog forma moguće je ostvariti na dva načina:

- pomoću prozora Add Procedure... koji se nalazi na izborniku Tools i koji je aktivan samo kada je otvoren prozor za upisivanje programskog koda, slika 3.3.

- direktnim upisom procedure u (General) sekciju u prozoru za upisivanje programskog koda, slika 3.4.

Slika 3.3 – Dodavanje općih procedura / funkcija Za dodavanje nove opće procedure unutar forma potrebno je odabrati naziv za proceduru koji se upisuje u text-box Name. Kod imenovanja procedura dobro je slijediti princip sličan kao kod imenovanja kontrola i objekata te korištiti prefikse ispred opisnog naziva procedura. Uobičajeno je da se ispred naziva procedure dodaje prefiks proc, a ispred funkcije fun. Za kreiranje procedure potrebno je u okviru Type odabrati opciju Sub, a za funkciju opciju Function. Ostale dvije vrste procedura koje služe za definiranje novih eventa odnosno događaja izlaze iz dosega ovog kratkog uvoda u Visual Basic. U okviru Scope definira se područje važenja procedure / funkcije, pri čemu su Public procedure dostupne za korištenje na nivou cijelog projekta, dok su procedure označene sa Private dostupne samo u matičnom formu, tj. mogu se samo pozivati iz drugih procedura unutar istog forma.

Page 31: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

33

Puni naziv procedure predstavljen je u obliku:

NazivForma.NazivProcedure odnosno

NazivForma.NazivFunkcije Pozivanje procedure / funkcije iz druge procedure, event procedure ili funkcije unutar istog forma moguće je korištenjem samo naziva procedure / funkcije bez korištenja naziva forma. Ovo važi za obje vrste i Public i Private procedura / funkcija. Međutim, pozivanje procedure / funkcije koja se nalazi u jednom formu iz nekog drugog forma zahtijeva korištenje punog naziva procedure: NazivForma.NazivProcedure / NazivForma.NazivFunkcije. U ovom slučaju je moguće pozvati samo Public procedure / funkcije.

Slika 3.4 – Sekcija General Kreiranje procedura odnosno funkcija moguće je i manuelnim unosom naziva procedure u sekciji (General) – (Declarations). Na primjer, ako se želi dodati procedura procTest, potrebno je upisati slijedeće: Public Sub procTest te nakon toga pritisnuti tipku Enter. Visual Basic će da doda otvorenu i zatvorenu zagradu „()“ nakon naziva procedure te će dodati End Sub liniju programskog koda u drugoj liniji ispod naziva procedure. Dobit će se slijedeće:

Public Sub procTest()

End Sub Programski kod je potrebno, kao što je već rečeno, dodati između naziva procedure i linije End Sub koja označava kraj procedure. U slučaju dodavanja funkcije potrebno je umjesto riječi Sub koristiti riječ Function, tada će se umjesto End Sub pojaviti End Function.

Page 32: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

34

U lijevom gornjem uglu prozora za unos programskog koda nalazi se padajuća lista u kojoj se nalazi lista svih postojećih kontrola na formu, objekt Form i sekcija (General). Svaka kontrola je predstavljena svojim imenom koji je prethodno tokom faze dizajniranja zadan u okviru osobina svake od kontrola korištenih na formu. Potrebno je uočiti da se u listi objekat form, iako posjeduje vlastito ime, određeno tokom faze dizajniranja objekata, uvijek pojavljuje samo kao Form, a nikada pod definiranim imenom. Inače se unutar objekta form može napraviti refenenca na sam objekt korištenjem ključne riječi ME. Izborom bilo koje kontrole, ili form-a kao objekta, u desnom gornjem uglu formira se spisak mogućih događaja (eventa). Za svaku vrstu kontrole postoji jedinstven, ali donekle različit spisak mogućih eventa. Neki od event-a se pojavljuju u više vrsta kontrola dok su neki specifični za određene kontrole. Naprimjer, za objekt Form, spoecifične event procedure su Load i Unload koje se izvršavaju prilikom učitavanja odnosno zatvaranja forma. Sekcija (General) služi za dvije namjene:

- za smještaj varijabli koje imaju područje važnosti u cijelom području programskog koda u okviru form-u, u okviru sekcije (Declarations).

- za smještaj općih procedura / funkcija. Izborom sekcije (General) u listi u desnom gornjem uglu formira se spisak svih kreiranih općih procedura / funkcija te sekcija (Declarations) koja sadrži listu varijabli koje su deklarirane za korištenje na nivou programskog modula aktivnog forma. Parametarske procedure U nazivima općih procedura odnosno funkcija, kako se to moglo vidjeti, dodaju se na kraju naziva procedure / funkcije zagrade (). Ukoliko unutar zagrada nema ništa, tj u deklaraciji procedure / funkcije postoji samo otvorena i zatvorena zagrada, radi se o procedurama bez parametara odnosnu funkcijama bez parametara. Definiranjem parametara unutar zagrada definiraju se tzv. parametarske procedure odnosno funkcije. Uobičajeni način proslijeđivanja parametata u Visual Basicu, slično kao i u drugim programskim jezicima, jeste njihovo nizanje u popis u kojem su međusobno odvojeni zarezima. Na primjer, ako se želi kreirati javna procedura u kojoj se žele koristiti vrijednosti osnovnih RGB boja onda bi zaglavlje procedure moglo da izgleda ovako:

Public Sub procBojaPozadine(paramRed, paramGreen, paramBlue) Parametri se mogu definirati i kojeg su tipa, a ako se ostavi bez definicije tipa onda se smatra da su tipa Variant. O tipovima varijabli bit će riječi kasnije. Uz pretpostavku da pomenuta procedura podešava boju objekta picTest na formu koji ima naziv FormA, onda bi kompletna procedura mogla da ima slijdeći izgled:

Public Sub procBojaPozadine(paramRed, paramGreen, paramBlue) FormA.picTest.BackColor=RGB(paramRed, paramGreen, paramBlue) End Sub

Page 33: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

35

Pozivanje procedure zahtijeva definiranje vrijednosti parametara koji figuriraju u proceduri. U prethodnom primjeru svaki puta kada se pozove procedura procBojaPozadine potrebno je da se proslijede numeričke vrijednosti koje se pridružuju parametrima definiranim u nazivu funkcije i to baš tim redom, npr. procBojaPozadine 255, 0, 0 Ova naredba će da izvrši promjenu boje pozadine kontrole picTest u crveno. Pozivanjem procedure, proslijeđivanjem samo vrijednosti, zadata je vrijednost parametra paramRed od 255, dok su parametri paramGreen i paramBlue dobili vrijednosti 0. Prilikom pozivanja procedure, na ovaj način, uvijek mora da se pazi na poredak parametara i proslijeđenih vrijednosti i mora da se proslijedi tačno onoliko vrijednosti koliko ima parametara. Postoj način da se i ne pazi na poredak parametara prilikom pozivanja procedure / funkcije. Taj način zahtijeva de se eksplicitno povežu nazivi parametara i vrijednosti koja se proslijeđuje pojedinom parametru. U prethodnom primjeru isti učinak bi se dobio slijedećim pozivom procedure: procBojaPozadine paramGreen:=0, paramBlue:=0, paramRed:=255 Na ovaj način nije bitan poredak (parametar paramRed iako je u deklaraciji procedure nalazi na prvom mjestu u pozivu procedure nalazi se na zadnjem) jer se prilikom pozivanja procedure eksplicitno zadaju vrijednosti parametara. Potrebno je i dalje da se za svaki parametar zadaju vrijednosti inače će nastupiti greška. Ovdje se dolazi do situacije da je potrebno da se omogući kreiraje parametarskih procedura / funkcija koje mogu biti definirane na način da nije uvijek neophodno da se proslijede vrijednosti za sve paramete. Ovakve procedure / funkcije je moguće definirati i u tom slučaju se radi o procedurama / funkcijama sa neobaveznim (Optional) parametrima. Primjer deklaracija parametarske procedure sa neobaveznim parametrima bi bila slijdeća:

Public Sub procBojaPozadine(Optional paramRed, Optional paramGreen, Optional paramBlue) Deklaracijom procedure na ovaj način omogućeno je da se proceduri proslijede vrijednosti za samo neki od parametara. Prvo pravilo je da se modifikator Optional može proslijediti samo parametrima tipa Variant. Drugo pravilo kaže da se u deklaraciji procedure ili funkcije u kojoj se nalaze neobavezni parametri oni se moraju u nizu pojavljivati na kraju. Dakle nije moguće deklariranje obaveznog parametra nakon neobaveznog. Još dvije ključne riječi mogu da se nađu u parametarskim listama: ByVal i ByRef. Ove dvije ključne riječi određuju mehanizam proslijeđivanja vrijednosti parametrima ukoliko se proslijeđuju vrijednosti varijabli u pozivu procedure. Ukoliko se ispred parametra iskoristi ključna riječ ByVal, parametar procedure će dobiti samo vrijednost varijable u tom trenutku. Svaka promjena parametra unutar procedure neće imati uticaja na vrijednost varijable koja je pridružena parametru prilikom poziva procedure / funkcije. Kada se kontrola izvršavanja vrati nazad iz procedure / funkcije varijabla ima istu vrijednost koju je imala prilikom pozivanja procedure / funkcije.

Page 34: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

36

Nasuprot ovome, ako se iskoristi ključna riječ ByRef u deklaraciji procedure / funkcije onda će se, u slučaju proslijeđivanja vrijednosti varijable parametru ispred kojeg je iskorištena ova ključna riječ stvari bitno promijeniti. Svaka promjena vrijednosti posmatranog parametra uzrokovat će i direktnu promjenu vrijednosti varijable koja je proslijedila inicijalnu vrijednost tom parametru. Nakon završetka procedure / funkcije varijabla će imati vrijednost koju je imao parametar na kraju izvršavanja procedure a koja može da se bitno razlikuje od vrijednosti prilikom poziva procedure. Funkcije Kao i parametarske procedure i funkcije mogu da sadržavaju parametre: Function NazivFunkcije (paramA as TypeA, paramB as TypeB...) AS TipFunkcije 'Naredbe u okviru proračuna vrijednosti funkcije End Function Funkcija može biti deklarirana, s obzirom na njen doseg (scope) kao javna (Public) ili lokalna (Private) u ovisnosti od potrebe da se funkcija koristi u okviru cijelog projekta ili samo u jednom modulu. Funkcija ima osobinu koja je bitno razlikuje od procedure: ona izračunava određenu vrijednost, poprima tu vrijednost te je pridružuje varijabli iz koje je funkcija pozvana. Funkcija vraća tip onakav kakav je zadan u deklaraciji funkcije. Ako se u deklaraciji funkcije izostavi naglašavanje tipa funkcije onda funkcija vraća vrijednost tipa Variant. Programski kod unutar funkcije obično negdje pri kraju sadrži naredbu u kojoj se na lijevoj strani nalazi naziv funkcije, a na desnoj izraz koji može poprimiti odgovarajuću vrijednost i koji je tipa kao i tip funkcije. Na tom mjestu se i izračunava dakle vrijednost funkcije, na primjer> Private Function NazivFunkcije(paramA As Byte) As Integer ... ‘Programski kod ... NazivFunkcije = izračunatiIzraz

End Function

Podatke funkcija prima preko argumenata koji su nabrojani u zaglavlju deklaracije funkcije. Na ovaj način funkcije predstavljaju moćno oruđe u rukama programera jer je potrebno da se samo jednom napiše programski kod koji se sa različitim parametrima poziva i time se dobijaju odgovarajući odgovori odnosno vrijednosti od strane funkcije za rayličite ulazne podatke. U Visual Basic-u funkcija se poziva preko izraza u kojem se na lijevoj strani nalazi odgovarajuća varijabla a na desnoj funkcija sa listom parametara koji su najčešće varijable, mogu biti i fiksne vrijednosti, ali uvijek moraju biti istog tipa kao što je to u naglašeno u deklaraciji funkcije: varijablaA = NazivFunkcije (argA, argB,...)

Page 35: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

37

Lista argumenata koji se proslijeđuju funkciji, za razliku kada se poziva parametarska procedura, moraju biti zatvoreni unutar zagrada. Funkcija se može pozvati i na način da se samo napiše naziv funkcije koja se poziva, dakle bez pridruživanja vrijednosti, nekoj varijabli, koju funkcija vraća. U tom slučaju izvršava se programski kod unutar funkcija, a izračunata vrijednost se odbacuje. Međutim, ovo je sasvim neprikladan način korištenja funkcija jer je ona prvenstveno namijenjena da izračuna vrijednost za određene parametre i tu vrijednost vrati varijabli. U ovakvom slučaju potrebno je koristiti proceduru umjesto funkcije. Načini prikaza procedura / funkcija Prozor za prikaz programskog koda može da prikazuje procedure u dva načina:

- Procedure View način u kome se prikazuje samo jedna procedura u jednom trenutku. Korištenjem tipki PageDown odnosno PageUp moguće je da se kreće od jedne do druge procedure unutar aktivnog forma.

- Full Module View, način u kome se u kontinuitetu prikazuju sve postojeće procedure unutar jednog forma. Na slici 3.5 prikazan je primjer izgleda prozora za ovaj način prikaza. Mogu se uočiti tri event procedure:

o cmdOK_Click za komandno dugme cmdOK i event proceduru - događaj koji nastupa kada korisnik klikne na dugme;

o Form_Load za form frmStart i to za event proceduru – događaj koja se izvršava kada se učita form te

o txtData_Change za polje za unos podataka txtData i to za event proceduru - događaj koja se izvršava svaki put kada korisnik promijeni neki podatak u kontroli.

Slika 3.5 – Full module view Između procedura može postojati horizontalna linija koja vizualno dijeli pojedine procedure, ako je uključena opcija Procedure Separator na kartici Editor u prozoru Options koji se nalazi na izborniku Tools, slika 3.6. Ovdje se takođe može definirati i podrazumijevani način prikaza procedura. Uključivanjem opcije Default to Full Module View za svaki form će podrazumijevana opcija prikaza biti Full Module View.

Page 36: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

38

Slika 3.6 – Tools – Options: Uključivanje opcija za prikaz Prelaz između jednog od dva spomenuta načina prikaza procedura moguće je i korištenjem preklopki u donjem lijevom uglu prozora za pisanje koda. Neke važniji događaji Kao što je već rečeno event procedure se imenuju po principu NazivKontrole_NazivDogađaja. Pri ovome je potrebno obratiti pažnju na činjenicu da ako se nakon upisivanja programskog koda unutar neke od event procedura promijeni naziv kontrole, Visual Basic više neće raspoznati prethodno napisane event procedure za tu kontrolu. Dakle, promjenom naziva kontrole neće se automatski promijeniti naziv event procedure. Srećom, postojeće procedure neće biti obrisane, ali će se podrazumijevati da se radi o općim, a ne o event procedurama pa je potrebno iskopirati postojeći programski kod nazad unutar novoimenovane event procedure. Važniji događaji (event-i) koji je potrebno poznavati i koji se često koriste kod objekta Form su slijedeći:

- Load, događaj koji se izvršava svaki put kada se unutar programa pozove prikaz forma. Događaj se izvršava u trenutku učitavanja podataka u memopriju računara o formu, prije negom što se prozor kojim je objekat grafički predstavlje uopće pojavi na ekranu.

- Activate, događaj koji nastupa nakon događaja Load, tj. nakon što se podaci o formu učitaju u memoriju i kada se grafički prozor koji predstavlja form pojavi na ekranu.

- Unload, događaj koji se aktivira u trenutku brisanja podataka o formu iz memorije računara, ali prije nego što je form nestao sa ekrana.

- Terminate, događaj nastupa nakon događaja Unload i to u trenutku kada form nestane sa ekrana.

Page 37: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

39

Za kontrolu tipa CommandButton najvažniji događaj za koji je potrebno napisati odgovarajući programski kod je:

- Click, Događaj nastupa svaki put kada korisnik klikne na kontrolu. Za kontrolu tipa TextBox koja služi za unos podataka od strane korisnika važni događaji su:

- Change, koji nastupa svaki put kada se promijeni neki podatak u kontroli. Potrebno je biti oprezan sa korištenjem jer se event procedura aktivira prilikom promjene samo jednog alfanumeričkog znaka.

- Validate, događaj koji je koristan u fazi ispitivanja ispravnosti unesenog podatka u kontroli. Parametar Cancel se koristi da se spriječi unos ili promjena koji ne odgovaraju postavkama za datu kontrolu. Davanje vrijednosti Cancel=True ukoliko unos nije ispravan onemogućava dalji rad u programu i zahtijeva ispravku pogrešno unesenog podatka.

- KeyDown, događaj koji se aktivira pritiskom na tipku tastature. Moguće je koristiti KeyCode broj za odabir aktivnosti u ovisnosti od pritisnute tipke. Parametar Shift se može iskoristit za provjeru da li je pritisnuta tipka Shift, ako je Shift=1, odnosno da li je pritisnuta tipka Ctrl, ako je parametar Shift=2.

- KeyPress, slično kao o KeyDown, aktivira se pritiskom tipke na tastaturi. - KeyUp, isto kao i KeyDown samo se aktivira nakon što se otpusti pritisnuta tipka

na tastaturi. .Za kontrolu tipa Picture koja se najčešće koristi za grafičke prikaze interesantna su tri događaja koja nastaju korištenjem miša i tipki na mišu:

- MouseDown je događaj koji se pokreće pritiskom tipke miša, MouseMove nastupa uvijek tokom pomicanja miša nad kontrolom dok event procedura MouseUp nastupa otpuštanjem tipke na mišu. U svakoj od ovih event procedura moguće je pomoću parametara kontrolisati:

o Da li je pritisnuta lijeva ili desna tipka miša, za što se koristi parametar Button. Vrijednost ovog parametra od 1 određuje lijevu tipku miša, dok 2 određuje desnu.

o Da li je pritisnuta tipka Shift odnosno tipka Control (Ctrl) a što se može odrediti pomoću parametra Shift koji poprima vrijednost 1 za pritisnutu tipku Shift i 2 za pritisnutu tipku Control (Ctrl).

o X i Y koordinate na kojima se nalazi pokazivač miša. Pri ovome se razmjera određuje na osnovu vrijednosti osobine ScaleMode, najčešće u Twips-ovima. Pri ovome koordinatni početak polazi iz gornjeg desnog ugla što znači da X koordinata raste od lijeve ka desnoj strani PictureBox-a dok Y koordinata raste od gornje prema donjoj strani kontrole.

Page 38: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

40

Message i Input box Često je potrebno prikazati različite poruke korisniku tokom faze korištenja programa. Da se ne bi kreirao poseban form sa porukom Visual Basic ima ugrađenu zgodnu i veoma korisnu osobinu: prozor za poruke, message box, (msgbox). Pozivanje prozora sa porukama je veoma jednostavno. U svom najjednostavnijem obliku sintaksa je slijedeća: MsgBox “Tekst poruke za korisnika!” Na ekranu će se prikazati prozor sa porukom prikazan na slici 3.7. Pored proslijeđivanja teksta poruke moguće je takođe upravljati i sa prikazom komandnih dugmadi (OK, Cancel, Yes, No...) te sa prikazom sličica koje odgovaraju vrsti poruke: informacija, upozorenje ili pak kritična greška.

Slika 3.7 – Message box Nešto malo komplikovanija sintaksa naredbe za prozor sa porukama je slijedeća: MsgBox “Tekst poruke za korisnika!”, Dugme1+Dugme2+Sličica Visual Basic nudi nekoliko vrsta dugmadi koja se mogu naći na prozoru sa porukama kao što su: OK (vbOKOnly), OK i Cancel (vbOKCancel), Yes i No (vbYesNo) itd. Isto tako moguće je definirati prozor sa informativnom porukom dodajući sličicu koja simbolizuje informaciju, dodajući u sintaksu poruke (vbInformation), upozorenje (vbExclamation) odnosno kritičnu pogrešku (vbCritical). Na primjer, sintaksa poruke u gornjem slučaju sa dugmadima OK i Cancel te sa sličicom koja simbolizuje informaciju bi bila slijedeća: MsgBox “Tekst poruke za korisnika!”, vbOKCancel+vbInformation Prozor koji se prikazuje na osnovu gore napisane komande je prikazan na slici 3.8.

Slika 3.8 – Message box Treći, opcionalni parametar koji se može proslijediti prilikom pozivanja message box-a je naslov koji se ispisuje na naslovnoj traci, title bar-u, prozora za poruke. U ovom slučaju sintaksa za message-box je slijedeća:

Page 39: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

41

MsgBox “Tekst poruke za korisnika!”, vbOKCancel+vbInformation, "Test" Ukoliko se ne unese treći parametar za title bar onda se na message box-u ispisuje naziv projekta (programa) koji se zadaje u Project Properties-u. Prozora za poruke može se koristiti i za traženje odluke od strane korisnika za dalje aktivnosti. U slučaju kada se na prozoru nalazi više od jednog dugmeta moguće je odrediti koje dugme je pritisnuto od strane korisnika, odnosno koju odluku je korisnik odabrao. Pritiskom na bilo koje ponuđeno dugme prozor se zatvara, a message box, slično kao i funkcija, vraća vrijednost koja ovisi od pritisnutog dugmeta. Vrijednost koju vrati message box može se pridružiti nekoj varijabli te se na osnovu vrijednosti te varijable može dalje odlučiti smjer izvršavanja programa. Sintaksa je slijedeća: msgResponse = Msgbox ("Poruka",vbYesNo + vbQuestion) U primjeru je sa msgResponse varijabla koja poprima vrijednost u ovisnosti od toga koje dugme je kliknuto na message box-u, Yes ili No u datom primjeru. Za ispitivanje se mogu koristiti konstante vbYes odnosno vbNo. U Tabeli su date vrijednosti koje funkcija MsgBox poprima u ovisnosti od pritisnutog dugmeta. U slučaju korištenja message box-a kao funkcije svi parametri moraju biti unutar zagrada. Tabela 3.1 - Vrijednosti funkcije msgbox Konstanta Vrijednost Dugme vbOK 1 OK vbCancel 2 Cancel vbAbort 3 Abort vbRetry 4 Retry vbIgnore 5 Ignore vbYes 6 Yes vbNo 7 No

Input Box se često može iskoristiti za upis određenog podatka od strane korisnika te pridruživanje te vrijednosti varijabli. Sintaksa komande za InputBox je slična sintaksi koja se koristi kod message box-a: inputData = InputBox "Tekst poruke","Naslov", inicijalnaVrijednost Prvi parametar ("Tekst poruke") se ispisuje na samom prozoru i služi da se korisniku objasni koja se aktivnost očekuje od njega. Parametar "Naslov" određuje ispis na naslovnoj traci (title bar-u) dok se sa parametrom inicijalnaVrijednost nudi vrijednost koja se prilikom pojavljivanja InputBox-a pojavljuje u polju za upis podatka. Primjer prozora tipa InputBox koji se pojavljuje usljed naredbe: InputBox "Upisite vrijednost", "Podatak", 50 prikazan je na slici 3.9.

Page 40: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

42

Slika 3.9 - Input Box Vrijednost koja se upiše u polje pridružuje se varijabli u naredbi za pozivanje InputBox-a, na primjer u slučaju naredbe: vrijednostX = InputBox "Upisite vrijednost", "Podatak", 50 vrijednost koju korisnik upiše pridružuje se varijabli vrijednostX. Provjera sintakse Tokom faze pisanja programskog koda Viual basic editor automatski provjerava sintaksu u svakoj liniji koda. Sintaksa, u programerskom smislu, se može definirati kao skup osnovnih gramatičkih pravila programskog jezika. To je format koji Visual Basic očekuje da bude poštovan u svakoj liniji programskog koda. Ako Visual Basic pronađe da nešto nije u redu u liniji programskog koda, pojavit će se dva neovisna događaja koja će sugerirati grešku: 1. Linija programskog koda koja je pogrešno napisana bit će prikazana crvenom bojom. 2. Prozor sa porukom o grešci će da se pojavi na ekranu, ukratko objašnjavajući u čemu je problem. Koristan način rješavanja problema usljed upisivanja pogrešne sintakse jeste korištenje Visual Basic Help-a. Zgodno je što se pomoć može pozvati samo sa jednim klikom. Potrebno je da se kursor postavi unutar ključne riječi koja se nalazi u liniji programskog koda sa greškom te da se pritisne funkcijska tipka F1. Visual basic prikazuje tekst u kome se objašnjava ispravna sintaksa za tu ključnu riječ. Ispravnost sintakse se takođe može pratiti tokom pisanja koda na način da se ključne riječi i nazivi varijabli pišu malim slovima. Nakon završetka pisanja linije programskog koda pritiskom na tipku Enter Visual Basic provjerava ispravnost korištene sintakse kao i korektno ispisivanje malih i velikih slova u ključnim riječima i nazivima varijabli. Sve ključne riječi i tipovi varijabli se ispisuju u plavoj boji sa prvim velikim slovom. U cilju provjere ispravnog upisivanja naziva varijabli, a pogotovo ako se daju duža opisna imena varijablama, obično sastavljena od dvije ili više riječi, potrebno je da se prva slovo svake riječi u deklaraciji varijable definira sa velikim slovom. Nakom pritiska na tipku Enter na kraju linije programskog koda, bivaju od strane Visual Basic-a pretvorena mala slova u velika, na isti način kao što je to definirano u deklaraciji varijable.

Page 41: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

43

Auto Member liste Prilikom pisanja programskog koda često će se desiti da se pojavljuje lista sa opcijama koje se mogu izabrati u datom trenutku. Na osnovu korištenih ključnih riječi u liniji programskog koda Visual Basic određuje koje dalje ključne riječi mogu da se nađu u toj liniji pa nudi listu mogućih opcija. Lista mogućih opcija se sastoji od ključnih riječi koje mogu da se nađu na tom mjestu, tipova varijabli, osobina itd. Ova opcija je veoma korisna prilikom pisanja programskog koda jer se automatski može pratiti ispravnost korištene sintakse. Da bi se pojavljivala lista opcija potrebno je da se uključi opcija Auto List Members na kartici Editor, okvir Code Settings, u prozoru Options koji se nalazi na izborniku Tools, slika 3.6. Duge linije programskog koda Još jedna važna odlika Visual Basic editora je da se često duge linije programskog koda mogu podijeliti u više, kraćih linija koda. Da bi se to ostvarilo potrebno je definirati prelaz sa jedne na drugu liniju koda. To se ostvaruje korištenjem donje crte (underscore character-a) (_) na kraju linije koda za koju se želi nastaviti pisanje u novoj liniji. Na kraju svake linije koda potrebno je koristiti ovaj znak za prelazak na novu liniju koda. Ovo, pored lakšeg pregleda programskog koda u Visual Basic Editoru, takođe može biti korisno za potrebe štampanja programskog koda jer omogućava mnogo bolju čitljivost na štampanoj verziji.

Page 42: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

44

4. VARIJABLE

Deklaracije varijbli Prije korištenja bilo koje varijable u programskom kodu preporuka je da se varijabla eksplicitno deklarira. Kontrola deklariranja varijabli je moguća korištenjem naredbe OPTION EXPLICIT. Ukoliko se ova naredba nalazi u sastavu forma ili modula onda se unutar tog forma ili modula moraju deklarirati sve varijable koje se koriste. Moguće je od Visual Basica zatražiti da u svaki novi form ili modul automatski ubacuje naredbu OPTION EXPLICIT. U izborniku Tools potrebno je odabrati opciju Options, te na kartici Editor uključiti opciju Require Variable Declaration.

Slika 4.1 – Prozor Option – Kartica Editor Deklariranje varijabli se izvodi pomoću tri klučne riječi u Visual Basicu: PUBLIC, PRIVATE i DIM. Prema samom imenu PUBLIC i PRIVATE može se zaključiti i osnovna razlika između ovih dvaju ključnih riječi. PUBLIC se koristi za deklariranje varijabli čije se korištenje namjenjuje unutar cijelog projekta / programa, dok se riječ PRIVATE koristi za deklariranje varijabli čije je korištenje potrebno samo unutar forma ili modula u kojem je varijabla i deklarirana. Pri

Page 43: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

45

ovome se varijable koje su namijenjene za korištenje u cijelom projektu / programu, tzv. javne (public) varijable, deklariraju unutar modula dok se unutar formova deklariraju PRIVATE varijable, tj. one varijable koje se koriste samo unutar dotičnog forma. U oba slučaja varijable se deklariraju u okviru sekcije (General) – (Declarations) na način:

PUBLIC varijablaX odnosno

PRIVATE varijablaX Tipovi varijabli U gornjem primjeru nije definiran tip varijable pa se podrazumijeva da je varijablaX tzv. variant tipa. Variant varijabla može sadržavati bilo koju vrstu podatka, broj, tekst, objekt itd. Pomoću posebnih funkcija je moguće odrediti tip varijable koji je pohranjen u variant varijabli, a tip variant varijable se mijenja prilikom pridruživanja bilo kojeg tipa podatka. Dakle, potrebno je zapamtiti da ako eksplicitno nije definirano kojem tipu varijable pripada deklarirana varijabla onda je ona tipa variant. Ukoliko je moguće unaprijed odrediti tip varijable potrebno je u deklaraciji varijable naglasiti tip varijable. Kao što će se kasnije vidjeti definiranje tipa varijable je korisno jer Visual Basic na taj način efikasnije može da upravlja memorijskim prostorom za smještaj varijabli. Tip varijant zahtijeva uvijek veći memorijski prostor od varijable kojoj je eksplicitno zadat tip. U slučaju poznatog tipa, način deklaracije varijable je slijedeći:

PUBLIC varijablaX AS Tip odnosno

PRIVATE varijablaX AS Tip pri čemu varijable mogu imati tipove koji su prikazani u Tabeli 4.1. Tabela 4.1 Tip varijable Prostor koji

zauzima (Byte)

Vrijednosti koje može poprimiti

Byte 1 0 do 255 Boolean 2 Tačno (True) ili Netačno (False) Integer 2 Od -32,768 do 32,767 Long 4 Od -2,147,483,648 do 2,147,483,647 Single 4 Od -3.402823 . 1038 do -1.401298 . 10-45 za negativne

vrijednosti te od 1.401298 . 10-45 do 3.402823 . 1038 za pozitivne vrijednosti

Double 8 Od -1.79769313486232 . 10308 do -4.94065645841247 . 10-324 za negativne vrijednosti te od 4.94065645841247 .

Page 44: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

46

10-324 do 1.79769313486232 . 10308 za pozitivne vrijednosti

Currency 8 Od 922,337,203,685,477.5808 do 922,337,203,685,477.5807

Decimal

14 Bez decimalnih mjesta: +/-79,228,162,514,264,337,593,543,950,335 Sa 28 decimalnih mjesta: +/- 7.9228162514264337593543950335 Najmanji mogući broj: +/-0.0000000000000000000000000001

Date 8 1. Januar 100. do 31. Decembar 9999. Object 4 Bilo koji objekt String konstantne dužine

Dužina niza (broj

korištenih znakova)

Od 1 to približno 65,400 znakova

String promjenljive dužine

10 bajtova + dužina niza

Dužina alfanumeričkog niza se može kretati od 0 do približno 2 milijarde znakova.

Variant (numeric)

16 Bilo koja numerička vrijednost do vrijednosti koju može imati tip Double.

Variant (string)

22+ string length

Isti rasponi kao u slučaju niza (string-a) promjenljive dužine.

DIM ključna riječ Deklariranje varijabli je moguće i korištenjem ključne riječi DIM. U ovisnositi od mjesta gdje je varijabla deklarirana ovisi i područje definiranosti važenja varijable: ako je definirana u sekciji (Declarations) varijabla važi u svim procedurama dotičnog modula, a ako je definirana unutar procedure ili funkcije onda važi samo u toj proceduri odnosno funkciji. Ovo je značajna odlika ključne riječi DIM u odnosu na ključne riječi PUBLIC i PRIVATE, jer se varijable pomoću ključne riječi DIM mogu deklarirati i na nivou procedure odnosno funkcije. Način deklariranja je identičan kao i kod PUBLIC i PRIVATE, pa za variant tip varijable glasi

DIM varijablaX odnosno za definirati tip:

DIM varijablaX AS Tip Nazivi varijabli I kod davanja imena varijablama postoje preporuke kao što je to slučaj kod imenovanja objekata i kontrola. Postoji samo pravilo da naziv varijable mora da započinje sa slovom. Nekada se je u raznim varijantama BASIC-a koristio princip sufiksa u označavanju tipa varijabli, pa se tako varijablama tipa Integer dodavao sufix % (procenat), varijablama tipa

Page 45: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

47

Single ! (uskličnik), varijablama tipa String $ (dolar) itd. Ovaj način se ne koristi kod Visual Basica, ali isto tako niti način davanja prefiksa nije suviše često korišten nit se strogo preporučuje. Najčešće ostaje na programeru da odabere najbolji način deklariranja varijabli koji je dovoljno jasan. Isto tako se u (Declarations) sekciji mogu uz deklariracije varijabli upisati popratni komentari koji opisuju vrstu i namjenu varijabli. Komentari se u Visual Basicu upisuju nakon znaka jednostrukog apostrofa ('). Nakon ovoga znaka Visual Basic ne provjerava sintaksu niti koristi išta što je napisano. Preporučuje se umetanje komentara u svim dijelovima programskog koda jer to omogućava lakšu čitljivost i razumljivost, ne samo za druge osobe nego često i za samog programera. Visual Basic, za razliku od prijašnjih varijanti „običnog“ Basica nema ograničenja u dužini naziva varijable što omogućava davanje naziva varijablama koje mogu biti sastavljene od više riječi i koje direktno opisuju svrhu varijable. Pri ovome je preporuka da se u nazivu varijabli sa više riječi svako prvo slovo u riječi piše velikim slovom. Napomenuti je da nisu dozvoljeni razmaci u imenima varijabli. Dodjeljivanje vrijednosti varijablama Naredbom jednakosti, koja sa lijeve strane ima naziv varijable, a sa desne, izraz koji se može izračunati u tom trenutku ili konkretnu vrijednost, vrši se dodjeljivanje vrijednosti varijablama.

nazivVarijable = vrijednost odnosno nazivVarijable = izraz U slučaju kada se sa desne strane nalazi izraz, taj izraz se može pojaviti u bilo kojem formatu koji može poprimiti vrijednost koja odgovara tipu varijable sa lijeve strane. Najjednostavniji primjer je kada se varijabli koja je tipa Byte, Integer, Long, Single ili Double, dakle jedan od numeričkih tipova, pridruži konkretna numerička vrijednost, npr: brojKoraka = 10 Prilikom pridruživanja vrijednosti varijablama potrebno je voditi računa o kojem se tipu varijable radi te da li vrijednost koja se pridružuje pripada području definiranoti tipa varijable. Na primjer, pridruživanje broja većeg od 32,767 varijabli tipa Integer rezultirat će u pogrešci, jer je 32,767 najveći pozitivan broj koji se varijabli tipa Integer može dodijeliti. Pridruživanje varijablama tipa String vrši se na slijedeći način: tekstPoruke = „Pogreška! Unijeli ste pogrešan broj!“ Primjer pridruživanja vrijednosti varijablama korištenjem izraza može biti slijedeći: brojKoraka = pocetniKorak + 1000 * vremenskiKorak U ovom primjeru se na osnovu vrijednosti varijabli pocetniKorak i vremenskiKorak izračunava vrijednost izraza sa lijve strane i ta se vrijednost pridružuje varijabli brojKoraka.

Page 46: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

48

U izrazu na desnoj strani može da se pojavi i sama varijabla kojoj se izračunava nova vrijednost. Ovakav izraz je u matematičkom pogledu nemoguć ali je u programerskoim smislu sasvim normalan i više nego često se koristi, na primjer: brojKoraka = brojKoraka + 1 Nakon ove naredbe varijabla će brojKoraka će imati vrijednost koja je za jedan veća od vrijednosti mkoju je varijabla imala proje naredbe. U nekim starijim verzijama Basica naredba pridruživanja je uvijek u sebi uključivala ključnu riječ LET, pa je naredba pridruživanja imala ovakav oblik:

LET nazivVarijable = vrijednost odnosno LET nazivVarijable = izraz Inicijaliziranje varijabli Jedna od prvih stvari o kojima se mora voditi računa prilikom pokretanja programa je da li varijable sa kojima će se raditi u programu treba da imaju neke inicijalne vrijednosti. Da bi se ovo ostvarilo potrebno je prilikom pokretanja programa izvršiti inicijaliziranje vrijednosti takvih varijabli. Neke lokalne varijable, sa područjem definiranosti na nivou forma, takođe zahtijevaju neke inicijalne vrijednosti prilikom pokretanja tog forma. U programima se mora definirati form koji se otvara prvi prilikom pokretanja, tzv. start up form. Visual Basic učitava programski kod i dizajn start up forma prilikom pokretanja i uapočinje sa izvršavanjem programa. Programski kod koji je napisan u event proceduri Load start up forma se izvršava kada se form učitava u memoriju. Ovaj proces je idealno mjesto gdje se definiraju inicijalne vrijednosti željenih varijabli. Na isti način se u svakoj ostaloj formi mogu odrediti inicijalne vrijednosti lokalnih varijabli prilikom učitavanja forma u njenoj Load event proceduri. Pisanje izraza u naredbama pridruživanja Kao što se je poznato vrijednost varijable se može definirati korištenjem izraza u kojima je moguće da se izračuna nova vrijednost varijable. Visual basic prvo izračunava vrijednost izraza na lijevoj strani naredbe pridruživanja i nakon toga izračunatu vrijednost pridružuje varijabli. Izračunavanje izraze je moguće korisštenjem različitih operatora uz pomoć kojih se formira aritmetička operacija. Operator je simbol koji predstavlja odgovarajuću operaciju: - Znak ^ predstavlja operaciju stepenovanja kojom se stepenuje broj koji se nalazi ispred operatora na eksponent koji se nalazi iza operatora. Na primjer izraz x^3 predstavlja operaciju stepenovanja na treću potenciju varijable x. - Znak * predstavlja operaciju množenja. - Znak / (slash) predstavlja operaciju dijeljenja pri čemu je broj ispred operatora djeljenik a broj iza operatora djelitelj. Potrebno je voditi računa da je djelitelj različit od nule inače se pojavljuje pogreška tokom izvršavanja programa. - Znak \ (backslash) predstavlja dijeljenje sa rezultatom koji je cijeli broj, tzv. integer dijeljenje.

Page 47: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

49

Na primjer izraz 7 \ 3 daje za rezutat 2. I u ovom slučaju djelitelj mora biti različit od nule inače se javlja pogreška. - MOD operator izračunava ostatak cijelog dijeljenja. Na primjer 7 MOD 3 za rezultat daje 1, jer je ostataka dijeljenja 1. Ovo je jedini operator koji je ključna riječ – ostali su obični znakovi. - Znak + je zank operacije dijeljenja, a znak – operacije oduzimanja, ali isto tako se koristi i kao znak za negativne brojeve. Pravila redoslijeda izvršavanja operacija Kada izraz posjeduje više operacija Visual Basic slijedi definirani redoslijed izvršavanja operacija čime određuje koja se operacija izvršava prva i tako redom. Redoslijed izvršavanja operacija je slijedeći:

1. Potenciranje (^) 2. Negacija (-) 3. Množenje (*) i dijeljenje (/) 4. Dijeljenje sa cijelim brojem (\) 5. MOD operacija, ostatak cijelog dijeljenja 6. Sabiranje (+) i oduzimanje (-)

Slično kao i u čisto matematičkim izrazima redoslijed izvršavanja operacija se može diktirati korištenjm zagrada. U ovom slučaju se prvo izvršavaju operacije koje su zatvorene unutar zagrada. U slučaju postojanja zagrada unutar zagrada, prvo se izvršavaju izrazi u unutrašnjim zagradama a zatim u korak po korak u vanjskim. Zagrade su zgodan način da se složene operacije i izrazi predstave na čitljiv i lako razumljiv način odnosno u svim situacijama kada programer nije baš sasvim siguran u redoslijed izvođenja operacija. U svakom slučaju uvijek je bolje imati i višak zagrada ali tačan rezutat nego kreirati nečitljiv izraz čime se može dovesti u pitanje ispravnost proračuna. Operacije sa nizovima riječi (stringovima) Visual Basic takođe ima specifične operacije sa ostalim, nenumeričkim tipovima podataka. Na primjer može se koristit operator kojim se vrši sastavljanje više nizova riječi u jedan niz odnosno rečenicu odnosno rečenice. Primjer sastavljanja je slijdeći:

msgTitle = “Naslov“ & “ – Objasnjenje” U prethodnom primjeru vrijednost dvaju stringova “Naslov“ i “ – Objasnjenje“ se sastavljaju u jedan string “Naslov – Objasnjenje“ te se pridružuju varijabli msgTitle. U prethodnom izrazu operator sastavljanja dvaju stringova je opoerator &. Interesantno je da se operator & može upotrijebiti i u slučaju kada se jednom stringu pridružuje varijabla koja ima čisto numeričku vrijednost. U tom slučaju se numerička vrijednost tretira čisto kao string pa je stoga i moguće izvršiti spajanje. Pored operatora spajanja & za spajanje stringova se može koristiti i operator +. Međutim ovaj operator se može iskoristiti samo u slučaju spajanja čistih stringova. U slučaju da se pokuša spojiti string

Page 48: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

50

sa varijablom koja ima numeričku vrijesnot dobit će se greška tokom faze izvršavanja programa. Nizovi Niz je list, tabela odnosno višedimenzionalni skup podataka koji se predstavljaju istim imenom varijable. Niz ima svojstva koja posjeduje svaka varijabla: svrha mu je čuvanje i predstavljanje podataka i ima područje validnosti koje ovisi od toga koja ključna riječ je korištena (Dim, Private ili Public) te na kojem mjestu je izvršeno deklariranja niza (Declarations sekcija ili zaglavlje procedure / funkcije). Međutim, pored ovih opštih osobina koje ima svaka varijabla jedan niz posjeduje svojstvo da mu se podaci mogu organizirati u jednoj, dvije ili više dimenzija. Svaki podatak unutar jednog niza jedinstveno je određen brojem ili indeksom niza. Pri ovome kod jednodimenzinoalnih nizova postoji indeks sastavljen od jednog broja, kod dvodimenzionalnog niza, tabele, indeks je sastavljen od dva broja koja predstavljaju red i kolonu tabele podataka itd. Visual Basic nudi mmogućnost kreiranja maksimalno 60 dimenzionalnog niza. Jednodimenzionalni nizovi Jednodimenzionalni niz se deklarira koristeći ključne riječi Public, Private ilio Dim u ovisnosti od željenog dosega varijable:

PUBLIC nizX(N) AS Tip odnosno

PRIVATE nizX(N) AS Tip odnosno DIM nizX(N) AS Tip

N je broj koji označava maksimalan predviđeni broj elemenata niza. U principu broj elemenata niza će biti N+1 jer se uzima da je prvi član niza varijabla sa ineksom 0 (nula). U Visual Basicu se podrazumijeva da je prvi član niza predstavljen indeksom 0. Međutim postoji naredba koja omogućuje da definiranje početka indeksiranja od 1. Naredba koja eksplicitno određuje od kojeg broja započinje indeksiranje je naredba OPTION BASE. Naredba se mora upotrijebiti u modulu prije bilo koje deklaracije niza. Oblik naredbe za slučaj definiranja početka indeksiranja od 1 je slijedeći: OPTION BASE 1 Visual Basic dozvoljava takođe kreiranje niza kod kojeg prvi član ima indeks koji je proizvoljan redni broj. Moguće je dakle deklarirati niz kod kojeg se indeksi Nalaze između dva redna broja. Primjer za ovo je: PUBLIC nizX (N to M) AS Tip U ovom primjeru deklarirana je niz pod nazivom nizX koji ima indekse koji polaze od vrijednosti N pa sve do vrijednosti M.

Page 49: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

51

Višedimenzionalni nizovi U slučaju višedimenzinoalnih nizova potrebno je za svaku dimenziju da se odrede maksimalne vrijednosti ili raspon indeksa. Za slučaj dvodimenzionalnog niza, kod kojeg se zadaju samo krajnje vrijednostim indeksa deklaracija ima oblik: PUBLIC nizX (N, M) AS Tip U slučaju kreiranja dvodimenzinalnog niza sa indeksima u željenim granicama onda deklaracija ima oblik: PUBLIC nizX (N1 TO N2, M1 TO M2) AS Tip Na isti način višedimenzionalni niz se deklarira na slijedeći način: PUBLIC nizX (N1 TO N2, M1 TO M2, ... W1 TO W2) AS Tip Broj dimenzija je ograničen na 60. Dinački nizovi Kada se deklariše niz u kojem se odredi tačan broj elemenata niza, tzv niz fiksne dužine, onda se nakon toga više, tokom izvođenja programa, ne može mijenati broj elemenata tog niza. Na primjer, ako se definira niz: PUBLIC struja(5) AS SINGLE Ovaj niz ima tačno 6 elemenata tipa single, ako je OPTIOBN BASE podešena na 0 što je podrazumijevana (default) vrijednost, odnosno niz će imati 5 elemenata ako je OPTION BASE podešen na 1. Tokom izvođenja programa broj članova niza se ne može mijenjati. Visual Basic rezervira memorijski prostor za ovaj niz i to tačno onoliko prostora koliko će zauzeti broje elemenata koji je definiran u deklaraciji niza te u ovisnosti od tipa niza. Ovaj rezervirani prostor ostaje nepromijenjen tokom cijelog trajanja rada programa. Nizovi fiksne dužine su dobro rješenje u svim slučajevima kada se unaprijed zna tačan broj elemenata niza. Ali u nekim slučajevima, broj elemenata niza se određuje dinamički tokom faze korištenja programa, tj. može postojati potreba da se broj elemenata mijenja tokom faze izvođenja programa. I ovdje je moguće koristiti niz fiksne dužine koji može da bude tako deklariran da ima veoma mnogo elemenata, odnosno onoliko mnogo koliko zahtjevi programa sigurno neće biti veliki. Ali ovakvo deklariranje niz je neprimjereno crpljenje resursa računara jer se u tom slučaju za sve elemente definira memorijski prostor iako u većini slučajeva taj prostor nikada neće biti korišten. Rješenje u ovakvim slučajevima je da se koriste takozvani dinamički nizovi. Visual Basic rezervira memorijski prostor za dinamičke nizove tokom faze izvršavanja programa i ovaj memorijski prostor može da se mijenja u ovisnosti od broja elemenata u dinamičkom nizu. Deklariranje dinamičkih nizova se vrši na sličan način kao što se to radi sa nizovima fiksne dužine, korištenjem ključnih riječi PUBLIC, PRIVATE ili DIM ispred naziva varijable niza,

Page 50: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

52

ali se u zagrade ne upisuje broj kojim se unaprijed definira broj elemenata niza. U prethodnom primjeru, definiranje niza struja, promjenljive dužine bi bilo: PUBLIC struja() AS SINGLE Vrlo važno je da se prije korištenja varijable niza, bilo gdje u programu, koristi ključna riječ REDIM kojom se definira trenutna dužina (broj elemenata niza). Dakle, ako se u prethodnom primjeru želi raditi sa varijablom struja, i to sa prva 3 elementa, bez nultog elementa, potrebno je prije pozivanja varijabli struja(1), struja(2) i struja(3) da se izvrši dinamičko podešavanje dužine niza na slijedeći način: REDIM struja(3) Ako se dalje tokom faze izvršavanja programa ponovo želi promijeniti dužina niza, koristeći ponovo prethodni primjer, ako se želi promijeniti broje elemenata varijable struja sa 3 na 10 moguće je to izvršiti na dva načina:

1. Ponovnim korištenjem iste ključne riječi REDIM i upisivanjem novog ukupnog broja elemenata niza: REDIM struja(10)

Na ovaj način se ukupan broj elemenata povećava na 10 (pod pretpostavkom da je OPTION BASE podešen na 1). Međutim, ako su prije korištenja ove naredbe varijable struja(1), struja(2) i struja(3) već bile korištene i imale neke vrijednosti, nakon ove nareddbe redimenzioniranja niza, vrijednosti u ova tri elementa niza se gube. Dakle potrebno je biti oprezan sa redimenzioniranjem niza jer se sve prethodne vrijednosti varijabli poništavaju. Nekada je to i potrebno pa se u tim slučajevima redimenziniranjem prazni memorijski prostor za smještaj novih vrijednosti.

2. Ukoliko se ipak žele zadržati prethodno izračunate vrijednosti u elementima niza, u prethodnom primjeru u elementima niza struja(1), struja(2) i struja(3), a potrebno je da se poveća broj elemenata niza, onda se zajedno sa ključnom riječi REDIM koristi i ključna riječ PRESERVE. Na primjer naredba

REDIM PRESERVE struja(10)

će sačuvati vrijednosti koje su prethodno pridružene elemenmtima niza i istovremeno povećat će broj elemenata niza na 10.

Treba imati na umu da se REDIM naredba može koristiti za podešavanje broj elemenata samo dinamičkog, nikako ne niza fiksne dužine. U nekim slučajevima REDIM naredba se može koristiti i za promjenu broja dimenzija niza. Na primjer, pomoću naredbe REDIM moguće je da se dvodimenzionalni niz promijeni u trodimenzionalni. Ali isto tako ovaj način nije moguć ukoliko se koristi ključna riječ PRESERVE u okviru REDIM naredbe. Ukoliko se koristi ključna riječ PRESERVE onda se može mijenjati broj elemenata niza samo u poslednjoj dimenziji višedimenzionalnog niza. Sve ostale dimenzije višedimenzionalnog niza moraju da ostanu iste ukoliko se žele zadržati vrijednosti elemenata niza.

Page 51: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

53

Korisnički definirani tipovi Jedan niz se sastoji od više vrijednosti, koji imaju različite indekse i isti naziv varijable ali svi imaju isti tip varijable, naime svi su ili brojevi, ili nizovi karaktera, ili neki drugi tip varijable itd. Za razliku od ovoga korisnički definirani tipovi omogućavaju kreiranje varijable koja može da ima različite tipove. Korisnički definirani tipovi se najčešće koriste u programima koji operiraju sa bazama podataka jer omogućavaju jednostavan rad sa različitim podacima unutar jednog sloga podataka koji se sastji od mnoštva različitih tipova podataka. Međutim korištenje korisnički definiranih tipova može da bude veomakorisno rješenje i na drugim mjestima. Korisnički definirani tipovi se definiraju korištenjem ključne riječi TYPE uz ključne riječi PUBLIC ili PRIVATE kojima se definira područje primjene tipa. Primjer naredbe kojom se definira tip je:

PUBLIC NazivTipa ElementTipa01 AS Tip ElementTipa02 AS Tip ... Elemement TipaNN AS Tip END TYPE

Pod nazivom tipa podrazumijeva se naziv koji određuje sam korisnik, dok su elementi tipa su dijelovi korisnički definiranog tipa koji poprimaju vrijednosti i kojima se definira tip vrijednosti, tj. da li je element broj, tekst, objekt itd, u skladu sa tipovima koji postoje u Visual Basic-u (Tablea 4.1). Element tipa takođe može da bude prethodno definiran drugi korisnički tip. Definicija tipa može da bude samo u okviru General – Declarations sekcije forma ili modula. Podrazumijeva se da je, ako se ne koristi ključna riječ PRIVATE ispred TYPE u definicija tipa, opseg vrijednosti tipa područije cijelog projekta / programa. Na primjer, struja kratkog spoja može da bude jedan korisnički definiran tip jer se za analitičko predstavljanje struje kratkog spoja mora koristiti više, doduše samo numeričkih, podataka. Primjer: PUBLIC TYPE strujaKS EffVrSimKomponente AS Single Frekvencija AS Single VremenskaKonstantaKola AS Single FazniStavNaponaUTrenutkuKS AS Single FazniPomak AS Single END TYPE. Type naredba definira novu strukturu, odnosno tip varijable, ali ne kreira varijable koje pripadaju tom tipu.Potrebno je da se posebno definiraju varijable, korisštenjme PUBLIC, PRIVATE ili DIM ključnih riječi, koje će biti tipa koji je definiran od strane korisnika.

Page 52: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

54

Na primjer, definiranje varijable koja predstavlja struju kratkog spoja može se izvršiti na slijedeći način: PUBLIC fazaR as strujaKS Pozivanje ili pridruživanje vrijednosti pojedinim elementima varijable se vrši na slijedećim način: nazivVarijable.nazivElementa Određivanje efektivne vrijednosti simetrične komponete struje kratkog spoja, koristeći definirani tip strujaKS i deklariranu varijbalu fazaR iz prethodnih primjera, se izvodi na način: fazaR.EffVrSimKomponente=40000 Visual Basic ima jednu zgodnu naredbu koja olakšava rad sa korisnički definiranim varijablama. Radi se o naredbi WITH koja omogućava skraćivanje pisanja punog naziva varijable u slučajevima kada se na jednom mjestu radi sa više elemnata istog tipa. Sintaksa korištenja WITH naredbe je slijedeća: WITH nazivVarijable .nazivElementa01 = X1 .nazivElementa02 = X2 ... .nazivElementa0N = Xn END WITH

Page 53: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

55

5. OSNOVNE NAREDBE

Uslovni izrazi Aritmetičke operacije se u Visual Basicu jednostavo izvršavaju korištenjem matematičkih operatora za množenja (*), dijeljenje (/), cijelo dijeljenje (\), sabiranje (+) i oduzimanje (-). Aritmetička operacija izračunava vrijednost koja se predstavlja sa jednom od Visual Basic tipova podataka, kao što je Byte, Integer, Long, Single ili Double. Nasuprot aritmetičkim operacijama uslovni izrazi za rezultat daju samo jedan tip podataka: logički (Boolean), i jednu od dvije moguće vrijednosti Tačno (True) ili Netačno (False). Dvije posebne grupe operacija su moguće sa uslovnim izrazima:

- logička poređenja i - logičke operacije.

Logička poređenja izvode logičko poređenje između dvije vrijednosti. Na primjer logička jednakost (=) je istinita ako su oba izraza u logičkoj operaciji jednaka, logičko (<) je istinito ako je prvi izraz (izraz sa lijeve strane) manji od vrijednosti iozraza sa desne strane itd. Logičke operacije kombiniraju ili mijenjaju logičke vrijednosti varijabli čime se opet dobijaju logičke vrijednosti Tačno (True) ili Netačno (False). Najčešće korištene logičke operacije su And, Or i Not. Logička poređenja Postoji 6 operacija logičkih popređenja, prikazanih u Tabeli 5.1: Tablea 5.1 – Logičke operacije Simbol Logička operacija < Manje od <= Manje od ili jednako > Veće od >= Veće od ili jednako = Jednako <> Različito

Page 54: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

56

Logičke operacije se koriste u logičkim izrazima koji vraćaju vrijenost Tačno (True) ako je uslov zadovoljen odnosno Netačno (False) ako uslovi nije zadovoljen. U slučaju da se u izrazu nalaze i aritmetičke operacije onda se prvo izvršavaju aritmetičke operacije te se nakon toga vrši logička provjera. Na primjer u izrazu: c>=a+b, prvo se vrši sumiranje a+b te se nakon toga vrši poređenje dobijene sume sa varijablom c. Logičke operacije Visual basic posjeduje šest logičkih operacija: Not, And, or, Xor, Eqv i Imp. Pet od ovih šest operacija: And, Or, Xor, Eqv i Imp se koriste sa parom operanda tj. koriste se za logičko poređenje vrijednosti između varijabli i varijabli odnosno između varijabli i konstantnih vrijednosti. Šesti operator Nor je unarni operator i koristi se sa samo jednom varijablom. Svaki od ovih operatora daje kao rezultat jednu od dvije logičke vrijednosti. Na primjeru dvije logičke varijable v1 i v2 bit će objašnjeni rezutati pomenutih logičkih operacija. NOT Kao rezultat daje suprotnu vrijednost od vrijednosti koji ima varijabla. Na primjer: Not v1 Za rezutat ima Netačno (False) ako je v1 Tačno (True) i obrnuto daje rezutat Tačno (True) ako je v1 Netačno (False). AND v1 And v2 Daje vrijednost Tačno (True) samo ako su oba operanda v1 i v2 Tačna (True). Samo u slučaju da su oba operand Netačna (False) rezutat operacija Or daje Netačno (False) OR v1 Or v2 Daje vrijednost Tačno (True) samo je bilo koji od operanda v1 ili v2 Tačna (True). U svim ostalim kombinacijama kao rezutat operacija And daje Netačno (False) XOR v1 Xor v2 Daje vrijednost Tačno (True) samo ako su vrijednosti operanda v1 i v2 suprotna: ako je v1 Tačno (True) a v2 Netačno (False) rezultat je Tačno (True) i ako je v1 Netačno (False) i v2 Tačno (True) rezultat je opet Tačno (True). U slučaju da su logičke vrijednosti v1 i v2 jednake kao rezultat operacija Xor daje Netačno (False)

Page 55: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

57

EQV v1 Eqv v2 Daje vrijednost Tačno (True) samo ako su vrijednosti operanda v1 i v2 jednake: ako su i v1 i v2 Tačni (True) rezultat je Tačno (True) te ako su i v1 i v2 Netačno (False) rezultat je opet Tačno (True). U slučaju da su logičke vrijednosti v1 i v2 različite kao rezutat operacija Eqv daje Netačno (False). Kao što se vidi logička operacija Eqv je suprotna operaciji Xor. IMP v1 Imp v2 Daje vrijednost Netačno (False) samo u slučaju kada je prvi operand v1 Tačan (True) a drugi operand v2 Netačan (False). U svim ostalim situacijama rezultat operacije Imp je Tačno (True). Redoslijed izvršavanja U situacijama kada se u izrazu pojavljuju logička poređenja, logičke i aritmetičke operacije Visual basic izvršava operacije ovim redoslijedom: 1. Sve aritmetičke operacije, poštujući pravila redoslijeda izvršavanja aritmetičkih operacija. 2. Sva logička poređenja počevši sa lijeve strane izraza ka desnoj 3. Logičke operacije, u ovom poretku: Nor, And, Or, Xor, Eqv, Imp. Ponekad, kod složenih izraza postaje suviše teško da se ustanovi koji rezutat će se dobiti . U takvim slučajevima, slično kao i kod izvršavanja atimetičkih operacija najbolje rješenje predstavlja korištenje zagrada. Naredbe odlučivanja Naredbe odlučivanja daju mogućnost da program vrši odabir između različitih opcija te da odgovarajuće odgovori na situacije koje se mogu javiti tokom izvršavanja programa. Naredba IF je najčešće korištena naredba za odlučivanje u Visual Basicu. Osnov svake IF naredbe je uslov – izraz koji može da bude istinit ili ne. U ovisnosti od vrijednosti zadatog uslova naredba IF izvršava jednu ili drugu aktivnost. Pored naredbe IF u Visual Basic-u se koristi i SELECT CASE naredba odlučivanja. IF naredba U ovisnosti od složenosti uslova, IF naredba se može koristiti kao jednolinijska ili višelinijska blok struktura. Oba načina koriste riječi: IF (ako), THEN (onda) i ELSE (odnosno, ili pak). U slučaju kada se kompletna naredba odlučivanja koristi u vidu jedne linije koda onda se naredba sastoji od tri ključne riječi:

Page 56: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

58

- IF predstavlja uslov na osnovu čije vrijednosti se određuje naredni korak izvršavanja - THEN predstavlja aktivnost koja se izvršava ukoliko je uslov, dat u IF dijelu naredbe odlučivanja, ispunjen i - ELSE određuje aktivnost u slučaju kada uslov nije ispunjen.

Najjednostavniji oblik naredbe je u obliku:

IF uslov THEN aktivnost U ovom slučaju aktivnost se izvršava samo ako je uslov ispunjen (True). U slučaju kada uslov nije zadovoljen ne preduzima se nikakva aktivnost. Nešto opštiji oblik naredbe je sa korištenjem ključne riječi ELSE:

IF uslov THEN aktivnost1 ELSE aktivnost2 U ovom slučaju ako je uslov ispunjen izvršava se aktivnost1 a ako nije ispunjen onda se izvršava aktivnost2. U slučaju blok strukture, naredbe odlučivanja sastavljene od više linija koda onda se pored prethodno spomenutih ključnih riječi koriste: - ELSEIF, koristi se za određivanje narednog uslova u bloko pod uslovom da prethondi uslov nije ispunjen. Ovo je opciona riječ i može se koristit više puta u jendom bloku. - END IF, služi za označavanje završetka bloka za odlučivanje. Oblik naredbe je slijedeći: IF uslov1 THEN aktivnost1 ELSEIF uslov2 THEN aktivnost2 ... ELSEIF uslovN THEN aktivnostN END IF Naredba IF se koristi u slučaju kada postoji konačan broj mogućih uslova koji žele da se provjere i ukoliko jedna od uslova bude ispunjen da se izvrši odgovrajuća aktivnost. Primjer: Provjeravanje vrijednosti varijable sngStrujaKS, tipa Single, te ispisivanje odgovarajuće poruke. IF sngStrujaKS > 40 THEN MsgBox “Struja kratkog spoja veca od 40 kA” ELSEIF sngStrujaKS < 40 THEN MsgBox “Struja kratkog spoja manja od 40 kA” ELSEIF sngStrujaKS = 40 THEN MsgBox “Struja kratkog spoja je 40 kA” ENDIF

Page 57: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

59

Unutar jedne IF naredbe mogu se nalaziti dodatne, unutrašnje IF naredbe. Pri ovome se mora voditi računa da se cijela unutrašnja IF naredba nalazi unutar programskog koda vanjske IF naredbe. Oblik IF naredbe sa unutrašnjom IF naredbom: IF uslov1 THEN aktivnost11 IF uslov2 THEN aktivnost21 ELSE aktivnost22 END IF ELSE aktivnost12 IF uslov3 THEN aktivnost31 ELSE aktivnost32 END IF

END IF SELECT CASE naredba Druga, često korištena naredba za odlučivanje u Visual basicu je naredba kojia koristi ključne riječi SELECT i CASE. Naredba omogućava odjeljivanja bloka programskog koda za različite vrijednosti ispitnog izraza. Select Case naredba zasniva svoj rad na jednakosti vrijednosti koja se zadaje u Select Case ispitnom izrazu ili vrijednosti varijable i ponuđenih vrijednosti u Case liniji. Naredbe unutar samo bloka se izvršavaju i to onog bloka gdje je vrijednost izračunata u Select liniji jednaka vrijednosti u Case liniji. Oblik naredbe je slijedeći: SELECT CASE ispitniIzraz CASE vrijednost1 Blok programskog koda 1 CASE vrijednost Blok programskog koda 2 ... CASE vrijednostN Blok programskog koda N CASE ELSE Blok programskog koda X END SELECT

Page 58: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

60

Način na koji SELECT CASE naredba radi je slijedeći: 1. Prvo se poredi vrijednosti, koja je zadata ili izračunata u ispitnom izrazu, sa

vrijednošću u prvoj CASE naredbi (vrijednost1). 2. Ukoliko je vrijednost ispitnog izraza jednak vrijednosti zadatoj u CASE naredbi

onda se izvršava programski kod koji pripada toj CASE naredbi. 3. Ako vrijednosti nisu jednake onda program prelazi na slijeću CASE naredbu i

ponovo provjerava da li postoji jednakost ispitnog izraza i CASE vrijednosti. 4. Prvi put kada se ustanovi jednakost ispitnog izraza i vrijednosti u CASE naredbi,

blok programskog koda izvršava i nakon toga se završava dalje provjeravanje te se SELECT CASE naredba završava.

5. Opciono se može iskoristiti naredba CASE ELSE sa blokom programskog koda koji se izvršava ukoliko niti jdna od ponuđenih vrijednosti u sklopu CASE naredbi ne odgovara ispitnom izrazu zadatom u SELECT CASE naredbi.

CASE izrazi mogu imati slijedeće oblike: 1. Lista vrijednosti. Programski kod se izvršava ukoliko postoji jednakost ispitnog izraza sa bilo kojom od upisanih vrijednosti. Primjer: CASE vrijednost1, vrijednost2...vrijednostN 2. Opseg vrijednosti. Programski kod se izvršava ukoliko vrijednost ispitnog izraza ulazi u opseg zadatih 3. Primjer:

CASE IS operator vrijednost Primjer: Provjera vrijednosti varijable intNapon, tipa Integer, koja na osnovu vrijednosti napona ispisuje odgovarajuću porku. SELECT CASE intNapon CASE IS < 110 MsgBox „Napon je manji od 110 kV“ CASE 110 TO 220 MsgBox „Napon jei izmedju 110 i 220 kV“ CASE 420, 550 MsgBox „Napon je 420 ili 55 kV0“ CASE IS >550 MsgBox „Napon je veci od 550 kV“ CASE ELSE MsgBox „Nepoznat napon“ END SELECT Programske petlje Ponavljanje naredbi je jedno od osnovnih osobina programiranja. Za izvršavanje ponavljanja potrebno je organizirati programski kod u okviru programske petlje. Petlje ima dvije osnovne komponente:

- blok programskog koda koji se izvršava i ponavlja - inaredbe koja kontrolira trajanje ponavljanja bloka programskog koda.

Page 59: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

61

Iako je programski kod unutar petlje isti svako ponavljanje se u izvodi sa drugim vrijednostima podataka i to je ono što čini petlje istinski korisnim dijelom programskog koda. Visual Basic ima dvije osnovne vrste programskih petlji poznatijih po kjlučnim riječima DO i FOR. DO petlja Prvi zahtjev programske petlje je da se definira blok programskog koda koji će da se izvodi i ponavlja. U DO petlji, naredba DO uvijek označava početak programskog koda koji će da se ponavlja, dok naredba LOOP označava kraj bloka naredbi. Sve naredbe koje se nalaze između ključnih riječi DO i LOOP čine blok koji se izvodi i ponavlja. Uslov koji kontrolira trajanje ponavljanja može da se pojavi bilo u liniji koda sa DO naredbom, dakle na samom početku petlje, bilo u liniji koda sa LOOP naredbom, odnosno na samom kraju petlje. U oba slučaja zajedno sa ključnim riječima DO i LOOP koriste se i druge dvije riječi specifične za DO petlju: WHILE i UNTIL. Najčešće korištene kombinacije su DO i WHILE odnosno LOOP i UNTIL. Oblik programske petlje sa uslovom na početku (u DO liniji): DO WHILE uslov LinijaKoda1 LinijaKoda2 ... Linija KodaN LOOP odnosno sa uslovom na kraju (u LOOP liniji): DO LinijaKoda1 LinijaKoda2 ... Linija KodaN LOOP UNTIL uslov U oba slučaj uslov mora da bude izraz koji je tačan (True) ili netačan (False). U oba slučaja, promjena vrijednosti uslova sa tačan na netačan i obrnuto uzrokuje prestanak ponavljanja programskog koda između DO i LOOP naredbi. U slučaju WHILE uslova programski kod se ponavlja sve dok je uslov tačan i završava se kada ovaj uslov postane netačan. Za razliku od ovoga, u UNTIL petlji se programski kod ponavlja sve dok je uslov netačan i prestaje sa se izvršava kada ovaj uslov postane tačan. Unutar jedne DO petlje može se formirati još jedna, unutrašnja ili češć korišteni naziv ugnježdena DO petlja. Pri ovome treba voditi računa de se početak, programski kod koji pripada unutrašnjoj petlji i završetak unutrašnje petlje u potpunosti nalazi unutar programskog koda glavne odnosno vanjske petlje.

Page 60: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

62

Oblik DO petlje se jednom unutrašnjom DO petljom je slijedeći: DO WHILE uslov1 LinijaKoda11 LinijaKoda12 ... Linija Koda1N DO WHILE uslov2 LinijaKoda21 LinijaKoda22 ... LinijaKoda2N LOOP LinijaKoda1N+1 LinijaKoda1N+2 ... LinijaKoda1M LOOP Korištenje različitih varijanta DO petlji je dopušteno. Pri pisanju programskog koda, radi lakše čitljivosti ali i kontrole koda, potrebno je programski kod unutar petlje uvući za jedan određeni razmak, najčešće pomoću tipke TAB. Na ovaj način lakše se kontroliraju početak i kraj petlje. Uvlačenje programskog koda je potrebno koristiti za svaku narednu petlju tako da se lako može pronaći početak i kraj petlje. FOR petlja Korištenje ove petlje se koristi kada se zna tačan broj iteracija, odnosno ponavljanja programskog koda. Kao i kod DO petlje FOR petlja sadrži blok programskog koda čije se izvođenje ponavlja. Ključna riječ FOR uvijek se nalazi na početku bloka naredbi kojima se predstavlja FOR petlja. Bitno za ovu petlju je da mora postojati varijabla – brojač čijom se vrijednošću definira poonavljanje izvođenja programskog koda. Druga ključna riječ je naredba NEXT kojom se označava kraj programske petlje. U svom najjednostavnijem obliku FOR petlja koristi jednu cjelobrojnu varijablu – brojač koja se povećava za jedan nakon svake iteracije. Oblik petlje može se prikazati na slijedeći način: FOR brojac =m1 TO m2 LinijaKoda1 LinijaKoda2 ... LinijaKodaN NEXT brojac Vrijednosti m1 i m2 predstavljaju početni i zadnju vrijednost koju brojač može da poprimi. Ponavljanje kreće sa vrijednosšću brojača od m1. Na kraju prve iteracije kod naredbe NEXT brojač poprima vrijednost (m1+1) i naredbe počevši od FOR linije se ponovo izvršavaju. Svaki put kod NEXT naredbe vrijednost brojača se poveća za 1. Ponavljanje se izvodi sve

Page 61: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

63

dok se ne postigne vrijednost brojača jednaka m2. Kada se dostigne vrijednost veća od m2 onda se izvođenje petlje završava i program nastavlja da izvršava programski kod koji se nalazi nakon NEXT naredbe, ako takav postoji. U određenim situacijama je potrebno da se vrijednost brojača ne povećava tačno mza jedan, nego za viću ili manju vrijednost. U tim slučajevima se koristi nešto malo opštiji oblik FOR petlje koji podrazumijeva korištenje naredbe STEP. Oblik FOR naredbe u ovom slučaju je slijedeći: FOR brojac =v1 TO m2 STEP dv LinijaKoda1 LinijaKoda2 ... LinijaKodaN NEXT brojac Kao rezultat uvođenja STEP ključne riječi u FOR petlju, brojač neće automatski povećati svoju vrijednost za 1 nakon dostizanja NEXT naredbe već će se vrijednost brojača povećati za vrijednost koja je specificirana nakon ključne riječi STEP, odnosno za vrijednost dv u prethodnom primjeru. Takođe je moguće napisati FOR naredbu tako da vrijednost brojača opada. U ovom slučaju potrebno je da vrijednost v1 bude veća od vrijednosti v2, a da inkrementalno povećanje brojača nakon STEP naredbe (dv) bude zadano kao negativan broj. Razmatrajući prethodno samo u dva slučaja se može dogoditi da se nikako ne izvede niti jedna linija programskog koda u FOR petlji:

- ukoliko je početna vrijednost brojača veća od krajnje vrijednosti, a inkrement zadan u STEP naredbi je pozitivan ili

- ukoliko je početna vrijednost brojača manja od krajnje vrijednosti, a inkrement zadan u STEP naredbi je negativan.

Iako je korištenje cjelobrojnih brojača najčešće ui praksi Visual Basic takođe omogućava korištenje i brojača sa decimalnim vrijednostima. U tim slučajevima povećanje ili smanjenje vrijednosti brojača je moguće u vrijednostima koji nisu cijeli brojevi. Slično kao kod DO petlje i kod FOR petlje je dopušteno korištenje petlje u petlji, odnosno unutrašnjih ili ugnježdenih petlji. Pravilo korištenja je identičan: treba voditi računa da se cijela unutrašnja petlja nalazi unutar vanjske petlje, tj. da bude ugnježdena. Generalno važi preporuka da se što je moguće više koristi uvlačenje unutrašnjeg programskog koda. Primjer korištenja unutrašnje (ugnježdene) FOR petlje je: FOR brojac1 =v1 TO v2 STEP dv LinijaKoda11 LinijaKoda12 ... LinijaKoda1N FOR brojac2 = w1 to w2 STEP dw LinijaKoda21

Page 62: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

64

LinijaKoda22 ... LinijaKoda2X NEXT briojac2 LinijaKoda1N+1 LinijaKoda1N+1 ... LinijaKodaM NEXT brojac1 Potrebno je imati na umu da će se u svakoj pojedinačnoj iteraciji vanjske petlje izvršiti sve iteracije unutrašnje petlje. U gornjem primjeru će se za svaku vrijednost brojača brojac1 izvršiti ((w2-w1)/dw)) iteracija u unutrašnjoj petlji, tj. za sve vrijednosti brojača brojac2 od w1 do w2 sa korakom dw. Naredbe za grafički prikaz Najčešće korištene naredbe za formiranje grafike su: LINE, za iscrtavanje ravne linije od tačke do tačke, odnosno pravougaonika i CIRCLE za iscrtavanje kružnice, elipse ili dijela kružnice ili elipse (luka). Naredba LINE Potpuna naredba LINE ima oblik u formi:

NazivObjekta.LINE [STEP] (x1, y1) [STEP] - (x2, y2), [boja], [B][F] Oznake upotrijebljene u naredbi su slijedeće. Oznake i ključne riječi unutar uglastih zagrada su opcione.

NazivObjekta. Nije zahtijevano, a označava na kome se objektu vrši iscrtavanje linije ili pravougaonika. Ako je izostavljen ovaj element u naredbi, onda se iscrtavanje vrši direktno na formi koja ima fokus u tom trenutku. Najčešće se iscrtavanje vrši unutar prethodno dizajniranih PictureBox-ova na formi.

STEP (Korak) Opcioni parametar određuje rastojanje početne koordinate u naredbi u odnosu na trenutnu poziciju koja je zadana sa ključnim riječima: CURRENTX i CURRENTY.

(x1,y1) Takođe opcioni parametar naredbe. Određuje počeetnu tačku za iscrtavanje linije ili ugla pravougaonika. U ovisnosti od postavke osobine ScaleMode objekta na kome se iscrtava grafika ovisi koja mjerna jedinica se koristi u definiranju koordinate. Ukoliko je ovaj parametar ispušten u naredbi kao početna tačka uzima se tačka koja je prethodno definirana pomoću ključnih riječi CURRENTX i CURRENTY. STEP Opcioni parametar. Ukoliko se koristi u naredbi onda znači da, koordinate krajnje tačke linije ili pravougaonika, predstavljaju relčativan položaj u odnosu na početnu tačku. (x2, y2) Zahtijevani parametar. Označava koordinate krajnje tačke linije. boja Opcioni parametar koji određuje boju linije ili pravougaonika. Najčešće se zadaje putem naredbe RGB (r,g,b) pri čemu u zagradi brojevi imaju vrijednost od 0 do 255, a

Page 63: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

65

označavaju učešće jedne od boja u definiciji: r (red) – crvene, g (green) – zelene, b (blue) – plave. Vrijednost o određuje da nema prisustva te boje, 255 označava maksimalno prisustvo boje. Na primjer, zadavanjem RGB(0,0,0) dobija se crna boja, RGB(255,255,255) bijela, RGB(255,0,0) daje čisto crvenu boju itd.

B (box - pravougaonik) Opcioni parametar. Ako se koristi u naredbi omogućava iscrtavanje pravougaonika kojem su suprotni uglovi zadani koordinatama početne i krajnje tačke.

F (filled – ispunjeno) Opcioni parametar, označava da se površina pravougaonika ispuni istom bojom kao što je boja linija. Ne može se koristi bez parametra B. Ukoliko se koristi samo parametar B onda se iscrtava pravougaonik sa ispunom koja je definirana osobinama objekta FillColor i FillStyle na kome se iscrtava pravougaonik. Podrayumijevana, inicijalna vrijednost je da se bey prisustva parametra F iscrtava pravougaonik bey boje – transparent. Primjer iscrtavanja linije na objektu picSlika od tačke definirane koordinatom (x1, y1) do tačke definirane koordinatom (x2, y2): picSlika.LINE (x1, y1) -- (x2, y2) Ukoliko se želi nastaviti crtanje linije od zadnje tačke, u gornjem primjeru to je tačka (x2, y2), do nove tačke (x3, y3) onda je dovoljno upisati: picSlika.LINE – (x3, y3) Ispuštena je prva koordinata, pa se podrazumijeva da je ona jednaka poslednjoj vrijednosti. Ukoliko se pak želi zadati relativni položaj krajnje tačke u odnosu na prethodnu potrebno je uključiti i ključnu riječ STEP: picSlika.LINE – STEP (dx, dy) gdje je sa dx i dy zadat relativni prirast koordinata u odnosu na poslednju tačku. Crtanje pravougaonika: picSlika.LINE (x1, y1) -- (x2, y2) , , B U prethodnomk primjeru nije zadavana posebna boja linije, pa je taj parametar ispušten. Ipak potrebno je da se upotrijebi još jedan zarez te da parametar B bude upisan na poziciju koja je određena. Crtanje pravougaonika sa ispunom: picSlika.LINE (x1, y1) -- (x2, y2) , , B, F Crtanje pravougaonika sa ispunom u kome su lijija i ispuna crvene boje: picSlika.LINE (x1, y1) -- (x2, y2) , RGB(255,0,0) , B, F

Page 64: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

66

Naredba CIRCLE Potpuna naredba CIRCLE ima oblik u formi:

NazivObjekta.CIRCLE [STEP] (x, y), radijus, [boja, start, end, aspect]

NazivObjekta. Slično kao i kod LINE naredbe, nije zahtijevani parametar, a označava na kome se objektu vrši iscrtavanje kružnice, kruga odnosno elipse. Ako je izostavljen ovaj element u naredbi, onda se iscrtavanje vrši direktno na formi koja ima fokus u tom trenutku. Najčešće se iscrtavanje vrši unutar prethodno dizajniranih PictureBox-ova na formi.

STEP (Korak) Opcioni parametar koji određuje rastojanje koordinate centra kružnice odnosno elipse u odnosu na trenutnu poziciju koja je zadana sa ključnim riječima: CURRENTX i CURRENTY.

(x,y) Zahtijevani parametar. Označava koordinate centra kružnice. U ovisnosti od postavke osobine ScaleMode objekta na kome se iscrtava grafika ovisi koja mjerna jedinica se koristi u definiranju koordinate.

radijus - Kao što samo ime govori radijus (poluprečnik) kružnice.

start, end - Opcioni parametri. Koriste se kada se želi iscrtati samo dio kružnice odnosno elipse, a označavaju uglove početka i kraja luka. Vrijednosti koje parametri mogu imati nalaze se u rasponu od -2*PI do +2*PI radijana. Podrazumijevana vrijednost, ako se ne specificiraju, za start je 0 a za end je 2*PI radijana.

aspect - Opcioni parametar, određuje odnos visine i širine elipse. Podrazumijevana vrijednost, ako se parametar ispusti, je 1 što označava kružnicu. Ako je broj veći od 1 onda je visina veća od širine, dok se za aspect manji od 1 dobija elipsa kod koje je širina veća od visine. Da bi se ispunio krug ili elipsa potrebno je podesiti osobine FillColor i FillStyle objekta na kojem se iscrtava grafika. Samo zatvorene figure se mogu popuniti bojom. Dio kružnice ili elipse se takože može zatvoriti linijama koje spajaju centar sa krajnjim tačkama. Da bi se to ostvarilo potrebno je koristiti negativne vrijednosti za start i end. Naredba uvijek iscrtava kružnicu u smjeru suprotonom kretanju kazaljke na satu, tj. u pozitivnom smjeru. Primjer, naredbe za iscrtavanje jednostavne kružnice na objektu picSlika: picSlika.CIRCLE (2000, 1500), 1000 Kod ove kružnice x-koordinata centra se nalaze 2000 jedinica od lijeve granične linije objekta, y-koordinata se nalazi 1500 jedinica od gornje granične linije, dok je radijus kruga 1000 jedinica. U ovisnosti od postavke osobine ScaleMode objekta na kome se iscrtava grafika ovisi koja mjerna jedinica se koristi u definiranju koordinata. Iscrtavanje dijela kružnice od 1 do 2 radijana: picSlika.CIRCLE (2000, 1500), 1000, , 1, 2

Page 65: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

67

Ispušten je parametar boja ali se je morao koristiti dodatni zarez. Iscrtavanje elipse kojoj je širina tri puta veća od visine: picSlika.CIRCLE (2000, 1500), 1000, , , , 0.333 pri ovome je horizontalno rastojanje (širina) jednaka zadanom radijusu, a visina je tri puta manja. Ukoliko se želi iscrtati elipsa kod koje je visina tri puta veća od širine, naredba je: picSlika.CIRCLE (2000, 1500), 1000, , , , 3 U ovom slučaju je vertikalno rastojanje (visina) jednaka radijusu, a širina je tri puta manja. API Funkcije Jedno od značajnih svojstava Visual Basic-a je i njegova sposobnost da poziva funkcije pohranjene u datotekama dinamičkih biblioteka (DDL), uključujući i API (od termina Application Programing Interface) funkcije. Pristup stotinama API funkcija, kao i ostalim funkcijama pohranjenim u DDL datotekama znatno proširuje mogućnosti Visual Basica. Budući da API funkcije nisu interne funkcije Visual Basica potrebno ih je prije upotrebe eksplicitno deklarirati., na sličan način kako se to radi i sa varijablama. Poslije ovoga pozivanje API funkcije je jednako pozivanju bilo koje funkcije koja je definirana unutar projekta. Deklaracija API funkcija se vrši pomoću ključne riječi DECLARE a karakterističnio za većinu API funkcija je da su veoma dugačke i da ih je veoma teško deklarirati jednostavnim upisivanjem. Zbog ovoga Visual Basic dolazi sa jednom zgodnom alatkom koja omogućava da se na jedan veoma lagan način deklariraju API funkcije. Radi se VB 6 API Viewer-u, maloj aplikaciji koja pomaže prilikom deklaracije API funkcija. Da bi se pokrenuo API Viewer potrebo ja na izborniku Add-Ins... odabrati opciju Add-In Manager... Slika 5.1.

Slika 5.1. – Izbornik Add-ins... Izborom ove opcije otvara se prozor prikazan na slici 5.2. U listi postojećih dodataka nalazi se i VB6 API Viewer. Potrebno je označiti ovu opciju te u okviru Load Behavior uključiti opciju

Loaded / Unloaded – ukoliko se želi uključivanje Viewer-a samo u tom trenutku. Na ovaj način potrebno je svaki naredni put prilikom pokretanja Visual Basica ponovo uključivati Viewer, naravno po potrebi.

Page 66: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

68

Load on Startup – omogućava automatsko uključivanje Viewer-a svaki puit prilikom pokretanja Visual Basica.

Slika 5.2 – Add-In manager... Nakon uključivanja Viewer-a i zatvaranja prozora Add-In Manager-a lista opcija izbornika Add-Ins... postala je bogatija za još jednu opciju: API Viewer, slika 5.3.

Slika 5.3 – Izbornik Add-Ins... sa opcijom API Viewer. Izborom novododane opcije konačno se pokreće aplikacija API Viewer, slika 5.4.

Slika 5.4 – API Viewer

Page 67: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

69

Prvo što je je sada potrebno je da se importuju podaci o APIU funkcijama iz datoteke podataka. To se ostvaruje izborom opcije Load Text File... sa izbornika File. Potrebno je odabrati txt datoteku WIN32API.TXT iz foldera „Program Files \ Microsoft Visual Studio \ Common \ Tools \ Winapi“ koji se dodu[e otvara automatski iyborom opcije Load... Nakon učitavanja podataka u listi Available Items pojavit će se lista API funkcija. Da bi se izvršila ispravna deklaracija funkcije potrebno je da odabvrati odgovarajuću funkciju i kliknuti na dugme Add čime se deklaracija API funkcije dodaje u listu Selected Items. Moguće je dodati više deklaracija, konstanti i tipova. Nakon ovoga kopiranje deklaracija u sekciju (General) - (Declarations) aktivnog forma ili modula vrši se pomoću dugmeta Insert.. Pomoću opcija unutar okvira Declare Scope moguće je definirati da li će se API funkcija koristiti kao javna ili lokalna. Pomoć u pronalaženju predstavlja mogućnost da se u polju: Type the first few lettes of the word zou are looking for: upiše par prvih slova API funkcije koju tražite. Kao primjer korištenja API funkcija može poslužiti API funkcija POLYLINE kojom se može vršiti iscrtavanje velikog broja izlomljenih linija. Prednost ovog načina iscrtavanja linija u odnosu na način sa naredbom LINE je u brzini izvršavanja. U slučaju iscrtavanja složenih grafičkih elemenata API funkcija POLYLINE je nekoliko stotina puta brža od naredbe LINE, što često može da bude veoma značajno. Najlakši način dodavanja deklaracije API funkcije POLYLINE je pomoću API Viewer-a. Deklaracija ima oblik: Public Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long Funkcija ima tri argumenta: - hdc, predstavlja objakat na kome se vrši iscrtavanje linija - lpPoint, X i Y koordinata početne tačke linije - nCount, ukupan broj tačaka višestruke izlomljene linije. Interesantno je da se preko samo jednog parametra proslijeđuju dvije vrijednosti. Naime, parametar lpPoint preuzima i koristi vrijednosti i X i Y koordinate! Moguće je jer je ovaj parametar posebno definirani korisnički tip POINTAPI. I ovaj tip se može deklarirati korištenjem API Viewer-a. Potrebno je u polju API Type odabrati Types te onda u listi Available Items pronaći tip POINTAPI te njegovu deklaraciju ubaciti u modul. Deklaracija POITAPI tipa je: Public Type POINTAPI x As Long y As Long End Type Korištenje POLYLINE funkcije zahtijeva prethodno određivanje vrijednosti POINTAPI koordinata tačaka koje čine izlomljenu krivu. Nakon toga se kompletna izlomljena linija, sastavljena od desetina ili stotina hiljada linija, parametar nCount, iscrtava u vrlo kratkom vremenskom intervalun na ovjektu specificiranom u parametru hdc.

Page 68: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

70

6. RAD SA DATOTEKAMA PODATAKA

Uvod Poznavanje rada sa vanjskim datotekama, upisivanje i čitanje podataka je jedno od osnovnih znanja koje programer u Visual Basic-u treba da ima. Pod pojmom vanjske datoteke podataka podrazumijevaju se datoteke spašene na hard disku računara, koje ne pripadaju direktno Visual Basic projektu, ali se kreiraju, ažuriraju i koriste od strane programa. Različite su namjene ovih datoteka: - često se koriste za trajno pohranjivanje podataka i informacija koje se generiraju tokom izvođenja programa i koje je neophodno sačuvati za korištenje tokom budućih korištenja programa, - koriste se ponekad i za razmjenu podataka između različitih programa i različitih vrsta programa, - takođe se kreiraju kao izlazni podaci proračuna, za lakše korištenje u drugim dokumentima, editovanje, štampanje itd. Postoje konceputualno dvije vrste datoteka koje se mogu kreirati u Visual Basic-u: - datoteke sa slučajnim pristupom (random access files), sadrže redove podataka fiksne dužine. Pojedinačni podaci se smještaju u ovu vrstu datoteka u posebnom formatu tako da svaki podatak ima odgovarajuće mjesto u datoteci. Zahvaljujući ovome Visual Basic može ići direktno na određena mjesta unutar datoteke i čitati podatke baš na tim mjestima, pri čemu nije potrebno da se čitaju podaci koji se nalaze prije. Ova vrsta datoteka se najčešće koristi u okviru rada sa bazama podataka. - tekstualne datoteke podataka, koje se koriste za pregled i uređivanje u tekstualnim editorima, ali i kao vid konačnog izvještaja sa rezultatima proračuna. U svrhe smještanja podataka, tekstualne datoteke su organizirane kao sekvencijalne datoteke: program upisuje i čita podatke redom od početka do kraja. Tekstualne i datoteke sa slučajnim pristupom koriste sasvim drugačije programerske tehnike za upisivanje i čitanje podataka.

Page 69: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

71

Datoteke sa slučajnim pristupom Datoteke sa slučajnim pristupom sadrže redove striktno definiranih podataka. Svaki red podataka je skup individualnih podataka pri čemu se tačno zna tip podatka, njegova dužina i mjesto u jednom redu. Najznačajnija osobina ove vrste datoteka je pristup. Podacima je moguće pristupiti na veoma jednostavan, definiran i što je često najvažnije, brz način. Za kreiranje datoteka sa slučajnim pristupom potrebno je prije svega definirati korisnički tip kojim se definira vrsta i broj individualnih podataka unutar korisničkog tipa. Nakon toga se odgovarajuće varijable deklariraju kao varijable tog tipa. Te varijable postaju idealna mjesta za upisivanje i čitanje podataka iz datoteka sa slučajnim pristupom. Svaka operacija upisivanja podataka upisuje cijeli red podataka i takođe svaka operacija čitanja takođe čita cijeli red podataka. Program pronalazi podatke prema rednom broju reda, počevši od 1 pa sve do broja koji predstavlja ukupan broj podataka. Poznavanje odnosno određivanje tog rednog broja predstavlja jedan od najvažnijih zadataka koji se predstavlja pred programera. Mnogo je načina kako da se olakša rad, na primjer to može biti šifra nekog dijela, broj fakture, JMBG itd. Postupak rada sa datotekama sa slučajnim pristupom Visual Basic posjeduje nekoliko naredbi putem kojih se kreiraju datoteke podataka sa slučajnim pristupom. Najvažije su: - OPEN, za otvaranje datoteke podataka sa slučajnim pristupom. - PUT #, za upisivanje reda podataka u datoteku, - GET #, za čitanje reda podataka iz datoteke. Naravno, prije kreiranja datoteke podataka pretpostavlja se da je pomoću naredbe TYPE izvršena deklaracija korisničkog tipa kojim se definira struktura podatka, te da su pomoću naredbi PUBLIC, PRIVATE ili DIM deklarirane varijable tog tipa. Uobičajeni koraci prilikom rada sa datotekema sa slučajnim pristupom su slijedeći: - definiranje strukture podataka tj. korisničkog tipa korištenjem TYPE naredbe, - deklariranje varijabli koje su korisnički definiranog tipa iz prethodnog koraka, - korištenjem OPEN naredbe otvara se datoteka podataka sa slučajnim pristupom, - dodjeljivanje vrijednosti svakom od elemenata varijeble i korištenjem naredbe PUT #, upisivanje tih podataka u datoteku te - čitanje podataka korištenjem naredbe GET # i pridruživanje podataka elementima varijable. Otvaranje datoteka sa slučajnim pristupom Naredba za otvaranje datoteke sa slučajnim pristupom je slijedeća: OPEN nazivDatoteke FOR RANDOM AS #brojDatoteke LEN = dužinaReda

Page 70: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

72

Datoteka sa slučajnim pristupom otvorena na ovaj način je spremna i za čitanje i za pisanje podataka. Visual Basic ključna riječ kojom se definira ova vrsta datoteke je RANDOM. Veoma je važno i da se pomoću naredbe LEN (length – dužina) specificira ukupna dužina jednog reda podataka u bajtovima. Treba imati na umu da svaki red podataka ima jedinstveno određenu strukturu i istu dužinu. Zahvaljujući ovome moguće je uvijek naći početak, bilo koji element unutar reda podataka i kraj svakog reda podataka. U naredbi se na mjestu nazivDatoteke upisuje puni naziv datoteke koja se po prvi put kreira ili otvara za ažuriranje, a koji u sebi uključuje disk, direktorije i sam naziv datoteke podataka. Definiranje dužine jednog reda podataka je moguće ako se znaju tipovi svih elemenata unutar korisnički definiranog tipa. U Tabeli 4.1 prikazane su vrijednosti u bajtovima koje zauzimaju određeni tipovi podataka. Međutim postoji i jednostavniji način određivanja dužine jednog reda podataka, korištenjem naredbe LEN u obliku LEN (varijablaPodataka) pri čemu se pod pojmom varijablaPodataka podrazumijeva varijabla koja služi kao spremik podataka i koja je korisnički definirani tip podataka. Broj datoteke predstavlja jedinstveni identifikator datoteke podataka unutar jednog projekta / programa. Tokom korištenja programa u jednom trenutku se može raditi sa više vanjskih datoteka podataka. Zbog ovoga, svaka od datoteka podataka ima jedinstveni identifikator u obliku cijelog broja datoteke, a koji se koristi u naredbama PUT, GET, SEEK. Prilikom otvaranja datoteka podataka koja već sadrži redove podataka često je neophodno odrediti ukupan broj redova podataka. To se može jednostavno uraditi korištenjem naredbe

LOF (brojDatoteke) što je skraćenica od Length Of File odnosno dužina datoteke. Dijeljenjem broja dobijenog sa ovom naredbom sa dužinom jednog reda (naredba LEN) može se lako izračunati ukupan broj redova podataka. Upisivanje podataka Naredba PUT # se koristi za upisivanje podataka na određenu poziciju u datoteci koja je otvorena kao datoteka sa slučajnim pristupom. Sintaka komande PUT # je: PUT #brojDatoteke, brojRedaPodatka, varijablaPodataka U ovoj naredbi brojDatoteke je cijeli broj koji identificira datoteku podataka u koju se upisuju podaci, to je isti broj koji je korišten u naredbi OPEN prilikom otvaranja datoteke. Parametar brojRedaPodatka je cijeli broj koji određuje red u „tabeli“ podataka. Varijabla koja sadrži podatke, specificirana u sintaksi kao varijablaPodataka mora prije upisivanja u datoteku podataka da sadrži potrebne podatke.

Page 71: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

73

Od ova tri parametra koja koristi naredba PUT #, parametar koji zahtijeva posebnu pažnju je brojRedaPodatka. U ovisnosti od vrijednosti ovog parametra naredba PUT # će da izvrši jednu od slijedeće dvije stvari: - ako brojRedaPodatka ima vrijednost od 1 pa do broja koji je jednak ukupnom broju redova podataka u datoteci podataka sa slučajnim pristupom, a u koju se upisuje podatak, onda će naredba da upiše podatke preko postojećih podataka u tome redu. Na primjer, ako u naredbi PUT #, brojRedaPodatka ima vrijednost 5, a datoteka podataka ima 10 redova, onda će 5. red podataka da bude ažuriran sa novim podacima - stari podaci će da se prebrišu. - ako je brojRedaPodatka veći za jedan od ukupnog broja redova podataka, onda će se dodati novi red podataka u datoteku. Prilikom dodavanja novih redova podataka u datoteku potrebno je biti pažljiv da se slučajno, umjesto dodavanja novog reda podataka, ne prebriše neki već postojeći red. Visual Basic omogućava da se parametar brojRedaPodatka ispusti, te da se naredba piše u obliku: PUT #brojDatoteke, , varijablaPodataka Ako se naredba piše u ovom obliku onda Visual Basic svaki naredni put, kada se koristi naredba PUT #, dodaje novi red podataka u datoteku podataka. Ovo može biti veoma koristan način da se upiše inicijalni set podataka u novootvorenu datoteku podataka. Ali, treba biti oprezan sa izbjegavanjem specificiranja broja reda, jer prvi put kada se naredba upotrijebi bez ovog parametra, Visual Basic podrazumijeva da se radi o prvom redu podataka. Ako se otvori datoteka podataka sa već postojećim podacima, onda se korištenjem ove naredbe mogu prebrisati postojeći podaci. Upisivanje podataka Naredbom GET # čitaju se podaci iz datoteke podataka i upisuju u odgovarajuću varijablu. Sintaksa naredbe je slijedeća: GET #brojDatoteke, brojRedaPodatka, varijablaPodataka Parametri koji se koriste u ovoj naredbi su identični kao i kod naredbe PUT #, samo što u ovom slučaju elementi varijable podataka poprimaju vrijednosti iz datoteke podataka. Kao i kod naredbe PUT # i kod naredbe GET # se može ispustiti parametar brojRedaPodatka pri čemu onda naredba ima oblik: GET #brojDatoteke, , varijablaPodataka U ovom slučaju svaka ovakva GET # naredba čita slijedeći red podataka iz datoteke. Naredba se može koristiti u DO petlji za čitanje podataka: DO WHILE NOT EOF (brojDatoteke) GET #brojDatoteke, , varijablaPodataka ... LOOP

Page 72: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

74

U prethodnom primjeru ključna riječ EOF se koristi za prepoznavanje kraja datoteke podataka. Petlja će da se izvršava sve dok se ne dođe do kraja datoteke podataka kada EOF postaje True. EOF je skraćenica od End Of File (kraj datoteke). Pozicioniranje na željeni red unutar datoteke podataka Često se u programu zahtijeva čitanje ili pisanje određenog reda podataka. Da bi se došlo do željenog reda koristi se naredba SEEK #. Sintaksa naredbe je: SEEK #brojDatoteke, brojRedaPodatka Ovom naredbom se pozicionira tačno na željeni red unutar otvorene datoteke podataka. Sada se može koristiti naredba PUT # za pisanje odnosno naredba GET # za čitanje podataka. Moguće je koristiti skraćeni oblik naredbi, PUT # i GET #, bez specificiranja reda podatka, jer je broj reda već prethodno definiran SEEK naredbom. Tekstualne datoteke Tekstualne datoteke podataka se koriste za spremanje općih podataka i raznih informacija koje mogu da se štampaju ili koriste u drugim programima. Visual Basic posjeduje dvije grupe naredbi koje se koriste za upisivanje i čitanje podataka i o njima će biti riječi u nastavku. Kreiranje i otvaranje tekstualnih datoteka Naredba OPEN se u Visual Basic-u koristi za jednu od slijedeće tri svrhe: - kreiranje nove datoteke podataka, - dodavanje novih podataka u već postojeće datoteke i - čitanje podataka. Za tekstualne datoteke podataka OPEN naredba se pojavljue uobičajeno u slijedećem formatu: OPEN nazivDatoteke FOR mod AS #brojDatoteke U naredbi se nalaze tri parametra: - nazivDatoteke prestavlja puni naziv datoteke, apsolutna putanja i naziv datoteke. Podaci o nazivu datoteke se navode u okviru navodnika (") kao niz karaktera (string) ili kao varijabla tipa String. - mod određuje vrstu operacije koja se želi izvoditi sa podacima datoteke podataka. Za tekstualne datoteke podataka, najčešće korištene vrste operacija su: INPUT (čitanje podataka), OUTPUT (upisivanje podataka)i APPEND (dodavanje podataka). - brojDatoteke je cijeli broj sa kojim se u narednim naredbama identificira datoteka podataka prilikom čitanja ili upisivanja podataka, na isti način kao i u slučaju datoteka sa slučajnim pristupom.

Page 73: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

75

OUTPUT parametar u OPEN naredbi ima drugačiju namjenu i uticaj na podatke od APPEND parametra. Za oba parametra važi da ako ne postoji datoteka podataka u trenutku izvršavanja naredbe OPEN onda će se ona kreirati u tom trenutku. Korištenjem parametra OUTPUT u naredbi OPEN, Visual Basic otvara datoteku podataka i briše sve prethodno upisane podatke i priprema datoteku za upisivanje novih podataka. U slučaju korištenja APPEND parametra Visual Basic otvara datoteku i sprema se za dodavanje novih podataka čuvajući prethodno spašene podatke. Upisivanje podataka Otvaranje tekstualnih datoteka za upisivanje podataka vrši se pomoću naredbe OPEN sa parametrima OUTPUT ili APPEND: OPEN nazivDatoteke FOR OUTPUT AS #brojDatoteke odnosno OPEN nazivDatoteke FOR APPEND AS #brojDatoteke Podaci se u tekstualne datoteku upisuju koristeći jednu od dvije ključne riječi: - WRITE # ili - PRINT # Naredba PRINT # je pogodna za upisivanje cijelog reda podataka, tj. podataka u obliku rečenica teksta. Naredba WRITE # je pogodna za upisivanje redova podataka u obliku tablice podataka, slično kao kod datoteka sa slučajnim pristupom. Obje naredbe imaju sličnu strukturu: moraju se specificirati broj datoteke u koji se upisuju podaci te mora se proslijediti tekst koji se upisuje: WRITE #brojDatoteke, "Tekst" odnosno PRINT #brojDatoteke, "Tekst" Više različitih podataka se kod naredbe WRITE # proslijeđuje odvajanjem pomoću zareza, dok se to kod naredbe PRINT # može uraditi i pomoću tačke i zareza (;). Razlika između naredbi je i u slijedećem: kod naredbe WRITE # svaki red se završava sa tzv. carriage-return oznakom koja označava kraj reda, dok to nije slučaj kod PRINT # naredbe. Čitanje podataka Otvaranje tekstualnih datoteka za čitanje podataka koristi se pomoću parametra INPUT u OPEN naredbi:

Page 74: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

76

OPEN nazivDatoteke FOR INPUT AS #brojDatoteke Korištenjem parametra INPUT u naredbi OPEN podrazumijeva se da datoteka specificirana u naredbi već postoji. Ako datoteka ne postoji naredba će uzrokovati grešku: "File not Found" ("Datoteke nije pronađena") tokom faze izvršavanja programa. Da bi se spriječilo događanje ovakvih pogrešaka dobro je da se program prilagodi tako da u slučaju nepostojanja datoteke podataka program direktno, a ne Visual Basic, informira korisnika o nastaloj greški. To se može jednostavno uraditi korištenjem naredbe ON ERROR u okviru pocedure ili funkcije u kojoj se vrši pozivanje datoteke podataka za čitanje. Za ovo je potrebno, nakon zaglavlja procedure, upisati naredbu: ON ERROR GOTO n gdje je sa n oznaka na koju u slučaju greške prelazi izvršavanje programskog koda. Obično se oznaka postavlja pred kraj procedure. Da se programski kod nakon oznake ne bi izvršavao i u slučaju kada se ne dogodi greška, a kada izvršavanje programskog koda dođe do te oznake pri kraju procedure ili funkcije, uobičajeno je da se prije oznake postavi naredba EXIT SUB ili EXIT FUNCTION, čime se preskače izvršavanje koda ukoliko se greška ne dogodi. Primjer: PUBLIC SUB procOtvaranjeDatoteke (nazivDat) ON ERROR GOTO 1 OPEN nazivDat FOR INPUT AS #1 DO WHILE EOF (1) INPUT #1, data LOOP CLOSE #1 EXIT SUB 1 BEEP MsgBox "Pogreska prilikom otvaranja datoteke podataka! Provjerite da li datoteka " & nazivDat " uopce postoji! ", vbOKOnly + vbExclamation END SUB U programskom kodu ispod oznake upisuje se programski kod koji se izvršava ukoliko se dogodi greška. Obično je to korisno upozorenje za korisnika. Čitanje podataka iz datoteke podataka ostvaruje se korištenjem naredbe INPUT #. Sintaksa naredbe je: INPUT #brojDatoteke, varijablaA, varijablaB... Pri ovome sve varijable su tipa String, bez obzira da li se radi o pravim nizovima karaktera, riječima ili brojevima. Naredbom se čitaju podaci na isti način kao što su i zapisani u datoteci

Page 75: Visual Basic Za Predmet Osnove Mehatronike Na EE Skolska 2009 2010

Osnove programiranja u Visual Basic-u

77

podataka. Naredba prepoznaje zarez kao oznaku koja odvaja pojedine podatke. Naredba WRITE # je suprotna naredba naredbi INPUT #. Na isti način kako su podaci zapisivani korištenjem naredne WRITE # podaci moraju da se čitaju korištenjem naredbe INPUT #. Drugi način čitanja podataka je korištenjem naredbe LINE INPUT #. Sintaksa naredbe je: LINE INPUT #brojDatoteke, varijabla Ovom naredbom se čita cijeli red podataka u datoteci i smješta u jednu varijablu tipa String. Korisna je u slučaju kada se ne zna struktura ili ne postoji jasno definirana struktura podataka u datoteci. Ova naredba se najčešće koristi kao suprotna naredba naredbi PRINT #. Zatvaranje tekstualnih datoteka Kada program završi rad sa datotekom podataka potrebno je da se ta datoteka podataka i zatvori. Naredba kojom se datoteka podataka zatvara je slijedeća: CLOSE #brojDatoteke Naredbom se zatvara datoteka sa brojem koji joj je pridružen tokom operacije otvaranja. Alternativno se može koristiti i naredba CLOSE bez označavanja broja datoteke. U tom slučaju potrebno je samo upisati: CLOSE Ovom nredbom se zatvaraju sve, u tom trenutku otvorene datoteke podataka.