Sunteți pe pagina 1din 12

Algoritmi

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>

Reprezentarea n schem logic:

SCRIE variabila

SCRIE variabila

Efectul instruciunii :

Calculatorul caut n memorie adresa variabilei i tiprete


(afieaz) valoarea gsit acolo.
5.2.3. Instruciunea de atribuire
Sintaxa n pseudocod:

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:

dac(condiia) atunci secvena1


altfel secvena2

Reprezentarea n schem logic:


NU

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 :

dac (condiia) atunci secvena1

Reprezentarea n schem logic:

Aceast variant se folosete atunci cnd nu ne intereseaz ce se


ntmpl cnd nu este ndeplinit condiia.

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

5.2.5. Instruciuni de ciclare


Algoritmii ciclici sunt algoritmi care au pe parcursul lor instruciuni
care se repet. Instruciunile de ciclare sunt instruciuni care realizeaz
repetarea unei secvene de alte instruciuni, numit corpul ciclului. Aceste
instruciuni de ciclare pot fi de dou tipuri: instruciuni la care se cunoate
de la nceput numrul de repetri i instruciuni la care nu se cunoate de la
nceput numrul de repetri a ciclului.
Se cunosc dou instruciuni de ciclare la care nu se cunoate de la
nceput numrul de repetri :
5.2.5.1.Instruciunea de ciclare cu test iniial

Sintaxa n pseudocod:

ct timp(condiia)execut
<secvena>

109

Algoritmi

Reprezentarea n schem logic :

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.

5.2.1.2.Instruciunea de ciclare cu test final

Sintaxa n pseudocod :

repet
<secvena>
pn cnd (condiia)
110

Algoritmi

Reprezentarea n schem logic :

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.

5.2.1.3.Instruciunea de ciclare cu contor


Instruciunea de ciclare la care se cunoate numrul de repetri (se
tie de la nceput de cte ori se va repeta ciclul respectiv) se numete
instruciunea de ciclare cu contor.
111

Algoritmi

Sintaxa n pseudocod:

pentru c=vi,vf,p execut


<secvena>
unde: c = contorul
vi = valoarea iniial a contorului
vf = valoarea final a contorului
p = pasul cu care se mrete contorul la fiecare repetare a ciclului

Reprezentarea n schem logic:

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.

3. S se calculeze suma numerelor pozitive i produsul numerelor


negative dintre n numere citite de la tastatur.
Algoritm suma_produs
Var x, S, i, n, P
Citeste n
S0
P1
Pentru i=1,n execut
Citeste x
Dac (x0) atunci SS+x
altfel PP*x

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

4. S se calculeze suma S=1+1*2+1*2*3++1*2**n pentru un


numr n citit de la tastatur.
START
Algoritm sumaS
Var n, i, P, S
Citeste n
S0
P1
Pentru i=1,n execut
PP*i
SS+P

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

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