Sunteți pe pagina 1din 35

CURS 3

A L G O R I T M I
ALGORITMI DEFINIRE
Noiunea de algoritm, preluat din matematic, este
fundamental n activitatea de programare a
calculatoarelor electronice.
Programarea este practic activitatea prin care se
concepe i se realizeaz programul pentru rezolvarea
unei probleme, cu ajutorul calculatorului electronic.
Un program reprezint o succesiune de instruciuni i
comenzi aparinnd unui/unor limbaje de programare,
(Pascal, Basic, C, Basic, Java, etc) care conduc la
soluionarea problemei formulate. Calculatorul va
efectua aceste comenzi n ordinea stabilit de
programator, pentru a obine rezultatele dorite, n forma
de prezentare cerut.
NOIUNEA DE ALGORITM
Cuvntul algoritm este de origine arab, derivnd
din numele matematicianului Abu Jafar Mohammed
ibn Musa al-Kahowarizmi.
Cunoscut cu aproape 2000 de ani naintea erei
noastre, noiunea de algoritm a devenit una din
noiunile centrale ale matematicii actuale. Ea apare
sub denumirea de algoritm n Elementele lui
Euclid; algoritmul lui Euclid este destinat calculului
celui mai mare divizor comun a dou numere
naturale, diferite de zero.
ALTE EXEMPLE
Fiecare dintre noi cunoatem o serie de
algoritmi, cum ar fi:
Algoritmul mpririi a dou numere;
Algoritmul extragerii rdcinii ptrate a unui
numr;
Algoritmul rezolvrii ecuaiei de gradul I, II;

NOIUNEA DE ALGORITM (1)
Considerat ca noiune primar, noiunea de
algoritm a fost definit de matematicianul
sovietic A.A.Marcov ca fiind:
o prescripie care determin un proces de
calcul i care este precis, perfect
inteligibil, nepermind nici un fel de
interpretri din partea celui care o duce
la ndeplinire.
PROBLEME DECIDABILE (1)
S-a demonstrat c nu orice problem poate fi
rezolvat printr-un algoritm de rezolvare a
acesteia.
O problem este decidabil dac exist un
algoritm pentru rezolvarea ei.
O problem nu este decidabil dac nu
exist nici un algoritm pentru rezolvarea
acesteia.
PROBLEME DECIDABILE (2)
Pentru a rezolva o problem decidabil, se
exprim soluia acesteia sub form de algoritm.
O persoan care nu cunoate domeniul
matematicii sau pe cel specific problemei pentru
care s-a elaborat un algoritm, dar care nelege
operaiile descrise n el, trebuie sa obina soluia
problemei dac efectueaz exact operaiile
specificate n algoritm, n ordinea precizat de
acesta.
NOIUNEA DE ALGORITM (2)
Algoritmul reprezint o mulime de reguli (de
calcul) care indic modul de obinere a soluiei
unei probleme, prin efectuarea unui numr finit
de operaii.
Regulile de calcul constituie paii algoritmului.
Execuia operaiilor care conduc la gsirea
soluiei problemei formulate trebuie s poat fi
realizat fr a fi necesar cunoaterea
principiilor matematice care stau la baza metodei
aplicate.
NOT
Orice algoritm pornete de la anumite date
iniiale (informaia iniial), pe care le
prelucreaz dup anumite reguli precizate
de nsui algoritmul respectiv, n vederea
obinerii unei informaii finale (rezultate
finale), trecnd printr-un ir de informaii
intermediare (numite rezultate
intermediare).
NOIUNEA DE ALGORITM (3)
Algoritmul reprezint un sistem de reguli
care, aplicat unei clase de probleme de
acelai tip, pornind de la datele iniiale,
conduce la obinerea soluiei prin
intermediul unor operaii succesiv
ordonate i unic determinate.
NOIUNEA DE ALGORITM (4)
Algoritmul poate fi deci definit printr-o funcie f
astfel:
f : DI SF unde:
DI reprezint mulimea datelor iniiale;
SF reprezint mulimea soluiilor finale.
f const ntr-o mulime de reguli care aplicate
datelor iniiale, conduc la obinerea soluiilor finale.
Se poate considera astfel c algoritmul reprezint o
modalitate de reprezentare a ntregului proces de
rezolvare a unei clase de probleme i suportul
de realizare practic a programelor
NOT.
n multe cazuri, algoritmul are un neles
similar cu reet, metod, tehnic sau
procedeu de calcul.
Un algoritm, odat gndit, trebuie descris,
prezentat ntr-o form acceptat de ceilali
parteneri, sau, dup caz, de calculator
(atunci cnd privete prelucrarea automat
a datelor cu calculatorul electronic).
DESCRIEREA ALGORITMILOR
Descrierea unui algoritm poate fi fcut:
n limbaj natural;
Sub form grafic, prin scheme logice sau
diagrame de structur;
Cu ajutorul tabelelor de decizie, pentru probleme
de deciziii multiple;
Printr-un limbaj pseudocod (limbaj algoritmic);
Printr-un limbaj de programare.
PROPRIETILE ALGORITMILOR
Orice algoritm trebuie s aib urmtoarele
proprieti fundamentale, denumite i
proprieti de baz ale algoritmilor:
generalitatea;
finitudinea;
determinismul;
unicitatea;
claritatea, precizia;
GENERALITATEA
Generalitatea const n aceea c un
algoritm nu rezolv n general o singur
problem, o problem particular
concret, ci o clas de probleme de
acelai tip.
Cu alte cuvinte, algoritmul trebuie s se
aplice la date iniiale ce pot varia ntre
anumite limite precizate.
EXEMPLU (generalitate):

Pentru a rezolva ecuaia de gradul II :
5x
2
+ 4x 3 = 0
algoritmul va fi elaborat astfel nct s poat
determina soluiile oricrei ecuaii de gradul II
de forma:
ax
2
+ bx + c = 0
FINITUDINEA
Finitudinea presupune c dup execuia
unui anumit numr transformri asupra
datelor iniiale, s poat fi obinut soluia
final.
n caz contrar, algoritmul va permite efectuarea
la infinit a transformrilor asupra datelor
iniiale sau intermediare se spune atunci
c algoritmul cicleaz, este deci incorect.
EXEMPLU (finitudine):
Dac se cere nsumarea elementelor unui vector
pn cnd suma este egal cu 150, este posibil,
n cazul n care vectorul are numai elemente cu
valori negative sau nule, s nu fie atins
niciodat valoarea dat. De aceea, trebuie s
avem n vedere, la stabilirea algoritmului de
rezolvare a problemei, toate posibilitile de
prezentare a datelor iniiale i s identificm
soluii de finalitate (de sfrit) a algoritmului n
acest caz la atingerea sumei cerute sau la
terminarea parcurgerii vectorului
DETERMINISMUL

Determinismul nseamn cuprinderea
tuturor cazurilor posibile ce pot s apar n
rezolvarea clasei respective de probleme,
nlturnd ambiguitile sau neclaritile.
EXEMPLU (determinism):
Pentru rezolvarea ecuaiei ax
2
+ bx + c = 0 , se
vor avea n vedere, la stabilirea algoritmului,
toate situaiile care pot s apar:
- variabilele a, b, sau c s fie nule sau nu
- discriminantul s fie mai mic ca 0, egal sau
mai mare ca 0.
Algoritmul trebuie s trateze i s rezolve
corect toate situaiile posibile care pot s
apar.
UNICITATEA
Unicitatea se refer la faptul c
transformrile, precum i ordinea lor, prin
care se trece de la o anumit informaie
iniial la informaia final, sunt univoc
determinate de regulile algoritmului.
Aceasta nseamn, c nu este posibil ca,
aplicnd un algoritm asupra unei aceleai
informaii de mai multe ori, s obinem
rezultate diferite.
CLARITATEA, PRECIZIA
Claritatea, precizia algoritmului se refer la
faptul c un algoritm trebuie s specifice clar i
precis, n fiecare moment, ce operaie se
execut i care este operaia imediat
urmtoare n rezolvarea problemei respective.
n prezentarea unui algoritm nu trebuie deci
folosite expresii echivoce. Cel care l citete,
trebuie s neleag exact operaiile pe care le
va ndeplini. Operaiile identificate i prezentate
ntr-un algoritm trebuie s poat fi realizate
(ndeplinite) efectiv.
OBSERVAIE:
Un procedeu de calcul care are toate
caracteristicile algoritmilor, dar nu se termin
ntr-un numr finit de pai se numete
metod de calcul.
De exemplu, metoda prin care transformm un
numr raional sub form de numr zecimal,
caz n care obinerea zecimalelor poate s
nu se sfreasc niciodat.
STRUCTURA UNUI ALGORITM

