Documente Academic
Documente Profesional
Documente Cultură
Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu
Programarea
calculatoarelor
Lect.dr. Adrian Runceanu
copyright@www.adrian.runceanu.ro
Curs 3
Elemente introductive ale
limbajului C++
24.10.2014
copyright@www.adrian.runceanu.ro
copyright@www.adrian.runceanu.ro
copyright@www.adrian.runceanu.ro
copyright@www.adrian.runceanu.ro
copyright@www.adrian.runceanu.ro
3.2. Limbajul C
Limbajele de programare de nivel mediu au fost
serios dezvoltate pe la mijlocul anilor '50.
La ora actual se estimeaz c exist peste 2000 de
limbaje de programare, diferenele ntre ele fiind legate
n principal de stilul de programare.
Limbajul C, dezvoltat n 1972 de Dennis M. Ritchie*
la Laboratoarele AT&T Bell, este primul limbaj pentru
crearea de sisteme de operare.
*Dennis M. Ritchie a decedat pe 14.10.2011 (la varsta de
70 de ani)!
24.10.2014
copyright@www.adrian.runceanu.ro
3.2. Limbajul C
Numele limbajului provine din faptul c este
rezultatul mbuntirii limbajului B, folosit n scrierea
sistemului de operare UNIX pentru DEC PDP7.
Prima documentaie despre acest limbaj a fost "The
C Programing Language", scris de Dennis Ritchie i
Brian Kernighan n 1977.
naintea ei exista doar "The C Reference Manual",
scris de Dennis Ritchie.
O caracteristic important a acestui limbaj este
faptul c poate fi considerat simultan i un limbaj de
nivel mediu i un limbaj de nivel sczut.
24.10.2014
copyright@www.adrian.runceanu.ro
3.2. Limbajul C
24.10.2014
copyright@www.adrian.runceanu.ro
3.2. Limbajul C
Limbajul C permite folosirea a dou tehnici
de programare:
1. programare structurat
2. acces direct la main
fapt care-l face s fie foarte flexibil.
Ultimul i poate cel mai important motiv
pentru nvarea limbajului C este faptul c
permite trecerea cu uurin la varianta sa C++,
la limbajul Java sau la limbajul C#.
24.10.2014
10
copyright@www.adrian.runceanu.ro
11
copyright@www.adrian.runceanu.ro
24.10.2014
12
copyright@www.adrian.runceanu.ro
13
copyright@www.adrian.runceanu.ro
break
else
long
switch
case
enum
register
typedef
char
extern
return
union
const continue
float for
short signed
unsigned void
default
goto
sizeof
volatile
do
if
static
while
bool
inline
private
using
catch
mutable
public
virtual
Curs - Programarea calculatoarelor
class
namespace
protected
delete
new
template
14
copyright@www.adrian.runceanu.ro
15
copyright@www.adrian.runceanu.ro
24.10.2014
16
copyright@www.adrian.runceanu.ro
char
int
float
double
void
24.10.2014
CARACTERISTICI
reine un singur caracter
Exemple: A, a, %, etc.
reine numere ntregi cu semn
Exemple: 23, -45, 0, etc.
reine numere reale n format cu virgul mobil, n
simpl precizie
Exemple: 7.8965, -4.123, 7.0, etc.
reine numere reale n format cu virgul mobil, n
dubl precizie
Exemple: 123456789.89654321,
-123456789.1234567890, 123456789.0, etc.
(se
utilizeaz cnd se prelucreaz numere foarte mari sau
foarte mici)
tip de date special care nu specific un anumit set de
valori iniial, dar care poate fi specificat ulterior
declarrii.
Curs - Programarea calculatoarelor
17
copyright@www.adrian.runceanu.ro
24.10.2014
Semnificaie
[0, 32]
Caractere neprintabile(netipribile)
[48, 57]
Cifrele de la 0 la 9
[65, 90]
Literele mari de la A la Z
[97, 122]
Literele mici de la a la z
Curs - Programarea calculatoarelor
18
copyright@www.adrian.runceanu.ro
char <definitie_de_data>;
19
copyright@www.adrian.runceanu.ro
24.10.2014
int a=9;
int b=6725;
int c=-31567;
20
copyright@www.adrian.runceanu.ro
float x=9.789;
float y=-6725.123;
float z=-3156723;
24.10.2014
21
copyright@www.adrian.runceanu.ro
double numar_foarte_mare=123456789123456789.123456789123456789;
double numar_foarte_mic=-123456789123456789.123456789123456789;
double numar_mare=-123456789;
24.10.2014
22
copyright@www.adrian.runceanu.ro
23
copyright@www.adrian.runceanu.ro
24
copyright@www.adrian.runceanu.ro
25
copyright@www.adrian.runceanu.ro
26
copyright@www.adrian.runceanu.ro
3.3.3. Constante
Sunt date a cror valoare nu poate fi
modificat n timpul execuiei programului.
Ele reprezint un tip i o valoare i astfel pot fi de mai
multe tipuri:
1. constant ntreag
2. constant flotant
3. constant caracter
4. constant ir de caractere
24.10.2014
27
copyright@www.adrian.runceanu.ro
3.3.3. Constante
1. constant ntreag = se reprezint sub forma unei niruiri de cifre.
Se clasific n:
constante zecimale (se scriu n baza 10) Exemplu: 14, 568,
17342
constante octale (se scriu n baza 8) Exemplu: 0ir de cifre n
baza 8
constante hexazecimale (se scriu n baza 16) Exemplu: 0x ir de
cifre n baza 16
Constantele ntregi se reprezint pe 16 bii sau pe 32 de bii. Dac
la sfritul unei constante punem litera l sau L, atunci constanta
respectiv va fi reprezentat pe 32 de bii.
Exemplu:
numrul 17 se reprezint pe 16 bii
numrul 17L se reprezint pe 32 bii
24.10.2014
28
copyright@www.adrian.runceanu.ro
3.3.3. Constante
2. constant flotant este compus din 2 pri
partea fracionar (care poate fi vid) i
exponent (care poate fi el vid)
O constant real este sub urmtoarea form:
parte ntreag.parte fracionar e exponent
Exemplu: 3.45e-17 3,45*10-17
Toate constantele flotante se reprezint pe 16 bii.
24.10.2014
29
copyright@www.adrian.runceanu.ro
3.3.3. Constante
3. constant caracter este de fapt un caracter ntre apostrofuri.
Se reprezint pe 8 bii, fiind chiar reprezentarea n codul
ASCII a caracterului respectiv.
Exemplu:
A reprezentare intern: 65 (codul ASCII a caracterului A)
a reprezentare intern: 97 (codul ASCII a caracterului a)
n plus avem o notaie special \ = backslash, care se poate
folosi mpreun cu cteva litere mici cu urmtoarele
semnificaii:
Caracter
semnificatie
\n
\r
\t
\v
\\
\nnn
24.10.2014
\xnnn
linie noua
retur de car
tabulator orizontal
tabulator vertical
backslash
valoare ASCII in octal
Curs - Programarea calculatoarelor
30
copyright@www.adrian.runceanu.ro
3.3.3. Constante
4. constant ir sau ir de caractere
Acest tip de constant apare ca o succesiune de caractere scrise ntre
ghilimele.
Poate fi i irul vid. Reprezentarea intern este astfel nct fiecare
caracter apare pe cte un singur octet, iar ca terminator de ir avem
caracterul 0 (nul).
Constantele ir pot fi scrise pe linii diferite, dar pe prima linie ultimul
caracter este backslash, nainte de apsarea tastei RETURN.
Exemplu: linia 1 : conti\
linia 2 : nuare
Exemplu : AbbA se reprezint intern astfel:
659898650
24.10.2014
b b
31
copyright@www.adrian.runceanu.ro
32
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
Pentru a putea utiliza informaiile ce pot fi
prelucrate prin intermediul programelor,
trebuie s folosim denumiri (identificatori), care
s fie compui din caractere litere, cifre i
liniua de subliniere - underscore(_) din
maximum 31 caractere.
Numim variabil o denumire (identificator)
pe care compilatorul o asociaz cu o anumit
zon de memorie.
24.10.2014
33
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
Cnd se declar o variabil, trebuie specificat att
numele ei ct i tipul de date asociat.
Exemple:
int variabila_de_tip_intreg;
float variabila_de_tip_real;
char variabila_de_tip_caracter;
void variabila_fara_tip;
34
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
Observaie:
Limbajul C este case sensitive, adic face
diferena dintre literele mici i mari, astfel nct,
dou denumiri de variabile sau de funcii, care
sunt identice dar sunt scrise o dat cu litere mici
iar apoi cu litere mari, se consider ca fiind dou
denumiri de variabile sau de funcii diferite.
Exemplu: int var_intreaga;
int VAR_INTREAGA;
semnific dou denumiri total diferite.
24.10.2014
35
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
24.10.2014
36
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
Variabilele simple
Declaraia de variabil simpl are forma:
tip nume_variabila;
Exemplu:
int i;
int j, k, l;
double a, b;
float x, y;
char m, n, t;
24.10.2014
37
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
Variabilele tablou
Prin tablou nelegem o mulime ordonat
de acelai tip; accesul la elementele tabloului
fcndu-se cu ajutorul indicilor.
Declaraia este:
Exemplu:
24.10.2014
tip nume_tablou[dimensiune];
int v[5];
float x[15];
double a[3];
Curs - Programarea calculatoarelor
38
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
Observaie:
Numerotarea elementelor unui tablou n
limbajul C++ ncepe cu indicele 0.
Elementele lui int v[5] vor fi:
v[0],v[1],v[2],v[3],v[4];
Indice poate s fie orice expresie ntreag.
Putem avea chiar i tablouri de iruri de
caractere: char t[20];
Numele tabloului este de fapt adresa
primului su element.
24.10.2014
39
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
Iniializarea variabilelor
Poate fi fcut chiar pe linia de declarare a variabilelor:
Exemplu:
int i=5;
float x=7.8;
int v[5]={1,2,7,10,-5};
float y[3]={-9.034,89,2};
char c=B;
Pentru iniializarea variabilelor de tip ir de caractere avem
urmtoarele posibiliti:
char t[15] = { s, i, r, , c, o, r, e, c, t, \0 };
sau
char t[15] = sir corect;
24.10.2014
40
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
Comentarii n programe
Numim comentarii, acele texte care nu sunt luate
n considerare de compilator i care apar ntre
simbolurile
/* comentariu */
sau
cnd este vorba despre o singur linie
// comentariu
Se mai pot pune comentarii pentru ca s se
elimine una sau mai multe instruciuni din
programul C++.
24.10.2014
41
copyright@www.adrian.runceanu.ro
42
copyright@www.adrian.runceanu.ro
43
copyright@www.adrian.runceanu.ro
44
copyright@www.adrian.runceanu.ro
Operatori
aritmetici
relaionali
de egalitatite
logici
logici pe bii
de atribuire
de incrementare i decrementare
de conversie explicit (cast)
de lungime (sizeof)
condiional
virgul
Curs - Programarea calculatoarelor
45
copyright@www.adrian.runceanu.ro
46
copyright@www.adrian.runceanu.ro
FUNCIE
+
*
/
%
+
-
Adunare
Scdere
nmulire
mprire
Restul mpririi
adunare unar
scdere unar
Exemplu:
atunci
24.10.2014
47
copyright@www.adrian.runceanu.ro
copyright@www.adrian.runceanu.ro
24.10.2014
49
copyright@www.adrian.runceanu.ro
50
copyright@www.adrian.runceanu.ro
FUNCIE
mai mic
mai mic sau egal
mai mare
mai mare sau egal
Exemplu:
51
copyright@www.adrian.runceanu.ro
52
copyright@www.adrian.runceanu.ro
53
copyright@www.adrian.runceanu.ro
FUNCIE
egal
diferit
Exemplu:
int i=2, j=5, k=2;
Atunci pentru expresia i!=j avem valoarea 1
Pentru expresia
i==j avem valoarea 0
Iar pentru expresia i==k avem valoarea 1
24.10.2014
54
copyright@www.adrian.runceanu.ro
55
copyright@www.adrian.runceanu.ro
ntrebri?
24.10.2014
56