LICEUL TEORETIC “OVIDIUS”
Str. BASARABI, Nr. 2, Constanţa, cod 900710
Tel/ fax.0341405816
liceulovidius@gmail.com, www.liceulovidius.ro
Lecț ia 2
Elemente de bază ale limbajului de programare C/C++
Noţiuni teoretice
Vocabularul limbajului
Setul de caractere al limbajului C / C++ conţine:
– litere ( mari şi mici ale alfabetului englez; C / C++ este case-sensitive )
– cifre arabe ( de la 0 la 9 )
– caractere speciale ( + – * / = ^ ( ) , - * + . , : ; # $ @ _ şi spaţiu )
– simboluri negrafice ( /n newline, /t tab, /b backspace, /r carriage return )
Între oricare două unităţi lexicale admise de limbaj pot exista unul sau mai mulţi separatori: spaţiul,
caracterul ; şi caracterul de sfârşit de linie. Nu este permisă prezenţa separatorilor în interiorul
identificatorilor, numerelor sau simbolurilor speciale. Comentariile pot să apară oriunde în program ( nu în
identificatori şi numere ), încadrate de caracterele /* */. Textul comentat este ignorat în faza de compilare
a programului. Pot exista comentarii care încep cu //, cu condiţia să se termine pe rândul pe care au
început.
Constantele sunt o categorie de date cu care lucrează un program, care nu îşi pot modifica
valoarea în timpul execuţiei programului. Se folosesc în calculul unor expresii sau în interiorul unor
mesaje de afişat. Ele pot fi:
constante întregi
Corespund mulţimii numerelor întregi ce pot fi reprezentate în memoria calculatorului. Pot fi scrise
în baza 10, 8 sau în baza 16.
Exemplu: 22 constantă în baza 10
022 constantă în baza 8 ( se preced de caracterul 0 )
0x24 constantă în baza 16 ( se preced de caracterele 0x )
constante reale
Corespund unei submulţimi a mulţimii numerelor reale. Pot apare în notaţie zecimală ( 2.75,
–8.5 ) sau exponenţială ( 2.4e–5, –5,75E3 ).
constante şir de caractere
Reprezintă o succesiune de caractere, inclusă între ghilimele ( "alfa" ). Caracterele şirului se
păstrează într-o zonă contiguă de memorie, prin codurile lor ASCII. După ultimul caracter se păstrează
caracterul NULL ( cu valoarea 0 ), care reprezintă marcajul de sfârşit de şir.
constante simbolice
Sunt constante care au asociat un nume în program. Pot fi orice şir de caractere, introdus prin
construcţia #define.
Exemplu: #define max 7 #define min 100
Un identificator este o succesiune de litere, cifre sau caracterul _ ( primul caracter al
identificatorului trebuie să fie o literă sau caracterul _ ), prin care se asociază nume constantelor, tipurilor,
variabilelor şi funcţiilor. Lungimea unui identificator nu este limitată, varianta de implementare a limbajului
impunând numărul de caractere semnificative.
Exemplu: a1, n, _alfa, a23( corecte ) a&b, 2a, a+b ( incorecte )
O categorie specială de identificatori o constituie cuvintele cheie ale limbajului ( case, const, else, if,
for, while etc ), care nu pot fi redefinite de utilizator, fiind utilizate doar în scopul în care au fost definite în
limbaj.
Noţiunea de tip de dată. Operatori aritmetici, logici, relaţionali
Prin tip de dată se înţelege mulţimea valorilor pe care le poate avea o dată ( constantă sau variabilă
). Tipul restricţionează funcţiile şi operatorii ce se pot aplica datelor de tipul respectiv.
Tipuri de date standard
Tipurile întregi de date permit reprezentarea, memorarea şi prelucrarea numerelor întregi.
Numerele întregi se scriu ca o secvenţă de cifre zecimale, precedată eventual de semnul – ( ex: 126, –6382
LICEUL TEORETIC “OVIDIUS”
Str. BASARABI, Nr. 2, Constanţa, cod 900710
Tel/ fax.0341405816
liceulovidius@gmail.com, www.liceulovidius.ro
). În limbajul C este predefinit tipul întreg int ( reprezintă întregi cu semn pe 2 octeţi,
valoarea maximă admisă 215 – 1 = 32767 ).
Tipul int poate fi modificat folosind "modificatori de tip" signed, unsigned, short şi long, rezultând
tipurile :
short int ( întregi cu semn, se reprezintă pe 2 octeţi )
signed short int ( întregi cu semn, se reprezintă pe 2 octeţi )
unsigned int ( întregi fără semn, se reprezintă pe 2 octeţi, valoarea maximă admisă este 2 16 – 1 = 65535 )
unsigned short int ( întregi fără semn, se reprezintă pe 2 octeţi )
long int ( întregi cu semn, se reprezintă pe 4 octeţi, valoarea maximă admisă este 2 31 – 1 )
signed long int ( întregi cu semn, se reprezintă pe 4 octeţi )
unsigned long int ( întregi fără semn, se reprezintă pe 4 octeţi, valoarea maximă admisă este 2 32 – 1 ).
Operatorii ce pot fi folosiţi împreună cu date de tip întreg sunt:
1. aritmetici: + , – , * , / , % ( restul împărţirii a două numere întregi )
2. relaţionali: , != ( diferit ) , = = ( egal ) , =
3. de atribuire: =
4. de incrementare / decrementare: ++ , – – ( i = i + 1 i ++ i + = 1 )
5. logici: ! ( not ) , || ( or ) , && ( and )
6. logici pe biţi: ~ ( complement faţă de 1 ), > ( deplasare la
dreapta; o1 >> o2 = o1 div 2 o2 ), & ( and ), | ( or ), ^ ( xor )
Cu excepţia operatorului !, ceilalţi operatori logici sunt binari. Se aplică în forma o1 operator o2.
Operatorii |, & şi ^ funcţionează conform următoarelor regului:
| 0 1 & 0 1 ^ 0 1
0 0 1 0 0 0 0 0 1
1 1 1 1 0 1 1 1 0
Tipurile reale de date se folosesc pentru reprezentarea unei submulţimi a numerelor raţionale, ce
sunt aproximaţii ale numerelor reale. Reprezentarea numerelor reale este limitată în calculator prin
mărime şi precizie. Numerele reale pot fi scrise în notaţie zecimală ( 3.67 ) sau ştiinţifică ( exponenţială
3e05 ).
Tipuri reale în C sunt:
1. float – reprezentat pe 6 octeţi
2. double – reprezentat pe 8 octeţi
Modificatorul long se poate aplica tipului double. Datele de tip long double se reprezintă pe 10
octeţi.
Operatorii ce se pot aplica datelor de tip real sunt:
1. aritmetici: –,+,*,/
2. relaţionali: , != ( diferit ) , = = ( egal ) , =
Tipul char permite reprezentarea mulţimii caracterelor. Un caracter se reprezintă pe 1 octet. La un
moment dat o dată de tip caracter conţine codul ASCII al unui caracter sau un întreg în sine. Pentru
atribuirea unei valori unei variabile de tip char se pot folosi constante întregi sau constante de tip caracter (
exemplu: c='A' sau c=65).
Operatorii ce se pot aplica datelor de tip char sunt:
1. relaţionali ( ordonarea e dată de codurile ASCII ale caracterelor ‘0’ ;
O declaraţie de tip defineşte de fapt mulţimea valorilor pe care le poate lua o variabilă de tipul respectiv.
Un tip de dată poate fi definit pe baza unui tip standard sau utilizator, definit înainte.
Exemplu : #include
typedef unsigned int natural;
void main()
{ int x;
natural y;
cin>>x>>y;
cout>
5. , >=
6. = = , !=
7. & ( binar )
8. ^
9. |
10. &&
11. ||
12. ?,:
13. = , >= , += , – = , *= , /= , %= , &= , ^= , |=
Citirea / scrierea datelor
În varianta C++, pentru citirea / afişarea datelor se folosesc obiectele cin, cout. Aceste obiecte se
iniţializează prin includerea fişierului iostream.h.
Ieşirea standard se poate face folosind operaturul >.
Exemplu : cin>>i ; citeşte valoarea i
cin>>a>>b; citeşte două valori a şi b
char v[100];
cin>>t; citeşte şirul de caractere t;
Citirea (scanf) şi scrierea (printf) cu format în limbajul C foloseşte biblioteca stdio.h.
Exemple:
1.Dacă avem: int a,b;
scanf(“%d%d”,&a,&b);
printf(“%d%d”,a,b);
Dacă se introduce: 123 456, se afişează 123 456.
LICEUL TEORETIC “OVIDIUS”
Str. BASARABI, Nr. 2, Constanţa, cod 900710
Tel/ fax.0341405816
liceulovidius@gmail.com, www.liceulovidius.ro
2. Dacă avem: char a[60];
scanf(“%s”,a);
printf(“%s”,a);
Dacă se introduce şirul de caractere: primul capitol, se afişează primul.