Sunteți pe pagina 1din 17

Proiect

la informatica
Tema: Sinteza:

Functii si
proceduri. Unitati de
program.

Functii

Functia este un subprogram, care


calculeaza si returneaza o singura valoare.
Ea extinde notiunea de expresie Pascal.

Textul Pascal al unei declaratii de


functie are forma:
Function f(X1,X2,.,Xn): Tr;
D;
Begin

F:=e;

End;

Prima linie este antetul functiei,


format din:
F- numele functiei;
F(X1,X2,.,Xn)- lista optionala
de parametri formali, fiind
argumentele functiei;
Tr tipul rezultatului, trebuie
sa fie tip simplu sau
referinta.

Exemple de functii
Functie care returneaza media aritmetica a 5 numere
intregi:
Function media (x,y,z,k,m:integer):real;
Begin
Media := (x+y+z+k+m)/5
End;

Functie care returneaza produsul cifrelor unui numar


natural:
Type natural=0..MaxInt;
Function pro(N:natural):natural;
Begin
P:=1;
Repeat
C:=N Mod 10; P:=P*C; N:=N div 10
Until N=0; pro:=P
End;

Proceduri
Procedura- este un subprogram care
prelucreaza datele transmise la apel.

Forma generala a textului unei declaratii


de procedura este:
Procedure p(x1, x2,,xn);
D;
Begin

End;

Exemple de proceduri
Scrie o procedura care afiseaza la ecran
solutia ecuatiei Ax+B=0:
Procedure ecuatie(a,b:real);
Begin
If A<>0 then writeln (solutia=,b/a:7:2)
Else
If b=0 then writeln (infinit)
Else writeln (nu exista)
End;

Procedura care cunoscind numarul


lunii afiseaza la ecran anotimpul
Type Luna=1..12;
Procedure anotimp(L:luna);
Begin
case L of
1,2,12: writeln (iarna);
3..5:writeln (primavara);
6..8: writeln (vara);
9..11:writeln (toamna) end
End;

Unitati de program
Modulul este un produs format din descrieri de date si
subprograme destinate prelucrarii acestora.
Modulul
esteunei
un produs
Sintaxa declaratiei
unitati: format din descrieri de
Unit<
nume>;
date si subprograme destinate prelucrarii
Interface
acestora.
<antetele
procedurilor, functiilor>
Implementation
<corpurile procedurilor si functiilor>
Begin...
End.

Sintaxa declaratiei unei unitati:


Unit< nume>;
Interface
<antetele procedurilor, functiilor>
Implementation
<corpurile procedurilor si functiilor>
Begin...
End.

Exemplu
Unitate de program cu urmatoarele
bubprograme:
1. Inscrieti in fisier primele N numere Fibonacci
2. Transcrie dintr-un fisier cu numere naturale numerele
prime in alt fisier
3. Este dat un fisier ce contine N numere naturale.
Determinati numarul de 0 ce poate aparea la sfirsitul
produsului acestor numere.
4. Este dat un fisier ce contine numarul N, iar pe
urmatoarele N rinduri coordonatele aN puncte.
Determinati nr de triplete ce formeaza virfurile
triunghiurilor echilaterale.

Unit p;
Interface;
Type nat=0..maxint;
Procedure scrie1(nume:string,n:nat);
Procedure scrie2(nume1,nume2:string);
Function numzero(nume:string):nat;
Function nutrm(nume:string):nat;
Implementation
Procedure scrie1; var f:text; I,x,y,z,k:nat;
Begin
Assign (f, nume); Rewrite(F); x:=0;Y:=1; Writeln (f,1); K:=1;
While K<N do begin Z:=X+y; writeln (f,z); x:=y; y:=z end;
close (f)
End;

Procedure scrie2; var F,T:Text; N:Nat;


Functio prim(X:Nat):boolean; Var K:Nat;
V:Boolean;
Begin V:=True; K:=2;
While V And ( K<=X Div 2) do If X Mod K=0 then
V:=false Else Inc (K); Prim:=V end;
Begin Assign (F,Nume1); Reset(F); assign (T,
Nume2); Rewrite (T);
Repeat Readln (F,N); If Prim (N) Then Writeln
(T,N) until Eof (F); Close (F); Close (T) End;

Function Numzero; Var:Text; A:Array[1..1000] of Nat;


N,I,N2,N5:Nat;
Function min(X,Y:Nat); Begin If X<Y Then Min:=X else
Min:=Y End;
Begin
Assign(F, Nume); Reset(F); Readln (F,N); For:= 1 to N do
Readln (F,A[I]); Close (F);
N2:=0; N5:=0; For I:= 1 to N do Begin
While A[I] Mod 2=0 do Begin Inc(N2); A[I]:=A[I] div 2
end;
While A[I] Mod 5=0 do Begin Inc(N5); A[I]:=A[I] div 5 end
end;
Numzero:=Min (N5,N2) end;

Function NuTrm;
Type Punct=Record X,Y:real end; Var F:Text;
A:Array[1..30] of Punct; N,I,J,K,P:Byte; L1,L2,L3:Real;
Function D (A,B:punct):real; Begin D:=Sqrt(Sqr(A.XB.X)+Sqr(A.Y-B.Y)) end;
Begin Assign (F, Nume); Rset (F); readln (F,N); for I:=1 to
N do Readln (F,A[I].X,A[I].Y); Close(f);
P:=0; for I:=1 to N-2 do for J:=I+1 to N-1 do for K:=J+1 to
N do
Begin L1:=D(A[I],A[J]); L2:=D(A[I],A[K]); L3:=D(A[k],A[J]);
If (L1+L2>L3) And (L1+L3>L2) And (L2+L3>L1) Then
If (L1=L2) And (L3=L2) Then Inc(P) End; NuTrm:=P end;
End.

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