Post on 04-Apr-2018
7/29/2019 Programare -C-
1/21
Programarea calculatoarelor I
Profesor dr. ing. Cornelia Gyrdi
1
7/29/2019 Programare -C-
2/21
Organizarea cursului
Acest modul de curs are 2 ore de curs sidou ore de lucrri practice pe sptmn
Nota obinut la examen este divizat : 65% - exemenul final 15% - lurrile practice de la laborator 20% - testul final de laborator
Prezena la curs i laborator esteobligatorie !!!
2
7/29/2019 Programare -C-
3/21
Structura cursului
Introducere
Introducere n programarea n limbajul C
Programarea structurat n limbajul C
Structuri de control n limbajul C Variabile, operatori i expresii
Funcii
Tablouri
Pointeri iruri de caractere
Structuri i uniuni, cmpuri pe bii
3
7/29/2019 Programare -C-
4/21
Structura cursului
Recursivitatea
Funcii de intrare/ieire (I/O) pentrufiiere
Funcii folosite n lucru cu fiierele
4
7/29/2019 Programare -C-
5/21
Bibliografie
C: How to Program 3rd Edition H.M. Deitel, P.J. Deitel 2001Prentice-Hall ISBN 0130895725
The Joy of C 3rd Edition L.H. Miller, A.E. Quilici 1997 Wiley ISBN 047112933x
Data Structures, Algorithms & Software Principles in C Thomas A.Standish 1995 Addison-Wesley ISBN 0201591189 Programarea n limbajul C, I. Mang, Cornelia Gyorodi, Robert
Gyorodi, Editura Universitii, 1995 D. Costea -Iniiere n limbajul C- Editura Teora - 1995
V. Cristea, C. Giumale .a. -Limbajul C standard- Editura Teora -1992
5
7/29/2019 Programare -C-
6/21
Ce este un Computer?
Computer -Calculator Un dispozitiv capabil s execute operaii i sia decizii logice
Calculatorul proceseaz datele cu ajutorul unor seturide instruciuni numite programe Hardware
Varietate de dispozitive care compun un calculator
Tastatur, ecran, mouse, disc, memorie, CD_ROM,unitate de procesare ( unitatea central) Software
Programele care se execut pe un calculator
6
7/29/2019 Programare -C-
7/21
Componentele unui sistem de calcul (Computer) Un sistem de calcul este compus din 6 uniti:
1. Unitatea de intrare Obine informaii de la dispozitivele de intrare (keyboard,
mouse)2. Unitatea de ieire (Output unit)
Transmite informaia spre vizualizare (ecranul, imprimanta
alte uniti de control)3. Unitatea de memorie
Acces rapid, capacitate mic, stocheaz informaia deintrare, programele active
4. Unitatea aritmetic i logic (Arithmetic and logic unit -ALU)
Execut operaiile aritmetice i logice5. Unitatea central (Central processing unit -CPU)
Supervizez i coordoneaz alte seciuni ale calculatorului6. Unitatea de memorie secundar (Secondary storage unit)
capacitate mare, mai ieftin Stochaz programele inactive Stores inactive programs 7
7/29/2019 Programare -C-
8/21
Evoluia limbajelor de programare
First-generation binary machine code switches
Second-generation (1940s 1950s) assembler one-to-one
Third-generation (1960s 1970s) high-level languages like C, Pascal C++,
Java one-to-5 10 Fourth-generation (late 1970s)
4GLs one-to-30 50 (Focus, Natural)
8
7/29/2019 Programare -C-
9/21
Limbaje de nivel nalt: scurt istoric
conceptul de compilator : descris prima data de Grace Hopper (1952) 1954-1957: limbajul si compilatorul FORTRAN (John Backus, IBM) 1958: LISP (LISt Processing, John McCarthy, la MIT) (Lots of Idiotic, Silly Parantheses :)) 1959: COBOL (Common Business Oriented Language)dezvoltat de CODASYL: Committee on Data Systems Languages 1960: ALGOL 60: limbaj structurat, sta la baza multor limbaje 1964: BASIC (John Kemeny, Tom Kurtz; la Dartmouth) 1967: SIMULA (Ole-Johan Dahl, Kristen Nygaard):primul limbaj orientat pe obiecte ! 1968: Edsger W. Dijkstra: \GO TO Considered Harmful" - principiile programarii structurate 1971: PASCAL (Niklaus Wirth); ulterior MODULA-2
9
7/29/2019 Programare -C-
10/21
Istoricul limbajului C
dezvoltat si implementat n 1972 la AT&T Bell Laboratories deDennis Ritchie http://cm.bell-labs.com/cm/cs/who/dmr/chist.html contextul: evolutia conceptului de programare structurata(C inspirat de ALGOL 68, via BCPL si B)
necesitatea unui limbaj pentru programe de sistem legatura strnsa cu sistemul de operare UNIX dezvoltat la Bell
Labs) C dezvoltat initial sub UNIX; n 1973, UNIX rescris n totalitate n C
cartea de referinta: Brian Kernighan, Dennis Ritchie: The C Programming Language (1978) n 1988 (vezi K&R editia II)
limbajul a fost standardizat de ANSI (American National StandardsInstitute)
dezvoltari ulterioare: C99 (standard ISO 9899)
10
http://cm.bell-labs.com/cm/cs/who/dmr/chist.htmlhttp://cm.bell-labs.com/cm/cs/who/dmr/chist.htmlhttp://cm.bell-labs.com/cm/cs/who/dmr/chist.htmlhttp://cm.bell-labs.com/cm/cs/who/dmr/chist.html7/29/2019 Programare -C-
11/21
Libraria standard C
Programele C sunt impartite in module numite functii Un programator isi poate crea propriile functii
Avantaj: programatorul stie exact cumfunctioneaza
Dezavantaj: consumator de timp Programatorii vor folosi adeseori functiile de
biblioteca C:
Evitarea reinventarii rotii Daca o functie exista deja, e mai bine sa fie
folosita decat sa se scrie alta Functiile de biblioteca sunt scrise cu atentie, sunt
eficiente si portabile 11
7/29/2019 Programare -C-
12/21
Tendinta principal: programareaobiectual
Obiective Componente software reutilizabile care modeleaza
obiecte din viata reala Unitati software
Obiecte de tip data, obiecte timp, obiecte plata,obiecte pt facturare, obiecte audio, obiecte video,obiecte fisier, obiecte de tip inregistrare, etc.
Orice substantiv poate fi reprezentat ca si unobiect
Reutilizare foarte buna Mai usor de inteles, organizat mai bine, si mai usor
de intretinut decat programarea procedurala12
7/29/2019 Programare -C-
13/21
C++ si cum se programeaza in C++
C++ Superset al lui C dezvoltat de Bjarne Stroustrup la Bell Labs Are abilitati orientate pe obiect Modelarea orientata pe obiecte foarte bine dezvoltata
Productivitate de la 10 pana la 100 ori mai mare Limbajul dominant in industrie si in mediile academice
Invatarea lui C++ Deoarece C++ include C, unii cred ca e mai bine sa stapanesti
C si apoi sa inveti C++ Incepand cu semestrul 2 din anul I se va incepe introducerea in
C++
13
7/29/2019 Programare -C-
14/21
Elementele unui mediu de dezvoltare C
14
Programul preprocesorproceseaza codul
Programul deincarcare pune
programul inmemorieCPU executa fiecareinstructiune, stocandeventual noi date pemasura executieiprogramului
Compilatorul creazacodul obiect si il
stocheaza pe disc.Editarea de legaturileaga codul obiect delibrarii
Incarcator
Primary Memory
Compilator
Editor
Preprocesor
Linker
Primary Memory
.
.
.
.
.
.
.
.
.
.
.
.
Disk
Disk
Disk
CPU
Disk
Disk Fazele unui program
C++1. Editare2. Preprocesare3. Compilare
4. Editarea delegaturi
5. Incarcare6. Executie
7/29/2019 Programare -C-
15/21
Reprezentarea algoritmilor
Pentru reprezentarea algoritmilor se folosesc diferite forme dereprezentare caracteristice
Formele convenionale cele mai folosite n reprezentareaalgoritmilor sunt: schemele logice sau organigramele limbajele pseudocod.
Principala calitate a acestora este posibilitatea de a evidenia cuclaritate fluxul controlului algoritmilor, adic succesiunile posibileale aciunilor.
Astfel, schemele logice utilizeaz pentru aceasta sgei delegtur ntre diversele forme geometrice care simbolizeazdiversele tipuri de aciuni, n timp ce limbajele pseudocodfolosesc cuvinte cheie, adic nite cuvinte cu nelesprestabilit ce identific operaia care se execut, i cteva regulisimple de aliniere a textului scris.
15
7/29/2019 Programare -C-
16/21
Reprezentarea algoritmilor
Blocul delimitator are forma unei elipse alungite. El se folosetepentru a marca nceputul sau sfritul schemei logice.
16
Blocul de intrare / ieire are forma unui paralelogram. Acest bloc
se folosete la introducerea datelor n calcule i afiarea rezultatelor.
Blocul de calcul se folosete pentru a preciza calculele care se fac. n
blocurile de acest tip apar comenzi de forma:v=e
unde v este o variabil, iar e este o expresie de tip compatibil cu v
7/29/2019 Programare -C-
17/21
Reprezentarea algoritmilor
Blocul de decizie are forma unui romb. n interiorul su se scrie o condiiecare determin ramificarea calculelor.
17
Semnul = care apare n blocul de decizie are sens de comparaie. El nu seva confunda cu semnul = din blocurile de calcul. Pentru scrierea condiiilorse mai folosesc i celelalte semne de comparaie din matematic: ,
i .
7/29/2019 Programare -C-
18/21
Exemplu
Schema logic de rezolvare a ecuaiei ax+b=0 cu a i b numere reale.Evident, dac a=0 i b=0, atunci ecuaia este satisfcut de orice x. Prinurmare, n acest caz ecuaia are o infinitate de soluii. Dac a = 0 i b 0, atunci apare o incompatibilitate. n fine, dac a 0, atunci ecuaia areo singur soluie:x = -b/a, pentru orice b.
Schema logic de rezolvare a problemei este:
18
7/29/2019 Programare -C-
19/21
Caracteristici ale limbajului C
limbaj de nivel mediu ofera tipuri, operatii, instructiuni simplefara facilitatile complexe ale limbajelor de nivel (foarte) nalt limbaj de programare structurat
permite programarea la nivel scazut, apropiat de hardware acces la reprezentarea binara a datelor mare libertate n lucrul cu memoria foarte folosit n programarea de sistem, interfata cu hardware
produce un cod eficient (compact n dimensiune, rapid la rulare)
apropiat de eficienta limbajului de asamblare datorita caracteristicilorlimbajului, si maturitatii compilatoarelor slab tipizat (spre deosebire de PASCAL)
19
7/29/2019 Programare -C-
20/21
Principiile limbajului C
Programele C conin una sau mai multe funcii Toate instruciunile se termin cu ;. C nu recunoate sfritul liniei ca terminator.
function_name ( )
{
secvena instruciunilor
} Limbajul C recunoate deosebirile dintre litere
mari i litere mici.
20
7/29/2019 Programare -C-
21/21
21
Componentele unui program C
Funcia main ( ) este funcia cu care ncepe execuia programului.
O component comun celor mai multe programe C sunt fiierele header.Aceste fiiere header pot fi adugate programului folosind directivapreprocesor# include.
Un exemplu de program C:
# include main ( ){printf ("Acesta este un scurt program C ");}
unde: printf( ) este funcie de bibliotec care afieaz pe ecran caracterele care
sunt cuprinse ntre ghilimele.