Sunteți pe pagina 1din 8

11/22/2010

1. 1

Programarea Calculatoarelor & Limbaje de Programare

1. 2

Programarea Calculatoarelor & Limbaje de Programare

Universitatea BACU Catedra M.S.C.

PROGRAMAREA CALCULATOARELOR & LIMBAJE DE PROGRAMARE C-C++. Pruteanu E.


pruteanue@yahoo.com
Bacu 22.11.2010

Technologia este un mod de a organiza universul astfel nct omul s nu fie nevoit s-l experimenteze. Max Frisch

Bacu 22.11.2010

1. 3

Obiective

Programarea Calculatoarelor & Limbaje de Programare

1. 4

Cuprins cursuri

Programarea Calculatoarelor & Limbaje de Programare

Deprinderea principalelor concepte ale limbajelor de programare; nvarea modului de aprofundare a unui limbaj; Deprinderea de aptitudini pe programare n C/C++; S scrie, s compileze i s ruleze un program simplu C utiliznd; S utilezeze corect elementele de baz ale limbajului C; S foloseasca tipurile structurate de date (vectori, matrici, structuri); S proiecteze i s implementeze programe modulare utiliznd definirea de funcii proprii; S acceseze memoria folosind pointeri

Bacu 22.11.2010

Introducere Algoritm i obiectele acestuia Limbaje de programare Programare structurat Scheme logice, pseudocod Exemple Istoric limbaj C Elemente de baz ale limbajului C Tipuri de date i constante Variabile i operatori Expresii Funcii I/O Instruciuni Directive de preprocesare

Vectori Funcii Pointeri Vectori i pointeri Funcii i pointeri iruri de caractere Structuri Alocare dinamic Fiiere text i fiiere binare Programe complexe. Compilri separate. Fiiere proiect. Convenii de programare
Bacu 22.11.2010

1. 5

Cerine, evaluare

Programarea Calculatoarelor & Limbaje de Programare

1. 6

Puncte importante n evoluia limbajelor


Programarea Calculatoarelor & Limbaje de Programare

Prob teoretic: 50% - examen on-line n sesiune; Prob practic: 50%, din care Evaluarea temelor de laborator: 30% Proba practic: 70% - examen on-line, n sesiune Cerine de prezen la lucrrile practice: Maxim 3 absene acceptate Teme la fiecare laborator, Deadline rezolvare teme: max. 1 sptmn Nepredarea temelor la termen -> absen Temele se trimit prin e-mail: pruteanue@yahoo.com

Anii 1940: arhitectura von Neumann Anii 1950: Fortran (IBM) Anii 1960: Algol60, Cobol Anii 1970: Pascal, Simula, C, Smalltalk, Ada Anii 1980: Prolog, C++, standardizarea limbajelor Anii 1990: Java, traducere n 2 faze, UML: standardizarea activitii industriei software
Bacu 22.11.2010

Bacu 22.11.2010

11/22/2010

1. 7

Programarea Calculatoarelor & Limbaje de Programare

1. 8

Programarea Calculatoarelor & Limbaje de Programare

Bacu 22.11.2010

Bacu 22.11.2010

1. 9

Programarea Calculatoarelor & Limbaje de Programare

1. 10

Structura general a unui sistem de calcul


PROGRAM (ir de aciuni , prelucrri, algoritm)

Programarea Calculatoarelor & Limbaje de Programare

Date de intrare (datele iniiale ale problemei)

Date de ieire (rezultatele obinute)

Calculatorul - sistem automat de prelucrare a datelor SISTEM OPERARE HARDWA RE SOFTWARE DE APLICAIE SOFTWAR E Echipamentul de calcul ca un sistem hardware-software Bacu 22.11.2010

Software-ul

UTILIZATOR

Bacu 22.11.2010

1. 11

Ce este un calculator?

Programarea Calculatoarelor & Limbaje de Programare

1. 12

Organizarea unui calculator

Programarea Calculatoarelor & Limbaje de Programare

Un calculator (computer) este un dispozitiv capabil s realizeze calcule i s ia decizii logice cu viteze foarte mari Calculatorul proceseaz date sub controlul unor niruiri de instruciuni numite programe de calculator. Aceste programe dirijeaz calculatorul s realizeze secvene de aciuni care au fost specificate de programatori Un calculator este alctuit din diverse dispozitive, cum ar fi tastatura, mouse-ul, discurile, memoria, CD-ROMul sau microprocesorul, toate acestea fiind numite generic hardware Programele de calculator care ruleaz pe calculator sunt numite software Bacu
22.11.2010

1. 2.

Unitatea de memorare este o colecie de celule care stocheaz datele. Fiecare astfel de celul are o adres. Aceste celulue se numesc celule de memorie sau locaii de memorie. Unitatea central de procesare (CPU) este cea care urmrete instruciunile din program.
a. b. Unitatea aritmetico-logic (ALU) care realizeaz operaiile aritmetice i logice Unitatea de control care controleaz aciunile celorlalte componente astfel nct instruciunile s se execute n ordinea corect

3. 4.

Dispozitivele de intrare/ieire (I/O) accept date care vor fi procesate i le prezint pe cele care au fost procesate Dispozitivele auxiliare de stocare pstreaz datele i dup oprirea calculatorului
Dispozitivele periferice sunt cele de intrare/ieire i cele auxiliare.

Sistemul de operare coordoneaz toate resursele calculatorului. El poate rula compilatorul, poate rula programe obiect, poate executa comenzi de sistem Editorul este un program interactiv folosit pentru crearea i modificarea programelor surs sau a datelor

Bacu 22.11.2010

11/22/2010

1. 13
10

Memoria

Programarea Calculatoarelor & Limbaje de Programare

1. 14

Componentele principale ale unui microcalculator

Programarea Calculatoarelor & Limbaje de Programare

Informaia este nregistrat n memorie. Memoria intern (memoria RAM - Random Acces Memory) se prezint ca o succesiune de octei (octet sau byte sau locaie de memorie). Un octet are 8 bii. Bit-ul reprezint unitatea elementar de informaie i poate avea una din valorile: 0 sau 1. Capacitatea unei memorii este dat de numrul de locaii pe care aceasta le conine i se msoar n multiplii de 1024 (2 ). De exemplu, 1 Mbyte=1024Kbytes; 1Kbyte=1024bytes. Numrul de ordine al unui octet n memorie se poate specifica printr-un cod, numit adres. Ordinea n care sunt adresate locaiile de memorie nu este impus, memoria fiind un dispozitiv cu acces aleator la informaie

Bacu 22.11.2010

Bacu 22.11.2010

1. 15

Caracteristicile de baza ale microprocesoarelor

Programarea Calculatoarelor & Limbaje de Programare

1. 16

Microprocesorul

Programarea Calculatoarelor & Limbaje de Programare

1.Setulde instructiuni(Instruction set) Multimeade instructiuni pe care le poate executa microprocesorul: RISC(reduced instruction set computer) sau CISC (complex instruction set computer). RISC mai ieftine (contin ma iputine tranzistoare), mairapide 2. Latimeade banda (Bandwidth) Numarul de biticare pot fi procesati la o singura instructiune (32 bits, 64 bits) 3. Vitezade ceas (Clock speed)Vitezala care microprocesoru lexecuta instructiunile; este exprimata in MHz (GHz) si determina numarul de instructiuni pe care procesorul le poate executa intro secunda. Masura vechea vitezei computerelor (MIPS ) Meaningless Indicator of Performance.
Bacu 22.11.2010

Circuit integrat complex cu urmtoarele componente de baz: Unitatea de execuie (realizeaz operaii logice i matematice); Unitatea de interfa a magistralei (transfer datele la/de la microprocesor)

Bacu 22.11.2010

