Professional Documents
Culture Documents
Zelio sam napraviti kratke, jednostavne vodice koje bi citatelji jednostvano probavili ali
nazalost, shvatio sam da za to nisam sposoban. Moj programerski nacin razmisljanja
sprijacava me da izostavim ista bitno ili da radim neke skracene verzije za apsolutne
pocetnike. Pokusat cu vodice uciniti sto preglednijim da nemorate citati sve vec samo ono sto
vas zanima iako moram predloziti da sve makar jednom prodjete. Pa sretno vam bilo!
Ovo je inicijalna verzija vodica. Neke stvari vjerojatno nisu precizno definirane, neke su
mozda i netocne. Zelio sam pokriti sto vishe podrucja pa nisam imao zivaca previshe stvari
provjeravati i posteno formulirati. Komentari i kritike su i vise nego dobrodosli. Pomoci ce
ove vodice uciniti sto boljima. Pa cemo iztlacit Scompanya da mijenja. A stas Scompany sam
si se u to uvalio... :D
* VB je programski jezik koji cete najlakse nauciti. Njegova sintaksa je toliko jednostavna i
lako pamtljiva da se neke naredbe mogu jednostavno pogoditi. Pazite, jednom kad iskusite
VB-ovu sintaksu sve ostale sintakse izgledaju odvratno.
* VB-ova jednostavnost je otisla tako daleko da su neke slozenije stvari (iako rijetko
potrebne) puno teze za izvesti (ali ne nemoguce).
* VB vam toliko olaksava posao programiranja da neke stvari koje bi morali znati u drugim
programskim jezicima necete uopce nauciti.
* VB od programera zahtjeva vrlo malo znanja i za izvedbu vrlo kompliciranih stvari jer
vecinu posla obavlja sam. Danak ovakvog pristupa mogu biti sporije performanse. Ako pak
zelite zaobici VB-ovo uplitanje i pomaganje morat cete cesto raspolagati vecim znanjem nego
kod ostalih programskih jezika.
* VB nije samo kompajler nego je ujedno i interpreter. To znaci da osim sto se od programa
moze napraviti izvrsna verzija (npr. EXE) koja ce se moci pokrenuti, program je sposoban
izvrsiti kod i bez samog procesa kompajliranja. To je korisna stvar kod samog programiranja
jer VB pokusava izvrsavati vash kod dok ga pishete pa vas moze izvjestiti o pogresci odmah
nakon sto ju ucinite. Takodjer je testiranje programa brze i jednostavnije.
* VB programi nisu sposobni sami raditi na racunalu bez tzv. "runtime modula". radi se o par
datoteka koje cete nazalost morati ukljuciti u instalaciju vaseg programa programa ako ga
namjeravate distribuirati ili se pouzdati u to da je korisnik dovoljno inteligentan da ih skine
sam (u sto nemojte racunati). Nesto slicno kao sa .net programima koji zahtijevaju .net
framework da bi radili.
E pa nebi ishlo. VB se davno odrekao konzole. Da, moguce je napraviti konzolnu aplikaciju
ciji bi rezultat bio slican onome u C-u ali je za to potrebno koristiti Windowsov API
(programsko sucelje OS-a) i to je prilicno slozen zadatak za VB. Daleko izvan opsega ovog
vodica. Eto primjera da je VB ponekad slozeniji od C-a i zahtijeva vece znanje. Naravno
"Hello World" aplikaciju mozemo izvesti i na nacin pristupaciji VB-u:
Objasnjenje koda:
Prva linija je deklaracija funkcije koja se u objektno orijentiranom programiranju strucno
zove "event" (dogadjaj). Event se izvrsava u odredjenom trenutku izvrsavanja programa,
obicno kada se ispuni neki unaprijed zadani uvjet. Ovaj event je clan objektne skupine naziva
"Form" te se zove "Activate". Izvrsava se nakon sto je forma ucitana te prikazana. Tek onda je
moguce pisati na formu.
Drugi red odradjuje samo pisanje. VB sam donosi pretpostavku da zelite pisati na formu kojoj
je ovaj kod dodijeljen.
Zadnji red oznacuje zavrsetak ove event-funkcije.
Cim pokrenete VB izletava Vam prozorcic naslovljen : "New Project" Tu imate donekle sirok
izbor templatea koji sluze kao temelji za razlicite projekte. Alfa i Omega, a i odbaran po
defaultu jest Standard EXE projekt. I uistinu on je pogodan za vecinu aplikacija. Njega cete
uvijek koristiti kroz moje vodice osim ako kazem suprotno. Otvorite novi projekt.
Atrakcije:
Project Explorer
E ovo je vec nesto korisno... Ovdje imamo neke stvarcice poslozene u hierarhiji stabla. Tu se
nalaze svi moduli koje koristimo u projektu. Kao sto vidite tu imamo dva elementa. Svaki
element je prikazan diskretnom ikonicom koja sluzi kako bi se lako prepoznavali razliciti
tipovi modula te sa dvije "rijeci" u formatu x(y). x predstavlja ime elementa dok je y ime
datoteke u koju je spremljen.
E sad mi imamo dva takva elementa.
Projekt1 - U stvari ni nije modul. Sluzi samo kao korjenski element te predstavlja nas projekt.
S time se ne previshe zamarati
Form1 - E je vec nesto konkretno. Cesto vidjena Windowsova forma.
Properties Explorer
E ovaj nam prozorcic vec pruza obilje informacija.
U vrhu imamo combobox (drop-down lista) u kojem pise Form1 Form. Form1 predstavlja ime
nase forme vec spomenute u objasnjenu Project Explorera. Form je tip ovog objekta. U ovom
comboboxu se nalaze sve kontrole koje postoje u projektu. Za sad je to samo nasa forma.
Podatci u tablici ispod prikazuju sva svojstva trenutno odabrane kontrole iz gore spomenutog
comboboxa, odnosno momentalno nase forme Form1. Tu imate svasta: od naslova forme do
boje pozadine. Igrajte se malo s time. Ne grize.
Na dnu je kratko tekstualno objasnjenje trenutno odabranog svojstva.
Form Layout
Najnepotrebniji prozorcic u VB-u! Zaboravite odmah na njega. Jedino sto on pruza jest
precizirat pocetnu poziciju forme na ekranu i to cini strahovito neprecizno.
Toolbox
Tu imamo puno lipih stvari. Sve kontrole koje su dostupne u vasem projektu. Kontrole su
objekti koji se stavljaju na formu a sluze vecinom za interakciju sa korisnikom. Primjeri
kontrola su npr. gumbici, polja za unos teksta, prekidaci, natpisi... Odaberete ih i trpate na
formu prikazanu u Form Designeru. Potom vrdajte po njihovim svojstvima u Properties
Exploreru. Necu ih posebno objasnjavati - bar ne u ovom vodicu. Eksperimentirajte.
Form Designer
E tu se vrshe radovi oko dizajna programa. Prikazuje nasu formu eventualno postojecim
kontrolama koje smo pobacali na nju iz toolboxa.
Pokretanje programa
Ako ovi vodici ikome pomognu da nesto i izprogramira treba reci i kako se program pokrece.
Kompajliranje nije potrebno ako se radi o testiranju. Samo stisnete tipku F5 ili odaberete Run-
>Start iz menija. Ako zelite kompajirati program onda idete File->Make [ime_projekta].exe iz
menija.
Ovime zavrsavam turisticko putovanje IDE-em VB-a. Nadam se da cete opet letjeti s
nama. :D
Citat:
Dim ime_varijable as tip_varijable
Prefiks (Dim):
Prefiks koji od VB-a trazi automatsko odredjivanje opsega djelovanja. Za vishe informacija
pogledati vodic "Opsezi djelovanja"
Imena Varijabli:
Imena varijabli u VB-u moraju pocinjati sa slovom. Preporuca se za prva tri slova kratica tipa
radi preglednosti ali to je na vama. Duzina imena varijable nesmije biti duze od 255 znakova.
Varijabla nesmije sadrzavati tocku u imenu niti deklaracijski znak (%, &, !, #, @, $...).
Tipovi varijabli:
Byte - varijabla velicine 8 bita (1 bytea) te se obicno binarni podatci (podatci koji nisu
specificnog tipa, tip je nepoznat ili nepodrzan od strane programskog jezika) pohranjuju u
polja ovog tipa (deklaracijski znak - ne postoji ?!?!). Vrijednost ove varijable moze biti 0-255.
String - string je u osnovi polje znakova. postoje dvije vrste stringova: stringovi varijabilne
duzine i stringovi fiksne duzine. stringovi varijabilne duzine mogu sadrzvavati nesto vishe od
2 milijarde znakova (2^31) dok stringovi fiksne duzine mogu sadrzavati 64K znakova (2^16).
(deklaracijski znak: $). Stringovi se u VB-u navode pod znakovima navodnika ("string").
Boolean - jednostavan tip varijable cije vrijednosti mogu biti samo True (istinito) ili False
(neistinito). iako je za sam podatak potrebno samo 1bit u VB-u ova varijabla zauzima 16
bitova (2 bytea).
Date - varijabla velicine 64 bita (6 bytea). Unatoc nazivu on sadzava ne samo podatak o
datumu nego i vremenu. reprezentacija podatka upisanog u ovoj varijabli moze varirati ovisno
o postavkama operativnog sistema na kojem se izvodi.
Dim DatumVrijeme as Date
DatumVrijeme = #10/9/2006 4:53:00 PM#
---
Konstante:
konstante su varijable ciju vrijednost nije moguce mijenjati tijekom izvodjenja programa (run-
time). one su precizno definirane od strane programera tijekom pisanja programa (design-
time) te sluze za definiranje cesto koristenih vrijednosti u programu. pritom programeru
pomazu time sto nemora pamtiti vrijednost same varijable nego simbolicko ime koje je
konstanti dodijelio.
Primjer:
---
Konverzije varijabli:
VB ima vrlo napredan nacin tretiranja varijabli pa se vecina konverzija koje su moguce
automatski odvijaju i nije ih potrebno rucno konvertirati za razliku od npr. C programskog
jezika. O konverzijama vishe mozda u nekom od narednih vodica...
4. Grananja i petlje
Uvod
Grananja i petlje se koriste kako bi se prekinuo normalan (slijedni) tok programa.
Grananja se koriste kako bi se skocilo sa jedne naredbe u programu na drugu nakon cega se
tok programa nastavlja normalno izvrsavati sa te druge lokacije. Postoje uvjetna i bezuvjetna
grananja. Ako program naleti na bezuvjetnu petlju izvrsit ce skok na definiranu lokaciju
programa. Uvjetna grananja su pak podijeljena u vishe blokova od kojih svaki ima preciziran
uvjet. Ako uvijet zadovoljava tok programa ulazi u taj blok te izvrsava kod unutar bloka.
Petlje se koriste kako bi se odredjeni dio koda izvrshio vishe puta. I kod petlji postoje uvjetne
i bezuvjetne petlje. Bezuvjetne petlje se izvrsavaju u beskonacnost jer ne postoji uvjet koji bi
uvjetovao izlaz iz petlje pa je potrebno uvrstiti nekakav kod koji bi to omogucio. U suprotnom
se program nece moci prekinuti na normalan nacin. Uvjetne petlje sadrzavaju uvjet koji
odredjuje kada ce se kod unutar petlje prestati izvrsavati i normalan tok programa ponovno
uspostaviti.
Grananja
Primjer:
Sub Main()
On Error GoTo ErrorHandler
'kod funkcije
Exit Sub
ErrorHandler:
'kod za baratanje greskama
Resume Next
End Sub
Primjer:
o Select Case grananje - Kao i kod If...Then grananja omogucava stvaranje vishe
blokova uvjetnog grananja. Razlika je u tome sto se uvjet kod Select Case bloka
uvjek vrti oko iste varijable.
Primjer:
Petlje
Primjer:
*kad smislim nesto posteno
Primjer:
*kod unutar petlje u ovom primjeru se nece izvrsiti niti jedanput jer uvjet ne
zadovoljava.
Primjer:
*u ovom primjeru ce se petlja izvrsiti jedanput iako uvjet petlje od samog pocetka
ne odgovara. to je zato sto ce se uvjet provjeriti tek kada se kod unutar petlje izvrsi
prvi put.
o For...Next - Uvjetna petlja napravljena specificno za ponavljanje naredbi unutar
petlje odredjeni broj puta. Za tu potrebu je potrebno rezervirati jednu varijablu koja
ce sluziti kao brojac. Precizira se pocetna vrijednost brojaca i zavrsna vrijednost.
Moze se precizirati i korak brojaca odnosno za koliko ce se on mijenjati svaki
ciklus. Ako korak nije preciziran brojac se inkrementira za 1 svaki ciklus.
Primjer:
Dim i as Integer
For i = 10 To 1 Step -1
Print i
Next i
*ova petlja ce se izvrsiti 10 puta. u svakom ciklusu ce ispisati jedan broj, pocevsi sa
10 i umanjujuci za 1 svaki ciklus.
Prosjedjivanje varijabli.
U VB se pa defaultu (za razliku od C-a) varijable proslijedjuju preko pokazivaca (reference),
odnosno funkciji se ne proslijedjuje vrijednost koju varijabla ima neko memorijska adresa
same varijable. drugim rijecima ne radi se duplikat varijable koju proslijedjujete nego se
barata upravo sa tom varijablom koju ste proslijedili. Zato se mogu desiti greske jer ce bilo
kakve promjene koje cete raditi sa varijablom unutar funkcije ostaju trajne i po povratku u
funkcije iz koje se proslijedila. Ako zelite varijablu proslijediti po vrijednosti trebate koristiti
ByVal prefiks. U nekim slucajevima to moze dobro doci. Npr. zamislimo da nam vrijednost
ulazne varijable treba ostati nepromjenjena u narednom primjeru. Umjesto da koristimo
dodatnu varijablu kako bi sacuvali ulaznu varijablu (cija bi se vrijednost na kraju funkcije
promijenila u 0), koristenjem ByVal prefiksa sacuvavamo njenu vrijednost.
6. Opsezi djelovanja
Uvod
Ovdje cemo malo govoriti i opsezima djelovanja odnosno dostupnosti: varijabli, funkcija,
struktura te enumeratora. Opsezi djelovanja nemoraju biti strogo definirani no onda to VB
radi umjesto vas dodjeljujuci nekakav difoltni opseg djelovanja. Vecinom se radi o
najmanjem mogucem opsegu djelovanja iz sigurnosnih razloga.
Ako zelite da vasa varijabla, funkcija, definicija strukture ili enumeratora bude dustupna u
sirem rasponu npr. u cijelom vasem projektu trebat cete znati sami odrediti opseg djelovanja.
Naputci:
Strukture i enumeratori moraju biti definirani izvan svih funkcija.
Kao i kod ostalih programskih jezika vrijedi pravilo da se varijabla deklarirana unutar
procedure moze koristiti samo iz te iste procedure. Po izlasku toka programa iz procedure
varijabla prestaje postojati (odnosno memorijski prostor rezerviran za varijablu se oslobadja)
pa se i njezin sadrzaj gubi. Postoji iznimka preciziranjem Stitic prefiksa.
Dim mozemo sluziti kao prefiks za deklariranje varijabli. U tom slucaju opseg varijable je
automatski odredjen. Varijable dekarirane unutra funkcija moramo deklarirati sa prefiksom
Dim (osim ako zelimo da budu staticne) jer je varijabla deklarirana unutar funkcije dostupna
samo iz te funkcije pa prefiksi Private i Public nemaju smisla.
*modul moze biti jedna forma, modul, klasa a vjerojatno i stosta drugo. to je jedan clan
Project Explorera.
Static - specijalan prefiks koji se koristi samo kako bi varijable neke funkcije prezivjele
izlazak iz funkcije u kojoj su deklarirane. ponovnim zvanjem te funkcije varijable su sacuvale
prijasnje vrijednosti. Moze se koristiti pri deklariranju varijabli unutar funkcije ili se moze
koristiti prilikom deklariranja funkcije kako bi se sve varijable te funkcije ucinile
"staticnima".
Sub Main()
Dim lngBoje as eBoje
Polja:
polje je skup varijabli istog tipa. varijable unutar polja su organizirane unutar jedne ili vishe
dimenzija. Znajuci poziciju neke varijable u svim dimenzijama polja moguce je pristupiti toj
varijabli. Svaka dimenzija polja ima preciziranu gornju i donju vrijednost. Postoje dva tipa
polja: polja fiksne velicine i polja dinamicke velicine. Polja dinamicke velicine je moguce
vise puta redimenzionirati (promjeniti velicinu ili broj dimenzija) dok se poljima fiksne
velicine dimenzije i njihove velicine odredjuju prilikom deklaracije i nemogu se kasnije
mijenjati.
Ovdje smo deklarirali polje pod imenom aTablicaMnozenja. Tip polja je Long dok
dimenzije kao sto vidite nisu odredjene. To VB-u govori da se radi o polju
dinamicke velicine. Redimenzioniranje odnosno odredjivanje broja i velicine
dimenzija vrsi se na sljedeci nacin:
ReDim aTablicaMnozenja (9 , 9)
Ovime dobivamo polje koje je po svemu identicno gornje navedenom polju fiksne
velicine. Znaci imamo dvoje dimenzije od kojih je svaka velicine 10. Zasto? Zato
sto doljnja granica dimenzija nije definirana (unosom samo jednog atributa VB
pretpostavlja da se radi o gornjoj granici) kao u gornjem primjeru (1 To 10). Bez
unesene donje granice VB koristi defaultnu vrijednost koja je 0. Od 0 do 9 imamo
10 vrijednosti isto kao od 1 do 10.
Treba napomenuti da se redimenzioniranjem gubi prijasnji sadrzaj polja. To se
moze izbjeci dodavanjem atributa Preserve
Ubound (aTablicaMnozenja , 1)
LBound (aTablicaMnozenja , 2)
aTablicaMnozenja (3 , 7) = 666
*polja se cesto kombiniraju sa petljama kako bi se u par linija koda proslo sve clanove polja.
Strukture:
Kombiniranjem vishe varijabli razlicitih tipova dobivamo strukture iliti korisnicki definirane
tipove (UDT). Strukture koristimo kada zelimo grupirati vishe povezanih varijabli razlicitih
tipova. Strukturu definiramo unutar Type...End Type bloka na nivou modula odnosno izvan
svih funkcija.
Type Kontakt
Ime as String
Prezime as String
TelefonskiBroj as String
End Type
udtMojKontakt.Ime = "Mirko"
*strukture se cesto koriste u kombinaciji sa poljima. stvara se polje tipa strukture koje se
potom obicno obradjuje petljama. tako bi sa ovakvim primjerom mogli imati sve svoje
kontakte spremljene u jednom polju. takav primjer mozete ocekivati u vodicu sa primjerima.
8. MsgBox i InputBox
Uvod
Ovo su dvije funkcije koje se cesto koriste za testiranje programa. Razlog tomu je sto
zamijenjuju najcesce upotrebljavane kontrole. Gdje god je moguce, koristiti cu ove dvije
funkcije u primjerima kroz vodice. Tako ce i vama biti jednostavnija metoda testiranja
primjera - u vecini slucajeva ce biti dovoljno koristiti copy-paste te samo pokrenuti program.
Msgbox
Funkcija koja izbacuje jednostavni prozorcic sa porukom i jednim ili vishe gumbica pomocu
kojih dobiva korisnikov odgovor. Pauzira normalno izvodjenje programa dok korisnik ne
klikne na neki od ponudjenih gumbica. Nakon korisnikove interakcije prozorcic nestaje te se
izvodjenje programa nastavlja a sama funkcija vraca podatak koji govori koji je gumbic
korisnik kliknuo.
prompt : tu upisete poruku koja ce se pojaviti u prozorcicu. naravno radi se o string tipu
varijable pa se sadrzaj upisuje unutar navodnika ("sadrzaj")
buttons : opcionalno - radi se o jednoj od vrijednosti definiranih kao konstante u VB-u. ovaj
atribut odredjuje izgled i mogucnosti MsgBox prozorcica. Ukoliko nije upisano koristi se
default (vbOKOnly). Navest cu samo one koji odredjuju koji ce gumbici biti prisutni (mislim
da nema potrebe objasnjavati sto koja konstanta znaci): vbOKOnly, vbOKCancel,
vbYesNoCancel, vbYesNo, vbAbortRetryIgnore, vbRetryCancel.
title : opcionalno - naslov prozorcica.
Moguce konstante koje vraca ova funkcija: vbOK, vbCancel, vbAbort, vbRetry, vbIgnore,
vbYes, vbNo.
Pojednostavljena sintaksa: