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 – este un produs format din
Sintaxa declaratiei unei unitati:
descrieri
Unit< nume>; de date si subprograme
destinate prelucrarii acestora.
Interface
<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.X-B.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