1. 17

Programarea Calculatoarelor & Limbaje de Programare

1. 18

Programarea Calculatoarelor & Limbaje de Programare

Bacu 22.11.2010

Bacu 22.11.2010

11/22/2010

1. 19

Programarea Calculatoarelor & Limbaje de Programare

1. 20

Introducere n limbaje de programare


Definirea limbajelor Clasificarea limbajelor Clasificarea general a limbajelor Clasificare dup nivelul de abstractizare Paradigmele limbajelor de programare Istoric

Programarea Calculatoarelor & Limbaje de Programare

Bacu 22.11.2010

Bacu 22.11.2010

1. 21

Unitate de intrare (flux de intrare istream n C++)

Memorie intern Unitate central Memorie extern

Unitate de ieire (flux de ieire ostream n C++)

Unitile funcionale ale unui sistem de calcul

Bacu 22.11.2010

Redactare: o Scheme logice; o Pseudocod o Mental cine i permite? Cerine o Claritate fr ambiguiti o Generalitate pentru o ntreag clas de probleme o Finitudine furnizare rezultat n timp finit Obs: O problem poate avea mai muli algoritmi de rezolvare cel mai bun? ALGORITM: Succesiune de etape ce se poate aplica Bacu mecanic pentru rezolvarea unei clase de probleme; 22.11.2010

Obiecte cu care lucreaza un algoritm


1. 23

Algoritmul

Programarea Calculatoarelor & Limbaje de Programare

Exemplu

Programarea Calculatoarelor & Limbaje de Programare

1. 22

Programarea Calculatoarelor & Limbaje de Programare

1. 24

Programarea Calculatoarelor & Limbaje de Programare

este un set de pai care definete modul n care poate fi dus la ndeplinire o anumit sarcin; este un set ordonat de pai executabili, descrii fr echivoc, care definesc un proces finit; ste mulime finit de reguli de calcul, descrise fr echivoc, care indic operaiile elementare necesare i ordinea efecturii lor n scopul rezolvrii unei probleme ntr-un timp finit; este o metod (procedeu) de rezolvare a unei probleme; Se repreyinta n limbaj pseudocod sau prin scheme logice;

Bacu 22.11.2010

Bacu 22.11.2010

11/22/2010

1. 25

Proprietile fundamentale ale algoritmilor:

Programarea Calculatoarelor & Limbaje de Programare

1. 26

Limbaje de programare
Limbaje de nivel cobort, dependente de calculator: Limbaj main; Limbaj de asamblare; o mnemonice pentru operaiuni; o simboluri pentru adrese; greu, dar interesant! Limbaje de nivel nalt, independente de structura calculatorului: Fortran (FORmula TRANslation) 1955, IBM, probleme tehnico-tiinifice Cobol 1959, probleme economice Programare structurat 70 Programare orientat pe obiecte 80

Programarea Calculatoarelor & Limbaje de Programare

Caracterul finit: orice algoritm bine proiectat se termin ntr-un numr finit de pai; Caracterul unic i universal (generalitate): - un algoritm trebuie sa ofere o metod general de rezolvare a unui anumit tip de probleme, pentru date iniiale arbitrare si trebuie s rezolve toate problemele dintr-o clas de probleme; Realizabilitatea: orice algoritm trebuie s poat fi codificat ntr-un limbaj de programare; Caracterul discret: fiecare aciune se execut la un moment dat de timp; Caracterul determinist: - la fiecare pas, aciunea care urmeaz a fi executat trebuie s poat fi determinat fr echivoc i unic pe baza aciunilor precedente. Precizie (claritate) descrierea algoritmului trebuie facut fr ambiguiti, iar comenzile trebuie s exprime operaii cunoscute calculatorului, care pot fi executate de ctre procesor. Eficien - un algoritm trebuie s fie construit n aa fel nct s foloseasc resurse hard ct mai puine i s necesit un timp minim de execuie. Executabilitate - algoritmul ca ntreg i fiecare pas al su trebuie s poat Bacu 22.11.2010 fi executat.

