SlideShare 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 inițializare, adresare și dereferențiere,
aritmetica pointerilor, funcții care returnează pointeri
Obiective și conținut 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.
Fişiere: I/O, Fişiere text şi fişiere binare. Funcţii
specifice lucrului cu fişiere
Parametrii liniei de comandă
Realizarea de programe complexe: Crearea de librarii
statice; Vizibilitatea variabilelor.
Funcţii cu număr 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
facultății (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
Parțial – 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)
Condiții de trecere




Laborator+parțial+teme de casă>=3p
Examen >=2p
De ce C?



http://tiobe.com
Caracteristici C



Dezvoltat intre 1969-1973
Programare imperativă






Programul = secvență de instrucțiuni executată de
calculator

Utilizat pentru a dezvolta sisteme de operare
și aplicații embedded
Influențează/stă la baza majoritatea
limbajelor ”moderne”:
Java, C#, Javascript, Objective-C, C++
Etapele rezolvării unei probleme


Analiza și prelucrarea datelor de intrare



A good programmer is someone who always looks
both ways before crossing a one-way street.
Identificăm eventualele cazuri speciale ale datelor
de intrare și le tratăm separat






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

Prelucrări necesare (algoritm de rezolvare)
Prezentarea rezultatelor
Pseudocod



Descriere informală a unui algoritm/program
Exemplu:


Program care afișează maximul a 2 numere



Se citesc 2 numere intregi a,b
Dacă a este mai mare sau egal cu b




Altfel




Afișează a
Afișează b

După ce elaborăm pseudocodul îl scriem în
limbajul de programare preferat  (C)
Prezentarea rezultatelor


Rezultatele trebuie să fie inteligibile pentru
utilizator

Așa nu




Așa da

Datele cerute de la utilizator trebuie să fie
clare
Eventualele mesaje de eroare trebuie să fie
clare
Compilarea și execuția programelor C



Editare fisier sursă
Compilare fișier sursă


Generarea unui fișier obiect







gcc –c nume_sursa.c => nume_sursa.o

