Sunteți pe pagina 1din 16

ALGORITMI I SCHEME LOGICE

Caracteristicile algoritmilor
Iterativitate i recursivitate
Reprezentarea algoritmilor prin scheme logice
Reprezentarea algoritmilor prin pseodocod
Descrierea structurilor fundamentale
Structurarea algoritmilor
Erorile n algoritmi
Proiectarea algoritmilor

Caracteristicile algoritmilor
Generalitate
Exemplu:
3x2-5x+7=0 ax2+bx+c=0, a,b,cR, a0 a,b,cR
Determinare (claritate)
Exemplul 1:
ax2+bx+c=0, a,b,cR
1. a 0, ecuaie de grad II
2. a=0 i b 0, ecuaie de grad I
3. a=0, b=0 i c 0, ecuaie imposibil
4. a=0, b=0 i c=0, ecuaie nedeterminat
Exemplul 2:
Suma elementelor impare dintr-un ir
Suma elementelor pare dintr-un ir

Finitudine
Clase de algoritmi:
Algoritmi cu numr cunoscut de pai (a priori cunoscut)
Produs scalar ntre dou mulimi
Algoritmi cu numr necunoscut de pai (a posteriori
cunoscut)
CMMDC ntre dou numere
Numerele prime pn la o limit dat

Iterativitate i recursivitate
Iterativitate
Factorial, Fibonacci
Creare vectori
Cautare directa (in vector)

formula iterativ

Recursivitate

Suma elementelor din vector


Maxim (minim) dintr-un ir
Cmmdc din dou numere
Cautare binara (in vector)
formula de start
formula recursiv

Reprezentarea algoritmilor prin scheme logice


Blocul START

Blocul STOP

START

STOP

Blocul de citire
Citete
date_de_intrare

Blocul de scriere
Scrie
date_de_iesire

Blocul de atribuire
v=e

ve

Blocul de ramificare (TEST)

c1

c2

cn

c1 c2 cn = 1
ci cj = 0, i j; i,j = 1,n

Pentru cazul n =2
NU

DA

Structurile fundamentale din


programarea structurat
Structura secvenial (liniar)
s.l.s.

s1
s2

sn

pseudocod
s1;

citeste n

s2;

ii+1;

nn/2;

sn;

pi.dsqrt(pi.x * pi.x + pi.y * pi.y)

Structurile alternative - selecia simpl dac ... atunci


s.l.s.
Nu

Da

s2

s1

pseudocod
IF c THEN s1
ELSE s2
ENDIF

Nu

maxb

a>b

Da

maxa

IF a>b THEN
max a
ELSE
max b
ENDIF

Structurile alternative - pseudoalternativa


s.l.s.
Nu

Da

s1

Nu

x<min

Da

minx

pseudocod
IF c THEN s1
ENDIF

IF x<min THEN
minx
ENDIF

s.l.s.

Structura alternativ multipl

i
i=v1

i=v2

s1

s2

...

i=vn

iV

sn

i
i=a
vv+1

i=e

vv+1

i=u
...

iV

vv+1 cc+1

pseudocod
CASE-OF
i=v1: s1
i=v2: s2
...
i=vn: sn
ELSE s
ENDCASE
CASE-OF
i=a: vv+1
i=e: vv+1
...
i=u: vv+1
ELSE cc+1
ENDCASE

Structurile repetitive
Structura repetitiv condiionat anterior Ct timp
s.l.s.

c
Nu

Da

n<>0

Da
Nu

pseudocod
WHILE c DO
s
ENDWHILE

ain mod 2
n n div 2

WHILE n<>0 DO
ain mod 2
n n div 2
ENDWHILE

Structura repetitiv condiionat posterior


Repet ... pn cnd
s.l.s.

Afiseaza intrebare Doriti sa reluati ? (d/n)


Citeste raspuns rsp

rsp=n

c
Da

Nu

pseudocod
DO
s
UNTIL c

Nu

Da
DO
Executa instructiuni din program
Afiseaza intrebare Doriti sa reluati ? (d/n)
Citeste raspuns rsp
UNTIL rsp=n

Structura repetitiv cu numrtor Pentru Execut


Citeste n
s.l.s.

p1
jn

v=vi
vvf

j2

Da
Nu

Nu

Da

pp*j
jj-1

v=v+vr

pseudocod

FOR v=vi,vf,vr DO
s
ENDDO

Citeste n
p1
FOR jn, 2, -1 DO
pp*j
ENDDO

Structurarea algoritmilor
Teorema fundamental de structur (Boem-Jacoppini)
1966 paper by Corrado Bhm and Giuseppe Jacopini
S = (BLOCK, IF-THEN-ELSE, IF-THEN,
CASE-OF, WHILE-DO, DO-UNTIL, DO-FOR)

Un algoritm este structurat dac i numai dac este format din


elemente din mulimea S.

Corolarul top-down
Un algoritm P structurat este echivalent cu un algoritm pus sub una
din urmtoarele forme:
P = BLOCK(s1,s2,,sn)

P = IF-THEN-ELSE(c,s1,s2)

P = WHILE-DO(c,s)

Erorile n algoritmi
Erori n datele iniiale:
- erori de observare
- erori datorate numerelor iraionale
Erori de rotunjire
Erori de metod
Erori reziduale

Proiectarea algoritmilor
Proiectarea, codificarea i testarea top-down
Proiectarea modularizat
Proiectarea structurat