Bacu 22.11.2010

1. 27

Programarea Calculatoarelor & Limbaje de Programare

1. 28

Programarea Calculatoarelor & Limbaje de Programare

Bacu 22.11.2010

Bacu 22.11.2010

1. 29

Programarea Structurat

Programarea Calculatoarelor & Limbaje de Programare

1. 30

Rezolvarea problemelor cu ajutorul calculatorului

Programarea Calculatoarelor & Limbaje de Programare

Dijkstra i Hoare Programarea in care abordarea este topdown: descompunerea problemei complexe n subprobleme mai simple - modul Teorema de structur a lui Bohm i Jacopini: orice algoritmpoate fi compus din numai trei structuri de calcul: structura secvenial - secvena; structura alternativ - decizia; structura repetitiv - ciclul. o singur intrare i o singur ieire pentru fiecare
Bacu 22.11.2010 Bacu 22.11.2010

11/22/2010

1. 31

Algoritmii se reprezint prin: scheme logice; pseudocod.

Programarea Calculatoarelor & Limbaje de Programare

1. 32

3. Teoria rezolvrii problemelor

Programarea Calculatoarelor & Limbaje de Programare

PROGRAM: Descriere precis i concis a unui algoritm ntr-un anumit limbaj de programare
Bacu 22.11.2010

Pentru rezolvarea unei probleme trebuie parcurse urmtoarele etape: Analiza problemei (nelegerea problemei i specificarea cerinelor acesteia). Se stabileste ce trebuie s fac aplicaia, i nu cum. Se stabilesc datele de intrare (identificarea mediului iniial) i se stabilesc obiectivele (identificarea mediului final, a rezultatelor); Proiectarea (conceperea unei metode de rezolvare a problemei printr-o metod algoritmic); Implementarea (codificarea algoritmului ales ntr-un limbaj de programare); Testarea aplicaiei obinute (verificarea corectitudinii programului); Exploatarea i ntreinerea (mentenana, activitatea de modificare a aplicaiei la cererea beneficiarului sau n urma unor deficiene constatate pe parcursul utilizrii aplicaiei). Bacu
22.11.2010

1. 33

Etape rezolvare problem

Programarea Calculatoarelor & Limbaje de Programare

1. 34

Programarea Calculatoarelor & Limbaje de Programare

Teoreticienii ingineriei programrii consider c rezolvarea unei probleme se poate face pe 3 direcii: Rezolvarea orientat pe algoritm (pe aciune), n care organizarea datelor este neesenial; Rezolvarea orientat pe date, aciunile fiind determinate doar de organizarea datelor; Rezolvarea orientat obiect, care combin tendinele primelor dou abordri.
Bacu 22.11.2010

Dintre metodele de proiectare orientate pe algoritm amintim: metoda programrii structurate metoda rafinrii succesive. Ambele au ca punct de plecare metoda de proiectare top-down, considerat ca fiind o metod clasic de formalizare a procesului de dezvoltare a unui produs software

Bacu 22.11.2010

1. 35

Programarea Calculatoarelor & Limbaje de Programare

1. 36

La baza metodei top-down st descompunerea funcional a problemei P, adic gsirea unui numr de subprobleme P , P , ... P , cu urmtoarele proprieti: Fiecare subproblem P (1<=i<=n) poate fi rezolvat independent. Dac nu constituie o problem elementar, poate fi, la randul ei, descompus; Fiecare subproblem P este mai simpl dect problema P; Soluia problemei P se obine prin reuniunea soluiilor subproblemelor P ; Procesul de descompunere se oprete n momentul n care toate subproblemele P obinute sunt elementare, deci pot fi implementate. Bacu
22.11.2010

Etapele rezolvrii unei probleme cu ajutorul calculatorului

Programarea Calculatoarelor & Limbaje de Programare

