programare -c-

Upload: cheregi-marius

Post on 04-Apr-2018

265 views

Category:

Documents


0 download

TRANSCRIPT

  • 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.html
  • 7/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.