Sunteți pe pagina 1din 10

Limbaje de programare

Conf. univ. dr. Vasile Gorgan


Limbaje de
Subprograme definite de utilizator
programare

Reprezintă proceduri sau funcţii definite de utilizator, formate din blocuri de


instrucţiuni destinate realizării împreună a unor operaţii pentru atingerea
unui obiectiv
-procedurile (numite şi subrutine) sunt subprograme care nu returnează valori
-funcţiile sunt subprograme ca returnează o valoare prin numele funcţiei
Avantajele utilizarii subprogramelor:
-simplifică programul (prelucrările ca se repetă se scriu o singură dată şi apoi sunt
apelate– nu mai sunt inserate în program)
-programele sunt mai uşor de verificat şi de întreţinut (se verifică mai întâi
subprogramul şi după ce se constată că este corect – poate fi utilizat cu încredere; când
se fac modificări acestea se fac doar în subprogramele afectate restul programului nu
este afectat)
-se încurajează reutilizarea (subprogramele pot fi utilizate în mai multe programe sau
proiecte)

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 2


Limbaje de Definirea procedurilor/subrutinelor
programare

Sintaxă

[nivelul (drepturile) de acces ] Sub NumeSubrutina([Listăparametrii_formali])


Instrucțiuni
[Return]
End Sub

Apelare:
Call nume_subrutina
Sau
nume_subrutina

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 3


Limbaje de
Definirea funcțiilor
programare

Sintaxă
[nivelul (drepturile) de acces ] Function NumeFunctie ([Listă_parametrii_formali]) AS
[TipDataRezultat]
Instrucțiuni
[Return]
End Function
Deoarece numele functiei întoarce un rezultat atunci: fie numele funcţiei va
apare cel puţin o dată în partea stângă a unei expresii de atribuire, fi se va
utiliza Return expresie (expresia este cea care calculează şi întoarce
rezultatul)

Apelare:
[Call] numeFunctie([Listă parametrii actuali])
[rezultat =] numeFunctie([Listă parametrii actuali])

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 4


Limbaje de
programare Exemplu definire subprocedură
Să se creeze o procedură prin care să Sub CalculMajorari(nrZileIntarziere As Integer, valFactura As Decimal)
se calculezemajorările de întărziere la Dim majorari As Decimal
plata unei facturi după următoarea If nrZileIntarziere = 0 Then
regulă majorari = 0
• dacă numărul de zile de întârziere ElseIf nrZileIntarziere < 10 Then
este mai mic de 10, 3% din valoarea majorari = 3 / 100 * valFactura
facturii ElseIf nrZileIntarziere < 20 Then

• dacă numărul de zile de întârziere majorari = valFactura * 7 / 100


este cuprins între 10 și 20, 7% din ElseIf nrZileIntarziere < 30 Then
valoarea facturii majorari = valFactura * 10 / 100
Else
• dacă numărul de zile de întârziere majorari = valFactura * 15 / 100
este cuprins între 20 și 30, 10% din
valoarea facturii End If
MsgBox("Majorari: " & majorari)
• dacă numărul de zile de întârziere End Sub
este mai mare decât 30, 15% din ‘=====Apel subprocedură============
valoarea facturii
CalculMajorari
Call CalculMajorari

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 5


Limbaje de
programare Exemplu definire funcție
Să se creeze o funcție prin care să se Function fctCalculMajorari(nrZileIntarziere As Integer, valFactura As
calculezemajorările de întărziere la Decimal) As Decimal
plata unei facturi după următoarea Dim majorari As Decimal
If nrZileIntarziere = 0 Then
regulă majorari = 0
• dacă numărul de zile de întârziere ElseIf nrZileIntarziere < 10 Then
este mai mic de 10, 3% din valoarea majorari = 3 / 100 * valFactura
facturii ElseIf nrZileIntarziere < 20 Then
majorari = valFactura * 7 / 100
• dacă numărul de zile de întârziere ElseIf nrZileIntarziere < 30 Then
este cuprins între 10 și 20, 7% din majorari = valFactura * 10 / 100
valoarea facturii Else
majorari = valFactura * 15 / 100
• dacă numărul de zile de întârziere End If
este cuprins între 20 și 30, 10% din Return majorari
valoarea facturii End Function

