Sunteți pe pagina 1din 26

Programarea Calculatoarelor

Curs 1
Vlad Posea
vladposea@yahoo.com

Obiective si continut curs

Ciclul de dezvoltare a programului;


Compilarea, legarea i execuia programelor C;
Elemente fundamentale ale limbajului C: identificatori,
cuvinte cheie, literali, comentarii, constante;
Structura programelor C;
Tipuri de date. Operatori. Expresii
Instruciuni: expresie, compus, void, atribuirea, decizia
(if), selecia (switch), cicluri (while, do while, for), continue,
salturi disciplinate (break, return) i nedisciplinate (goto).
Funcii: apel, definire, transfer prin valoare, vizibilitate
Tablouri: declarare, tablouri uni si multidimensionale,
sortare, cautare
Pointeri: declarare si iniializare, adresare i derefereniere,
aritmetica pointerilor, funcii care returneaz pointeri

Obiective i coninut curs

iruri de caractere
Alocarea dinamic a memoriei: Gestiunea memoriei
libere (heap), malloc(), calloc(), realloc(), free().
Pointeri la pointeri. Tablouri de pointeri. Alocare
dinamic pentru tablouri multidimensionale.
Structuri: Declarare i initializare; Accesul la membrii;
pointeri la structuri. Tablouri de structuri. Atribuirea
structurilor. Structuri i funcii. Uniuni, Cmpuri de bii.
Funcii: transfer prin referin, Pointeri la funcii.
Fiiere: I/O, Fiiere text i fiiere binare. Funcii
specifice lucrului cu fiiere
Parametrii liniei de comand
Realizarea de programe complexe: Crearea de librarii
statice; Vizibilitatea variabilelor.
Funcii cu numr variabil de parametri

Bibliografie

The C Programming Language - Brian


