Sunteți pe pagina 1din 4

1.

Algoritmi şi scheme logice

1.1. Generalităţi
Algoritmul constituie baza programării calculatoarelor. Este alcătuit din totalitatea
operaţiilor care, executate într-o anumită ordine, folosind o mulţime de valori, produc o altă
mulţime de valori. Denumirea de algoritm (al-khârezmi) provine de la numele matematicianului
arab Abu Ja’far Mohamed ibn Mûsa al Kahowârizmi.
În activitatea de rezolvare a problemelor cu ajutorul calculatorului elaborarea algoritmilor
reprezintă cea mai importantă etapă, obligatorie şi uneori dificilă.
a) Formularea problemei:
• definirea intrărilor – datele – precizând tipul, proprietăţilor şi domeniul valorilor;
• definirea ieşirilor – rezultatele;
• precizarea relaţiilor dintre date şi rezultate;
b) Întocmirea algoritmului – descrierea modului de rezolvare a problemei
c) Alcătuirea programului într-un limbaj adecvat.
1.2. Forma de reprezentare a algoritmilor
a) Schema logică – reprezentarea grafică;
b) Limbajul algoritmic – pseudocodul;
c) Limbajul convenţional – ansamblu de reguli sintactice simple asemănător
limbajului matematic;
d) Tabelele de decizie folosite în cazul proiectelor informatice mari.
1.3. Schema logică
Schema logică este reprezentarea grafică a algoritmului asociat unei probleme. În
alcătuirea lor sunt utilizate următoarele simboluri:

Blocul terminal pentru marcarea începutului şi sfârşitului programului

Blocul de calcul al rezultatelor pe baza datelor de intrare

Blocul de intrare / ieşire pentru citirea datelor şi scrierea rezultatelor

Blocul de decizie – ramificaţia execuţiei în funcţie de o condiţie

Înlănţuirea blocurilor schemei logice

Conector – element de definire şi referire a unui bloc al schemei logice

Blocul de procedură

1
Exemplu: schema logică pentru rezolvarea ecuaţiei de gradul II

Start

Read a,b,c

da
a=0
nu
x:=-c/b
d:=b^2-4*a*c

da
d<0 Write x
nu
Write ‘not R’
x1:=(-b-sqrt(d))/(2*a)
x2:=(-b+sqrt(d))/(2*a)

Write x1,x2

Read k

nu
k=’n’
da
Stop

2. Limbajul algoritmic (pseudocodul)

Limbajul algoritmic conţine două tipuri de enunţuri:


• nestandard – elemente ale limbajului natural;
• standard – elemente aparţinând limbajelor de programare
Elementele limbajului algoritmic sunt următoarele:
a) Cuvintele cheie, cele care apar subliniate în textul programului
b) Datele, care pot fi:
- după tip:
- numerice (întregi, reale, complexe),
- logice,
- şiruri de caractere;
- după natură:
- constante,
- variabile.

2
3. Instrucţiunile

3.1. Instrucţiuni de intrare / ieşire


read listă_variabile pentru introducerea datelor;
write listă_variabile pentru afişarea rezultatelor;
listă_variabile conţine nume de variabile sau constante alfanumerice.
ex: read a, b, c, (v(i),i=1,n), (x(i,j),i=1,m,j=1,n)
write 'a=', a, (x(i,j),i=1,m,j=1,n)
3.2. Instrucţiuni de atribuire
variabilă := expresie
ex: x1:=(-b+sqrt(d))/(2*a)
3.3. Instrucţiunea de oprire
stop
3.4. Instrucţiuni de ramificare
Forma 1:
if condiţie
then
secvenţă_instrucţiuni

secvenţă_instrucţiuni se execută numai dacă condiţie este adevărată.


Forma 2:
if condiţie
then
secvenţă_instrucţiuni_1
else
secvenţă_instrucţiuni_2

dacă condiţie este adevărată se execută secvenţă_instrucţiuni_1, altfel se execută


secvenţă_instrucţiuni_2.
3.5. Instrucţiuni repetitive
a) Condiţionată anterior

while condiţie
do secvenţă_instrucţiuni

secvenţă_instrucţiuni se execută numai dacă condiţie este adevărată.

3
b) Condiţionată posterior

repeat
secvenţă_instrucţiuni
until condiţie
secvenţă_instrucţiuni se execută cel puţin odată, până când condiţie este (devine)
adevărată.
c) Cu număr fix de paşi

for index := valoare_iniţială, valoare_finală [,pas]


do secvenţă_instrucţiuni

se iniţializează index cu valoare_iniţială şi se execută secvenţă_instrucţiuni, apoi se


incrementează index cu valoarea lui pas (implicit 1) şi se compară index cu valoare_finală; dacă
aceasta nu a fost depăşită, se reia secvenţă_instrucţiuni.
3.6. Instrucţiunea de ieşire forţată din ciclu
exit
3.7. Comentariul
/* şir de caractere */

Exemplu: pseudocodul pentru rezolvarea ecuaţiei de gradul II


repeat
read a, b, c
if a=0
then
x:=-c/b
write x
else
d:=b^2-4*a*c
if d<0
then
write 'not R'
else
x1:=(-b–sqrt(d))/(2*a)
x2:=(-b+sqrt(d))/(2*a)
write x1,x2

read k
until k='n'
stop

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