際際滷

際際滷Share a Scribd company logo
Programarea Calculatoarelor
Curs 1
Vlad Posea
vladposea@yahoo.com
Obiective si continut curs











Ciclul de dezvoltare a programului;
Compilarea, legarea i execu釘ia programelor C;
Elemente fundamentale ale limbajului C: identificatori,
cuvinte cheie, literali, comentarii, constante;
Structura programelor C;
Tipuri de date. Operatori. Expresii
Instruc釘iuni: expresie, compus, void, atribuirea, decizia
(if), selec釘ia (switch), cicluri (while, do while, for), continue,
salturi disciplinate (break, return) i nedisciplinate (goto).
Func釘ii: 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 func釘ii. Uniuni, C但mpuri de bi釘i.
Func釘ii: transfer prin referin釘, Pointeri la func釘ii.
Fiiere: I/O, Fiiere text i fiiere binare. Func釘ii
specifice lucrului cu fiiere
Parametrii liniei de comand
Realizarea de programe complexe: Crearea de librarii
statice; Vizibilitatea variabilelor.
Func釘ii 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

x

Unsigned hexadecimal integer

7fa

I/O (2)

X
f
e
E
g
G
c
s
p

n

%

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

More Related Content

Programarea calculatoarelor - Limbajul C

  • 1. Programarea Calculatoarelor Curs 1 Vlad Posea vladposea@yahoo.com
  • 2. Obiective si continut curs Ciclul de dezvoltare a programului; Compilarea, legarea i execu釘ia programelor C; Elemente fundamentale ale limbajului C: identificatori, cuvinte cheie, literali, comentarii, constante; Structura programelor C; Tipuri de date. Operatori. Expresii Instruc釘iuni: expresie, compus, void, atribuirea, decizia (if), selec釘ia (switch), cicluri (while, do while, for), continue, salturi disciplinate (break, return) i nedisciplinate (goto). Func釘ii: 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
  • 3. 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 func釘ii. Uniuni, C但mpuri de bi釘i. Func釘ii: transfer prin referin釘, Pointeri la func釘ii. Fiiere: I/O, Fiiere text i fiiere binare. Func釘ii specifice lucrului cu fiiere Parametrii liniei de comand Realizarea de programe complexe: Crearea de librarii statice; Vizibilitatea variabilelor. Func釘ii cu numr variabil de parametri
  • 4. Bibliografie The C Programming Language - Brian Kernighan and Dennis Ritchie (http://zanasi.chem.unisa.it/download/C.pdf)
  • 5. 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
  • 7. 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
  • 9. 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++
  • 10. 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
  • 11. 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)
  • 12. 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
  • 13. 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
  • 14. 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*/ }
  • 15. 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.
  • 16. 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*/
  • 17. 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
  • 18. 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.
  • 19. Tipuri de date simple
  • 20. 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
  • 21. 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/
  • 22. specifier d or i u o Output Signed decimal integer Unsigned decimal integer Unsigned octal Example 392 7235 610 x Unsigned hexadecimal integer 7fa I/O (2) X f e E g G c s p n % 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 %
  • 24. 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.
  • 25. exemple scanf citirea a 2 numere intregi
  • 26. exemple scanf (2) citirea a 2 numere intregi cu tratarea erorilor