2.2 Osnove programiranja (VB).
Download
Report
Transcript 2.2 Osnove programiranja (VB).
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
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 – 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 - deklaracija
DIM ime AS tip
TYPE imeTipa ‘uporabniški
tip
ime1 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:
Public
veljavnost povsod (npr. v Excelu tudi na
drugih listih)
Private
lokalna veljavnost
Spremenljivke - polja
DIM ime (im1, im2,...,imn)
spodnji indeksi so vedno = 0
im so zgornji indeksi!
Primeri:
DIM M1(10,10) AS DOUBLE
DIM Naslovi(100) AS STRING
DIM 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=4
ReDIM 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
stavek
stavek
stavek
stavek
stavki
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.0
f = f + 1
g = (a+b)*(x+y)/1.2
log = (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 = ActiveCell
ActiveCell = a*10
i = 7
Cells(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*b
dolzina = len(“To je niz”)+2
Krmilne strukture: selekcija
if logični izraz then
stavki
end if
logični
izraz
false
true
stavki
Krmilne strukture: selekcija
if logični izraz then
stavki
else
stavki
false
end if
stavki
logični
izraz
true
stavki
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
stavki
Krmilne strukture: repeticija
Do While logični izraz
stavki
Loop
false
logični
izraz
true
stavki
Krmilne strukture: repeticija
Do Until logični izraz
stavki
Loop
true
logični
izraz
false
stavki
Krmilne strukture: repeticija
Do
stavki
Loop While log. izraz
stavki
true
logični
izraz
false
Krmilne strukture: repeticija
Do
stavki
Loop Until log. izraz
stavki
false
logični
izraz
true
Krmilne strukture: repeticija
FOR stevec = zacetek _
TO konec _
STEP korak ‘neobvezno
stavki
True
NEXT stevec
stevec = zacetek
stevec
> konec
False
stavki
stevec = stevec +
korak
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:
Podprogram
sub ime (seznam spremenljivk)
...
end sub
Funkcija
function 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.
GP
Uporaba modulov
PA
sub GP
...
call PA
...
spr=FB()
...
end sub
FB
sub PA
...
end sub
function FB
...
end function