SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente (11)

Curs Visual c++
Curs Visual c++Curs Visual c++
Curs Visual c++
 
Lecture5 - PC
Lecture5 - PCLecture5 - PC
Lecture5 - PC
 
Lecture2 - PC
Lecture2 - PCLecture2 - PC
Lecture2 - PC
 
Cap02
Cap02Cap02
Cap02
 
Lecture4 - PC
Lecture4 - PCLecture4 - PC
Lecture4 - PC
 
Lecture3 - PC
Lecture3 - PCLecture3 - PC
Lecture3 - PC
 
Reprezentarea algoritmilor ap 21feb2011
Reprezentarea algoritmilor ap 21feb2011Reprezentarea algoritmilor ap 21feb2011
Reprezentarea algoritmilor ap 21feb2011
 
C++/CLI: TIpuri de date
C++/CLI: TIpuri de dateC++/CLI: TIpuri de date
C++/CLI: TIpuri de date
 
Auxiliar clasa v
Auxiliar clasa vAuxiliar clasa v
Auxiliar clasa v
 
Lfac9
Lfac9Lfac9
Lfac9
 
Introducere in informatica
Introducere in informaticaIntroducere in informatica
Introducere in informatica
 

Similar a Programarea calculatoarelor - Limbajul C

baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.AdrianaDanielaCupsa
 
Etapele procesului de programare
Etapele procesului de programareEtapele procesului de programare
Etapele procesului de programareCiobanuCristina
 
mfc introducere
mfc introduceremfc introducere
mfc introduceremcroitor
 
Parallel programming analysis on OCR
Parallel programming analysis on OCRParallel programming analysis on OCR
Parallel programming analysis on OCRmihneasim
 
Javascript introducere
Javascript introducereJavascript introducere
Javascript introducereVasile Macovei
 
Interactiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxInteractiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxrefewe9176
 
2006 intro java_v01
2006 intro java_v012006 intro java_v01
2006 intro java_v01Usurelu Ion
 

Similar a Programarea calculatoarelor - Limbajul C (7)

baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.
 
Etapele procesului de programare
Etapele procesului de programareEtapele procesului de programare
Etapele procesului de programare
 
mfc introducere
mfc introduceremfc introducere
mfc introducere
 
Parallel programming analysis on OCR
Parallel programming analysis on OCRParallel programming analysis on OCR
Parallel programming analysis on OCR
 
Javascript introducere
Javascript introducereJavascript introducere
Javascript introducere
 
Interactiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxInteractiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptx
 
2006 intro java_v01
2006 intro java_v012006 intro java_v01
2006 intro java_v01
 

Más de Vlad Posea

Design thinking
Design thinkingDesign thinking
Design thinkingVlad Posea
 
Talentul meu – mersul pe bicicletă
Talentul meu – mersul pe bicicletăTalentul meu – mersul pe bicicletă
Talentul meu – mersul pe bicicletăVlad Posea
 
Linked Open Data in Romania
Linked Open Data in RomaniaLinked Open Data in Romania
Linked Open Data in RomaniaVlad Posea
 
Ce mă fac când o să fiu mare - optiuni pentru o cariera in IT
Ce mă fac când o să fiu mare - optiuni pentru o cariera in ITCe mă fac când o să fiu mare - optiuni pentru o cariera in IT
Ce mă fac când o să fiu mare - optiuni pentru o cariera in ITVlad Posea
 
Programarea calculatoarelor c2
Programarea calculatoarelor c2Programarea calculatoarelor c2
Programarea calculatoarelor c2Vlad Posea
 
Social semantic web
Social semantic webSocial semantic web
Social semantic webVlad Posea
 
HTML 5 - intro - en francais
HTML 5 - intro - en francaisHTML 5 - intro - en francais
HTML 5 - intro - en francaisVlad Posea
 
Intro to HTML5
Intro to HTML5Intro to HTML5
Intro to HTML5Vlad Posea
 
Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012
Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012
Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012Vlad Posea
 
Usability and accessibility on the web
Usability and accessibility on the webUsability and accessibility on the web
Usability and accessibility on the webVlad Posea
 
utilisabilite et accessibilite au web
utilisabilite et accessibilite au webutilisabilite et accessibilite au web
utilisabilite et accessibilite au webVlad Posea
 
C5 Javascript French
C5 Javascript FrenchC5 Javascript French
C5 Javascript FrenchVlad Posea
 
IPW Course 3 CSS
IPW Course 3 CSSIPW Course 3 CSS
IPW Course 3 CSSVlad Posea
 
IPW 3rd Course - CSS
IPW 3rd Course - CSSIPW 3rd Course - CSS
IPW 3rd Course - CSSVlad Posea
 
IPW HTML course
IPW HTML courseIPW HTML course
IPW HTML courseVlad Posea
 
IPW 2eme course - HTML
IPW 2eme course - HTMLIPW 2eme course - HTML
IPW 2eme course - HTMLVlad Posea
 
Introduction to Web Programming - first course
Introduction to Web Programming - first courseIntroduction to Web Programming - first course
Introduction to Web Programming - first courseVlad Posea
 

Más de Vlad Posea (20)

Design thinking
Design thinkingDesign thinking
Design thinking
 
Talentul meu – mersul pe bicicletă
Talentul meu – mersul pe bicicletăTalentul meu – mersul pe bicicletă
Talentul meu – mersul pe bicicletă
 
Linked Open Data in Romania
Linked Open Data in RomaniaLinked Open Data in Romania
Linked Open Data in Romania
 
Ce mă fac când o să fiu mare - optiuni pentru o cariera in IT
Ce mă fac când o să fiu mare - optiuni pentru o cariera in ITCe mă fac când o să fiu mare - optiuni pentru o cariera in IT
Ce mă fac când o să fiu mare - optiuni pentru o cariera in IT
 
Programarea calculatoarelor c2
Programarea calculatoarelor c2Programarea calculatoarelor c2
Programarea calculatoarelor c2
 
Social semantic web
Social semantic webSocial semantic web
Social semantic web
 
HTML 5 - intro - en francais
HTML 5 - intro - en francaisHTML 5 - intro - en francais
HTML 5 - intro - en francais
 
Intro to HTML5
Intro to HTML5Intro to HTML5
Intro to HTML5
 
Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012
Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012
Ghidul Bobocului de la Facultatea de Automatica si Calculatoare vers 2011-2012
 
Usability and accessibility on the web
Usability and accessibility on the webUsability and accessibility on the web
Usability and accessibility on the web
 
utilisabilite et accessibilite au web
utilisabilite et accessibilite au webutilisabilite et accessibilite au web
utilisabilite et accessibilite au web
 
C5 Javascript French
C5 Javascript FrenchC5 Javascript French
C5 Javascript French
 
C5 Javascript
C5 JavascriptC5 Javascript
C5 Javascript
 
C5 Javascript
C5 JavascriptC5 Javascript
C5 Javascript
 
Css+html
Css+htmlCss+html
Css+html
 
IPW Course 3 CSS
IPW Course 3 CSSIPW Course 3 CSS
IPW Course 3 CSS
 
IPW 3rd Course - CSS
IPW 3rd Course - CSSIPW 3rd Course - CSS
IPW 3rd Course - CSS
 
IPW HTML course
IPW HTML courseIPW HTML course
IPW HTML course
 
IPW 2eme course - HTML
IPW 2eme course - HTMLIPW 2eme course - HTML
IPW 2eme course - HTML
 
Introduction to Web Programming - first course
Introduction to Web Programming - first courseIntroduction to Web Programming - first course
Introduction to Web Programming - first course
 

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