Srierea (editarea) programului surs. Programele surs sunt fiiere text care conin instruciuni (cu sintactica i semantica proprii limbajului utilizat). Programul (fiierul) surs este creat cu ajutorul unui editor de texte i va fi salvat pe disc (programele surs C primesc, de obicei, extensia .c, iar cele C++, extensia .cpp). Compilarea. Procesul de compilare este realizat cu ajutorul compilatorului, care translateaz codul surs n cod obiect (cod main), pentru ca programul s poat fi neles de calculator. n cazul limbajului C, n prima faz a compilrii este invocat preprocesorul. Acesta recunoate i analizeaz mai nti o serie de instruciuni speciale, numite directive procesor. Verific apoi codul surs pentru a constata dac acesta respect sintaxa i semantica limbajului. Dac exist erori, acestea sunt semnalate utilizatorului. Linkeditarea. Dupa ce programul surs a fost translatat n program obiect, el este va fi supus operaiei de linkeditare. Linkeditorul leag modulele obiect, rezolv referinele ctre funciile externe i rutinele din biblioteci i produce cod executabil, memorat ntr-un alt fisier, numit fiier executabil (acelai nume, extensia .exe). Execuia. Lansarea n execuie const n ncrcarea programului executabil n Bacu memorie i startarea execuiei sale. 22.11.2010

11/22/2010

1. 37

Etapele rezolvrii unei probleme cu ajutorul calculatorului


(Preprocesor)

Programarea Calculatoarelor & Limbaje de Programare

1. 38

Surse de erori

Programarea Calculatoarelor & Limbaje de Programare

Cod surs

Compilator

Cod obiect

Linkeditor

Cod executabil

Etapele necesare obinerii fiierului executabil.

Bacu 22.11.2010

n dezvoltarea unui program, eventualele erori pot fi descoperite la compilare, n timpul rulrii sau la testarea programului. Sursele erorile pot fi datorate: nenelegerii problemei de rezolvat - programul rezultat, de obicei nu funcioneaz sau funcioneaz din ntmplare. proiectrii greite a algoritmului - ca urmare a proiectrii greite rezult erori logice i acestea conduc la funcionarea incorect a programului (obinerea de rezultate neateptate). implementrii incorecte a algoritmului - ca urmare a implementrii greite rezult erori de sintax (erori simple de programare), care sunt semnalate de ctre compilator i care, n principiu, pot fi corectate uor. execuiei incorecte a programului - se numesc erori run-time i pot fi datorate erorilor logice sau erorilor de programare. Bacu
22.11.2010

1. 39

Programarea Calculatoarelor & Limbaje de Programare

1. 40

Exemple de programare

Programarea Calculatoarelor & Limbaje de Programare

Erorile de sintax. Aceste erori sunt detectate de ctre compilator i sunt datorate faptului c programul surs nu este conform cu regulile gramaticate ale limbajului. Exemple de astfel de erori: lipsa caracterului ; la sfritul instruciunilor, variabile nedeclarate, comentarii rmase deschise, paranteze nenchise, cuvinte cheie folosite necorespunztor, etc. O eroare de sintax poate conduce la mai multe mesaje de eroare i n multe cazuri, eliminarea unei erori conduce la eliminarea altor "erori" declarate. Erorile logice (bug-uri). Aceste erori se datoreaz proiectrii greite a algoritmilor. De obicei nu cauzeaz erori n timpul rulrii programului, permind execuia acestuia (ex.: scanf("%d",f);). Erorile de acest tip sunt detectabile prin obinerea de rezultate neateptate ale execuiei programului i n consecin pot fi corectate prin rularea programului pe cazuri test, urmrind valorile obinute i comparndu-le cu cele ateptate. Erorile de rulare (run-time). Aceste erori sunt detectate n timpul execuiei programului i se produc ca urmare a unor operaii ilegale de tipul: mprire la zero, radical dintr-un numr negativ, etc. Procesul de depistare i corectare a erorilor unui program se numete debugging. Pentru operaiile de debugging este recomandat inserarea unor instruciuni de tiprire a valorilor variabilelor n diverse locuri din program pentru a testa Bacu corectitudinea acestor valori la diferii pai din program. 22.11.2010

