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