Sunteți pe pagina 1din 7

1.

Algoritmi
Algoritmii exist de cnd exist civilizaia uman. Orice activitate se supune unui algoritm,
mai concret spus trebuie respectate anumite reguli. Denumirea a venit destul de trziu; n
anul 825 un matematician persan, Abu Jafar ibn Musa al Khowarizmi, a scris o carte de
exerciii. Titlul crii, Kitab al-jabr wal-maqubala, a introdus n matematic denumirea de
algebr, iar numele autorului cea de algoritm. Literar al Khowarizmi semnific din oraul
Khowarazm. Astzi acest ora se numete Khiva i se afl n Uzbekistan.
Semnificaia algoritmului a devenit deosebit de important n informatic, unde el reprezint
ceea ce trebuie s fac un calculator pentru rezolvarea unei probleme.
Prin algoritm se nelege o mulime finit de reguli de calcul folosite ntr-o anumit
succesiune, cu ajutorul crora se poate obine soluia unei probleme prin executarea unui
numr finit de operaii. O alt definiie a algoritmului este: sistemul de reguli conform crora o
informaie iniial numit i informaie admisibil, este transformat n informaie final
trecnd printr-un numr finit de transformri intermediare. Toate informaiile admisibile ale
unui algoritm formeaz domeniul algoritmului.
ntr-un algoritm trebuie ca la fiecare moment s fie executat o anumit aciune. Aceast
aciune care se realizeaz se numete pas de algoritm: o secven finit de operaii
(aciuni) care se pot efectua ntr-o unitate stabilit de timp. Un pas trebuie s conin cel
puin o aciune.
Algoritmul este considerat un mod de reprezentare a procesului de dezvoltare a programelor
i un suport dup care se realizeaz programele. n activitatea de rezolvare a problemelor cu
ajutorul calculatorului, elaborarea algoritmilor reprezint o etap deloc uoar, important, i
obligatorie. De calitatea algoritmului proiectat depinde, n mare msur, calitatea
programelor i succesul execuiei acestora. Astfel, fiecare propoziie din descrierea
algoritmului se introduce printr-o comand ce trebuie executat de cineva (calculator, om
etc.).
Algoritmii se caracterizeaz prin:
Unicitatea presupune c transformrile, precum i ordinea n care se desfoar,
ncepnd de la informaia iniial, reprezentate de datele de intrare, pn la informaia
final, datele de ieire, sunt determinate de regulile algoritmului.
Finitudinea se refer la faptul c un algoritm se ncheie dup un numr finit de pai,
furniznd rezultatul dorit, deci operaiile trebuie astfel concepute nct algoritmul s se
termine ntr-un numr finit de pai, cunoscut sau necunoscut.
Corectitudinea reprezint faptul c algoritmul ofer rezultatul dorit.
Claritatea: un algoritm trebuie s prevad modul de soluionare a tuturor situaiilor care
pot aprea n rezolvarea problemei respective, ntr-o manier fr ambiguiti sau
neclariti, lucru impus de caracterul automat al calculatorului.
Generalitatea reprezint proprietatea algoritmului de fi aplicat unei clase de probleme i
nu unei probleme particulare. Un algoritm nu trebuie conceput pentru o singur
problem particular, ci pentru o clas general de probleme.

Iterativitatea reprezint procesul prin care rezultatul este obinut ca urmare a execuiei
repetate a unui set de operaii, de fiecare dat cu alte valori de intrare. Numrul de iteraii
poate fi cunoscut sau necunoscut, dar determinabil pe parcursul execuiei programului.
Indiferent de situaie, numrul de iteraii trebuie s fie totdeauna finit.
Recursivitatea reprezint procesul iterativ prin care valoare unei variabile se determin pe
baza uneia sau mai multora dintre propriile ei valori anterioare. Dup cum valoarea curent a
variabilei depinde de una sau mai mult valori anterioare, procesul este unirecursiv, respectiv
multirecursiv. Recursivitatea presupune definirea uneia sau mai multor formule de start n
funcie de numrul de valori anterioare de care depinde valoarea curent i a unei formule
recursive (de recuren).

