Sunteți pe pagina 1din 5

Algoritmi şi programare

Cursul nr. 1

Noţiunea de algoritm

Noţiunea de algoritm este una primară, care nu se defineşte, la fel ca şi noţiunea de


mulţime din matematică. Putem descrie algoritmul astfel:
Un algoritm este o succesiune de operaţii (paşi) care conduce la o soluţie corectă a unei
probleme. Tipul operaţiilor şi ordinea lor trebuie să respecte o anumită logică specificată.

Caracteristicile algoritmilor
Pentru a fi corect din punct de vedere formal, un algoritm trebuie să satisfacă următoarele
cerinţe:
1. generalitate;
2. finitudine;
3. claritate;
4. unicitate.
Generalitatea este proprietatea algoritmilor de a rezolva o întreagă clasă de probleme. De
exemplu, un algoritm pentru rezolvarea ecuaţiei de gradul al doilea, trebuie să rezolve orice
ecuaţie, indiferent de coeficienţii acesteia.
Finitudirea garantează obţinerea soluţiei într-un număr finit de paşi.
Claritatea este proprietatea algoritmilor prin care secvenţa de calcul este descrisă clar,
fără ambigutăţi.
Unicitatea este proprietatea care asigură obţinerea aceluiaşi set de date de ieşire pentru
acelaşi set de date de intrare.

Modalităţi de reprezentare a algoritmilor


Există mai multe modalități de reprezentare a algoritmilor:
- scheme logice;
- pseudocod;
- limbaj de programare.

1
Algoritmi şi programare
Cursul nr. 1
Într-o schemă logică operaţiile sunt exprimate în formă grafică prin intermediul unor
blocuri etichetate corespunzător şi conectate între ele prin intermediul unor săgeţi care indică
sensul de parcurgere al schemei logice, de la primul bloc până la ultimul.

Blocul de început apare o singură dată la începutul schemei


START logice. Este etichetat cu cuvântul STRAT. Din el pleacă o
singură săgeată către blocul următor.

Blocul de final apare o singură dată la sfârşitul schemei logice.


Este etichetat cu cuvântul STOP. În el doar sosesc arce.
STOP

Blocul de citire semnifică transferul datelor în


memoria internă. Operaţia este necesară
deoarece datele nu pot fi prelucrate decât dacă
Citeşte
listă_date_de_intrare sunt prezente în memoria internă a
calculatorului. Lista datelor de intrare conţine
variabile care identifică zonele de memorie unde
vor fi stocate datele.

Blocul de scriere semnifică transferul datelor pe


un suport extern (monitor, imprimantă, etc.).
Scrie
listă_date_de_ieşire Lista datelor de ieşire conţine variabile,
constante sau expresii care identifică zonele de
memorie unde au fost stocate informaţiile.

Blocul de atribuire, sau blocul de calcul semnifică


variabilă=expresie
evaluarea unei expresii şi scrierea rezultatului în
locaţia de memorie corespunzătoare variabilei.

Blocul decizional are rolul de a evalua


DA NU o condiţie şi, în funcţie de rezultatul
condiţie
evaluării, să urmeze o anumită
succesiune de paşi în schema logică

2
Algoritmi şi programare
Cursul nr. 1
Pseudocodul este un limbaj de tranziţie între limbajul natural şi limbajul de programare.
Există mai multe variante de pseudocod. Condiţia este ca acesta să conţină suficiente structuri de
bază pentru a putea descrie orice algoritm.

O variantă de pseudocod este:


- instrucţiunea de citire:
citeşte listă_date_de_intrare
- instrucţiunea de scriere:
scrie listă_date_de_ieşire
- instrucţiunea de atribuire:
variabilă=expresie
- structura alternativă:
dacă condiţie atunci instrucţiuni
altfel instrucţiuni

- structura repetitivă cu test iniţial:


cât_timp condiţie execută
instrucţiuni

- structura repetitivă cu test final:


repetă
instrucţiuni;
până_când condiţie
- structura repetitivă cu contor:
pentru contor=val_inițială,val_finală,pas execută
instrucţiuni

