Notiuni Introductive Limbajul CPP
Notiuni Introductive Limbajul CPP
Zona 1 : directive prepocesor ( sunt indicate de simbolul #) : determină includerea în
fişierul sursă a fişierelor header cu nume specificat ( se mai numesc si biblioteci )
Exemple :
a) #include<iostream.h> : pentru instructiunile de citire scriere
b) #include<iomanip.h> : pentru specificati de afisare
c) #include<conio.h> : pentru curatarea ecranului (clrscr()), citire de caracter
(getch()), etc
d) #include<math.h> : pentru functii matematice
e) #include<fstream.h> : pentru lucru cu fisiere text
f) #include<string.h> : pentru lucru cu siruri de caractere
Zona 2 : zona declarativa globala : se pot declara variabile, constante, noi tipuri de date
Zona 3 : definiri de subprograme ( se numesc functii )
Zona 4 : functia principala
Structura functiei principale :
a) Antetul functiei : void main() sau int main()
b) Corpul functiei avand urmatoarea structura :
1. zona declarative locala : se pot declara variabile,constante, tipuri noi de
date
2. set de instructiuni
Obs : Corpul functiei incepe cu { si se termina cu }
Exeplu de program :
#include<iostream.h>
void main()
{
cout<< ” am scris primul program”;
}
Constante
Constantele utilizate in limbajul c++ se pot clasifica in :
15. constante literale : valorile effective pe care le utilizam in program
16. constante simbolice : sunt identificatorii utilizati in program
25. Variabile
Declarea variabilor se face astfel :
26. tip_data variabila;
exemple :
d) int a;
e) float b;
f) char c;
g) int a=7; ( o variabila se poate initialize direct din declarare )
obs : la declarare fiecarei variabile I se va aloca o zona de memorie a carei dimensiune este data
de tipul de data .
27. tip_data lista de variabile ; (variabilele din lista se vor separa prin virgula )
exemple :
a) int a,b,c ;
b) float x,y,z,t ;
c) char c1,c2=’d’ ;
d) long f=2323123412,h,k=-323412342 ;
o binari
o ternari - cel conditional; alte limbaje de nivel inalt nu definesc astfel de operatori
o infixati
o postfixati
o relationali
o logici
o la nivel de bit.
Operatorii se impart in clase de precedenta, fiecare clasa avand o regula de asociativitate,
care indica ordinea aplicarii operatorilor consecutivi de aceeasi precedenta ( prioritate ).
Legenda:
a-variabila intreaga sau reala i-intreg
c-camp v-valoare intreaga sau reala
d-nume tip p-pointer
e-expresie s-structura sau uniune
f-nume de functie t-tablou
x-nume tip sau expresie
Operatorii logici
Conditiile mai complexe se obtin aplicand conditiilor simple operatorii logici:
! negatie logica
&& si logic
|| sau logic
Operanzii sunt intregi, interpretati ca valori logice. Prioritatea operatorilor && si || este mai
scazuta decat a celor conditionali, a celui de negare, fiind unar, este cea mai ridicata.
Operatorii trateaza operanzii ca valori logice, deci orice valoarea diferita de 0 este interpretata ca
adevarat, iar 0 ca fals. Aplicand unui intreg operatorul de negatie logica, se obtine 1 daca
operandul e fals, respectiv 0 daca operandul este adevarat.
x y !x x&&y x||y
0 0 1 0 0
0 !=0 1 0 1
!=0 0 0 0 1
!=0 !=0 0 1 1
Se observa din tabela de mai sus ca daca primul operand al expresiei in care apare
operatorul && este 0, sigur rezultatul final este 0, indiferent de valoarea celui de-al doilea.
Similar, daca primul operand al expresiei in care apare operatorul || este !=0, sigur rezultatul
final este 1, indiferent de valoarea celui de-al doilea.
Operatorul conditional
Operatorul conditional ? : este singurul operator ternar. Are prioritatea mai ridicata
doar decat a operatorilor de atribuire si a celui secvential, iar asociativitatea este de la dreapta
spre stanga. El se foloseste in situatiile in care exista doua variante de obtinere a unui rezultat,
dintre care se alege una singura, functie de indeplinirea sau neindeplinirea unei conditii. Cei trei
operanzi sunt expresii, prima reprezentand conditia testata.
expr0 ? expr1 : expr2
Daca valoarea expr0 este adevarata ( !=0 ), se evalueaza expr1, altfel expr2, rezultatul expresiei
evaluate fiind rezultatul final al expresiei conditionale.
Exemple:
Expresia de mai jos determina valoarea maxima dintre a si b, pe care o memoreaza in max:
max=a>b?a:b;
Acelasi rezultat se obtine daca se foloseste instructiunea if:
if(a>b)max=a;
else max=b;
Operatorul conditional
Operatorul secvential , ( virgula ) este cel cu prioritatea cea mai scazuta. Se foloseste atunci
cand sintaxa limbajului impune prezenta unei singure expresii, iar prelucrarea presupune
evaluarea a doua sau mai multor expresii; acestea se evalueaza de la stanga la dreapta, iar
rezultatul iintregii expresii este cel al ultimei expresii ( exprn ):
expr1,expr2,...,exprn
Exemple:
Expresia de mai jos memoreaza in max valoarea maxima dintre a si b, realizand si ordonarea
descrescatoare a acestora (
deci le interschimba daca a<b -- a se observa ca interschimbarea presupune utilizarea unei
variabile auxiliare ):
int a,b,aux,max;
max=a>=b?a:(aux=b,b=a,a=aux); //operatorul secvential e necesar pentru a avea o singura
expresie dupa :
Folosind instructiunea if, prelucrarea de mai sus se poate scrie:
if(a<b)aux=b,b=a,a=aux; //interschimbare daca a<b, deci in a va fi valoarea maxima max=a;
Operatorii pe biti
Operatorii la nivel de bit se aplica fiecarui bit din reprezentarea operanzilor intregi, spre
deosebire de restul operatorilor care se aplica valorilor operanzilor.
Din aceasta categorie fac parte operatorii urmatori, care apar in ordinea descrescatoare a
prioritatii:
~ complementare
>> deplasare la dreapta
<< deplasare la stanga
& si
^ sau exclusiv
| sau
Operatorul ~ transforma fiecare bit din reprezentarea operandului in complementarul sau -- bitii
1 in 0 si cei 0 in 1.
Operatorii &, ^, | realizeaza operatiile si, sau exclusiv, respectiv sau intre toate perechile de biti
corespunzatori ai operanzilor. Daca b1 si b2 reprezinta o astfel de pereche, tabelul urmator
prezinta valorile obtinute prin aplicarea operatorilor &, ^, |.
b1 b2 b1&b2 b1^b2 b1|b2
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 0 1
i*=8; i<<=3;
i/=4; i>>=2;
i*=10; i=i<<3+i<<1;
In tabela urmatoare apar valorile obtinute ( in binar si zecimal ) prin aplicarea operatorilor de
deplasare:
char a;