visual basic-limbaj-2

Upload: valentin-vali

Post on 04-Jun-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 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