• dacă numărul de zile de întârziere ‘=====Apel funcție============


este mai mare decât 30, 15% din Dim majorariCuTVA As Decimal
valoarea facturii majorariCuTVA = fctCalculMajorari(25,1000) * 1.19
MsgBox("Majorari inclusiv TVA: " & majorariCuTVA)

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 6


Limbaje de Transmiterea parametrilor subprogramelor. Parametri opționali
programare

Lista parametrilor formali trebuie să corespundă cu lista parametrilor actuali


ca: număr, ordine şi tip. Excepție fac parametrii opționali.

Un parametru al subprogramului poate fi declarat opțional. În această situație


nu trebuie furnizat niciun argument pentru acesta atunci când este apelată
procedura. Parametrii opționali sunt indicați de cuvântul cheie Optional în
definiția procedurii.

Se aplică următoarele reguli:


• Pentru fiecare parametru opțional din definiția procedurii trebuie să
specifice o valoare implicită.
• Valoarea implicită a unui parametru opțional trebuie să fie o expresie
constantă.
• Fiecare parametru care urmează după un parametru opțional în definiția
procedurii trebuie să fie, de asemenea, opțional.

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 7


Limbaje de
programare Exemplu parametri opționali
ȚâțFunction fctCalculMajorariTVA(nrZileIntarziere As Integer, valFactura As Decimal, Optional CotaTVA As Decimal = 0.19) As Decimal
Dim majorari As Decimal
If nrZileIntarziere = 0 Then
majorari = 0
ElseIf nrZileIntarziere < 10 Then
majorari = 3 / 100 * valFactura
ElseIf nrZileIntarziere < 20 Then
majorari = valFactura * 7 / 100
ElseIf nrZileIntarziere < 30 Then
majorari = valFactura * 10 / 100
Else
majorari = valFactura * 15 / 100
End If
Return majorari
End Function
‘=====Apel funcție============
MsgBox("Majorari inclusiv TVA: " & fctCalculMajorariTVA(22, 1000) ) ‘ funcția returnează valoarea 119 (1000*10%*1,19) deoarece prin
netransmițându-se parametrul CotaTVA, funcția utilizează valoarea implicită a acestui (0,19)
MsgBox("Majorari inclusiv TVA: " & fctCalculMajorariTVA(22, 1000, 0.24) ) ‘ funcția returnează valoarea 124 (1000*10%*1,24)
deoarece drept cotă de TVA se utilizează valoarea transmisă parametrului (0,24)

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 8


Limbaje de Transmiterea parametrilor subprogramelor. ByVal și ByRef
programare

Transmiterea parametrilor se poate face prin valoare sau prin referință:


• prin valoare ByVal (implicit) când sunt transmise copii ale valorilor supuse
prelucrării şi dacă acestea se modifică prin subprogram, valorile iniţiale
rămân nemodificate
• prin referinţă ByRef când sunt transmise adresele din memorie a valorii
parametrilor şi dacă aceste valori vor fi modificate prin subprogram vor fi
modificate şi valorile iniţiale
• specificaţia ByVal sau ByRef se face la definirea subprogramelor în lista de
parametrii formali pentru fiecare parametru în parte

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 9


Limbaje de
programare Exemplu ByVal versus ByRef
Private Sub btnByValByRef_Click(sender As Object, e As EventArgs) Handles btnByValByRef.Click
Dim valoareFactura As Decimal
valoareFactura = 1000
AplicaTVAVariantaByVal(valoareFactura)
MsgBox(valoareFactura) ' se afișează 1000 deoarece procedurii i-a fost transmisă o copie a valorii variabilei
' valoareFactura
AplicaTVAVariantaByRef(valoareFactura)
MsgBox(valoareFactura) ' se afișează 1190 deoarece procedurii i-a fost transmisă locația de memorie aferentă
' variabilei valoareFactura
End Sub

Sub AplicaTVAVariantaByVal(valFactura As Decimal)


valFactura = valFactura * 1.19
End Sub
Sub AplicaTVAVariantaByRef(ByRef valFactura As Decimal)
valFactura = valFactura * 1.19
End Sub

ACADEMIA DE STUDII ECONOMICE DIN BUCURESTI Slide 10

S-ar putea să vă placă și