Un limbaj de programare este un set bine definit de expresii și reguli valide de formulare
a instrucțiunilor pentru a fi executate de un computer. Un limbaj de programare are definite un set
de reguli sintactice și semantice. Sintaxa semnifică o modalitate de scriere corectă a
instrucţiunilor, iar semantica reprezintă modul lor de funcţionare.
3
Algoritmi şi programare
Cursul nr. 1
Există mai multe clasificări ale limbajelor de programare:
▪ După paradigma programării:
- limbaje ezoterice: Brainfuck;
- limbaje procedurale; C, Java, Perl, …;
- limbaje funcţionale: ML, Haskell;
- limbaje pentru programarea logică: Prolog, DATALOG;
- limbaje mixte: LISP oferă un amestec netipizat de programare imperativă și
programare funcţională.
1. După nivelul de abstractizare (care printre altele corespunde cu ușurința cu care
programele pot fi citite și înțelese de către programatori):
- limbaje de generația întâia: limbajele cod-mașină (limbaje mașină);
- limbaje de generația a doua: limbajele de asamblare;
- limbaje de generația a treia: limbaje de nivel înalt, cum ar fi C-ul (și toate
derivatele sale: C++, Java, ...), Pascal, Fortran ș.a.;
- limbaje de generația a patra: limbajele neprocedurale, orientate pe rezolvarea
unei anumite clase de probleme: SQL ș.a.;
- limbaje de generația a cincea: limbaje utilizate în domenii precum logica
fuzzy, inteligența artificială sau și rețelele neuronale: Prolog, LISP ș.a.
Pentru executarea unui program scris într-un limbaj de programare există
modalităţi: compilare sau interpretare. La compilare, compilatorul transformă programul-sursă în
totalitatea sa într-un program echivalent scris în limbaj mașină, care apoi este executat. La
interpretare interpretorul ia prima instrucțiune din programul-sursă, o transformă în limbaj mașină
și o execută; apoi trece la instrucțiunea doua ș.a.m.d.
Putem descrie un algoritm în mai multe moduri de la limbajul natural la un limbaj specific
lucrului cu sistemele de calcul. Un limbaj utilizat doar in scopul descrierii algoritmilor se numeşte
limbaj algoritmic. Limbajele de programare sunt limbaje algoritmice.
Prin programare înţelegem o modalitate de rezolvare a unei probleme cu ajutorul
calculatorului care execută un program. Un program este o succesiune de instrucţiuni scrise într-
un limbaj de programare.
Programarea sau realizarea aplicaţiilor software este o activitate care presupune
parcurgerea mai multor etape:

4
Algoritmi şi programare
Cursul nr. 1
1. Formularea problemei, adică determinarea obiectivelor programului, stabilirea datelor de
intrare, a datelor de ieşire şi a cerinţelor de prelucrare a datelor.
2. Elaborarea algoritmului folosind pseudocodul sau schema logică. Această etapă, dacă este
corect efectuată, simplifică scrierea si testarea programului.
3. Scrierea programului într-un limbaj de programare. Pentru acestea se va ţine cont de
utilizatorii programului şi de resursele hard si soft necesare pentru rularea sa. Programul
trebuie să fie cât mai simplu şi eficient, să poată fi executat indiferent de calculator, să nu
conţină erori şi să fie bine documentat.
4. Testarea programului care semnifică efectuarea de teste folosind diferite seturi de date de
intrare. Se vor corecta erorile de sintaxă (erorile de scriere corectă a instrucţiunilor), dar şi
erorile de logică.
5. Scrierea documentaţiei programului care va conţine informaţii pentru utilizatori, operatori
şi programatori. Documentaţia presupune şi redactarea unui manual de utilizare care
trebuie să cuprindă: descrierea aplicaţiei, specificarea resurselor necesare pentru rularea
sa, instrucţiuni şi exemple de utilizare.
6. Utilizarea şi întreţinerea programului care presupune pe lângă rularea programului şi
depistarea unor anumite erori şi rescrierea unor module, realizarea de actualizări şi
eficientizări pentru versiunile viitoare.

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