2. Reprezentarea algoritmilor
Pentru reprezentarea unui algoritm este necesar un anumit limbaj. Pentru oameni, acesta
poate fi, n principiu, orice limbaj natural. Totui, limbajele naturale nu sunt suficient de
riguroase pentru a fi folosite n acest scop, astfel c au fost introduse diferite limbaje
artificiale destinate special pentru reprezentarea algoritmilor. Cele mai rspndite dintre
acestea, n cazul cnd algoritmii respectivi sunt destinai oamenilor, sunt pseudocodul i
schema logic. Reprezentarea algoritmilor destinai calculatoarelor se face prin intermediul
limbajelor de programare.
Un limbaj pseudocod este un cadru de reprezentare a soluiilor unei probleme formulate
ntr-un anumit limbaj (matematic, natural etc.) permind transcrierea lor ulterioar ntr-un
limbaj de programare real, folosind n acest scop un set strict limitat de construcii sintactice
bine definite, astfel nct s nu poat da natere la interpretri diferite. Un limbaj pseudocod
traduce problema de rezolvat ntr-o succesiune de aciuni numite operaii sau instruciuni.
Schema logic este reprezentarea grafic a algoritmului, n care pentru fiecare tip de
aciune se folosesc anumite simboluri grafice specifice, iar pentru a indica ordinea executrii
aciunilor se folosesc sgei.
Avantajul schemei logice fa de pseudocod este c, n cazul algoritmilor mici, permite o mai
bun urmrire a fluxurilor de instruciuni. Acest avantaj se pierde ns atunci cnd numrul
instruciunilor este mare.

2.1.

Reprezentarea algoritmilor cu ajutorul pseudocodului

Pseudocodul (se mai numete i limbaj algoritmic sau convenional) reprezint un ir


ordonat de propoziii prin intermediul crora este descris problema dat spre rezolvare.
Propoziiile pot fi standard sau nestandard, i se utilizeaz cuvinte cheie cu neles prestabilit
ce identific operaia care se execut.
Propoziiile standard (mnemonice) sunt scrise n limba englez:

if...then...(dac...atunci...)
if...then...else...(dac...atunci...altfel...)
read (citete) corespunde introducerii datelor
write (afieaz) corespunde afirii rezultatelor
START marcheaz nceputul pseudocodului
STOP marcheaz sfritul pseudocodului
v:=0 sau v0 iniializri
v:=a+b sau va+b calcule

Propoziiile nestandard pot fi aduse la propoziii standard printr-o serie de transformri.

2.2.

Descrierea algoritmilor cu ajutorul schemelor logice

Schema logic reprezint o transcriere grafic a etapelor unui algoritm. Fiecrui pas i
corespunde cte un simbol numit bloc, iar sensul de parcurgere a etapelor este indicat prin
sgei. Blocurile utilizate ntr-o schem logic sunt:
Bloc delimitator, numit i bloc de nceput i sfrit de organigram, se utilizeaz pentru
a marca nceputul i sfritul unui algoritm.

Bloc de intrare/ieire, numit i bloc pentru introducerea datelor, respectiv pentru

extragerea rezultatelor, utilizat pentru scrierea datelor de intrare/ieire.


Bloc de calcul, numit i bloc de atribuire, utilizat pentru scrierea expresiilor ce se
calculeaz i pentru atribuirea de valori variabilelor. Un astfel de bloc indic urmtoarea
succesiune de operaii: se calculeaz expresia din membrul drept i apoi se atribuie
variabilei din membrul stng valoarea calculat.

Bloc de decizie (ramificare), utilizat pentru ramificri ale algoritmului. Condiia scris n
interiorul blocului determin ce ramur va fi executat.

Sgeat indic ordinea n care se parcurge schema logic.


Conector de bloc n interiorul su se va scrie un numr, legnd dou blocuri
neconsecutive ale schemei logice.
Conector de pagin n interiorul conectorului se va trece un numr sau o liter pentru
a marca continuarea pe urmtoarea pagin a schemei logice.
1