n cod main (secvene de instruciuni main = iruri de cifre binare) ex : X+Y 100101 00001 00010 00110 - instruciune n cod main caracteristic unui anumit tip de calculator 100101 = codul operaiei de adunare 00001 - locul unde se afla X n memoria calculatorului (registrul 1) 00010 - locul unde se afla Y n memoria calculatorului (registrul 2) 00110 - locul n care va fi depus rezultatul (registrul 6) => trebuie tiute: adresele regitrilor n care se gsesc operanzii adresele regitrilor microprocesorului codurile tuturor operaiilor Regitrii - locaii speciale de memorie ale microprocesorului aflate direct pe chip (cel mai rapid tip de memorie). Bacu
22.11.2010

1. 41

Programarea Calculatoarelor & Limbaje de Programare

1. 42

Observaii:
Mediile

Programarea Calculatoarelor & Limbaje de Programare

Observaii: 1) Oricrei probleme care admite o formulare matematic i se poate asocia un algoritm. 2) Dezvoltarea unui algoritm este, n general, mai dificil dect scrierea programului surs pe baza algoritmului. 3) Execuia algoritmului nu trebuie s necesite creativitate ci doar capacitatea de a urma instruciunile. 4) Este recomandabil ca un algoritm s considere toate circumstanele posibile ale tipului de probleme pentru care este construit. Astfel, n dezvoltarea unui algoritm se va ine cont i de situaii neuzuale.
Bacu 22.11.2010

de

programare

integrate

(BORLANDC,

TURBOC)

nglobeaz editorul, compilatorul, linkeditorul i depanatorul (utilizat n situaiile n care apar erori la execuie); Dac nu se utilizeaz un mediu integrat, programatorul va apela n mod explicit (n linie de comand) un editor de texte, compilatorul, linkeditorul. Lansarea n execuie se va face tot din linie de comand.

Bacu 22.11.2010

11/22/2010

1. 43

Programarea Calculatoarelor & Limbaje de Programare

1. 44

Programarea Calculatoarelor & Limbaje de Programare

Bacu 22.11.2010

Bacu 22.11.2010

1. 45

ntrebri teoretice.

Programarea Calculatoarelor & Limbaje de Programare

1. 46

Programarea Calculatoarelor & Limbaje de Programare

Enumerai unitile funcionale componente ale unui sistem de calcul. Care sunt diferenele ntre soft-ul de aplicaie i sistemul de operare? Care este deosebirea ntre algoritm i program? Care sunt proprietile fundamentale ale algoritmilor? Care sunt modalitile de reprezentare a algoritmilor?

Ghid teoretic i practic (conine lucrrile de laborator, temele i explicaii teoretice) Bruce Eckel, Thinking in C++, Prentice Hall 2000 (gratuit pe www) Bjarne Stroustrup, The C++ Programming Language, 3rd ed. Addison-Wesley, 1997 Ioan Salomie, Tehnici de programare obiectual, ed. Albastr, 1996;
Bacu 22.11.2010

Bacu 22.11.2010

1. 47

Programarea Calculatoarelor & Limbaje de Programare

1. 48

Programarea Calculatoarelor & Limbaje de Programare

Borland C++ 4, Ghidul programatorului, Editura Teora, 1996 Brookshear, J.G., Introducere n informatic, Editura Teora, Bucureti, 1998 Stroustrup, B., A Beginners C++, www.cs.uow.edu.av/people/nabg/ABC/ABC.html Stroustrup, B., C++ Annotations, www.icce.rug.nl/docs/cplusplus/cplusplus.html

Bacu 22.11.2010

Bacu 22.11.2010

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