Sunteți pe pagina 1din 19

.

Fundamentele programrii Curs 1


ef lucr.dr.ing. GENGE Bla Universitatea Petru Maior, Departamentul de Informatic Trgu Mure, Romnia {bela.genge}@ing.upm.ro

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Scop

Introducere n gndirea computaional Dobndire cunotine algoritmic i limbaje de programare nelegerea codului surs (altor coduri, reutilizare, plagiarism OK - cu limite) nelegerea scopului i limitelor limbajelor de programare (codarea problemelor tiinice)

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Administrativ

Titular curs: ef lucr.(Lector) dr.ing. GENGE Bla Titular laborator: Asist.dr.ing. LEFKOVITS Szidnia Pagina Web: http://www.ibs.ro/~bela/ Adresa email: bela.genge@ing.upm.ro Examen: pe calculator (50% nota nal) Laborator: evaluri pe parcurs (50% nota nal) Condiie prezentare la examen: min. nota 5 lab. & max. 2 absene lab.

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. De ce ar trebui s studiem programare?

Asigurarea unui job la (nainte de) terminarea studiilor Profesia de dezvoltator software vine cu o serie de avantaje Trim n era informaional - programarea dezvolt gndirea Vizionare opinie profesioniti: http://code.org Exemplu de limbaj de programare (CodeHS): http://code.org/learn/codehs

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Rolul calculatoarelor

Calculatoarele ne ajut s mecanizm, i.e., automatizm, procesul de rezolvare a unei probleme Exemplu: algoritmul ce determin maximul dintre dou numere a i b . Algoritmul min-max .

Intrare: a i b; Ieire: text; Dac a > b atunci text "a > b"; Altfel text "a <= b"; SfDac .

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Implementarea calculatoarelor
Primele calculatoare: set de circuite ce rezolv o anumit clas de probleme Calculatoare dedicate: ceas, calculatorul de buzunar Exemplu: Maina lui Turing (Bombe) construit pentru descifrarea codurilor criptate prin Enigma

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Pasul urmtor: calculatoare generice

Sunt instruite cum anume s rezolve o problem Intrarea este extins cu un set de instruciuni Primele arhitecturi: Von Neumann (Neumann Jnos Lajos) - 1945

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. De ce C/C++?

Exist mai mult de 100 limbaje de programare Adoptarea unui anumit limbaj depinde de scopul aplicaiei Un programator bun se descurc cu orice limbaj (n limitele limbajului) De ce ar trebui s studiem C/C++:
Multe limbaje au fost inuenate de C/C++ (Java, JavaScript, C#, Perl, Python, Ruby) Majoritatea S.O. sunt implementate n C/C++ Codul main rezultat este foarte ecient

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Despre ce vom discuta

Elemente de baz (cuvinte rezervate, identicatori, constante, ...) Tipuri de date (scalare, derivate, tablouri, structuri, uniuni, ...) Instruciuni (if, switch, continue, goto, break) Funcii Operaii pe bii Pointeri (alocare dinamic, pointeri la funcii) iruri de caractere Scheme logice

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Resurse

Brian W. Kernighan, Dennis M. Ritchie - The C programming language. 1978 Adrian Runceanu - Programarea i utilizarea calculatoarelor. 2003 Ion Cozac - Programare n limbajul C. 2004 Vasile Petrovici - Programarea n limbajul C. 1993 Delia Ungureanu, Adrian Ungureanu, Sorin Moraru - Programarea calculatoarelor; ndrumar C++. 2001

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Visual Studio i Primul Program

Lansare Visual Studio. Cel mai simplu program Limbaj interpretat i compilat Drumul de la cod surs la ier executabil Aare mesaj n C i n C++ Comentarii

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Tipuri de date

Limbajul C permite stocarea valorilor n constante i variabile Tipul unei variabile determin:
Modul de reprezentare n memorie Valorile pe care le poate lua Timpul de via Dimensiunea zonei de memorie folosite

Pentru declaraiile datelor sunt folosite dou atribute:


Tipul unei date: standard sau denit de utilizator Clasa de memorie: registru, stiv, heap

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Clasicarea tipurilor de date


Tipuri de baz

Tipuri derivate: enumerate, structure, union, pointer


.. . .. . .. . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. . .. . .. . .. . .. .

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Constante
Constantele sunt valori nemodicabile pe parcursul execuiei Dac au asociate un identicator: constante simbolice Constante ntregi: 12, 17, 20 (pot precizate i n alte baze de numeraie) Constante caracter:
\0: Terminator de ir \a: Generator de sunet \b: Backspace \n: Linie nou \r: Carriage return \t: Tab orizontal

Constante reale: 125.3, 32e3, -0.9 Constante ir de caractere: sirul meu, folosire \ escape Constante predenite: CHAR_MAX, CHAR_MIN, INT_MAX, INT_MIN, ...
.. . .. . .. .

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Segmente de memorie

Zona de memorie a unui program C este organizat n 4 segmente principale:


Segmentul Segmentul Segmentul Segmentul de de de de cod: instruciunile programului date: variabile globale i statice stiv: variabile locale, date apel funcii heap: zon variabile alocate dinamic

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Declaraiile de variabile

Variabilele sunt datele care i pot modica valoarea pe parcursul execuiei. Sintaxa de declarare: clasa_memorie tip lista_nume_variabile; clasa_memorie: auto, static, extern, register tip: tipuri de baz i utilizator lista_nume_variabile: list cu denumiri alfa-numerice

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Exemple de declaraii
Tipuri: int, char ASCII: American Standard Code for Information Exchange

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Alegerea corect a variabilelor

Valorile stocate Timpul de via Ecien program Exemple de declarri variabile pentru:
ora, minut, secunda i milisecunda temperatura rpm hard-disk

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

. Problem

Cunoatem previziunea temperaturii pentru ziua urmtoare sub forma valorii minime i maxime. S se implementeze o aplicaie ce determin valoarea temperaturii medie i o aeaz ca un ntreg.

..

. ..

. ..

. . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. ..

. ..

. ..

. ..

. ..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii