joi, 11 iulie 2013

Proceduri



Printr-o procedura se înţelege,  o colecţie de instrucţiuni care este identificată printr-un nume şi care se execută unitar printr-un singur apel.

Există trei tipuri principale de proceduri: Sub, Function şi Property. Ultimul tip este caracteristic definirii unui obiect si va fi prezentat ulterior. O procedură de tip Sub poate primi şi transmite informaţii prin intermediul unor variabile publice sau/şi a unor parametri. Numele procedurii nu are ataşată nici o valoare. O procedură de tip Function se deosebeşte prin aceea ca numele procedurii are ataşată o valoare (valoarea funcţiei) şi poate fi utilizat ca orice altă variabilă din proiect.

Observaţie. Orice instrucţiune executabilă trebuie să aparţină unei proceduri. Declaraţiile pot să apară şi în afara procedurilor, la nivel de modul.



Proceduri Sub


Organizarea generală a unei proceduri de tip Sub este

vizib Sub nume (lista_argumente)

instructiuni

End Sub

vizib poate fi Public, Private, Static şi determină vizibilitatea procedurii, dacă nu este specificată se consideră implicit Public.

Public  -  vizibilă pentru toate procedurile şi toate modulele 


Private - vizibilă doar pentru procedurile din modulul unde procedura este declarată. 


Static - arată ca toate variabilele locale din procedură îşi păstrează valorile între apeluri.


nume — numele procedurii.

lista_argumente — lista de argumente, separate prin virgule.
Se admite şi procedură fără argumente ()

În corpul procedurii poate exista Exit Sub care determină  ieşirea imediată din procedură.

În forma cea mai simplă argumentele sunt separate prin virgule şi dacă nu se specifică altfel se consideră a fi transmise prin referinţă adică modificarea valorii în procedură determină şi modificarea  valorii lor în procedura apelantă.



Apelarea unei proceduri se face după sintaxa
             Nume_proiect.Nume_modul.Nume_procedura lista de argumente

                   sau

             Nume_procedura lista de argumente

unde lista de argumente poate  să fie inclusă între paranteze. Argumentele efective sunt separate în listă prin virgule şi trebuie să respecte ordinea (şi tipul) argumentelor din definiţia procedurii.

Dacă nu vrem să transmitem toate argumentele se poate folosi varianta

             nume_argument:=valoare_argument

separate prin virgule şi la care nu mai contează ordinea iniţiala a argumentelor. Se vor specifica doar parametrii care se transmit efectiv (adică valorile opţionale dorite si toate valorile neopţionale).

            Call nume_procedura (lista de argumente)  în acest caz paranteza este obligatorie.



Proceduri Function


O procedură de tip Function este similară, ca definiţie, unei proceduri Sub, dar are particularitatea că returnează o valoare prin numele său (care se comportă deci ca o variabilă).

vizib Function nume (lista_argumente) as Type

instructiuni

 nume = expresie

End Function

Se poate ataşa un tip numelui funcţiei (adică valorii funcţiei).

Important cel puţin o instrucţiune trebuie să transmită valoare numelui funcţiei.

Valoarea returnată de o funcţie poate fi utilizată într-o altă expresie prin includerea numelui funcţiei urmat  între paranteze, de valorile efective ale parametrilor.

Apelarea funcţiei

          variab= nume (lista_argumente)

Niciun comentariu:

Trimiteți un comentariu