curs1 visual basic limbaj

37
Proceduri V isual Basic

Upload: feliciagrapa

Post on 09-Apr-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 1/37

Proceduri Visual Basic

Page 2: Curs1 Visual Basic Limbaj

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.

Page 3: Curs1 Visual Basic Limbaj

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 .

Page 4: Curs1 Visual Basic Limbaj

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.

Page 5: Curs1 Visual Basic Limbaj

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.

Page 6: Curs1 Visual Basic Limbaj

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.

Page 7: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 7/37

EXEMPLU DE PROCEDURA

Page 8: Curs1 Visual Basic Limbaj

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

Page 9: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 9/37

EXEMPLU FUNCTIE

Page 10: Curs1 Visual Basic Limbaj

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 ( )

Page 11: Curs1 Visual Basic Limbaj

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

Page 12: Curs1 Visual Basic Limbaj

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

Page 13: Curs1 Visual Basic Limbaj

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.

Page 14: Curs1 Visual Basic Limbaj

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

Page 15: Curs1 Visual Basic Limbaj

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

Page 16: Curs1 Visual Basic Limbaj

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.

Page 17: Curs1 Visual Basic Limbaj

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)

Page 18: Curs1 Visual Basic Limbaj

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

Page 19: Curs1 Visual Basic Limbaj

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

Page 20: Curs1 Visual Basic Limbaj

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

Page 21: Curs1 Visual Basic Limbaj

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

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.

Page 22: Curs1 Visual Basic Limbaj

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

Page 23: Curs1 Visual Basic Limbaj

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:

Page 24: Curs1 Visual Basic Limbaj

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

Page 25: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 25/37

EXCEL CALCUL

TABELAR

Page 26: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 26/37

Page 27: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 27/37

Page 28: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 28/37

Page 29: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 29/37

Page 30: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 30/37

Page 31: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 31/37

Page 32: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 32/37

Page 33: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 33/37

Page 34: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 34/37

Page 35: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 35/37

Page 36: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 36/37

Page 37: Curs1 Visual Basic Limbaj

8/8/2019 Curs1 Visual Basic Limbaj

http://slidepdf.com/reader/full/curs1-visual-basic-limbaj 37/37