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++
20.10.2013
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 70
de ani)!
20.10.2013
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.
20.10.2013
copyright@www.adrian.runceanu.ro
3.2. Limbajul C
20.10.2013
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#.
20.10.2013
10
copyright@www.adrian.runceanu.ro
11
copyright@www.adrian.runceanu.ro
20.10.2013
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
20.10.2013
16
copyright@www.adrian.runceanu.ro
char
int
float
double
void
20.10.2013
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
20.10.2013
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
20.10.2013
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;
20.10.2013
21
copyright@www.adrian.runceanu.ro
double numar_foarte_mare=123456789123456789.123456789123456789;
double numar_foarte_mic=-123456789123456789.123456789123456789;
double numar_mare=-123456789;
20.10.2013
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
20.10.2013
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
20.10.2013
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.
20.10.2013
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
20.10.2013
\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
20.10.2013
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.
20.10.2013
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.
20.10.2013
35
copyright@www.adrian.runceanu.ro
3.3.4. Variabile
20.10.2013
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;
20.10.2013
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:
20.10.2013
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.
20.10.2013
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;
20.10.2013
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++.
20.10.2013
41
copyright@www.adrian.runceanu.ro
42
copyright@www.adrian.runceanu.ro
Expresii
O expresie poate s fie un operand sau mai
muli operanzi legai prin operatori.
Orice expresie are tip i valoare care sunt date
dup evaluarea expresiei.
20.10.2013
43
copyright@www.adrian.runceanu.ro
20.10.2013
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
20.10.2013
47
copyright@www.adrian.runceanu.ro
copyright@www.adrian.runceanu.ro
20.10.2013
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
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
20.10.2013
53
copyright@www.adrian.runceanu.ro
ntrebri?
20.10.2013
54