Din punct de vedere structural, un algoritm
cuprinde urmtoarele etape:
Iniializarea
Prelucrarea
Prezentarea soluiei finale
INIIALIZAREA
Iniializarea are rolul de a furniza (a citi) datele
iniiale ce se vor prelucra i eventualele valori
iniiale ale unor variabile ce-i modific valoarea
pe parcursul execuiei prelucrrilor;
Un algoritm are zero sau mai multe date de
intrare (date iniiale).
Intrrile sunt variabilele crora trebuie s li se
atribuie valori luate dintr-o mulime bine
precizat, nainte ca execuia algoritmului s
nceap.
PRELUCRAREA
Prelucrarea nseamn de fapt
transformrile (prelucrrile) efective ale
datelor iniiale (calcule, decizii, alte
transformri) cu scopul obinerii soluiilor
finale.
Ea este prezentat prin succesiunea de
operaii ce trebuie executat asupra
datelor de intrare pentru a ajunge la
soluia final.
PREZENTAREA SOLUIEI FINALE
Prezentarea soluiei finale nseamn
prezentarea, afiarea, n formatul dorit, pe
suportul dorit, a rezultatelor finale obinute n
urma prelucrrilor specificate.
Un algoritm are una sau mai multe ieiri (soluii
finale).
Ieirile sunt variabilele care pstreaz
rezultatele procesului de calcul realizat, pentru
a fi apoi afiate sau memorate n forma dorit.
In funcie de natura metodelor implementate n
procesele computaionale, algoritmii pot fi:
numerici, seminumerici, formali,
combinatoriali, neuronali, de cutare, de
sortare, recursivi, de rescriere, secveniali,
paraleli, determiniti, nedeterminiti,
probabiliti, aleatori, euristici, de tip Monte
Carlo, genetici, de simulare, computational
geometry, etc.
Nota:
ntreaga activitate de cercetare i elaborare de
produse software din domeniul Tehnologiei
Informaiei este determinat de inventarea,
conceperea, elaborarea, testarea i
implementarea de algoritmi performani i
utili.
Toate cheltuielile cu produse software trebuie
sa fie justificate din punct de vedere economic,
sa fie utile, performante si eficiente

Atentie programatori!
Rezolvarea teoretic a unei probleme nu
garanteaz i rezolvarea ei practic cu
calculatorul.
n general, un limbaj de programare este destinat
s faciliteze rezolvarea unor anumite clase de
probleme i se preteaz mai bine anumitor tipuri
de algoritmi.
Este nevoie de experien n utilizarea i
cunoaterea calculatorului, de competen i
intuiie, este nevoie de inspiraie i creaie.
n astfel de situatii este nevoie de cunoaterea mai
multor limbaje de programare pentru a alege
limbajul de programare adecvat pentru clasa de
probleme din care face parte problema de
rezolvat. Experiena a artat c, atunci cnd nu
este ales limbajul de programare corespunztor,
dac totusi se ajunge s se rezolve problema, s-a
fcut risip de resurse (timp / memorie / finane,
etc.) i, prin urmare, eficiena i performana au
avut de suferit.

Dezvoltarea produselor software
necesita urmatoarele faze:
1. prezentarea problemelor descrierea clar
i precis a problemelor indiferent din ce
domeniu provin acestea ;
2. proiectarea soluiilor includerea
problemelor n clasa de probleme
corespunztoare i alegerea modului de
reprezentare a problemelor prin formularea
etapelor i procedeelor corespunztoare pentru
procesele de rezolvare;

Faze - continuare

3. implementarea soluiilor elaborarea
algoritmilor i codificarea acestora ntr-un
limbaj de programare modern;
4. analiza soluiilor eficiena soluiilor
raportat la resursele utilizate: memorie, timp,
utilizarea dispozitivelor I/O, etc.;

Faze - continuare
5. testarea i depanarea verificarea execuiei
programului cu diverse seturi de date de intrare
pentru a putea rspunde rezolvrii oricrei
probleme pentru care aplicaia a fost elaborat;
6. actualizarea i ntreinerea adaptarea
soluiilor implementate pentru eliminarea erorilor
n rezolvarea unei anumite probleme i
compatibilitatea cu sistemul de calcul i sistemul
de operare folosite

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