gcc nume_sursa.c –o nume_executabil –
alteOptiuni => nume_executabil
Link-editare – se generează fișierul executabil pe
baza unuia sau mai multe fișiere 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 declarații globale*/
int maxim(int a, int b);
int main()
{
/* definiții și declarații locale */
/* secvență instrucțiuni */
return 0; /* finalizarea execuției + î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 același lucru cu
printf(”hello world”)

Cuvintele cheie se scriu cu litere mici
Identificatorii pot conține
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 locație 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
reținem în memoria calculatorului
Variabilele sunt folosite pentru a regăsi 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 conține 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 numărul de valori citite cu
succes
citește î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

PDF
Limbajul c
DOC
Manual limbaj c
DOC
Manual de programare c
DOC
Instructiuni in c si c++
PDF
manual-de-programare-c
DOC
Functii, tablouri si pointeri in c si c++
PPTX
Tutorial C++
Limbajul c
Manual limbaj c
Manual de programare c
Instructiuni in c si c++
manual-de-programare-c
Functii, tablouri si pointeri in c si c++
Tutorial C++

What's hot (11)

PDF
Curs Visual c++
PDF
Lecture5 - PC
PDF
Lecture2 - PC
PDF
Lecture4 - PC
PDF
Lecture3 - PC
DOC
Reprezentarea algoritmilor ap 21feb2011
PPTX
C++/CLI: TIpuri de date
PDF
Auxiliar clasa v
PDF
Introducere in informatica
Curs Visual c++
Lecture5 - PC
Lecture2 - PC
Lecture4 - PC
Lecture3 - PC
Reprezentarea algoritmilor ap 21feb2011
C++/CLI: TIpuri de date
Auxiliar clasa v
Introducere in informatica
Ad

Similar to Programarea calculatoarelor - Limbajul C (20)

PDF
blah1blah1blah1blah1blah1blah1blah1blah1blah1blah1
PPT
Limbaje de programare ingineresti - C++ notiuni
PPTX
Tema8_Anul1.pptx.Programarea procedurala
PDF
baze c++sructura unui program declarare variabilepdf.
DOC
Carte C 2003
PPTX
Programarea calculatoarelor c2
DOC
PDF
Bacalaureat. Informatica - Limbajul C - Silvia Grecu.pdf
PDF
Limbajul c c pentru incepatori
PDF
Algoritmi elementari.pdf
DOC
Modulul ii algoritmi
PPT
Studierea limbajului pascal
PPT
Initiere in turbo pascal
PDF
Pointeri şi tablouri
PPT
Tipuri de date simple
PDF
carte-informatica-limbajul-c
PPT
Operatorul for
blah1blah1blah1blah1blah1blah1blah1blah1blah1blah1
Limbaje de programare ingineresti - C++ notiuni
Tema8_Anul1.pptx.Programarea procedurala
baze c++sructura unui program declarare variabilepdf.
Carte C 2003
Programarea calculatoarelor c2
Bacalaureat. Informatica - Limbajul C - Silvia Grecu.pdf
Limbajul c c pentru incepatori
Algoritmi elementari.pdf
Modulul ii algoritmi
Studierea limbajului pascal
Initiere in turbo pascal
Pointeri şi tablouri
Tipuri de date simple
carte-informatica-limbajul-c
Operatorul for
Ad

More from Vlad Posea (20)

PPTX
Design thinking
PPTX
Talentul meu – mersul pe bicicletă
PPTX
Linked Open Data in Romania
PPTX
Ce mă fac când o să fiu mare - optiuni pentru o cariera in IT
PPTX
Social semantic web
PPT
HTML 5 - intro - en francais
PPT
Intro to HTML5
PDF
Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012
PPT
Usability and accessibility on the web
PPT
utilisabilite et accessibilite au web
PPT
C5 Javascript French
PPT
C5 Javascript
PPT
C5 Javascript
PPTX
Css+html
PPT
IPW Course 3 CSS
PPT
IPW 3rd Course - CSS
PPTX
IPW HTML course
PPTX
IPW 2eme course - HTML
PPT
Introduction to Web Programming - first course
PPT
Introduction dans la Programmation Web Course 1
Design thinking
Talentul meu – mersul pe bicicletă
Linked Open Data in Romania
Ce mă fac când o să fiu mare - optiuni pentru o cariera in IT
Social semantic web
HTML 5 - intro - en francais
Intro to HTML5
Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012
Usability and accessibility on the web
utilisabilite et accessibilite au web
C5 Javascript French
C5 Javascript
C5 Javascript
Css+html
IPW Course 3 CSS
IPW 3rd Course - CSS
IPW HTML course
IPW 2eme course - HTML
Introduction to Web Programming - first course
Introduction dans la Programmation Web Course 1

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 inițializare, adresare și dereferențiere, aritmetica pointerilor, funcții care returnează pointeri
  • 3. Obiective și conținut 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. Fişiere: I/O, Fişiere text şi fişiere binare. Funcţii specifice lucrului cu fişiere Parametrii liniei de comandă Realizarea de programe complexe: Crearea de librarii statice; Vizibilitatea variabilelor. Funcţii cu număr 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 facultății (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 Parțial – 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) Condiții de trecere   Laborator+parțial+teme de casă>=3p Examen >=2p
  • 9. Caracteristici C   Dezvoltat intre 1969-1973 Programare imperativă    Programul = secvență de instrucțiuni executată de calculator Utilizat pentru a dezvolta sisteme de operare și aplicații embedded Influențează/stă la baza majoritatea limbajelor ”moderne”: Java, C#, Javascript, Objective-C, C++
  • 10. Etapele rezolvării unei probleme  Analiza și prelucrarea datelor de intrare   A good programmer is someone who always looks both ways before crossing a one-way street. Identificăm eventualele cazuri speciale ale datelor de intrare și le tratăm separat     Ex1: se cere să se citească numere ->ne asigurăm că sau citit numere și nu alte caractere Ex2: se cere să se calculeze raportul a 2 numere -> ne asigurăm că numitorul este diferit de 0 Prelucrări necesare (algoritm de rezolvare) Prezentarea rezultatelor
  • 11. Pseudocod   Descriere informală a unui algoritm/program Exemplu:  Program care afișează maximul a 2 numere   Se citesc 2 numere intregi a,b Dacă a este mai mare sau egal cu b   Altfel   Afișează a Afișează b După ce elaborăm pseudocodul îl scriem în limbajul de programare preferat  (C)
  • 12. Prezentarea rezultatelor  Rezultatele trebuie să fie inteligibile pentru utilizator Așa nu   Așa da Datele cerute de la utilizator trebuie să fie clare Eventualele mesaje de eroare trebuie să fie clare
  • 13. Compilarea și execuția programelor C   Editare fisier sursă Compilare fișier sursă  Generarea unui fișier obiect     gcc –c nume_sursa.c => nume_sursa.o gcc nume_sursa.c –o nume_executabil – alteOptiuni => nume_executabil Link-editare – se generează fișierul executabil pe baza unuia sau mai multe fișiere 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 declarații globale*/ int maxim(int a, int b); int main() { /* definiții și declarații locale */ /* secvență instrucțiuni */ return 0; /* finalizarea execuției + î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 același lucru cu printf(”hello world”) Cuvintele cheie se scriu cu litere mici Identificatorii pot conține 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 locație 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 reținem în memoria calculatorului Variabilele sunt folosite pentru a regăsi 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 conține 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 numărul de valori citite cu succes citește într-un buffer – stdin.
  • 25. exemple scanf  citirea a 2 numere intregi
  • 26. exemple scanf (2)  citirea a 2 numere intregi cu tratarea erorilor