Upload
valentin-vali
View
220
Download
0
Embed Size (px)
Citation preview
8/13/2019 Visual Basic-limbaj-2
1/37
Proceduri Visual Basic
8/13/2019 Visual Basic-limbaj-2
2/37
1. Modulele de cod
Aplicatiile simple constau dintr-o singura forma, codul ntregii
aplicatii aflndu-se n acea form. Pe masura ce se creeaza aplicatii maimari 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 fiinvocate din fiecare forma a aplicatiei. Fiecare modul de cod sau formapoate contine : Declaratii - constante, tipuri de date, variabile, declaratii de
proceduri (n aceste sectiuni nu poate fi plasat cod executabil) Proceduri eveniment- proceduri Subcare sunt executate n raspunsla actiuni declanate de utilizator sau evenimente sistem. Acesteproceduri pot aparea numai n modulele form.
Proceduri generale- proceduri care nu sunt asociate direct cu uneveniment. Procedurile generale ale unei forme sunt locale, nu pot fiapelate din alte module. Procedurile generale din modulele cod - care potti proceduri Subsau Function- sunt genera1e, e1e putnd fi invocate
din orice cod sau form.
8/13/2019 Visual Basic-limbaj-2
3/37
2. Proceduri eveniment
Cnd un obiect Visual Basic recunoate aparitia unuieveniment, ape1eaza automat procedura eveniment cu numelecorespunzator evenimentului. Deoarece numele stabilete o
asociaie ntre obiecti cod, se spune cprocedurile evenimentsunt ataateformei sau controalelor.O procedura eveniment pentru un control combinnumele
,subliniere ( _) i un nume de eveniment. Spre exemplu, saconsideram un buton de comanda numit cmdGo ievenimentul Click: procedura asociatva ficmdGo_Click.
8/13/2019 Visual Basic-limbaj-2
4/37
3. Proceduri generale
Procedurite generate nu sunt invocate la aparitia unuieveniment ci la apelul explicit al unei pri a codului aplicatiei.
Scopul crerii acestor proceduri rezid n aceea c
evenimente diferite pot solicita tratari similare. Plasareainstructiunilor necesare elimina, astfel, duplicarea. Spreexemplu, setarea culorii poate fi comuna mai multor
, -procedurgeneraleste o idee bun.
8/13/2019 Visual Basic-limbaj-2
5/37
3. Proceduri Sub
O proceduraSubpermite implementarea unui cod executabil. Apelul procedurii
Sub este realizat de instructiuneaCall, care transfera controlul programuluiprocedurii:Call nume[(lista_argumente)]
sau prin simplul apel:nume[lista_argumente]
Sintaxa unei functii este:[Static] [Private] Sub nume[(argumente)][bloc instructiuni]
[Exit Sub]
[bloc_instruciuni]
End SubO procedura Subpoate fi declarata: Static- care indica faptul cvariabilele locale ale proceduriiSubtrebuie salvate(prezervate) intre apeluri. Private- indica faptul ca proceduraSubeste accesibila numai altor proceduri
din modulul n care se afla, procedurile altor module neputand sa o acceseze.
8/13/2019 Visual Basic-limbaj-2
6/37
Sub - marcheaza inceputul unei proceduri Sub. nume-. precizeaza numele procedurii. Numele procedurilor respectaregulile generale pentru identificatori. Datorita faptului ca numeleSubsunt recunoscute de toate procedurile modulelor,nume nu poate fiidentic cu un alt nume global din program.
argumente- reprezinta lista de variabile, reprezentand argumente,transmise proceduriiSubla apel, Daca apar mai multe variabile, acesteasunt separate prin virgule. Cu exceplia situatiilor in care sunt identificateprin cuvntul rezervatByVal, care indica faptul ca argumentele sunt
transmise prin valoare, argumentele sunt transmise prin referinta, astfelincat schimbandu-i valoarea in interiorul proceduriiSub, valoarea saeste modificatai in procedura apelanta. blocinstructiuni - grupul instructiunilor care vor fi
executate la fiecare apel al procedurii. Exit Sub- permite parasirea imediata a proceduriiSub, executiaprogramului continund cu instructiunea care urmeaza instructiunii carea apelat proceduraSub. End Sub- marcheaza sfritul procedurii Sub.
8/13/2019 Visual Basic-limbaj-2
7/37
8/13/2019 Visual Basic-limbaj-2
8/37
4. Proceduri Function
Asemenea unei proceduriSub, procedurileFunction pot executa o serie de
instructiuni, eventual bazate pe argumentele transmise. Spre deosebire de acestea,procedurile Function returneaza o valoare.Sintaxa:[Static] [Private] Function nume_functie
[(argumente)][As tip]
[blocinstructiuni]
[numefunctie= expresie]
[Exit Function]
[bloc_instructiuni]
[nume functie =expresie]
End FunctionDeoarece aspectele prezentate la proceduraSubsunt similare i pentru procedura
Function, ne marginim la a evidentia faptul ca tipul specificat cu clauzaAsdetermina tipul rezultatului retumat de procedura Function.
Exemplu: Function nr( ) As Integer
Pentru a obine o valoare Function, asignai valoarea numelui functiei:Function Fct (...)
Fct = valoare
End Function
8/13/2019 Visual Basic-limbaj-2
9/37
8/13/2019 Visual Basic-limbaj-2
10/37
8/13/2019 Visual Basic-limbaj-2
11/37
5. Controlul execuiei
Instructiunile care controleaza deciziile i buclele suntnumite structuri de control (control structures). Cele maifolosite structuri de control sunt: If Then Else
Select Case
Do
For
5.1. Structuri de decizieStructurile de decizie 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/13/2019 Visual Basic-limbaj-2
12/37
5.1.1.If... Then
BlocurileIf. . . . Thensunt folosite pentru a executa una sau
mai multe instruciuni daca o condiie specificata este indeplinita.Sintaxa bloculIf. . .Then permite folosirea sa atat ntr-o singuralinie, cati in mai multe linii:
If conditie Then instructiune
If conditie Then
instructiune
End If
Condiia bloculuiIf. . .Theneste, de obicei, o comparaie, darea poate fi orice expresie evaluabila la o valoare numerica. Visual Basicinterpreteaza aceasta valoare caTruesauFalse; o valoare numericazero este echivalenta cuFalse, in timp ce o valoare numerica unu este
echivalenta cuTrue.Exemple:If Nr > 9 Then Admis = Date ()If Nr > 9 Then
Admis = Date()
End If
8/13/2019 Visual Basic-limbaj-2
13/37
5.1.2.If... Then...Else
BlocurileIf. . .Then. . .Elsesunt folosite pentru a defini
mai multe instruciuni (blocuri de instruciuni), una (unul) dintre acesteaurmand a fi executata. Sintaxa bloculuiIf. . . Then. . .Elseeste urmatoarea:
If conditia1 Then
bloc_instructiuni1
[ElseIf conditia2 Then[bloc_instructiuni2]] . . .
[Else[bloc instructiunin]]End If
Visual Basic testeaza condiia 1; daca aceasta este evaluata la
False, se testeaza conditia2, .a.m.d., pana cand se gasete o condiieadevarata. La gasirea unei condiii adevarate, Visual Basic executa bloculde instruciuni corespunzator i apoi trece la codul care urmeaza dupaEnd If.
8/13/2019 Visual Basic-limbaj-2
14/37
Optional, se poate include un bloc de instructiuniElse, care va fiexecutat daca niciuna dintre condiii nu a fost evaluata laTrue.
Exemple:If Nr > 9
Admis = Date ()Else
Msg = "Respins"
End If
If Nr > 7 ThenMsg = "OK"
ElseIf Nr > 5
Msg = "Slab"
Else
Msg = "Ko"
End If
8/13/2019 Visual Basic-limbaj-2
15/37
5.1.3. Select Case
StructuraSelect Caseeste o altemativa laIf. . . The. . .Elsepentru
executarea selectiva a unui bloc de instructiuni din mai multe blocuri de instructiuni.Dei efectul este similar cu cel al structuriiIf. . . The. . . Else, codulimplementat cuSelect Caseeste mai eficienti lizibil.
Exemplu:Select Case
Case 0Msg = "Nul"
Case 1
Msg = "Impar"
Case 2Msg = "Par"
Case Else
Msg = "Out of range"
End Select
8/13/2019 Visual Basic-limbaj-2
16/37
5.2.1. Do...Loop
Do. . . Loop este folosita pentru a repeta un bloc de instructiuni cand o
conditie este adevarata saupana cando 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]
ParteaDo trebuie sa fie prima instructiune a structurii;While indica faptul ca
bucla este executata candconditia este adevarata; parteaUntilindica faptul ca buclaeste executatapanii candconditia este adevarata.
8/13/2019 Visual Basic-limbaj-2
17/37
Conditia condiie este o expresie numerica sau ir de caractere evaluabila laadevarat (1) sau
fals (o sauNull).InstructiuneaExit Do, folosita numai in interiorul bucleiDo. . .Loop,
reprezinta o calealtemativa de prasire a buclei. Este posibila existenta unor instructiuniDo. . .Loop imbricate, ca in
urmatorul exemplu:,
DoDo
Beep
Nr2 = Nr2 + 1
LoopWhile (Nr2 10)
8/13/2019 Visual Basic-limbaj-2
18/37
5.2.2. For...Next
Instructiunea For. . .Next executa un grup de instructiuni de un numar specificat de oriSintaxa: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 Forpermite parasirea buclei For. . . Next forat.
Buclele For. . . Next pot fi imbricate, dupa cum rezulta din urmatorul exemplu:For I = 1 To 10
For J = To
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/13/2019 Visual Basic-limbaj-2
19/37
5.3. Parasirea unei proceduri SubsauFunction
InstructiunileExit Sub iExit Function permit parasirea unei proceduriSub, respectivFunction. Aceste instructiuni sunt utile in situatiile in care proceduraa efectuat tot ceea ce era necesari se dorete parasirea imediata a rutinei.
Exemplu:Sub ForIn_Load()
Exit Sub
End Sub
8/13/2019 Visual Basic-limbaj-2
20/37
7. Variabile
O variabili este un identificator folosit pentru stocarea unor valori in timpul
executarii programului. Numele variabilelor respecta specificatiile valabile pentru totiidentificatorii Visual Basic.7.1. Declararea variabilelor
n interiorul unei proceduri, variabilele se declara cu instructiunea Dim:Dimnume_variabila[Astip],
Clauza optionalaAspermite definirea tipului de data al variabilei declarate. Dacaaceasta clauza este omisa, tipul variabilei va fi cel implicit -Variant(cu exceptiasituatiilor 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 create
automat de Visual Basic
8/13/2019 Visual Basic-limbaj-2
21/37
7.2. Domeniul unei variabile
Variabilele declarate intr-o procedura pot fi folosite (accesate) numai in
interiorul acelei proceduri.Domeniulde valabilitate este local.In functie de modul de declarare, o variabila poate avea urmatoarele
domenii:Domeniu DeclarareLocal Dim, StaticsauReDim(intr-o procedura)Modul Dim(in sectiunea de declaratii a unei
forme sau modul)
Global Global(in sectiunea de declaratii a unuimodul)Variabile locale
Variabilele locale (local variables) sunt recunoscute numai in
procedura in care apar, acest tip de variabila reprezinta o bunoptiune insituatiile in care sunt necesare calcule temporare. Mai multe proceduripot avea o variabilnumitTemp, asignarea unei valori variabilei Tempa unei proceduri nealterand valorile celorlalte variabile Temp.
8/13/2019 Visual Basic-limbaj-2
22/37
O procedurse poate autoapela - tehnicnumitrecursivitate -, lafiecare invocare a procedurii o noucopie a variabilei locale este creat.
Variabilele locale declarate cu Dimexista doar pe perioada executriiprocedurii, in timp ce variabilele declarate cu Static( Variabilestatice) existpe tot timpul rulrii aplicatiei.Variabile la nivel de modul
O variabila la nivel de modul (module-level) este disponibilpentrutoate procedurile din formsau cod, nu i pentru codul altor forme saumodule de cod. Variabilele la nivel de modul sunt active pe toate durata
aplicatiei i ii pstreaza valorile chiar atunci cand forma este inactiva(unloaded).Variabile globale
O variabila globala (global variable) are cel mai intins domeniu.
Valorile variabilelor globale sunt disponibile pentru toate formele imodulele de cod ale aplicatiei, pe toatdurata acesteia.
Variabilele globale nu pot fi declarate in proceduri i nici inmodulele form
8/13/2019 Visual Basic-limbaj-2
23/37
8. Tipuri de date fundamentale
Toate variabilele au un tip de data. Un tip de data precizeaza un domeniu de valori impreuna cu operatiile care pot fiexecutate asupra acelor 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 frtip, ci mai degraba o variabila al carei tip poate fi modificat liber.
8.2. Alte tipuri de date fundamentale
In Visual Basic exist apte tipuri de date fundamentale, incluzandVariant, dupcum rezultdin urmtorultabel:
Nume tip Descriere Caracter declaraie Domeniu
Integer Intreg 2-octeti %-32.768 la 32.767Long Intreg 4-octeti & -
2.147.483.648 la 2.147.483.64 Single Virgulmnobil !-3.402823E-45 la -1.402823E38
-1.401298E-45 la 3.402823E38 (valori pozitive)Double Virgulmobil #
-1.79769313486232E308 la8-octeti 4.94065645841247E-324(valorinegative)4.94065645841247E-324 la1.79769313486232E308
(valori pozitive)Currency Numar 8-octe!i cu @
922,337,203,685,477.5808 la virgula zecimala fixa922,337,203,685,477.5807
String ir de caractere4 $ 0 laaprox. 65.500 caractere Variant Date/Time,ir de (Fara)
Date: January 1, 0000 lacaractere sau virgula December 31,9999mobil Numeric: Similar cu Double ir:
8/13/2019 Visual Basic-limbaj-2
24/37
9.1. Masive multidimensionale
Visual Basic permite crearea de masive care au panla 60 de dimensiui. Pentru adeclara un masiv bidimensional se procedeazastfel:
Dim Matrice (1 To 10, 1 To 10) As Integer
iar o matrice tridimensionalse 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 principala unei matrici (un
masiv bidimensional), spre exemplu, folosim urmtorul cod:Suma = 0
For i = 1 To N
Suma = Suma + Matr(i, i)
Next
8/13/2019 Visual Basic-limbaj-2
25/37
8/13/2019 Visual Basic-limbaj-2
26/37
8/13/2019 Visual Basic-limbaj-2
27/37
8/13/2019 Visual Basic-limbaj-2
28/37
8/13/2019 Visual Basic-limbaj-2
29/37
8/13/2019 Visual Basic-limbaj-2
30/37
8/13/2019 Visual Basic-limbaj-2
31/37
8/13/2019 Visual Basic-limbaj-2
32/37
8/13/2019 Visual Basic-limbaj-2
33/37
8/13/2019 Visual Basic-limbaj-2
34/37
8/13/2019 Visual Basic-limbaj-2
35/37
8/13/2019 Visual Basic-limbaj-2
36/37
8/13/2019 Visual Basic-limbaj-2
37/37