Algoritmi și Programare

Previzualizare curs:

Extras din curs:

În anul 1642, matematicianul si fizicianul Blaise Pascal (1623-1662) a inventat prima masina

mecanica, cu roCi dinCate, capabila sa realizeze operaCii de adunare si scadere a numerelor naturale. Totusi,

de-abia dupa apariCia masinilor electromecanice, în 1944, John von Neumann a formulat principiul

programului înregistrat si a sugerat constructorilor de calculatoare trei principii care trebuie avute în vedere

pentru realizarea unui calculator:

• programele si datele trebuie sa fie codificate sub forma binara;

• programele si datele trebuie stocate într-o memorie a masinii de calcul;

• trebuie sa existe o componenta (unitate centrala de prelucrare, procesor) speciala care stie atât sa

execute operaCii de calcul, cât si sa extraga, sa decodifice si sa execute instrucCiunile programului.

Astfel, aproape toate tipurile de sisteme de calcul ce au aparut mai târziu sunt calculatoare de tip von

Neumann.

ApariCia sistemelor de calcul a dus la apariCia si dezvoltarea unei noi stiinCe: informatica

(Informatique, Informatics, Informatik în Europa, respectiv Computer Science în SUA). Informatica

reprezinta un complex de discipline prin care se asigura prelucrarea informaCiilor cu ajutorul sistemelor de

calcul. Astazi, informatica este prezenta în industrie, banci, ferme, arta, medicina, stiinCe sociale etc. si este

structurata în mai multe domenii precum:

• arhitectura sistemelor de calcul: studiaza modul de organizare a sistemului fizic (hardware) pentru a

se obCine o mai mare eficienta, siguranCa si utilitate.

• sisteme de operare: studiaza modalitaCile de gestiune eficienta a resurselor fizice si a programelor.

• algoritmi si structuri de date: studiaza metodele de rezolvare a problemelor si modurile de

organizare a datelor pentru a obCine programe eficiente.

• limbaje de programare: studiaza modalitaCile prin care algoritmii si structurile de date sunt

prezentate calculatorului pentru a fi prelucrate.

• ingineria programarii: studiaza metodele de automatizare a proceselor de proiectare, analiza, testare

si reutilizare a programelor.

• calcule numerice si simbolice: studiaza modalitaCile de reprezentare a informaCiei numerice pentru

implementarea unor algoritmi numerici robusti, eficienCi si de mare precizie.

• sisteme de gestiune a bazelor de date: studiaza modalitaCile de structurare si organizare eficienta a

colecCiilor mari de date ce vor fi supuse diverselor prelucrari.

• inteligenCa artificiala: studiaza modalitaCile de reprezentare si manipulare a cunostinCelor în vederea

obCinerii de noi cunostinCe.

• animaCia si robotica: studiaza modalitaCile de reprezentare, prelucrare si analiza a informaCiei audio-

vizuale.

În sfera sa de preocupari, informatica a atras si dezvoltat o mare varietate de discipline precum: logica

matematica, teoria automatelor, limbaje formale, cercetari operaCionale, teoria grafurilor si reCelelor, calcul numeric,

teoria fiabilitaCii, geometrie computaCionala, teoria calculabilitaCii, baze de date, baze de cunostinCe, sisteme expert .

I.2. Ce este un program? NoCiunea de algoritm

SoluCia unei probleme, din punct de vedere informatic, este data printr-o mulCime de comenzi

(instrucCiuni) explicite si neambigue, exprimate într-un limbaj de programare. Aceasta mulCime de

instrucCiuni prezentata conform anumitor reguli sintactice formeaza un program. Un program poate fi privit

si ca un algoritm exprimat într-un limbaj de programare. Totusi, un algoritm descrie soluCia problemei

independent de limbajul de programare în care este redactat programul.

Exista mai multe definiCii ale noCiunii de algoritm. A. A. Markov, a considerat algoritmul ca fiind o

noCiune matematica primara si a descris-o astfel: Un algoritm este o reCeta care descrie precis si clar un

proces de calcul. El a descris un mecanism formal pentru a specifica o clasa larga de activitaCi si anume:

216

algoritmii normali. Alte modalitaCi de descriere a algoritmilor ce au mai fost propuse sunt: masina Turing,

sistemele Post, funcCiile recursive etc. În aceasta lucrare, prin algoritm vom înCelege o secvenCa finita de

comenzi explicite si neambigue care, executate pentru o mulCime de date (ce satisfac anumite condiCii

iniCiale), conduce în timp finit la rezultatul corespunzator. Observam ca se face distincCie între algoritm (care

se termina în timp) si procedura (care poate continua nedefinit).

Conform lui D. Knuth (The art of computer programming, Vol. I, 1997) un algoritm poseda cinci

caracteristici importante:

• Un algoritm are caracter finit. El este descris printr-o secvenCa finita de etape si trebuie ca, ori de

câte ori sunt parcurse etapele algoritmului pentru anumite date, procesul sa se încheie în timp finit.

• Un algoritm are caracter determinist. AcCiunile specificate de pasii algoritmului sunt clare, fiind

riguros prezentate.

• Un algoritm are date de intrare. Se poate admite ca întotdeauna un algoritm lucreaza asupra unor

date de intrare. Acestea pot fi evidenCiate din contextul în care este formulata problema a carei

soluCie o reprezinta algoritmul.

• Un algoritm furnizeaza cel puCin o valoare de iesire ce se afla într-o relaCie specifica cu datele de

intrare.

• Un algoritm este eficace.

Trebuie spus ca nu orice problema admite soluCie descrisa algoritmic. Problemele pentru care exista

un algoritm de rezolvare se numesc probleme decidabile. Problemele pentru care s-a demonstrat (matematic)

ca nu admit un algoritm de rezolvare se numesc probleme nedecidabile. Nu este suficient ca o anumita

problema (clasa de probleme) sa admita soluCii (chiar si o singura soluCie). Din punctul de vedere al

informaticii, intereseaza daca exista soluCie ce poate fi descrisa algoritmic, deci daca soluCia problemei poate

fi construita efectiv. De asemenea, pentru rezolvarea anumitor probleme pot exista mai mulCi algoritmi.

Stabilirea celui mai bun dintre acestia se realizeaza în urma unui proces de analiza prin care se determina

performantele fiecaruia dintre algoritmi.

Am vazut ca algoritmii accepta date de intrare si furnizeaza rezultate (date de iesire). Introducerea

unei valori sau a unui sir de valori se va descrie folosind verbul citeste. Afisarea unei valori sau a unui sir de

valori va fi descrisa prin verbul scrie. Vom conveni sa numerotam pasii (etapele) unui algoritm. Aceasta

numerotare va fi utilizata eventual în alCi pasi. Acest mod de prezentare a algoritmilor se numeste descriere

în limbaj convenCional. În unele lucrari, limbajul convenCional mai este numit si limbaj pseudocod.

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Algoritmi si Programare.pdf
Alte informații:
Tipuri fișiere:
pdf
Nota:
9.4/10 (10 voturi)
Nr fișiere:
1 fisier
Pagini (total):
22 pagini
Imagini extrase:
22 imagini
Nr cuvinte:
15 943 cuvinte
Nr caractere:
84 719 caractere
Marime:
319.99KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Profesorului:
Prof. univ dr. Grigore Albeanu
Sus!