Documente Academic
Documente Profesional
Documente Cultură
Cursul nr. 1
Noţiunea de algoritm
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.
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.
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.
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.