Documente Academic
Documente Profesional
Documente Cultură
1. 1
1. 2
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
1. 4
Cuprins cursuri
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
1. 6
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
1. 8
Bacu 22.11.2010
Bacu 22.11.2010
1. 9
1. 10
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?
1. 12
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
1. 14
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
1. 16
Microprocesorul
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
1. 18
Bacu 22.11.2010
Bacu 22.11.2010
11/22/2010
1. 19
1. 20
Bacu 22.11.2010
Bacu 22.11.2010
1. 21
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
Algoritmul
Exemplu
1. 22
1. 24
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
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
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
1. 28
Bacu 22.11.2010
Bacu 22.11.2010
1. 29
Programarea Structurat
1. 30
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
1. 32
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
1. 34
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
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
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
1. 38
Surse de erori
Cod surs
Compilator
Cod obiect
Linkeditor
Cod 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
1. 40
Exemple 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
1. 42
Observaii:
Mediile
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
1. 44
Bacu 22.11.2010
Bacu 22.11.2010
1. 45
ntrebri teoretice.
1. 46
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
1. 48
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