Sunteți pe pagina 1din 37

|   


u 

  
Aplicatiile simple constau dintr-o singura forma, codul întregii
aplicatii aflându-se în acea formă. Pe masura ce se creeaza aplicatii mai
mari şi sofisticate, se adauga forme aditionale. Deoarece într-o forma nu
se pot invoca procedurile altei forme se creeaza module de cod separate,
care contin proceduri care implementeaza codul comun, acestea putand fi
invocate din fiecare forma a aplicatiei. Fiecare modul de cod sau forma
poate contine :
‡ 
 - constante, tipuri de date, variabile, declaratii de
proceduri (în aceste sectiuni nu poate fi plasat cod executabil)
‡ |    - proceduri 0  care sunt executate în raspuns
la actiuni declanşate de utilizator sau evenimente sistem. Aceste
proceduri pot aparea numai în modulele formă.
‡ |   
 - proceduri care nu sunt asociate direct cu un
eveniment. Procedurile generale ale unei forme sunt locale, nu pot fi
apelate din alte module. Procedurile generale din modulele cod - care pot
ti proceduri 0  sau   - sunt genera1e, e1e putând fi invocate
din orice cod sau formă.
G |   
^ând un obiect Visual Basic recunoaşte aparitia unui
eveniment, ape1eaza automat procedura eveniment cu numele
corespunzator evenimentului. Deoarece numele stabileşte o
asociaţie între obiect şi cod, se spune că procedurile eveniment
sunt a aa  formei sau controalelor.
O procedura eveniment pentru un control combină numele
controlului (speciticat de proprietatea Name), o liniuta de
subliniere ( _) şi un nume de eveniment. Spre exemplu, sa
consideram un buton de comanda numit cmdGo şi
evenimentul ^lick: procedura asociată va fi _
.
 |   

|     a  nu sunt invocate la aparitia unui
eveniment ci la apelul explicit al unei părţi a codului aplicatiei.
Scopul creării acestor proceduri rezidă în aceea că
evenimente diferite pot solicita tratari similare. Plasarea
instructiunilor necesare elimina, astfel, duplicarea. Spre
exemplu, setarea culorii poate fi comuna mai multor
evenimente, astfel încât plasarea unui cod corespunzător într-o
procedură generală este o idee bună.
 |   Sub
O procedura Sub permite implementarea unui cod executabil. Apelul procedurii
Sub este realizat de instructiunea Call, care transfera controlul programului
procedurii:
Call nume[(lista_argumente)]
sau prin simplul apel:
nume D 


Sintaxa[Static] [Private] Sub nume D 


D    
[Exit Sub]
D   
End Sub
Părţile unei proceduri Sub sunt:
‡ Static - care indica faptul că variabilele locale ale procedurii Sub trebuie salvate
(prezervate) intre apeluri.
‡ Private - indica faptul ca procedura Sub este accesibila numai altor proceduri
din modulul în care se afla, procedurile altor module neputand sa o acceseze.
‡ Sub - marcheaza inceputul unei proceduri Sub.
‡ nume -. precizeaza numele procedurii. Numele procedurilor respecta
regulile generale pentru identificatori. Datorita faptului ca numele Sub
sunt recunoscute de toate procedurile modulelor, nume nu poate fi
identic cu un alt nume global din program.
‡ 

- reprezinta lista de variabile, reprezentand argumente,
transmise procedurii Sub la apel, Daca apar mai multe variabile, acestea
sunt separate prin virgule. ^u exceplia situatiilor in care sunt identificate
prin cuvântul rezervat ByVal, care indica faptul ca argumentele sunt
transmise prin valoare, argumentele sunt transmise prin referinta, astfel
incat schimbandu-i valoarea in interiorul procedurii Sub, valoarea sa
este modificata şi in procedura apelanta.
‡ bloc    - grupul instructiunilor care vor fi
executate la fiecare apel al procedurii.
‡ Exit Sub - permite parasirea imediata a procedurii Sub, executia
programului continuând cu instructiunea care urmeaza instructiunii care
a apelat procedura Sub.
‡ End Sub - marcheaza sfârşitul procedurii Sub.
‰ ‰‰ ‰

ë |    
Asemenea unei proceduri Sub, procedurile Function pot executa o serie de
instructiuni, eventual bazate pe argumentele transmise. Spre deosebire de acestea,
procedurile Function   aa  aa 
Sintaxa[Static] [Private] Function nume_functie
D 

 [As tip]
