Documente Academic
Documente Profesional
Documente Cultură
inginereti
Tema 5
C++: date, operatori i
expresii
Fiiere header
Fiier surs
Fiier surs
Funcii
main
Biblioteci C++
Preprocesorul
n faza de compilare a fiierului surs este invocat nti preprocesorul. Acesta trateaz
directivele speciale - numite directive preprocesor - pe care le gsete n fiierul surs.
Directivele preprocesor sunt identificate prin simbolul #, care trebuie s fie primul
caracter, diferit de spaiu, dintr-o linie.
Directivele preprocesor sunt utilizate la:
includerea fiierelor header
definirea numelor constantelor simbolice
definirea macro-urilor
realizarea altor funcii (de exemplu, compilarea condiionat).
Preprocesorul
Exemple
#include <iostream.h>
#include headerul_meu.h
#include "c:\\bc\\headerul_meu.h
#define TRUE
#define FALSE
#define NEGATIV(x)
-(x)
macrodefiniie
VOCABULARUL
n scrierea programelor n limbajul C/C++ pot fi folosite doar anumite simboluri care
alctuiesc alfabetul limbajului. Acesta cuprinde:
Literele mari sau mici de la A la Z (a-z);
Caracterul subliniere ( _ underscore), folosit, de obicei, ca element de legtura ntre
cuvintele compuse;
Cifrele zecimale (0-9);
Simboluri speciale:
Caractere:
operatori (Exemple: +, *, !=);
delimitatori (Exemple: spaiu, tab \t, newline \n, cu rolul de a
separa cuvintele);
Grupuri (perechi de caractere).
Grupurile de caractere, numire adesea separatori, pot fi:
()
- ncadreaz lista de argumente ale unei funcii sau sunt folosite n expresii pentru
schimbarea ordinii de efectuare a operaiilor (n ultimul caz, fiind operator);
{ } - ncadreaz instruciunile compuse;
//
- Indic nceputul unui comentariu care se poate ntinde pn la sfritul liniei;
/* */ - Indic nceputul i sfritul unui comentariu care poate cuprinde mai multe linii;
" " - ncadreaz o constant ir (un ir de caractere);
''
- ncadreaz o constant caracter (un caracter imprimabil sau o secven escape).
UNITILE LEXICALE
Unitile lexicale (cuvintele) limbajului C/C++ reprezint grupuri de caractere cu o semnificaie de
sine stttoare. Acestea sunt:
Identificatori;
Cuvinte cheie ale limbajului;
Identificatorii reprezint numele unor date (constante sau variabile), sau ale unor funcii.
Identificatorul este format dintr-un ir de litere, cifre sau caracterul de subliniere (underscore),
trebuie s nceap cu o liter sau cu caracterul de subliniere i s fie sugestivi.
Exemple: vitez, greutate_net, Viteza, Viteza1, GreutateNet
Identificatorii pot conine litere mici sau mari, dar limbajul C++ este senzitiv la majuscule i
minuscule (case-sensitive). Astfel, identificatorii viteza i Viteza sunt diferii.
Nu pot fi folosii ca identificatori cuvintele cheie. Identificatorii pot fi standard (ca de exemplu
numele unor funcii predefinite: scanf, clear, etc.) sau alei de utilizator.
Cuvintele cheie sunt cuvinte ale limbajului, mprumutate din limba englez, crora programatorul
nu le poate da o alt utilizare. Cuvintele cheie se scriu cu litere mici i pot reprezenta:
Tipuri de date (Exemple: int, char, double);
Clase de memorare (Exemple: extern, static, register);
Instruciuni (Exemple: if, for, while);
Operatori (Exemplu: sizeof).
TIPURI DE DATE
Tipul unei date const ntr-o mulime de valori pentru care s-a adoptat un anumit mod
de reprezentare n memoria calculatorului i o mulime de operatori care pot fi aplicai
acestor valori. Tipul unei date determin lungimea zonei de memorie ocupat de acea
dat. n general, lungimea zonei de memorare este dependent de calculatorul pe care
s-a implementat compilatorul.
Tipurile de baz sunt:
char un singur octet (1 byte=8 bii), capabil s conin codul unui caracter din
setul local de caractere;
int
numr ntreg, reflect n mod tipic mrimea natural din calculatorul utilizat;
float numr real, n virgul mobil, simpl precizie;
double numr real, n virgul mobil, dubl precizie.
n completare exist un numr de calificatori, care se pot aplica tipurilor de baz char,
int, float sau double: short, long, signed i unsigned. Astfel, se obin tipurile derivate
de date.
CONSTANTE
CONSTANTE NUMERICE
Constante ntregi
Constantele ntregi sunt literali numerici (compui din cifre), fr punct zecimal, n
baza 10, 8 sau 16
45
-78 // constante ntregi decimale (n baza 10), tip int
056
077 // constante ntregi octale, tip int
0x45
0x3A
0Xbc // constante ntregi hexagesimale, tip int
Constante numerice, reale
Dac o constant numeric conine punctul zecimal, ea este de tipul double.
3.1459
//tip double
Constante reale n format tiinific
Numrul poate fi urmat de caracterul e sau E i de un numr ntreg, cu sau fr semn. n
acest caz, constanta este n notaie tiinific.
1.5e-2
//tip double, n notaie tiinific, valoare 1.5x10-2
CONSTANTE CARACTER
Constantele caracter sunt ncadrate ntre apostroafe.
Exemplu:
'a'
//tip char
O constant caracter are ca valoare codul ASCII al caracterului pe care l reprezint.
Constante caracter corespunztoare caracterelor imprimabile
O constant caracter corespunztoare unui caracter imprimabil se reprezint prin
caracterul respectiv inclus ntre apostroafe.
Exemplu:
Constant caracter
Valoare
A
65
a
97
0
48
*
42
Excepii de la regula de mai sus le constituie caracterele imprimabile apostrof (') i
backslash (\).
Caracterul backslash se reprezint:
'\\'
Caracterul apostrof se reprezint:
'\''
CONSTANTE CARACTER
Constante caracter corespunztoare caracterelor neimprimabile
Pentru caracterele neimprimabile, se folosesc secvene escape. O secven escape
furnizeaz un mecanism general i extensibil pentru reprezentarea caracterelor
invizibile sau greu de obinut.
Constant
caracter
Valoare
(Cod
ASCII)
Denumire
a
caracterul
ui
Utilizare
\n
10
LF
\t
HT
tabulator orizontal
\r
13
CR
\f
12
FF
\a
BEL
activare sunet
CONSTANTE IR DE CARACTERE
Constanta ir este o succesiune de zero sau mai multe caractere, ncadrate de ghilimele.
n componena unui ir de caractere, poate intra orice caracter, deci i caracterele
escape. Lungimea unui ir este practic nelimitat.
Dac se dorete continuarea unui ir pe rndul urmtor, se folosete caracterul
backslash.
Exemple:
Acesta este un ir de caractere
ir de caractere continuat\
pe rndul urmtor!
ir \t cu secvene escape\n
VARIABILE
Variabilele sunt date (obiecte informaionale) ale cror valori se pot modifica n
timpul execuiei programului.
Variabilele sunt caracterizate de atributele nume, tip, valoare i clas de memorare.
Dac o dat nu are legturi cu alte date (de exemplu, relaia de ordine), vom spune c
este o dat izolat. O dat izolat este o variabil simpl.
Dac datele se grupeaz ntr-un anumit mod (n tablouri - vectori, matrici - sau
structuri), variabilele sunt compuse (structurate).
Este necesar specificarea tipului fiecrei variabile la declararea acesteia. Toate
variabilele care vor fi folosite n program, trebuie declarate nainte de utilizare.
Declararea variabilelor
Modul general de declarare a variabilelor este:
tip_variabile list_nume_variabile;
Se specific tipul variabilei(lor) i o list format din unul sau mai muli identificatori ai
variabilelor de tipul respectiv.
Declaraiile de variabile pot apare n orice loc n programul surs.
Exemple:
int i, j;
char c;
float lungime;
Operaii de intrare/ieire
n limbajul C++ sunt predefinite urmtoarele dispozitive logice de intrare/ieire:
cin - console input - dispozitivul de intrare (tastatura);
cout - console output - dispozitivul de ieire (monitorul).
Transferul informaiei se realizeaz cu operatorul >> pentru intrare i operatorul <<
pentru ieire.
Exemple:
cout << var;
/* afieaz valoarea variabilei var pe monitor*/
cin >> var;
/* citete valoarea variabilei var de la tasatatur */
cout << var1 << var2 << var3;
cin >> var1 >> var2 >> var3;
Operanzii operatorului extractor (>>) pot fi doar nume de variabile.
Operanzii operatorului insertor (<<) pot fi nume de variabile (caz n care se afieaz
valoarea variabilei), constante sau expresii.
Utilizarea dispozitivelor i operatorilor de intrare/ieire n C++ impune includerea
fiierului iostream.h.
OPERATORI I EXPRESII
Datele (constante sau variabile) legate prin operatori, formeaz expresii.
Operatorii pot fi:
unari (necesit un singur operand);
binari (necesit doi operanzi);
ternari (trei operanzi).
Operatorul de atribuire (de asignare) este un operator binar care se aplic tuturor
tipurilor de variabile. Este folosit sub formele urmtoare:
nume_variabil=expresie;
expresie1=expresie2;
Dac tipurile membrilor stng i drept difer, se pot realiza anumite conversii
Exemple
-a
a++
sau
++a
a-sau
--a
Exemple
a+=b
a-=b
a*=b
a/=b
a%=b
Semnificaie
Egal cu
Diferit de
Mai mic dect
Mai mic sau egal
Mai mare dect
Mai mare sau egal
Clas de operatori
Unari
Operatori
-
(unar)
*
Multiplicativi
-/
Aditivi
Asociativitate
++
de la dreapta la stnga
de la stnga la dreapta
de la stnga la dreapta
Atribuire
<
Relaionali
De egalitate
Atribuire i aritmetici binari
Exemple
a==b
a!=b
a<b
a<=b
a>b
a>=b
de la dreapta la stnga
<=
>
==
!=
*=
+=
/=
-=
>=
de la stnga la dreapta
de la stnga la dreapta
%=
de la dreapta la stnga
Exemple
!(a==b)
(a>b) && (b>c)
(a>b) || (b>c)
Operatorul condiional
Este un operator ternar (necesit 3 operanzi), utilizat n construcii de forma:
expresie1?expresie2:expresie3
Se evalueaz expresia1, care trebuie s fie o expresie logic. Dac aceasta este
adevrat, atunci tipul i valoarea ntregii expresii vor fi aceleai cu tipul i valoarea
expresiei2. Altfel (dac expresie1 este fals), tipul i valoarea ntregii expresii vor fi
aceleai cu tipul i valoarea expresiei3.
Acest lucru este echivalent cu:
Dac expresie1
Atunci evalueaz expresie2
Altfel evalueaz expresie3
Exemplu:
int semn=(x<0)?-1:1
Dac x<0, atunci semn=-1, altfel semn=1.