shift assigment), >>= (right shift assigment), &= (Bitwise AND assigment),
|= (Bitwise inclusive OR assigment), ^= (Bitwise exclusive OR assigment)
, (comma).
-10-
In functie de numarul membrilor din ecuatie operatorii pot fi unari,
binari sau tertiari.Operatorii se asociaza fie cu expresia de la stanga
lor,fie cu expresia situata de la dreapta lor,fie cu nici una.In lista
prezentata,operatorii sunt ordonati de la cel cu precedenta cea mai mare
spre cel cu precedenta cea mai mica.Ultimii din lista,incepand cu cel
conditional (e1?e2:e3) se asociaza de la dreapta la stanga iar ceilalti
se asociaza de la stanga la dreapta (sau deloc).
In situatiile in care intr-o expresie sunt mai multi operatori cu
precedenta egala (de acelasi fel),vor fi interpretati in ordinea in care
apar in expresie,de la stanga la dreapta (daca nu exista si paranteze
care sa forteze o alta ordine de evaluare).
In general,este bina sa utilizati expresii cat mai scurte,si cat mai
clare,pentru a evita orice ambiguitate sau confuzie.Expresiile complicate
si alambicate sunt apanajul incepatorilor.
Este bine sa nu utilizati pointeri in formularea expresiilor matematice
decat daca este imperios necesar.Este preferabil sa preluati valorile de
la adresele de memorie inainte de a intra in expresia de calcul.Astfel
puteti evita evantualele "erori de precedenta".Nu uitati ca in versiuni
diferite ale programului compilatorul va utiliza tabele diferite de com-
paratie pentru identificarea elementelor de tip token.Cu formule de calcul
prea savante,riscati sa obtineti rezultate absolut imprevizibile.
Constantele (literals) sunt elemente de program invariabile.Constantele
pot fi de patru tipuri fundamentale: integer,character,floating-point si
string(intregi,caractere,numere in virgula mobila sau siruri de caractere)
Elementele prezentate formeaza limbajul C++,asa cum cuvintele din
dictionar formeaza vocabularul unei anumite limbi.Cu aceste elemente se
pot forma expresii,structuri de date,file si module de program,etc. CONCEPTE DE STRUCTURARE A LIMBAJULUI Limbajul C++ este o continuare a limbajului C.Toate regulile din C se
aplica si in C++.In plus,pentru structurile necesare programarii orientate
spre obiecte,C++ a introdus si o terminologie specifica.Pentru a simplifi-
ca explicatiile,principalii termeni utilizati vor fi prezentati pe scurt:
DECALRATION (declaratia) -este procedeul prin care se introduc in program
elemente noi.De cele mai multe ori declaratia coincide cu definitia
si caracterizeaza elementul introdus,dar nu este obligatoriu.In cazul
tipurilor de date abstracte,elementele sunt doar declarate,urmand sa
fie definite ulterior.
DEFINITION (definitia) - este procedeul prin care se specifica toate date-
le necesare prin care se caracterizeaza un anumit element de program
(variabila,functie,clasa,obiect etc).In urma definitiei compilatorul
aloca memoria necesara si genereaza codul necesar,astfel incat ele-
mentele respective devin din abstracte (sau virtuale) elemente reale.
LIFETIME (existenta) - este perioada de timp in care elementul respectiv
exista in program (intre creerea si eliberarea lui).
LINKAGE (legaturi) - specifica legaturile care exista intre elementele
unui program.Legaturile pot fi in cadrul aceluiasi modul (internal
linkage) sau intre elemente situate in module diferite (external
linkage).Uneori,elementele unui modul de program sunt definite in alt
modul de program,sau apeleaza la elemente definite in alt modul.
-11-
NAME (nume,element) - identifica un obiect,o functie,o valoare sau orice
alt element din program.Poate fi un identificator sau un tip de data.
OBJECT - este un tip de data structural in care se pot grupa atat date
din tipuri diferite,sub forma de membri cat si functii si proceduri,
sub forma de metode.Un obiect este o instanta a unei clase.
CLASS (clasa) - este definitia abstracta a unui tip de obiect.Contine
declaratia si definitia obiectului.Prin atribuirea de valori concrete
se formeaza un obiect real (o instanta a clasei respective).Obiectele
care provin din aceeasi clasa pot avea valori diferite (sunt instante
diferite ale aceluiasi tip de data.
SCOPE (vizibilitate) - descrie modulul sau fragmentul de program in care
o anumita data este interpretata cu valoarea declarata.Astfel,datele
declarate global sunt vizibile in tot programul,iar cele locale sunt
vizibile doar in cadrul functiei respective.Pentru obiecte exista
specificatorii de acces: "private","public" si "protected".
VIRTUAL FUNCTIONS -functiile virtuale sunt functii pentru care definitia
exacta urmeaza sa fie specificata la un alt moment dat.Acest gen de
functii sunt declarate in clasele abstracte,pentru a permite definirea
si redefinirea lor in obiectele derivate. Ca o noutate absoluta a limbajului C++,fata de limbajul C apar notiunile
de clase si obiecte,si conceptul functiilor virtuale.
Obiectele sunt date de tip struct,in care se pot introduce si functii
sau proceduri cu vizibilitate locala.Astfel,se realizeaza un mic modul
de program,care poate functiona ca un mic program independent.In sistemele
cu multiprocesare paralela,mai multe obiecte pot opera simultan,in paralel
ca si cand ar fi programe care se deruleaza simultan.Se pot realiza un
numar practic infinit de astfel de obiecte,cu utilitate mai mica sau mai
mare,in functie de modul in care au fost implementate.Obiectele se pot
grupa in biblioteci de obiecte si pot simplifica substantial munca pro-
gramatorilor.In biblioteci,obiectele sunt arhivate sub forma unui sablon
al obiectului denumit clasa.Clasa contine toate definitiile necesare
pentru realizarea unui obiect,dar nu este un obiect real ci doar un obiect
virtual.Pentru a deveni obiect real,trebuiesc initializate cu valori toate
tipurile de date din interiorul obiectului (in caz contrar se obtin struc-
turi de date nule,care returneaza un mesaj de eroare).Pentru realizarea
operatiilor de initializare,exista de obicei o functie specializata,denu-
mita constructor.Pentru initializarea unui obiect este suficient sa fie
apelat "constructorul" obiectului respectiv.In mod similar,obiectele au
si o functie specializata denumita "destructor",care face toate operatiile
necesare pentru eliberarea memoriei (sterge obiectul din program).
Astfel,cu o simpla comanda,obiectul se construieste singur,sau se dis-
truge singur,in momentul indicat.Prin acest mecanism simplu,programul
poate sa apeleze si sa elibereze un numar mare de obiecte cu un consum
minim de memorie de operare.Ca rezultat,viteza de executie creste foarte
mult iar memoria de operare ramane libera pentru alte operatii.Prin me-
toda clasica,ar fi trebuit ca toate obiectele utilizate sa existe real
in memoria de operare (cu un consum foarte mare de memorie).Prin acest
procedeu tehnic,obiectele sunt arhivate in biblioteci si se materializeaza
(devin o instanta a obiectului) dar in momentul in care sunt necesare in
program,dupa care sunt eliberate pentru a face loc altor obiecte.
-12-
Mai mult decat atat,clasele de obiecte pot fi clase abstracte.In acest
caz,functiile obiectului sunt doar declarate,dar nu saut definite.Defi-
nitia acestor functii se va face in etapa de implementare in functie de
necesitatile de moment.Ca rezultat,se pot obtine instante extrem de