n interiorul fiecrui bloc, cu excepia lui START i STOP, se indic operaiile ce trebuie
efectuate n etapa pe care o marcheaz. n blocul de calcul este scris expresia ce trebuie
calculat i variabila creia i se atribuie aceast valoare, n acest scop utilizndu-se simbolul
:=, numit simbol de atribuire.
Pe baza celor enumerate se poate da urmtoarea definiie: se numete schem logic un
graf orientat n care:
exist un singur bloc de START i un singur bloc de STOP;
orice arc este etichetat cu una din urmtoarele informaii:
START sau STOP;
o citire sau o scriere;
o atribuire;
un predicat, n care caz extremitatea iniial a arcului este extremitatea iniial a unui
bloc de ramificaie;
orice arc face parte din cel puin un drum care ncepe cu blocul START i se termin cu
blocul STOP.
Orice algoritm poate fi descris printr-o schem logic format cu ajutorul a trei structuri
elementare numite structuri de baz. Aceste structuri sunt:
1. Structuri secveniale sau lineare.
2. Structuri alternative.
3. Structuri repetitive sau cu ciclu.
Reprezentrile grafice ale celor trei tipuri de structuri sunt ilustrate n figura 3.1.

Fig. 3.1. Reprezentrile grafice ale structurilor de baz


Structura secvenial este reprezentat n figura 3.1.a. aceasta poate conine mai multe
blocuri A, B,....., sau numai unul. Sunt structurile cele mai simple, execuia lor se face
secvenial, ntr-o singur trecere.
Structura alternativ reprezentat n figura 3.1.b. este de tipul If-Then-Else (Dac-AtunciAltfel) i se execut astfel:
Dac (If): se evalueaz expresia logic C
Atunci (Then): dac valoarea lui C este adevarat se efectueaz secvena A
Altfel (Else): dac valoarea lui C este fals, se execut secvena B.
Se poate ca una din cele dou aciuni ale unei structuri alternative s lipseasc, adic s fie
aciunea vid, iar n acest caz se spune c este vorba de pseudostructuri alternative. Alte
tipuri de structuri alternative:
Structura If-Then este o selecie simpl (forma scurt), caz n care exist numai blocul
de aciuni A, lipsind blocul B.

Structura Case-Of este o selecie multipl, i este utilizat n situaia n care valoarea
selectorului poate lua mai mult dect dou valori.
Structura repetitiv reprezentat n figura 3.1.c. numit While-Do (Atta timp ct Execut)
este o structur repetitiv condiionat anterior i se efectueaz astfel: atta timp ct (While)
expresia logic C este ndeplinit se execut (Do) aciunea A. Alte tipuri de structuri
repetitive sunt:
Structura repetitiv condiionat posterior, notat cu Do-Until (figura 3.2.a)
Structura repetitiv cu numrtor, notat cu Do-For (figura 3.2.b)

Fig. 3.2. Tipuri de structuri repetitive

2.3.

Exemple de algoritmi

n continuare sunt prezentai civa algoritmi reprezentai n pseudocod ct i sub forma


schemelor logice.
Exemplul I. S se realizeze schema logic i s se scrie pseudocodul pentru rezolvarea
ecuaiei de gradul I. Schema general a ecuaiei de gradul I este: a*x+b=0. Datele de intrate
ale problemei sunt valorile lui a i b, trebuind s se determine valoarea lui x.
START
READ a,b

IF (a<>0) THEN
BEGIN
X:=-b/a
WRITE X
END
Exemplul II. S se realizeze schema logic i s se scrie pseudocodul pentru calculul sumei
primelor n numere naturale. Schema general a acestei sume este: S=1+2+3+4+.+n, iar
ca date de intrare avem doar valoarea lui n.

Exemplul III. S se realizeze schema logic i s se scrie pseudocodul pentru calculul


sumei a n numere naturale aleatoare. Schema general a acestei sume este:
S=a1+a2+a3+.+an, iar ca date de intrare avem valoarea lui n i valorile ai cu i=1..n.

START
READ n
FOR i:=1 TO n DO
READ ai

ENDFOR
S:=0
FOR i:=1 TO n DO
S:=S+ ai
ENDFOR
WRITE S
STOP

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