Sunteți pe pagina 1din 19

Programarea calculatoarelor

Cursul 1

Curs 2

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,c R, a 0

a,b,c R

Determinare (claritate)
Exemplul 1:
ax2+bx+c=0, a,b,c R
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 finit de pai, a priori cunoscut
Produs scalar ntre dou mulimi
Algoritmi cu numr finit de pai, a posteriori cunoscut

CMMDC ntre dou numere


Numerele prime pn la o limit dat
Algoritmi cu numr infinit de pai
Numrarea unor elemente care ndeplinesc o condiie dat

Iterativitate i recursivitate

Iterativitate
Produs vectorial
Creare vectori

formula iterativ

Recursivitate
Produs scalar
Maxim (minim) dintr-un
ir
Cmmdc din dou numere
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

Blocul de ramificare

c1

c2

cn

c1

c2

ci

cj = 0,

cn = 1

j; i,j = 1,n

Pentru cazul n =2
NU

DA

Structurile fundamentale din


programarea structurat
Structura secvenial (liniar)

s.l.s.

arbore

pseudocod

BLOCK

s1;
s2;

s1

s2

sn

s1

sn

analitic:

sn;

BLOCK(s1,s2,,sn)

Structur PRIVILEGIAT !

Structurile alternative selecia simpl


s.l.s.

Nu

arbore

Da

IF-THEN-ELSE

c
s2

s1

s1

s2

analitic
pseudocod

IF c THEN s1
ELSE s2
ENDIF

IF-THEN-ELSE(c,s1,s2)
Structur PRIVILEGIAT !

Structurile alternative - pseudoalternativa


s.l.s.
Nu

arbore
Da

IF-THEN

c
s1

s1

analitic
pseudocod

IF-THEN (c,s1)
IF c THEN s1
ENDIF

Transformarea n structur alternativ selecia simpl


s.l.s.
Nu

analitic
Da

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

s1
Structura pseudoalternativ
pe ramura fals

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


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

Structura alternativ multipl

s.l.s.

analitic

i
i=v1
s1

i=v2
...

s2

i=vn

i V

sn

CASE-OF (i,s1,s2,,sn,s)

pseudocod

arbore
CASE-OF i

s1

s2

...

sn

CASE-OF
i=v1: s1
i=v2: s2
...
i=vn:sn
ELSE s
ENDCASE

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

arbore
Da

WHILE-DO

c
Nu

s
analitic

pseudocod
WHILE c DO
s
ENDWHILE

WHILE-DO(c,s)
Structur PRIVILEGIAT !

Structura repetitiv condiionat posterior


s.l.s.

arbore

DO-UNTIL

Nu

Da

pseudocod

analitic

DO
s
UNTIL c

DO-UNTIL(s,c)

Structura repetitiv cu numrtor


s.l.s.

arbore

DO-FOR(vi,vf,vr)
v=vi
v vf

Nu

Da

s
v=v+vr

N = [(vf - vi) / vr] + 1

pseudocod

DO-FOR v=v1,vf,vr
s
ENDDO

analitic

DO-FOR(v,vi,vf,vr,s)

Structurarea algoritmilor
Teorema fundamental de structur (Boem-Jacoppini)
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
eroare absolut
eroare relativ

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

Proiectarea structurat

Bibliografie
1. I. Gh. Roca, B. Ghilic-Micu, C. Cocianu, M. Stoica, C. Uscatu, M.
Mircea, L. Btgan, C. Silvestru, Bazele programrii calculatoarelor.
Teorie i aplicaii n C, Ed. ASE, Bucureti, 2006, ISBN 973-594-591-6
2. I. Gh. Roca, B. Ghilic-Micu, C. Cocianu, M. Stoica, C. Uscatu,
Programarea calculatoarelor. tiina nvrii unui limbaj de programare,
Teorie i aplicaii, Ed. ASE, 2003
3. Ion Smeureanu, Marian Drdal, Programarea n limbajul C/C++, Ed.
CISON, Bucureti 2004, ISBN 973-99725-7-8

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