Documente Academic
Documente Profesional
Documente Cultură
Proceduri .............................................................17
Funcii ................................................................. 24
Media aritmetic al perechii de numere .................................. 25
Suma cifrelor unui numr........................................................26
Numr prim .............................................................................26
Elementele prime ale unui ir .................................................. 27
Ordonarea a trei numere ........................................................ 28
Unghiuri n grade i radiani .....................................................29
Perechi de numere ................................................................... 31
Recursivitate .......................................................38
Conceptul de recursivitate....................................................... 38
Inversarea unui cuvnt............................................................ 38
irul Fibonacci ........................................................................ 39
Cel mai mare divizor comun ................................................... 40
Funcia Ackermann ..................................................................41
Numrare .................................................................................41
Anagrame ................................................................................ 42
Generare .................................................................................. 44
Conversie ................................................................................. 45
Codul Gray............................................................................... 45
irul mediilor aritmetico-geometrice al lui Gauss .................. 47
Evaluarea unei expresii aritmetice .......................................... 48
Gndirea algoritmic
Problema cutrii
Exist i cazul care, pentru o aceeai problem putem prezenta
dou soluii, n care una este mai rapid ca alta. De pild, fie un
ir de numere natural oarecare, de exemplu 4,2,10,1,8,15,7.
Vream s testm dac un numr dat (s zivem numrul 8) se
afl n aceast secven sau nu.
O astfel de cutare, prin parcurgerea de a stnga la dreapta a
ntregii secvene de numere, pn se gsete numrul dorit sau
se epuieaz toate elementele din secven, se numete cutarea
secvenial. Dac avem un ir S de n elemente (notat S[1..n]),
atunci cutarea secvenial a lui x n S se descrie prin:
Cutare_secvential(x,S[1..n]) nseamn
nceput
Fie elemental_curent = primul_element;
Att timp ct (elemental_curent <> x) si (pozitia elementului
current <= pozitia ultimului element (n)) execut
nceput
Dac elemental_curent = x atunci mesaj(gsit)
Altfel treci la urmtorul element
Sfrit
Sfrit.
n continuare s presupunem c numerele erau dj ordonate
cresctor 1, 2, 4, 7, 8, 10, 15. n acest caz particular, cutarea
secvenial a unui numr cum este 8 nu este prea eficient,
deoarece 8 se afl n a doua jumtate a secvenei, deci ar fi de
preferat s nu-l cutm n prima jumtate. Acest procedeu este
mai rapid:
Proceduri
Media aritmetic
Realizai un program care calculeaz i afieaz media
aritmetic a dou numere reale x i y.
Program Media_aritmetica;
Var
media,x,y:Real;
Begin
Write(Dati numerele:);
ReadLn(x,y);
Media:=(x+y)/2;
WriteLn(Media=Media:8:2);
ReadLn;
End.
Cu Procedure...
Program Media_aritmetica;
Var
media,x,y:Real;
Procedure media_calcul;
Begin
Media:=(x+y)/2;
WriteLn(Media=,Media:8:2);
End;
Begin
Write(Dati numerele:);
ReadLn(x,y);
media_calcul;
ReadLn;
End.
17
18
L:Integer;
Begin
Write(Latura L=);
ReadLn(L);
If L>0 Then
WriteLn(Aria =,(L+L):6)
Else
WriteLn(Date incorecte!);
End;
Procedure aria_cerc;
Var
r:Integer;
Begin
Write(Raza r=);
ReadLn(r);
If r>0 Then
WriteLn(Aria =,(pi*r*r))
Else
WriteLn(Date incorecte!);
End;
Procedure aria_triunghi;
Var
b,h:Integer;
Begin
Write(baza b si inalt h= );
ReadLn(b,h);
If (b>0) and (h>0) Then
WriteLn(Aria -, (b*h)/2)
Else
WriteLn(Date incorecte!);
End;
Begin
WriteLn(Dati iptiunea dvs. );
WriteLn([1:patrat, 2:cerc , 3:triunghi] );
ReadLn(opt);
19
Funcii
La fel ca i procedurile, funciile efectueaz anumite operaii,
dar n plus a foncie ntoarce o anumit valoare. Tipul valorii
returnate se precizeaz la sfritul antetului finiei, fiind
precedat de caracterul dou puncte. Valoarea pe care o
returneaz o funcie poate fi folosit apoi n modul apelant i n
celelalte module componente.
Sintaxa:
Function <id_fct> (<L1>:<tip1>; <L2>:<tip2>; ...;
<Ln>:<tipn>): <tipr>;
...
{declaraii de variabile locale}
Begin
...
{corpul funciei}
End;
<id_fact> - identificatorul
<L1>,<L2>,...,<Ln> - sunt liste de paramateri
<tip1>,<tip2>,...,<tipn> - tipurile parametrilor
<tip_r> - tipul valorii returnate
Exemplu:
Program Media;
Var
x,y:Real;
Function calcul(a,b:Real):real;
Begin
Calcul:=(a+b)/2;
End;
24
Begin
Write(x,y=);
ReadLn(x,y)
ReadLn(Media=,calcul(x,y));
ReadLn;
End.
25