Documente Academic
Documente Profesional
Documente Cultură
Proceduri ...............................................................................13
Media aritmetic ............................................................................................................ 13
Ariile unor figuri geometrice ......................................................................................... 14
ir de numere n fiier ................................................................................................... 16
Laturi n triunghi ...........................................................................................................16
Interschimbarea a dou linii ntr-o matrice .................................................................. 17
Funcii .................................................................................. 19
Media aritmetic al perechii de numere ...................................................................... 20
Suma cifrelor unui numr ............................................................................................ 20
Numr prim ................................................................................................................... 21
Elementele prime ale unui ir....................................................................................... 22
Ordonarea a trei numere .............................................................................................. 23
Unghiuri n grade i radiani.......................................................................................... 23
Perechi de numere ........................................................................................................ 25
Frecvenele caracterelor ntr-un ir.............................................................................. 26
Platouri de lungime maxim ntr-un ir....................................................................... 27
Cel mai mare divizor comun ......................................................................................... 29
Recursivitate ......................................................................... 31
Conceptul de recursivitate ............................................................................................ 31
Inversarea unui cuvnt ................................................................................................. 31
irul Fibonacci............................................................................................................... 32
Cel mai mare divizor comun ......................................................................................... 32
Funcia Ackermann ....................................................................................................... 33
Numrare ...................................................................................................................... 34
Anagrame ...................................................................................................................... 35
Generare ........................................................................................................................ 36
Conversie ....................................................................................................................... 37
Codul Gray ..................................................................................................................... 37
irul mediilor aritmetico-geometrice al lui Gauss ....................................................... 39
Evaluarea unei expresii aritmetice ............................................................................... 40
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:
Dac numrul din mijloc este mai mic dect numrul cutat, atunci cutm a doua
jumtate;
Dac numrul din mijloc este mai mare ca numrul cutat, atunci cutm n
prima jumtate;
Dac numrul din mijloc este egal cu numrul cutat, nseamn c am gsit
numrul n cauz i trebuie s oprim cutarea.
Cutarea n jumtatea aleas se face tot la fel, deci se va njumti i aceast zon
Tipuri de date
ntr-o declaraie de forma procedure ordonare(n), n reprezint argumentul
procedurii; adic procedura ordonare ordoneaz n elevi, unde s se va preciza ulterior.
Noi convenim ca n s fie numr natural, chiar dac declaraia de mai sus nu rezult
acest lucru. n limbajele evoluate de programare, fiecare argument, fiecare variabil
are un anumit tip bine definit, adic poate lua valori dintr-o mulime precizat de
valori.
n algoritmii simpli, putem folosi urmtoarele tipuri de date:
Integer = mulimea numerelor ntregi
Real = mulimea numerelor reale
Char = caracter
String = ir de caractere
Boolean = logic
Byte
255
1 Byte
Word
65 535
2 Byte
Shortint
128
127
1 Byte
Integer
32 768
32 767
2 Byte
Longint
4 Byte
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.
Procedura Media_calcul conine toate aciunile algoritmului: citirea numerelor,
calcul i afiarea mediei aritmetice.
13
Program Media_aritmetica;
Var
media,x,y:Real;
Procedure media_calcul;
Begin
Write(Dati numerele:);
ReadLn(x,y);
Media:=(x+y)/2;
WriteLn(Media=,Media:8:2);
End;
Begin
media_calcul;
ReadLn;
End.
14
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);
Case opt Of
1:aria_patrat;
2:aria_cerc;
3:aria_triunghi;
Else
WriteLn(Date incorecte!);
End;
ReadLn;
End.
15
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;
Begin
Write(x,y=);
ReadLn(x,y)
ReadLn(Media=,calcul(x,y));
ReadLn;
End.
19
20
S:=0;
Repeat
S:=S+d mod 10;
D:=d div 10;
Until d=0;
Suma:=S;
End;
Begin
Write(Numrul:);
ReadLn(x);
WriteLn(Suma cifrelor lui ,x, este : ,suma(x));
ReadLn;
End.
Numr prim
Scriei un program care testeaz dac un numr natural x dat ca parametru este prim
sau nu, returnnd true sau false.
Program Prim;
Var
x:Integer;
Function test(x:Integer):Boolean;
Var
i:Integer;
Begin
Test:=True;
For i:=2 To x div 2 Do
If x mod i = 0 Then
Test:=False;
End;
Begin
Write(x=);
ReadLn(x);
If test(x) Then
WriteLn(Numarul este prim!)
Else
WriteLn(Numarul nu este prim!);
End.
21