Documente Academic
Documente Profesional
Documente Cultură
CAPITOLUL 5
ALGORITMI
5.1 Noiuni generale
Noiunea de algoritm este extrem de general, ea poate fi ntlnit n
diverse ocazii. Noi ne ocupm de elaborarea algoritmilor pentru
programarea calculatoarelor. n acest caz, executantul este calculatorul, iar
cel care elaboreaz algoritmul se numete programator.
Algoritmul este un sistem de calcule care, pentru o anumit clas de
probleme, din condiiile iniiale, permite s se obin soluia problemei
respective cu ajutorul unui ir finit i ordonat de operaii efectuate automat
fr intervenia omului.
Algoritmul este format dintr-o succesiune de pai. Fiecare pas
reprezint o operaie care se execut. n orice algoritm se pornete de la
ceva i se dorete obinerea unui anumit rezultat. Algoritmul opereaz cu
anumite obiecte (cifre, caractere, etc.) asupra crora sunt permise anumite
operaii.
Algoritmii trebuie s aib anumite proprieti:
Claritate s fie scris ct mai clar, fr ambiguiti, pentru a
fi neles uor
Generalitate s rezolve o ntreag clas de probleme
Finitudine s aib un numr finit de pai pentru a se ajunge
la soluia problemei
Calculatorul rezolv o anumit problem atunci cnd execut un
anumit program, corespunztor problemei. Programul este alctuit dintr-o
succesiune de comenzi date calculatorului, pe care acesta le execut n mod
automat, fr intervenia omului. La baza scrierii unui program st
algoritmul de rezolvare a problemei respective, adic succesiunea de
operaii care duc la obinerea rezultatului.
Operaiile care pot fi prezente ntr-un algoritm:
Operaii de intrare/ieire
Operaii aritmetice (de atribuire)
Operaii de decizie
104
Algoritmi
Algoritmii opereaz cu date de intrarea i date de ieire. Datelor de
intrare le aplic succesiunea de operaii, care executate, duc la obinerea
rezultatului (a datelor de ieire).
Clasificarea algoritmilor
Algoritmi liniari conin o succesiune de operaii de
intrare/ieire sau aritmetice care se execut liniar, n ordinea
n care au fost scrise
Algoritmi cu ramificaii conin pe lng operaii de
intrare/ieire sau aritmetice i operaii de decizie (verificarea
ndeplinirii unei condiii), punct n care se ramific pentru a
oferi rezolvare pentru ambele cazuri ale deciziei (da sau nu)
Algoritmi ciclici conin o succesiune de operaii care se
execut n mod repetat (ciclic) de un anumit numr de ori.
Reprezentarea algoritmilor
Pseudocod (limbaj algoritmic) este un limbaj care nu are
foarte multe reguli, dar care seamn att cu limbajul natural
(n cazul nostru cu limba romn) ct i cu orice limbaj de
programare
Scheme logice sunt reprezentarea grafic a algoritmilor
prin diferite figuri geometrice stabilite printr-o convenie
internaional.
Algoritmii lucreaz cu dou tipuri de obiecte: date i variabile
asupra crora sunt permise anumite operaii.
Datele pot fi clasificate dup tipul lor: ntregi, reale, logice, iruri de
caractere. Acestea pot avea anumite valori numerice n primele dou cazuri,
sau TRUE/FALSE n al treilea caz. n cazul irurilor de caractere valoarea
lor va fi o succesiune de caractere (un text exemplu). Exist i o categorie
special de date numite constante, a cror valoare nu se modific pe
parcursul executrii algoritmului.
Variabilele sunt locaii de memorie pentru anumite date care pot lua
valori diferite pe parcursul executrii algoritmului i care au un nume unic.
O variabil poate lua doar valori de un anumit tip (fie ntregi, fie reale, etc.).
Prin convenie s-a stabilit c orice variabil pentru a putea fi folosit ntr-un
algoritm trebuie declarat nainte de a fi utilizat.
105
Algoritmi
5.2 Instruciunile de baz
5.2.1. Instruciunea de citire
Sintaxa n pseudocod:
citete <variabila>
Reprezentarea n schem logic:
CITETE variabila
CITETE variabila
Efectul instruciunii :
Calculatorul ateapt introducerea de la tastatur a unei valori pentru
variabila respectiv, valoare pe care o va stoca n memorie la adresa
variabilei.
5.2.2. Instruciunea de scriere
Sintaxa n pseudocod:
scrie
<variabila>
SCRIE variabila
SCRIE variabila
Efectul instruciunii :
atribuie
<variabila> expresie
106
Algoritmi
Reprezentarea n schem logic:
ATRIBUIE variabila expresie
Efectul instruciunii :
Calculatorul evalueaz (calculeaz) valoarea expresiei i o atribuie
variabilei.
Exemplu:
1. S se calculeze expresia matematic:
2
E = a + (b + c ) (a c )
Algoritm expresie
Var a, b, c, E
Citete a, b, c
E a + SQRT(b+c) SQR(a-c)
Scrie E
Stop
5.2.4. Instruciunea de decizie
Sintaxa n pseudocod:
Efectul instruciunii :
107
Algoritmi
Calculatorul evalueaz operaia logic care formeaz condiia i n
funcie de rezultat, dac este adevrat, se execut secvena1, iar dac este
fals se execut secvena2
Varianta simplificat :
Exemple:
1. Se citesc 2 numere a i b de la tastatur. S se tipreasc cel mai
mare dintre ele.
Algoritm maxim
START
Var a, b
Citete a
Citete a
Citete b
Citete b
Dac (a>b) atunci scrie a
altfel scrie b
NU
DA
a>b
Scrie b
Stop.
Scrie a
STOP
2. Calculai funcia:
x0
a + b,
f = 2
a + x , x > 0
108
Algoritmi
Algoritm funcief
Var a, b, x, f
Citete a
Citete b
Citete x
Dac (x0) atunci atribuie fa+b
altfel atribuie fSQR(a)+SQRT(x)
START
Citete a
Citete b
Citete x
Scrie f
Stop.
x0
NU
fSQR(a)+SQRT(x)
DA
fa+b
Scrie f
STOP
Sintaxa n pseudocod:
ct timp(condiia)execut
<secvena>
109
Algoritmi
Efectul instruciunii:
Calculatorul evalueaz condiia i ct timp aceasta este ndeplinit,
execut secvena de instruciuni care formeaz corpul ciclului. Cnd
condiia nu mai este ndeplinit oprete repetrile.
Exemplu:
1. S se citeasc de la tastatur o secven de caractere pn ntlnim
litera A.
Algoritm litere_initial
Var x
Citeste x
Ct timp (x<>A) execut
Scrie x
Citeste x
Stop.
Sintaxa n pseudocod :
repet
<secvena>
pn cnd (condiia)
110
Algoritmi
Efectul instruciunii:
Calculatorul repet secvena de instruciuni care formeaz corpul
ciclului pn cnd este ndeplinit condiia. n acest moment se opresc
repetrile.
Observaie:
Deosebirea ntre cele dou instruciuni apare n momentul n care de
la primul pas, verificarea condiiei duce la ieirea din ciclu. La instruciunea
de ciclare cu test iniial, corpul ciclului nu se va executa niciodat dac
condiia nu este ndeplinit de la primul pas. La instruciunea de ciclare cu
test final, chiar dac condiia nu este ndeplinit de la nceput, corpul
ciclului se execut cel puin o dat.
Exemplu:
1. S se rezolve aceeai problem cu instruciunea de ciclare cu test final.
Algoritm litere_final
Var x
Repet
Citete x
Scrie x
Pn cnd (x=A)
Stop.
Algoritmi
Sintaxa n pseudocod:
Efectul instruciunii:
Calculatorul repet secvena
de instruciuni care formeaz corpul ciclului de un numr cunoscut de ori, n
timp ce, contorul numr aceste repetri, pornind de la valoarea iniial pn
la valoarea final, mrindu-se cu pasul p la fiecare reluare a ciclului.
Exemple:
1. S se calculeze suma a 10 numere ntregi citite de la tastatur.
Algoritm suma
Var nr, S, i
Atribuie S0
Pentru i=1,10,1 execut
Citete nr
Atribuie SS+nr
Scrie S
Stop.
112
Algoritmi
2. S se calculeze suma a n numere.
Algoritm n_numere
Var nr, n, s, I
Citete n
S0
Pentru i=1,n execut
Citete nr
SS+nr
Scrie S
Stop.
START
Citete n
S0
P1
i1
2
Citete x
113
Algoritmi
1
Scrie S, P
Stop.
NU
DA
x0
P=P*x
S=S+x
ii+1
DA
in
NU
Scrie S,P
STOP
Citete n
S0
P1
i1
PP*i
SS+P
ii+1
Scrie S
Stop.
DA
NU
in
Scrie S
STOP
114
Algoritmi
5. Se citesc n numere ntregi. S se numere cte dintre ele sunt cuprinse
n intervalul [a, b], unde a i b se citesc de la tastatur. S se
calculeze suma numerelor care aparin intervalului.
Algoritm interval
Var n, i, x, a, b, nr, s
Citeste n
Citeste a, b
S0
nr0
Pentru i=1,n execut
Citeste x
Daca ((x>=a) si (x<=b)) atunci nrnr+1
ss+x
Scrie nr, S
Stop.
115