[bloc   
[nume  




[Exit Function]
D   
[nume functie =



End Function
Deoarece aspectele prezentate la procedura Sub sunt similare şi pentru procedura
Function, ne marginim la a evidentia faptul ca tipul specificat cu clauza As
determina tipul rezultatului retumat de procedura Function.
Exemplu: Function nr( ) As Integer
Pentru a obţine o valoare Function, asignaţi valoarea numelui functiei:
Function Fct (...)
µ«
Fct = valoare
µ«
End Function
‰ ‰  ‰
ë u  
   
Pentru a crea o procedură generală, activaţi fereastra
Developer, apoi selectati icoanaVisual Basic, Insert dupa care
se selecteaza mai intii un modul ,daca nu a fost creat
anterior,urmata de Procedure. Antetul procedurii poate fi pur
şi simplu 0  sau  , urmat de numele procedurii,
spre exemplu:
Sub Trasare ( ) Function Calcul ( )
r  


Instructiunile care controleaza deciziile şi buclele sunt numite
÷    
 
 
÷   ÷
^ele mai folosite
structuri de control sunt:
‡If Then Else
‡Select Case
‡Do
‡For
r u     
0    
 testeaza condiţia instrucţiunii şi, in
funcţie de rezultatul testului, executa diferite operaţii. ^ele trei
structuri de decizie disponibile in Visual Basic sunt:
‡If.. .Then
‡If... Then...Else
‡Select Case
r u u 4  
Blocurile If. . . . Then sunt folosite pentru a executa una sau
mai multe instrucţiuni daca o condiţie specificata este indeplinita.
Sintaxa blocul If. . .Then permite folosirea sa atat într-o singura
linie, cat şi in mai multe linii:
If   Then ÷  
If   Then
÷  
End If
^ondiţia blocului If. . .Then este, de obicei, o comparaţie, dar
ea poate fi orice expresie evaluabila la o valoare numerica. Visual Basic
interpreteaza aceasta valoare ca True sau False; o valoare numerica
zero este echivalenta cu False, in timp ce o valoare numerica unu este
echivalenta cu True.
Exemple: If Nr > 9 Then Admis = Date ()
If Nr > 9 Then
Admis = Date()
End If
r u G 4  
Blocurile If. . .Then. . .Else sunt folosite pentru a defini
mai multe instrucţiuni (blocuri de instrucţiuni), una (unul) dintre acestea
urmand a fi executata. Sintaxa blocului If. . . Then. . .Else
este urmatoarea:
If  a Then
÷  
DElseIf  a Then
 ÷   [ . . .
DElse
  ÷   n[[
End If
Visual Basic testeaza a  daca aceasta este evaluata la
False, se testeaza  a ş.a.m.d., pana cand se gaseşte o condiţie
adevarata. La gasirea unei condiţii adevarate, Visual Basic executa blocul
de instrucţiuni corespunzator şi apoi trece la codul care urmeaza dupa
End If.
Optional, se poate include un bloc de instructiuni Else, care va fi
executat daca niciuna dintre condiţii nu a fost evaluata la True.
Exemple:
If Nr > 9
Admis = Date ()
Else
Msg = "Respins"
End If
If Nr > 7 Then
Msg = "OK"
ElseIf Nr > 5
Msg = "Slab"
Else
Msg = "Ko"
End If
r u  0  
Structura Select Case este o altemativa la If. . . The. . .Else pentru
executarea selectiva a unui bloc de instructiuni din mai multe blocuri de instructiuni.
Deşi efectul este similar cu cel al structurii If. . . The. . . Else, codul
implementat cu Select Case este mai eficient şi lizibil.
Exemplu:
Select Case
Case 0
Msg = "Nul"
Case 1
Msg = "Impar"
Case 2
Msg = "Par"
Case Else
Msg = "Out of range"
End Select
r G u =

Do. . . Loop este folosita pentru a repeta un bloc de instructiuni a o


conditie este adevarata sau aa a o conditie devine adevarata.
Sintaxa 1:
Do [{While I Until} conditie]
D   
[Exit Do]
bloc_instrucţiuni
Loop
Sintaxa 2:
Do
D    
[Exit Do]
D   
Loop [{While I Until} condiţie]
Partea Do trebuie sa fie prima instructiune a structurii; While indica faptul ca
bucla este executata a conditia este adevarata; partea Until indica faptul ca bucla
este executata a a conditia este adevarata.
^onditia  este o expresie numerica sau şir de caractere evaluabila la
adevarat (1) sau
fals (o sau Null).
Instructiunea Exit Do, folosita numai in interiorul buclei Do. . .Loop,
reprezinta o cale
altemativa de părasire a buclei.
Ë Este posibila existenta unor instructiuni Do. . .Loop imbricate, ca in
urmatorul exemplu:
Dim Nrl, Nr2 As Integer
Do
Do
Beep
µNr2 = Nr2 + 1
LoopWhile (Nr2 <10)
Nr1 =Nr1 + 1
Loop Until (Nr1 > 10)
r G G   

Instructiunea For. . .Next executa un grup de instructiuni de un numar specificat de ori
Sintaxa:
For contor = To DStep  


D   
D 
D    
Next [contor [, contor] [, ...]]
^lauza Step indica faptul ca incrementul este fixat explicit. Instruqiunea Exit For
permite parasirea buclei For. . . Next forţat.
Ë Buclele For. . . Next pot fi imbricate, dupa cum rezulta din urmatorul exemplu:
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
Print i,j,k
Next K
Next J
Next I
Ë Daca variabila instrucţiunii Next V V   
V 
VV   Step V V
  
      V 
V V   
ţiune ForO   
 V
Next V V      V  
  
V  
VV V V V
 V

V
r  |       0     
Instructiunile Exit Sub şi Exit Function permit parasirea unei proceduri
Sub, respectiv Function. Aceste instructiuni sunt utile in situatiile in care procedura
a efectuat tot ceea ce era necesar şi se doreşte parasirea imediata a rutinei.
Exemplu:
Sub ForIn_Load()
µ«
Exit Sub
µ«
End Sub
*   

O a a  este un identificator folosit pentru stocarea unor valori in timpul
executarii programului. Numele variabilelor respecta specificatiile valabile pentru toti
identificatorii Visual Basic.
* u 
   


ln interiorul unei proceduri, variabilele se declara cu instructiunea Dim
Dim 
  [As  ,
^lauza optionala As permite definirea tipului de data al variabilei declarate. Daca
aceasta clauza este omisa, tipul variabilei va fi cel implicit - Variant (cu exceptia
situatiilor in care acesta este schimbat cu instructiunea Deftip).
‡ 
 

Declararea variabilelor nu este obligatorie, putandu-se folosi rutine de genul:
Function Cub (Nr)
VCub = Nr * Nr * Nr
End Function
Daca variabilele nu sunt declarate inainte de prima folosire, acestea sunt create
automat de Visual Basic
* G 
   

Variabilele declarate intr-o procedura pot fi folosite (accesate) numai in
interiorul acelei proceduri. = de valabilitate este a

In functie de modul de declarare, o variabila poate avea urmatoarele


domenii:
Domeniu Declarare
Local ,   sau   (intr-o procedura)
Modul  (in sectiunea de declaratii a unei
forme sau modul)
Global 

(in sectiunea de declaratii a unui
modul)
‡   



àa a  a
a
a a ÷
sunt recunoscute numai in
procedura in care apar, acest tip de variabila reprezinta o bună optiune in
situatiile in care sunt necesare calcule temporare. Mai multe proceduri
pot avea o variabilă numită Temp, asignarea unei valori variabilei Temp
a unei proceduri nealterand valorile celorlalte variabile Temp.
O procedură se poate autoapela - tehnică numită  ÷ a  -, la
fiecare invocare a procedurii o nouă copie a variabilei locale este creată.
Variabilele locale declarate cu Dim exista doar pe perioada executării
procedurii, in timp ce variabilele declarate cu Static ( àa a 
÷ a 
există pe tot timpul rulării aplicatiei.
‡   


 

O a a a a
 
 
este disponibilă pentru
toate procedurile din formă sau cod, nu şi pentru codul altor forme sau
module de cod. Variabilele la nivel de modul sunt active pe toate durata
aplicatiei şi işi păstreaza valorile chiar atunci cand forma este inactiva
a

‡   
 


O a a a  aa  a
a a 
are cel mai intins domeniu.
Valorile variabilelor globale sunt disponibile pentru toate formele şi
modulele de cod ale aplicatiei, pe toată durata acesteia.
à
 V V   V  V 
V  
 V
     
 V V 

š       

-oate variabilele au un tip de data. Un 

a a
precizeaza un domeniu de valori impreuna cu operatiile care pot fi
executate asupra ace lor valori.
š u 
  
- Và
 V    V 
 VV V
VVV 
  V 
  V  

VO

  Variant V V
  
  V
 
    
V V   V
O

š G 
       

In Visual Basic există şapte tipuri de date fundamentale, incluzand Variant, după cum rezultă din următorul tabel:
Nume tip Descriere ^aracter declaraţie Domeniu
4 Intreg 2-octeti % -
32.768 la 32.767
V  Intreg 4-octeti & -
2.147.483.648 la 2.147.483.64 Single Virgulă mnobilă !
-3.402823E-45 la -1.402823E38
4-octeti (valori negative)
1.401298E-45 la 3.402823E38 (valori pozitive)

 Virgulă mobilă # -
1.79769313486232E308 la
8-octeti 4.94065645841247E-324
(valorinegative)
4.94065645841247E-324 la
1.79769313486232E308
(valori pozitive)
  Numar 8-octe!i cu @ 922,337,203,685,477.5808 la
virgula zecimala fixa 922,337,203,685,477.5807
  şir de caractere4 $ 0 la aprox.
65.500 caractere Variant Date/-ime, şir de (Fara)
Date: January 1, 0000 la
caractere sau virgula December 31,9999
mobilă Numeric: Similar cu Double şir:
ü u   


Visual Basic permite crearea de masive care au pană la 60 de dimensiui. Pentru a
declara un masiv bidimensional se procedează astfel:
Dim Matrice (1 To 10, 1 To 10) As Integer
iar o matrice tridimensională se declară, spre exemplu, astfel:
Dim Masiv (10, 1 To 20, 10) As Integer
Asignarea de valori elementelor unui masiv multidimensional se face astfel:
Masiv(l, 1, 1) = 1 "
Pentru a calcula suma elementelor de pe diagonala principală a unei matrici (un
masiv bidimensional), spre exemplu, folosim următorul cod:
Suma = 0
For i = 1 To N
Suma = Suma + Matr(i, i)
Next
‰ ‰
 

‰