Kernighan and Dennis Ritchie
(http://zanasi.chem.unisa.it/download/C.pdf)

Linkuri utile

http://cs.curs.pub.ro site-ul de cursuri al


facultii (forum, alte resurse, teme)
http://ocw.cs.pub.ro/courses/programare laboratoare + regulament + alte info utile
http://talentbuddy.co instrument util pentru
a exersa probleme de programare

Exemplu talentbuddy

Notare

Laborator 2p
Parial 2p
Teme de cas 2p
Examen final 4p
Bonus 0.5p pentru primii 10 din serie pe
talentbuddy (nu se ia in calcul la conditiile de
trecere)
Condiii de trecere

Laborator+parial+teme de cas>=3p
Examen >=2p

De ce C?

http://tiobe.com

Caracteristici C

Dezvoltat intre 1969-1973


Programare imperativ

Programul = secven de instruciuni executat de


calculator

Utilizat pentru a dezvolta sisteme de operare


i aplicaii embedded
Influeneaz/st la baza majoritatea
limbajelor moderne: Java, C#, Javascript,
Objective-C, C++

Etapele rezolvrii unei probleme

Analiza i prelucrarea datelor de intrare

A good programmer is someone who always looks


both ways before crossing a one-way street.
Identificm eventualele cazuri speciale ale datelor
de intrare i le tratm separat

Ex1: se cere s se citeasc numere ->ne asigurm c sau citit numere i nu alte caractere
Ex2: se cere s se calculeze raportul a 2 numere -> ne
asigurm c numitorul este diferit de 0

Prelucrri necesare (algoritm de rezolvare)


Prezentarea rezultatelor

Pseudocod

Descriere informal a unui algoritm/program


Exemplu:

Program care afieaz maximul a 2 numere

Se citesc 2 numere intregi a,b


Dac a este mai mare sau egal cu b

Altfel

Afieaz a
Afieaz b

Dup ce elaborm pseudocodul l scriem n


limbajul de programare preferat (C)

Prezentarea rezultatelor

Rezultatele trebuie s fie inteligibile pentru


utilizator

Aa nu

Aa da

Datele cerute de la utilizator trebuie s fie


clare
Eventualele mesaje de eroare trebuie s fie
clare

Compilarea i execuia programelor C

Editare fisier surs


Compilare fiier surs

Generarea unui fiier obiect

gcc c nume_sursa.c => nume_sursa.o

gcc nume_sursa.c o nume_executabil


alteOptiuni => nume_executabil
Link-editare se genereaz fiierul executabil pe
baza unuia sau mai multe fiiere obiect

Structura unui program C


/* comentarii */
//When I wrote this, only God and I understood what I was doing
//Now, God only knows
/* includere fisiere antet (biblioteci) */
#include <stdio.h>
/* definitii si declaraii globale*/
int maxim(int a, int b);
int main()
{
/* definiii i declaraii locale */
/* secven instruciuni */
return 0; /* finalizarea execuiei + ntoarcere rezultat*/
}

Hello world
/* includem biblioteca standard
I/O */
#include <stdio.h>
/* functia main intoarce un
rezultat intreg */
int main()
{
printf(Hello world!\n);
return 0;
}

{acelasi program in pascal}


Program HelloWorld(output);
begin
writeln('Hello, world!');
end.

Sintaxa C elemente de baz

Limbaj case-sensitive

Printf(hello world) nu este acelai lucru cu


printf(hello world)

Cuvintele cheie se scriu cu litere mici


Identificatorii pot conine litere, cifre,
underscore (_), nu pot incepe cu cifr
Comentarii:

// comentariu pe o singura linie


/* comentariu care se poate ntinde pe mai multe
linii*/

Variabile

Def: un mod de a referi o locaie de memorie


utilizat ntr-un limbaj de programare
http://cplus.about.com/od/introductiontoprogr
amming/g/variabledefn.htm
Pentru a lucra cu mai multe date trebuie s le
reinem n memoria calculatorului
Variabilele sunt folosite pentru a regsi locul
unde am scris datele n memorie
Variabile simple: au o singur valoare la un
moment dat

Variabile (2)

Caracterizate de

Nume identificatorul variabilei


Tip tipul variabilei
Valoare
Adresa

Ex: int x=5;


int= tipul variabilei
x=numele variabilei
5=valoarea variabilei
&x = adresa din memorie unde se afl stocat
valoarea variabilei cu numele x.

Tipuri de date simple

Tipuri de date simple (2)

C vs. Pascal

nr bytes pentru fiecare tip de


date operatorul sizeof

C
short
int
long

Pascal

integer

float
double

real

char

char

int /* C has no
boolean type */

boolean

Input/Output (I/O)

/*discutate oarecum mai devreme intrucat


sunt necesare la laborator*/
int printf ( const char * format, ... );
parametri:

sir de caractere ce poate conine descriptori de


format
expresii

descriptor de format:

%[flags][width][.precision][length]specifier
http://www.cplusplus.com/reference/cstdio/printf/

specifier
d or i
u
o

Output
Signed decimal integer
Unsigned decimal integer
Unsigned octal

Example
392
7235
610

Unsigned hexadecimal integer

7fa

I/O (2)

X
f
e
E
g
G
c
s
p

Unsigned hexadecimal integer


(uppercase)
Decimal floating point,
lowercase
Scientific notation
(mantissa/exponent), lowercase
Scientific notation
(mantissa/exponent),
uppercase
Use the shortest
representation: %e or %f
Use the shortest
representation: %E or %F
Character
String of characters
Pointer address
Nothing printed.
The corresponding argument
must be a pointer to a signed
int.
The number of characters
written so far is stored in the
pointed location.
A % followed by
another % character will write a
single % to the stream.

7FA
392.65
3.9265e+2
3.9265E+2
392.65
392.65
a
sample
b8000000

exemple printf

secvente escape
(caractere
speciale)

scanf

int scanf ( const char * format, ... );


http://www.cplusplus.com/reference/cstdio/sc
anf/
similar cu printf
se transmite ca parametru adresa variabilei
citite
intoarce ca rezultat numrul de valori citite cu
succes
citete ntr-un buffer stdin.

exemple scanf

citirea a 2 numere intregi

exemple scanf (2)

citirea a 2 numere intregi cu tratarea erorilor

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