Post on 09-Apr-2018
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 1/37
Proceduri Visual Basic
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 2/37
1. Modulele de cod
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 nuse 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 :
Declaratii - constante, tipuri de date, variabile, declaratii de proceduri (în aceste sectiuni nu poate fi plasat cod executabil) Proceduri eveniment - proceduri Sub care sunt executate în raspuns
la actiuni declanate de utilizator sau evenimente sistem. Aceste
proceduri pot aparea numai în modulele form. Proceduri generale - 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 potti proceduri Sub sau Function - sunt genera1e, e1e putând fi invocate
din orice cod sau form.
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 3/37
2. Proceduri eveniment
Când un obiect Visual Basic recunoate aparitia unui
eveniment, ape1eaza automat procedura eveniment cu numelecorespunzator evenimentului. Deoarece numele stabilete o
asociaie între obiect i cod, se spune c procedurile eveniment
sunt ataate formei sau controalelor.
O procedura eveniment pentru un control combin numelecontrolului (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 Click: procedura asociat va fi cmdGo _ Click .
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 4/37
3. Proceduri generale
Procedurite gener ate nu sunt invocate la aparitia unui
eveniment ci la apelul explicit al unei pri a codului aplicatiei.Scopul crerii 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 corespunztor într-o
procedur general este o idee bun.
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 5/37
3. Proceduri 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 [lista_argumente]
Sintaxa:[Static] [Private] Sub nume [(argumente)]
[bloc instructiuni]
[Exit Sub][bloc_instruciuni]
End Sub
Prile 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 proceduridin modulul în care se afla, procedurile altor module neputand sa o acceseze.
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 6/37
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 fiidentic cu un alt nume global din program. argumente - reprezinta lista de variabile, reprezentand argumente,
transmise procedurii Sub la apel, Daca apar mai multe variabile, acestea
sunt separate prin virgule. Cu 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, astfelincat schimbandu-i valoarea in interiorul procedurii Sub, valoarea sa
este modificata i in procedura apelanta.
bloc instructiuni - grupul instructiunilor care vor fiexecutate la fiecare apel al procedurii. Exit Sub - permite parasirea imediata a procedurii Sub, executia
programului continuând cu instructiunea care urmeaza instructiunii carea apelat procedura Sub.
End Sub - marcheaza sfâritul procedurii Sub.
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 7/37
EXEMPLU DE PROCEDURA
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 8/37
4. Proceduri Function
Asemenea unei proceduri Sub, procedurile Function pot executa o serie de
instructiuni, eventual bazate pe argumentele transmise. Spre deosebire de acestea, procedurileFunction r etur neaza o val oar e.
Sintaxa:[Static] [Private] Function nume_functie[(argumente)] [As tip]
[bloc instructiuni]
[nume functie= expresie]
[Exit Function]
[bloc_instructiuni][nume functie = expresie]
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 IntegerPentru a obine o valoare Function, asignai valoarea numelui functiei:
Function Fct (...)
µ«
Fct = valoare
µ«End Function
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 9/37
EXEMPLU FUNCTIE
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 10/37
4.1. Lucrul cu proceduri
Pentru a crea o procedur general, activai fereastraDeveloper, 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 Sub sau Function, urmat de numele procedurii,spre exemplu:Sub Trasare ( ) Function Calcul ( )
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 11/37
5. Controlul execuiei
Instructiunile care controleaza deciziile i buclele sunt numite
st r ucturi de cont rol ( cont rol st r uctur e s). Cele mai folosite
structuri de control sunt:If Then Else
Select Case
Do
For
5.1. Structuri de decizie
S t r ucturile de deci zie testeaza condiia instruciunii i, in
funcie de rezultatul testului, executa diferite operaii. Cele trei
structuri de decizie disponibile in Visual Basic sunt:If.. .Then
If... Then...Else
Select Case
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 12/37
5.1.1. If... Then
Blocurile If. . . . Then sunt folosite pentru a executa una sau
mai multe instruciuni daca o condiie specificata este indeplinita.
Sintaxa blocul If. . .Then permite folosirea sa atat într-o singuralinie, cat i in mai multe linii:
If cond it ie Then in st r uct iune
If cond it ie Then
in st r uct iune
End IfCondiia blocului If. . .Then este, de obicei, o comparaie, dar
ea poate fi orice expresie evaluabila la o valoare numerica. Visual Basicinterpreteaza aceasta valoare ca True sau False; o valoare numerica
zero este echivalenta cu False, in timp ce o valoare numerica unu esteechivalenta cu True.
Exemple: If Nr > 9 Then Admis = Date ()
If Nr > 9 Then
Admis = Date()
End If
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 13/37
5.1.2. If... Then...Else
Blocurile If. . .Then. . .Else sunt folosite pentru a defini
mai multe instruciuni (blocuri de instruciuni), una (unul) dintre acestea
urmand a fi executata. Sintaxa blocului If. . . Then. . .Elseeste urmatoarea:
If cond it ia1 Then
bl oc_in st r uct iuni1[ElseIf cond it ia2 Then
[bl oc_in st r uct iuni2] ] . . .[Else[bl oc in st r uct iuni n]]End If
Visual Basic testeaza cond iia 1; daca aceasta este evaluata laFalse, se testeaza cond it ia2, .a.m.d., pana cand se gasete o condiie
adevarata. La gasirea unei condiii adevarate, Visual Basic executa blocul
de instruciuni corespunzator i apoi trece la codul care urmeaza dupaEnd If.
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 14/37
Optional, se poate include un bloc de instructiuni Else, care va fi
executat daca niciuna dintre condiii 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
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 15/37
5.1.3. Select Case
Structura Select Case este o altemativa la If. . . The. . .Else pentru
executarea selectiva a unui bloc de instructiuni din mai multe blocuri de instructiuni.Dei 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
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 16/37
5.2.1. Do...Loop
Do. . . Loop este folosita pentru a repeta un bloc de instructiuni cand o
conditie este adevarata sau pana cand o conditie devine adevarata.
Sintaxa 1:
Do [{While I Until} conditie][bloc_instruciuni]
[Exit Do]
bloc_instruciuni
Loop
Sintaxa 2:Do
[bloc instructiuni]
[Exit Do]
[bloc_instrucfiuni]
Loop [{While I Until} condiie]
Partea Do trebuie sa fie prima instructiune a structurii; While indica faptul ca bucla este executata cand conditia este adevarata; partea Until indica faptul ca bucla
este executata panii cand conditia este adevarata.
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 17/37
Conditia cond iie este o expresie numerica sau ir de caractere evaluabila la
adevarat (1) saufals (o sau Null).
Instructiunea Exit Do, folosita numai in interiorul buclei Do. . .Loop,
reprezinta o cale
altemativa de prasire 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)
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 18/37
5.2.2. For...Next
Instructiunea For. . .Next executa un grup de instructiuni de un numar specificat de ori
Sintaxa:For contor = start To stop[ Step increment]
[bloc_instrucfiuni]
[Exit For]
[bloc instructiuni]
Next [contor [, contor] [, ...]]
Clauza Step indica faptul ca incrementul este fixat explicit. Instruqiunea Exit For
permite parasirea buclei For. . . Next forat.
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 instruciunii Next este omisa, valoarea incrementului Step esteadaugata la variabila asociata cu cea mai recenta instruciune For. Daca o instruciuneNext este intalnita inaintea instruciunii corespunzatoare, este generata o eroare
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 19/37
5.3. Parasirea unei proceduri Sub sau Function
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 dorete parasirea imediata a rutinei.
Exemplu:Sub ForIn_Load()
µ«
Exit Sub
µ«
End Sub
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 20/37
7.Variabile
O variabil i este un identificator folosit pentru stocarea unor valori in timpul
executarii programului. Numele variabilelor respecta specificatiile valabile pentru toti
identificatorii Visual Basic.
7.1. Declararea variabilelorÎn interiorul unei proceduri, variabilele se declara cu instructiunea Dim:
Dim nume_variabila [As tip] ,
Clauza 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 implicit
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 createautomat de Visual Basic
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 21/37
7.2. Domeniul unei variabile
Variabilele declarate intr-o procedura pot fi folosite (accesate) numai in
interiorul acelei proceduri. Domeniul de valabilitate este l ocal.
In functie de modul de declarare, o variabila poate avea urmatoareledomenii:
Domeniu Declarare
Local Dim, Static sau ReDim (intr-o procedura)
Modul Dim (in sectiunea de declaratii a unei
forme sau modul)Global Global (in sectiunea de declaratii a unui
modul)
Variabile locale
V
ariabilele l ocale (l ocal variable s) 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.
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 22/37
O procedur se poate autoapela - tehnic numit r ecur sivitate -, la
fiecare invocare a procedurii o nou copie a variabilei locale este creat.Variabilele locale declarate cu Dim exista doar pe perioada executrii
procedurii, in timp ce variabilele declarate cu Static ( V ariabile stat ice ) exist pe tot timpul rulrii aplicatiei.
Variabile la nivel de modul
O variabila la nivel de modul ( module-level ) 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 durataaplicatiei i ii pstreaza valorile chiar atunci cand forma este inactiva
(unl oaded ).
Variabile globale
O variabila gl obala (gl obal variable ) are cel mai intins domeniu.Valorile variabilelor globale sunt disponibile pentru toate formele i
modulele de cod ale aplicatiei, pe toat durata acesteia.
Variabilele globale nu pot fi declarate in proceduri i nici inmodulele form
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 23/37
8. Tipuri de date fundamentale
Toate variabilele au un tip de data. Un t i p de data precizeaza un domeniu de valori impreuna cu operatiile care pot fi
executate asupra ace lor valori.
8.1. Tipul Variant
Tipul de data Variant poate stoca multe tipuri de date - numere, texte, valori calendaristice sau orare. Ovariabila Variant nu este o variabila fr tip, ci mai degraba o variabila al carei tip poate fi modificat liber .
8.2. Alte tipuri de date fundamentaleIn Visual Basic exist apte tipuri de date fundamentale, incluzand Variant, dup cum rezult din urmtorul tabel:
Nume tip Descriere Caracter declaraie Domeniu
Integer Intreg 2-octeti % -
32.768 la 32.767
Long Intreg 4-octeti & -
2.147.483.648 la 2.147.483.64 Single Virgul mnobil !
-3.402823E-45 la -1.402823E384-octeti (valori negative)
1.401298E-45 la 3.402823E38 (valori pozitive)
Double Virgul mobil # -
1.79769313486232E308 la
8-octeti 4.94065645841247E-324
(valorinegative)
4.94065645841247E-324 la
1.79769313486232E308
(valori pozitive)
Currency Numar 8-octe!i cu @ 922,337,203,685,477.5808 la
virgula zecimala fixa 922,337,203,685,477.5807
String ir de caractere4 $ 0 la aprox.
65.500 caractere Variant Date/Time, ir de (Fara)
Date: January 1, 0000 la
caractere sau virgula December 31,9999
mobil Numeric: Similar cu Double ir:
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 24/37
9.1. Masive multidimensionale
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 urmtorul cod:Suma = 0
For i = 1 To N
Suma = Suma + Matr(i, i)
Next
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 25/37
EXCEL CALCUL
TABELAR
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 26/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 27/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 28/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 29/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 30/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 31/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 32/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 33/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 34/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 35/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 36/37
8/8/2019 Curs1 Visual Basic Limbaj
http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 37/37