Documente Academic
Documente Profesional
Documente Cultură
Curs 8
Curs 8
Exemplu:
Pentru rezolvarea ecuaţiei:
ax2 + bx + c = 0, a, b, c, x R
există patru situaţii posibile, care trebuie cuprinse în algoritm:
1. a 0, ecuaţie de gradul II;
2. a = 0 şi b 0, ecuaţie de gradul I;
3. a = 0 şi b = 0 şi c 0, ecuaţie imposibilă;
4. a = 0 şi b = 0 şi c = 0, ecuaţie nedeterminată.
Rămâne să fie rezolvate fiecare dintre aceste situaţii sau ca unele dintre ele să fie
grupate, în funcţie de cerinţe.
Finitudine: operaţiile trebuie astfel concepute încât algoritmul să se termine într-un
număr finit de paşi.
Iterativitatea este procesul prin care rezultatul este obţinut ca urmare a execuţiei
repetate a unui set de operaţii, de fiecare dată cu alte valori de intrare.
Numărul de iteraţii poate fi cunoscut sau necunoscut, dar determinabil pe parcursul
execuţiei. Indiferent de situaţie, numărul de iteraţii trebuie să fie totdeauna finit. În cazul în
care numărul de repetări nu este cunoscut iniţial, oprirea ciclării se face combinând
instrucţiunile de calcul cu limitarea la un număr prestabilit de paşi. Utilizarea iterativităţii
în descrierea algoritmilor este uneori o cale simplificatoare, alteori singura alternativă de a
preciza modul de desfăşurare a unui proces de calcul. În general, când numărul de iteraţii
nu este cunoscut sau este variabil de la o execuţie la alta, construcţia algoritmului
presupune folosirea iterativităţii.
Recursivitatea este procesul repetitiv prin care valoarea 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 multe valori anterioare, procesul este unirecursiv,
respectiv multirecursiv.
Recursivitatea presupune definirea uneia sau mai multor formule de start – în
funcţie de numărul valorilor anterioare de care depinde valoarea curentă – şi a unei formule
recursive (de recurenţă).
Exemple:
A număra înseamnă a adăuga o unitate la valoarea anterior calculată. Dacă se
notează v0 = 0 valoarea iniţială, numărarea se desfăşoară după următorul proces recursiv:
v1 = v0 + 1
v2 = v1 + 1
v3 = v2 + 1
........
vi = vi–1 + 1
........
vn = vn–1+1
Valoarea care interesează este vn. În procesul descris anterior, se disting:
v0 = 0 formula de start;
vi = vi–1 + 1 formula recursivă, pentru i = 1, 2, …, n.
A însuma cele n elemente ale unei mulţimi A, înseamnă a calcula sumele s1,
s2, ..., sn, presupunând s0 = 0, după relaţiile:
s1 = s0 + a1
s2 = s1 + a2
s3 = s2 + a3
.........
si = si–1 + ai
.........
sn = sn–1 + an
Deoarece sumele parţiale nu interesează şi, în plus, ocupă inutil memorie
internă, însumarea se va raliza în aceeaşi locaţie de memorie, cu adresa S, în care se
vor depune sumele parţiale.
S=0 formula de start;
S = S + ai formula recursivă, pentru i = 1, 2, …, n.
A înmulţi cele n elemente ale unei mulţimi A, înseamnă a calcula produsele p1,
p2, ..., pn.. Produsul celor n elemente ale unei mulţimi se determină folosind formula de
start p0=1 şi formula recursivă pi=pi–1 · ai, pentru i = 1, 2, …, n.
Erorile în algoritmi
Exemplu:
Pentru măsurătorile fizice, mărimea observată este însoţită de limitele erorii: 250g±5g;
0,35mm±0,01mm etc.
Exemplu:
Gama de reprezentare în calculator a numerelor în virgulă mobilă pe 6 octeţi este, în cazul
microcalculatoarelor, de [2.9*10–39, 1.7*1038]. Precizia de reprezentare corespunde la 12
zecimale.
Citeşte lista_de_intrare
Scrie lista_de_ieşire
Exemple:
1. Să se realizeze schema logică şi programul pentru calculul mediei aritmetice a două
numere, a şi b.
Din analiza problemei se observă că trebuie citite două date (a,b), evaluată expresia şi
scris rezultatul calculat (m). Schema logică este:
START
Citeşte a, b, c,d
m = (a+b+c+d)/4
Scrie m
STOP
START
a=0, b=0
Citeşte a, b
p = 2 * (a +b)
d = sqrt (a2 + b2)
s=a*b
Scrie p, d, s
STOP
4. Să se realizeze schema logică şi programul pentru calculul lungimii şi ariei unui cerc
(raza se citeşte de la tastatură). Raza se va exprima printr-un număr cu două zecimale. Se
cere şi afişarea unităţilor de măsură.
Din analiza problemei se observă că trebuie citită raza (sau diametrul), evaluate cele
două expresii şi scrise rezultatele calculate (l şi s). Schema logică este:
START
r=0
Citeşte r
l = 2 * pi * r
s = pi * r^2
r
Scrie l, s
STOP
l=2*
SET TALK OFF pi * r
CLEAR s = pi *
STORE 0 TO r r^2
@2,2 SAY “raza =” GET a PICT “99,99”
READ
l = 2 * PI() * r
s = PI() * r^2
@3,2 SAY “lungimea =” + STR(l) + “cm”
@4,2 SAY “aria =” + STR(s) + “cmp”
5. Să se realizeze schema logică şi programul pentru calculul ariei unui triunghi oarecare,
folosind formula lui Heron.
Din analiza problemei se observă că trebuie citite cele trei date (laturile triunghiului),
evaluate cele două expresii (semiperimetrul şi aria), apoi scris rezultatul. Schema logică
este:
START
a = 0, b = 0, c = 0
Citeşte a, b, c
p = (a +b+c)/2
s =sqrt (p(p-a)(p-b)(p-c))
r
Scrie s
STOP
a 2b 3 c
6. Să se realizeze schema logică şi programul pentru evaluarea expresiei: E ,
a2 b c2
unde a [20, 50], b [200, 400], c [1, 9].
Din analiza problemei, se observă că sunt trei date de intrare: a, b şi c. Se va calcula
expresia şi va afişa rezultatul (E). Schema logică este:
START
a = 0, b = 0, c = 0
Citeşte a, b, c
Scrie E
STOP