450 likes | 738 Views
IT Računalniško programiranje. Osnove programiranja in sintaksa Visual Basica Danijel Rebolj, FG 2007/2008. Literatura. U. Mesojedec: Visual basic, Pasadena, 2002 M. Prtenjak: Visual Basic za aplikacije, Desk, 1998 J . Walkbench: Excel 2003 power programming with VBA , Wiley , 2004
E N D
ITRačunalniško programiranje Osnove programiranja in sintaksa Visual Basica Danijel Rebolj, FG 2007/2008
Literatura • U. Mesojedec: Visual basic, Pasadena, 2002 • M. Prtenjak: Visual Basic za aplikacije, Desk, 1998 • J. Walkbench: Excel 2003 power programming with VBA, Wiley, 2004 • D. Rebolj: Šola VB 1-5. Win.ini, 1995
Prvi program Sub ZdravoSvet ‘program, ki pozdravi svet print “Zdravo svet!” end sub
Prvi program Sub ZdravoSvet ‘program, ki pozdravi svet Dim pozdrav as String pozdrav = “Zdravo svet!” print pozdrav end sub
Osnove sintakse VB • Osnovna struktura so podprogrami (sub) in druge vrste modulov • Vse strukture se praviloma začnejo s ključno besedo in končajo z end in ključno besedo (sub – end sub, if – end if) • V začetku vsakega modula so praviloma deklaracije podatkovnih struktur
Osnove sintakse VB • ‘ začetek komentarja (kjerkoli v vrstici) • Vrstic ne zaključujemo s posebnim znakom (kot npr. pri Pascalu, C++ ali Javi s ;), zato potrebujemo poseben znak za nadaljevanje vrstice, podčrtaj _ • Z : ločimo stavke v isti vrstici • VB ni “občutljiv” na velike in male črke (ni “case sensitive”)
Spremenljivke • Spremenljivka je referenca na določene pomnilne celice • Spremenljivke so različnih tipov • Tip izberemo glede na vrsto podatka, ki ga spremenljivka predstavlja • Spremenljivko pred uporabo deklariramo (določimo ime in tip) in inicializiramo (priredimo vrednost)
Spremenljivke - deklaracija • DIM ime AS tip • TYPE imeTipa ‘uporabniški tipime1 AS tip1 ...END TYPE • Zapisovanje konstant:123, -123.45, 1.2345E2, “niz znakov”, TRUE, FALSE
Spremenljivke - območje • Spremenljivka ima omejeno območje veljave • Veljavna je v območju, kjer jo deklariramo • Lokalne spremenljivke deklariramo v modulu (npr. podprogramu) • Globalne spremenljivke deklariramo na ravni programa (nad moduli)
Spremenljivke - območje • Veljavnost lahko določamo tudi s eksplicitnima ukazoma: • Publicveljavnost povsod (npr. v Excelu tudi na drugih listih) • Privatelokalna veljavnost
Spremenljivke - polja • DIM ime (im1, im2,...,imn) • spodnji indeksi so vedno = 0 • im so zgornji indeksi! • Primeri:DIM M1(10,10) AS DOUBLEDIM Naslovi(100) AS STRINGDIM Koord(3,100) AS SINGLE
Spremenljivke - primer Sub PrireditevVrednosti() Dim x(3) As Double ‘3 je zg. indeks For i = 0 To 3 x(i) = i Cells(i+1, i+1) = x(i) ‘spodnji indeks celic Excela je 1!!! Next i End Sub
Spremenljivke - primer Sub PrireditevVrednosti() Dim x(3) As Double For i = 1 To 3 x(i) = i ‘indeks 0 ignoriramo Cells(i, i) = x(i) ‘s tem_ dosežemo kompatibilnost indeksov Next i End Sub
Spremenljivke - polja Dinamična deklaracija polja • DIM ime () • id1=5: id2=4ReDIM ime (id1,id2)v programu določimo dimenzije • ReDIM Preserve ime (id3,id4)prejšnja vsebina se ohrani
Krmilne strukture • Sekvenca - zaporedje stavkov • Selekcija • gnezdenje • večkratna selekcija • Repeticija (Iteracija) • while, do - while • for
Krmilne strukture: sekvenca Sekvenco predstavlja zaporedje (blok) stavkov, ki (običajno) sodijo skupaj. ‘blok stavki ‘konec bloka
Krmilne strukture: sekvenca Vrste stavkov: • Prireditveni (prireditev spremelnjivke) • Vhodni (vnos vrednosti spremenljivk) • Izhodni (prikaz vrednosti spremenljivk) • Klicni (klic drugega modula) • Kontrolni (npr end, exit,...)
Krmilne strukture: sekvenca • Prireditev: spremenljivka = izraz • Spremenljivka in izraz naj bosta istega tipa • Mešanje tipov v izrazu je podprto s konverzijo tipov • V izrazu nastopajo spremenljivke, konstante, funkcije in operatorji
Krmilne strukture: sekvenca • Aritmetični operatorji: + - * /^ • Primer aritmetičnega izraza:x = (1+(a+b)*(c+d)) ^0.5
Krmilne strukture: sekvenca • Relacijski operatorji: = > < >= <= <>
Krmilne strukture: sekvenca • Boolovi operatorji: AND OR NOT • Primer izraza: (D>F) AND (S<50.0) OR (A<>B)
Krmilne strukture: sekvenca • Primeri prireditev: a = a + 15.0f = f + 1g = (a+b)*(x+y)/1.2log = (A = B) AND (L < 10.0)Rob(3).zacOglisce = 3 • Naloga: napiši podprogram za zamenjavo vrednosti dveh spremeljivk
Krmilne strukture: sekvenca • Vhodni stavek (VB bere na klasičen način le iz datoteke) Input #datoteka, a, b, c • Izhodni stavek Print “Vrednosti so:”; a,b,c
Krmilne strukture: sekvenca • Vhodni in izhodni stavki v VBA so odvisni od razpoložljivih objektov • V programu Excel najpogosteje uporabljamo celice a = ActiveCellActiveCell = a*10i = 7Cells(i,i) = a*i
Krmilne strukture: sekvenca • Funkcije: glede na tip spremenljivke so v VB vgrajene • matematične funkcije • funkcije z nizi • funkcije z datumi c = SQR(a+b) + a*bdolzina = len(“To je niz”)+2
Krmilne strukture: selekcija if logični izrazthen stavki end if
Krmilne strukture: selekcija if logični izraz then stavki else stavki end if
Krmilne strukture: selekcija if logični izraz then ‘Večkratna stavki ‘selekcija. elseif logični izraz then ‘Ta del se lahko večkrat ponovi. stavki else stavki end if
Krmilne strukture: gnezdenje • Gnezdenje imenujemo strukturo z več selekcijami, ki so vgnezdene ena v drugi • Selekcije se ne smejo prekrivati (en if – end if blok se mora zaključiti znotraj drugega, zunanjega) • Primer: prefinjevanje pogojev
Primeri uporabe selekcije • Izdelava različnih rešitev algoritma:Štipendijo Marie Curie prejmejo študentke s povprečno oceno 8 ali več in prihodkom na družinskega člana, ki je nižji od danega praga • Izdelava programa za račun kvadratne enačbe
Krmilne strukture: repeticija Do stavki Loop
Krmilne strukture: repeticija Do While logični izraz stavki Loop
Krmilne strukture: repeticija Do Until logični izraz stavki Loop
Krmilne strukture: repeticija Do stavki Loop While log. izraz
Krmilne strukture: repeticija Do stavki Loop Until log. izraz
Krmilne strukture: repeticija FOR stevec = zacetek _ TO konec _ STEP korak ‘neobvezno stavki NEXT stevec
Repeticija - primer Sub CommandButton1_Click() For i = 1 To 10 z = int((i/2 - int(i/2))*2 + 1) For j = z to 10 Step 2 Cells(i, j) = “X” Next j Next i End Sub
Uporaba modulov Dve vrsti modulov s procedurami sta: • Podprogramsub ime (seznam spremenljivk) ...end sub • Funkcijafunction ime (seznam sprem.) AS tip...end function
Uporaba modulov: sub Sub KvadEn (a,b,c,x1,x2) Dim D as Double D=b^2-4*a*c if D < 0 then print “Ni rešitve…” else x1=(-b-SQR(D))/(2*a) x2=(-b+SQR(D))/(2*a) print “Rešitev:”,x1, x2 end if end sub
Uporaba modulov: function • funkcija je posebna oblika procedure, ki vrne vrednost • Primer: FUNCTION Fakulteta (n) AS double DIM i AS integer‘števec Fakulteta = 1 FOR i = 1 TO n Fakulteta = Fakulteta * i NEXT i END FUNCTION
Uporaba modulov • Podprogram ali funkcijo lahko kadarkoli pokličemo iz kateregakoli drugega modula, npr: call KvadEn (2,-3,1,r1,r2) rezultat = faktoriela (33) • Spremenljivke “prenašamo” kot parametre (argumente) • Kadar modul kliče samega sebe, pravimo temu rekurzija.
sub GP ... call PA ... spr=FB() ... end sub sub PA ... end sub function FB ... end function Uporaba modulov GP PA FB