Sunteți pe pagina 1din 19

4.

Elementele limbajului
Visual Basic
4.3. Proceduri, funcii
n VB exist trei tipuri de subprograme:
subprograme de tip procedur SUB care
nu returneaz nici o valoare;
subprograme de tip FUNCTION care
returneaz o valorare folosibil n expresii;
subprogramele de tip PROPRIETATE sau
METOD care pot returna i atribui valori i pot
stabili referine la obiecte.
Definirea subprogramelor
n cazul programelor mari, pentru o mai
mare claritate i pentru o mai mare uurin de
depanare se folosete programarea procedural.
O procedur sau o funcie reprezint o
unitate de program, cu aceeai structur ca i
un program, din care cauz se numesc i
subprograme.
Subprogramele sunt apelabile din programul
principal de ori cate ori.
1. Procedurile de tip SUB
O procedur SUB este un bloc de instruciuni
care poate fi executat
fie ca rspuns la un eveniment (Proceduri
eveniment),
fie apelat n cod de o alt procedur sau modul
(Proceduri generale).
[Private/Public][Static] Sub nume_p(arg)
instruciuni
[End Sub]
Apelul procedurilor se face prin dou
metode:
Call nume_p(arg)
sau
Nume_p arg

unde
arg reprezint lista argumentelor ,
parametrilor actuali ai procedurii
2. Subprogramele de tip
FUNCTION
Acest tip de subprograme returneaz o
anumit valoare la apelul lor, i se numesc
funcii

[Private/Public][Static] FUNCTION
nume_f (arg) [AS TIP]
instruciuni
[End Function]
Probleme rezolvate !!!
(proceduri i funcii)
S se elaboreze o procedur Visual Basic de tip SUB pentru a
ordona cresctor mrimile: 2*x+1, y-2, z/3+4, avnd ca
parametrii de intrare valorile x,z,y.
Sub ordonare(x as double, y as double, z as double)
Dim aux as double
x=2*x+1
y=y-2
z=z/3+4
if x>y then
aux=x
x=y
y=aux
endif
if x>z then
aux=x
x=z
z=aux
endif
if y>z then
aux=y
y=z
z=aux
endif
end sub
S se elaboreze o funcie Visual Basic care s verifice dac trei
numere reale a,b,c sunt n progresie aritmetic; dac da funcia
s returneze valoarea raiei, iar dac nu s returneze valoarea
0.
Function proga(a as double, b as double, c as double)
as double
dim ra as double
ra=b-a
if (ra<>c-b) then
ra=0
endif
proga=ra
end function
S se elaboreze o funcie Visual Basic care s verifice dac trei
numere reale a,b,c sunt n progresie geometric; dac da funcia
s returneze valoarea raiei, iar dac nu s returneze valoarea 0.
Function progg(a as double, b as double, c as double)
as double
dim rg as double
if ((a=0)or(b=0)or(c=0)) then
rg=0
else
rg=b/a
if rg<>c/b then
rg=0
endif
endif
progg=rg
end function
S se elaboreze o funcie Visual Basic care s calculeze suma
primelor n numere naturale (Gauss)



Ca i parametru de intrare se consider numrul natural n.

Function suma (n as integer) as integer
dim s as integer, i as integer
s=0
i=1
do
s=s+i
i=i+1
loop until i<n
suma=s
end function


n
i
i n s
1
... 3 2 1
S se elaboreze o funcie Visual Basic care s calculeze suma
primelor n numere naturale (Gauss)



Ca i parametru de intrare se consider numrul natural n.
Function suma (n as integer) as integer
dim s as integer, i as integer
s=0
for i=1 to n
s=s+i
next i
suma=s
end function


n
i
i n s
1
... 3 2 1
S se elaboreze o funcie Visual Basic care s calculeze produsul
primelor n numere naturale



Ca i parametru de intrare se consider numrul natural n.
Function produs (n as integer) as integer
Dim p as integer, i as integer
p=1
i=1
do
p=p*i
i=i+1
loop until i<n
produs=p
end function
i
n
i
n p


1
3 2 1
S se elaboreze o funcie Visual Basic care s calculeze produsul
primelor n numere naturale



Ca i parametru de intrare se consider numrul natural n.
Function produs (n as integer) as integer;
dim p as integer, i as integer
p=1
for i=1 to n
p=p*i
next i
produs=p
end function
i
n
i
n p


1
3 2 1
S se elaboreze o funcie Visual Basic care s calculeze suma


, avnd ca i parametru valoare n.
Function suma (n as integer) as integer
dim s as integer, i as integer
s=0
for i=1 to n
s=s+i*(i+1)
next i
suma=s
end function


n
i
i i n n s
1
) 1 ( ) 1 ( 3 2 2 1
S se elaboreze o funcie Visual Basic care s calculeze produsul a dou
numere naturale n i m, prin adunri repetate, adic .



Se consider parametrii de intrare n i m.
Function produs(n as integer, m as integer)
as integer
dim p as integer, i as integer
p=0
for i=1 to m
p=p+n
next i
produs=p
end function


m
i
n n n n n p
1

S se elaboreze o funcie Visual Basic care s calculeze valoarea lui a


n

prin nmuliri repetate, adic:



, parametrii de intrare fiind a i n.
Function putere(a as integer, n as integer)
as integer
dim p as integer, i as integer
p=1
for i=1 to n
p=p*a
next i
putere=p
end function


n
i
a a a a a p
1

S se elaboreze o funcie Visual Basic care s calculeze , folosind o


funcie fact(x) care calculeaz x!, funcia


combinri avnd ca parametrii de intrare pe n i k.
Function fact (x as integer) as integer
dim p as integer, i as integer
p=1
for i=1 to x
p=p*i
next i
fact=p
end function

Function combinari(n as integer, k as integer) as long
Dim c as long
c=fact(n)/(fact(k)*fact(n-k))
combinari=c
end function
)! !*(
!
k n k
n
C E
k
n


S se elaboreze o funcie Visual Basic care s calculeze valoarea funciei
f(x,y,z)=x+y+z-min{x,y}+max{y,z}.
Se consider parametrii de intrare valorile x,y,z.
Function functie(x as double ,y as double ,z as double) as double
Dim max as double, min as double, s as double
s=x+y+z
if x>y then
min=y
else
min=x
endif
if z>y then
max=z
else
max=y
endif
s=s-min+max
functie=s
end function
S se elaboreze o procedur VB pentru inmulirea a dou matrici.
C(n,m)= A(n,l) X B(l,m)
Dim a(1 to 20, 1 to 20) as integer, b( 1 to 20, 1 to 20) as
integer, c(1 to 20, 1 to 20 ) as integer
Sub Produs (x as variant, y as variant, z as variant, n as integer,
m as integer, l as integer)
Dim i as integer, j as integer, k as integer
For i= 1 to n
For j=1 to m
z(i,j)=0
For k=1 to l
z(i,j)= z(i,j)+x(i,k)*y(k,j)
Next k
Next j
Next i
EndSub

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