end sub
Transcription
end sub
RAČUNALNIŠKO PROGRAMIRANJE IN PODATKOVNE BAZE OSNOVE PROGRAMIRANJA IN SINTAKSA VISUAL BASIC-A Danijel Rebolj, Andrej Tibaut DODATNI VIRI n U. Mesojedec:Visual basic, Pasadena, 2002 n M. Prtenjak:Visual Basic za aplikacije, Desk, 1998 n J. Walkbench: Excel 2003 power programming with VBA, Wiley, 2004 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 n Osnovna struktura so podprogrami (sub) in druge vrste modulov n 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) n V začetku vsakega modula so praviloma deklaracije podatkovnih struktur OSNOVE SINTAKSE VB n ‘ začetek komentarja (kjerkoli v vrstici) n Vrstic ne zaključujemo s posebnim znakom (kot npr. pri Pascalu, C ++ ali Javi s ;), zato potrebujemo poseben znak za nadaljevanje vrstice, podčrtaj _ n Z : ločimo stavke v isti vrstici n VB ni “občutljiv” na velike in male črke (ni “case sensitive”) SPREMENLJIVKE n Spremenljivka je referenca na določene pomnilne celice n Spremenljivke so različnih tipov n Tip izberemo glede na vrsto podatka, ki ga spremenljivka predstavlja n Spremenljivko pred uporabo deklariramo (določimo ime in tip) in inicializiramo (priredimo vrednost) SPREMENLJIVKE OSNOVNI TIPI Ime tipa Velikost Območje vrednosti Boolean 1 byte -1 do 0 oz TRUE in FALSE Integer 2 byte -32768 do +32767 Long 4 byte -2147483648 do +-2147483647 Single 4 byte -3.402823E38 do -1.401298E-45 za negativne in 1.401298E-45 do 3.402823E38 za pozitivne vrednosti Double 8 bytov -1.79769313486232E308 do -4.94065645841247E-324 za negativne in 4.94065645841247E-324 do 1.79769313486232E308 za pozitivne vrednosti Currency 8 bytov -922337203685477.5808 do 922337203685477.5807 String 1 byte/znak 0 do približno 65,500 bytov Variant po potrebi katerakoli numerična vrednost do obsega Double ali katerikoli niz znakov (String) SPREMENLJIVKE DEKLARACIJE n DIM ime AS tip n TYPE imeTipa ‘uporabniški tip ime1 AS tip1 ... END TYPE n Zapisovanje konstant: 123, -123.45, 1.2345E2, “niz znakov”,TRUE, FALSE SPREMENLJIVKE OBMOČJE VELJAVE n Spremenljivka ima omejeno območje veljave n 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 VELJAVE n Veljavnost lahko določamo tudi s eksplicitnima ukazoma: n Public veljavnost povsod (npr. v Excelu tudi na drugih listih) n Private lokalna veljavnost SPREMENLJIVKE POLJA n DIM ime(is1 TO iz1,..., _ isn TO imn) AS type n is so spodnji, im pa zgornji indeksi n če is ne navedemo, je privzeto 0 n Primeri: DIM M1(10,10) AS DOUBLE DIM Naslovi(100) AS STRING DIM Koo(1 TO 3,100) AS SINGLE SPREMENLJIVKE PRIMER DEKLARACIJE IN UPORABE Sub PrireditevVrednosti() Dim x(1 TO 3) As Double For i = 1 To 3 x(i) = i Cells(i, i) = x(i) Next i End Sub SPREMENLJIVKE DINAMIČNA DEKLARACIJA POLJA n DIM ime () AS type n ReDIM ime (im1,im2) nekje v programu (če gre za lokalno spremenljivko v istem modulu) določimo ali spremenimo dimenzije n ReDIM Preserve ime (im3,im4) prejšnja vsebina polja se ohrani DATOTEKE n Predstavljajo celostno organizacijo podatkov v zunanjem pomnilniku n Pred uporabo datoteko odpremo s stavkom OPEN, beremo z INPUT, vanjo zapisujemo z WRITE, zapremo s CLOSE KRMILNE STRUKTURE n Sekvenca - zaporedje stavkov n Selekcija § gnezdenje § večkratna selekcija n Repeticija (Iteracija) § while, do - while § for KRMILNE STRUKTURE SEKVENCA Sekvenco predstavlja zaporedje (blok) stavkov, ki (običajno) sodijo skupaj. stavek ‘začetek bloka stavki ‘konec bloka stavek stavek stavek stavki KRMILNE STRUKTURE SEKVENCA Vrste stavkov: n Prireditveni (prireditev spremelnjivke) n Vhodni (vnos vrednosti spremenljivk) n Izhodni (prikaz vrednosti spremenljivk) n Klicni (klic drugega modula) n Kontrolni (npr end, exit,...) KRMILNE STRUKTURE SEKVENCA n Prireditev: spremenljivka = izraz n Tip spremenljivke in izraza naj bo isti Ne mešamo jabolk in hrušk! VBA dopušča nekatere nedoslednosti! n Mešanje tipov v izrazu je podprto s konverzijo tipov n V izrazu nastopajo spremenljivke, konstante, funkcije in operatorji n Naloga: napišimo podprogram s spremenljivkami za dimenzijo stebra KRMILNE STRUKTURE SEKVENCA n Aritmetični operatorji: + * / ^ n Primer aritmetičnega stavka: x = (1+(a+b)/(c*d)) ^0.5 KRMILNE STRUKTURE SEKVENCA n Relacijski operatorji: = > < >= <= <> KRMILNE STRUKTURE SEKVENCA n Boolovi operatorji: AND OR NOT n Primer izraza: (D>F) AND (S<50.0) OR (A<>B) KRMILNE STRUKTURE SEKVENCA n Primeri prireditev: a = a + 15.0 f = f + 1 g = (a+b)*(x+y)/1.2 log = (A = B) AND (L < 10.0) RoboviKocke(3).zacOglisce = 3 Kako bi zamenjal kovanca v rokah? n Naloga: napišimo podprogram za zamenjavo vrednosti dveh spremeljivk (v eni roki imam 10, v drugi pa 20 centov...) KRMILNE STRUKTURE SEKVENCA n Vhodni stavek (VB bere na klasičen način le iz datoteke) Dim a, b, c As String Open "file.txt" For Input As #1 Do Until EOF(1) Input #1, a, b, c Debug.Print "Vrednosti so:"; a, b, c Loop n Izhodni stavek Debug.Print "Vrednosti so:"; a, b, c n Naloga: napišimo zgornji podprogram za vnos podatkov iz datoteke KRMILNE STRUKTURE SEKVENCA n Vhodni in izhodni stavki v VBA so odvisni od razpoložljivih objektov n V programu Excel najpogosteje uporabljamo celice a = ActiveCell ActiveCell = a*10 i = 7 Cells(i,i) = a*i KRMILNE STRUKTURE SEKVENCA n Funkcije: glede na tip spremenljivke so v VB vgrajene § matematične funkcije § funkcije z nizi § funkcije z datumi c = SQR(a+b) + a*b dolzina = len(“To je besedilo”) KRMILNE STRUKTURE SELEKCIJA logični izraz if logični izraz then stavki end if false true stavki KRMILNE STRUKTURE SELEKCIJA if logični izraz then logični izraz stavki else stavki end if false true stavki stavki KRMILNE STRUKTURE SELEKCIJA if logični izraz then stavki elseif logični izraz then stavki else stavki end if KRMILNE STRUKTURE SELEKCIJA - GNEZDENJE n Gnezdenje imenujemo strukturo z več selekcijami, ki so vgnezdene ena v drugi n Selekcije se ne smejo prekrivati (en if – end if blok se mora zaključiti znotraj drugega, zunanjega) KRMILNE STRUKTURE SELEKCIJA – PRIMERI UPORABE n 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 n Izdelava programa za račun kvadratne enačbe Selekcija za izpis korenov kvadratne enačbe KRMILNE STRUKTURE REPETICIJA Do stavki Loop stavki KRMILNE STRUKTURE REPETICIJA logični izraz Do While logični izraz stavki Loop false true stavki KRMILNE STRUKTURE REPETICIJA logični izraz Do Until logični izraz stavki Loop true false stavki KRMILNE STRUKTURE REPETICIJA stavki Do true stavki Loop While logični izraz logični izraz false KRMILNE STRUKTURE REPETICIJA Do stavki stavki Loop Until logični izraz false logični izraz true KRMILNE STRUKTURE REPETICIJA stevec = zacetek FOR stevec = zacetek TO konec _ STEP korak stavki NEXT stevec STEP je neobvezen stevec > konec True False stavki stevec = stevec + korak KRMILNE STRUKTURE REPETICIJA 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 MODULI Dve vrsti modulov s procedurami sta: n Podprogram sub ime (seznam spremenljivk) ... end sub n Funkcija function ime (sezn. sprem.) AS tip ... end function MODULI MODULI TIPA SUB Sub KvadEnacba (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 MODULI MODULI TIPA FUNCTION n funkcija je posebna oblika procedure, ki vrne vrednost n 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 MODULI UPORABA MODULOV n Podprogram ali funkcijo lahko kadarkoli pokličemo iz kateregakoli drugega modula, npr: call KvadEnacba (2,-3,1,r1,r2) rezultat = faktoriela (33) n Podatke pri tem “prenašamo” kot parametre (argumente), ki so lahko spremenljivke ali konstante MODULI UPORABA MODULOV sub GP ... call PA ... spr=FB() ... end sub GP PA sub PA ... end sub function FB ... end function FB MODULI UPORABA MODULOV - REKURZIJA n Kadar modul kliče samega sebe, pravimo temu rekurzija n Primer: FUNCTION FakultetaR (n) AS double IF n <= 0 THEN FakultetaR = 1 ELSE FakultetaR = n*FakultetaR(n-1) ENDIF END FUNCTION PREVERJANJE PRAVILNOSTI n Preden module povežemo v celoto preverimo njihovo pravilnost n Izdelamo tabelo spremenljivk in jih “spremljamo” skozi program