Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Prezentarea generala a limbajului C++

Prezentarea generala a limbajului C++

Alfabetul

Alfabetul limbajului este format din acele simboluri utilizate la reprezentarea entitatilor unui program, adica a unitarilor lexicale. Reamintim ca, prin unitati lexicale intelegem cele mai mici entitati cu valoare semantica (adica au o semnificatie), prin combinarea carora rezulta constructiile sintactice ('propozitii si fraze').

Alfabetul limbajului C se compune din urmatoarele categorii de simboluri:

Literele mari si mici ale alfabetului englez si caracterul de subliniere '_' (underscore)

Cifrele arabe: 0-9



Semne de punctuatie: ; , ' '

Alte caractere:



~, ^, <, >, =, ?, !, #, &,

Literele si cifrele, precum si caracterul underscore, de multe ori asimilat in multimea literelor, sunt utilizate pentru construirea identificatorilor si cuvintelor cheie, dupa reguli ce vor fi descrise in paragrafele corespunzatoare. In limbajul C se face diferenta dintre literele mici si majusculele corespunzatoare, deci identificatorul 'a' va fi diferit de identificatorul 'A', iar "turbo" va fi diferit de "TURBO" sau "TuRbO" sau orice alta combinatie majuscula minuscula.

Identificatori

Identificatorul reprezinta nume pe care le atribuim variabilelor, constantelor, functiilor, tipurilor de date definite de utilizator. Un identificator este o secventa de litere, cifre si caracterul underscore, primul caracter trebuind sa fie litera sau underscore. Folositi cu multa precautie identificatori care incep cu underscore, pentru a nu intra in conflict cu numele rutinelor sistem, a caror ortografiere nu se cunoaste (numele rutinelor sistem incep intotdeauna cu '_').

Regulile de formare a identificatorilor sunt aceleasi cu regulile din Pascal. Un identificator poate avea, teoretic, o lungime arbitrara, dar numai primele 31 de caractere sunt luate in considerare de compilator.

Identificatorii urmatori:

nume, Nume, NuME, NUMe

sunt diferiti, deoarece literele mici sunt considerate diferite de literele mari corespunzatoare.

Cuvinte rezervate (keywords)

Numele rezervate instructiunilor, tipurilor predefinite si sintaxei de definire a functiilor si tipurilor de date se numesc cuvinte cheie. Lista cuvintelor cheie ale limbajului C este:

auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

Identificatorii definiti de utilizator nu trebuie sa coincida cu cuvintele rezervate. In limbajul C++ se mai adauga cateva cuvinte cheie, care vor fi descrise la momentul oportun (in capitolul rezervat programarii orientate obiect).

Comentarii

Comentariile sunt acele siruri de caractere utilizate la explicarea programelor sursa, delimitate prin caractere speciale care determina ignorarea lor de catre compilator.

Un comentariu are urmatoarea forma:

/* sir de caractere */

sau

// sir de caractere

unde prin sir de caractere se intelege o secventa de caractere din setul caracterelor reprezentabile, mai putin combinatia */. Nu se admit comentariile imbricate. Comentariul poate fi scris pe mai multe linii daca este scris in prima forma. A doua forma este specifica Borland C si permite scrierea unor comentarii ce nu depasesc o linie.



Tipuri de date

Definitia notiunii de tip de data cuprinde, pe langa multimea de valori a tipului, si alte aspecte:

dimensiunea memoriei alocate

multimea operatiilor ce actioneaza asupra elementelor tipului

timpul de viata asociat datei, dat de clasa de memorie

Tipurile de date sunt:

tipuri de baza: tipuri predefinite in limbaj;

caracter (char)

intreg (int)

real (float, double)

tipuri derivate: tipuri definite de utilizator;

enumerare

referinta

structurate:

tablou

structura

uniune

Spre deosebire de Pascal, in C nu este definit tipul logic, considerandu-se ca o expresie este adevarata daca are o valoare ne nula (adica diferita de 0) si falsa in caz contrar. Tipul char difera de tipul caracter din Pascal, in C caracterele fiind de fapt numere intregi, care desemneaza o echivalenta cu codul ASCII. Se defineste si tipul void, care desemneaza fie 'orice tip', fie indica lipsa oricarui parametru intr-o functie.

Tipuri de date predefinite

Tipurile de baza definite in limbajul C sunt: intreg, real si caracter. Exista insa mai multe tipuri intregi si reale, in functie de numarul de biti pe care se pot memora valorile si daca valorile sunt cu sau fara semn. In plus, unele dintre aceste tipuri difera de la o implementare la alta a limbajului (in functie de calculatorul pe care se lucreaza). In tabelul urmator sunt prezentate tipurile fundamentale, memoria necesara stocarii valorilor de acel tip si limita valorilor ce pot fi memorate intr-o variabila de acel tip.

Tipul

Dimensiune memorie

Limita valorilor

char

1 byte

-128.127

int

depinde de implementare (uzual 2 bytes)

-32768.32767



short int

2 bytes

-32768.32767

unsigned char

1 byte

0..255

unsigned int

depinde de implementare


long int

4 bytes

-2147483648 .2147483647

unsigned long int

4 bytes

0.4294967295

float

4 bytes


double

8 bytes


long double

10 bytes


Primul tip este tipul caracter. O variabila de acest tip va avea ca valoare codul ASCII asociat caracterului respectiv.  De exemplu, daca unei variabile i se atribuie caracterul 'a', variabila va contine valoarea 97 (numarul de ordine al caracterului 'a' in codul ASCII).

Tipul intreg cel mai des utilizat in programe este int, dar numarul de bytes pe care se memoreaza valorile de acest tip difera de la o implementare la alta a limbajului C (in functie de tipul calculatorului). Astfel, tipul int este echivalent cu short int sau long int, in functie de implementare.

Celelalte tipuri intregi sunt obtinute prin folosirea prefixului signed sau unsigned, indicand daca valorile respective sunt cu semn (contin si valori negative), respectiv fara semn ( valori naturale).

Ultimele trei tipuri din tabel sunt tipuri reale, diferenta dintre ele constand in cantitatea de memorie utilizata, intervalul de valori si precizia memorarii valorilor (numarul de zecimale retinute). Valorile reale se reprezinta conform notatiei din standardul IEEE (folosind semnul, mantisa si exponentul). De exemplu, pentru tipul float se utilizeaza reprezentarea in simpla precizie, folosind un bit de semn, 7 biti pentru exponent si 24 de biti pentru mantisa. Aceasta reprezentare are un exponent in limita a 10-37 si 1038 cu pana la 7 zecimale precizie. Valoarea maxima a unui float este de 1.701411 E38.



Din tabel se observa ca nu exista un tip logic, asa cum este el definit in alte limbaje de programare. In limbajul Pascal, tipul logic e definit ca multimea cu valorile impreuna cu operatorii logici cunoscuti (si, sau , negatia logica). In limbajul C nu s-a definit acest tip dar se foloseste urmatoarea conventie: o expresie este considerata adevarata daca valoarea obtinuta la evaluarea ei este ne nula si falsa in caz contrar. Variabilele care se vor folosi ca variabile logice vor fi declarate de tip intreg.

O alta caracteristica aparte o constituie introducerea tipului void, pentru a desemna "nimic" sau "orice tip", in functie de contextul in care este utilizat. In exemplele de pana acum tipul void a fost folosit pentru a indica faptul ca functia main nu intoarce nici o valoare.

Pentru a putea utiliza o variabila intr-un program C, este obligatorie declararea acesteia, astfel:

[clasa_de_memorie] TIP_DE_DATE lista_variabile;

unde:

clasa_de_memorie specifica locul unde se va aloca memorie pentru variabila si durata sa de viata, notiuni la care vom reveni mai tarziu). Specificarea clasei de memorie este optionala;

TIP_DE_DATE este orice tip predefinit sau derivat;

lista_variabile contine lista variabilelor de acel tip, despartite prin virgula;

Exemple:

int a,b,c;

char ch;

float x,y;

long int z;

int g=7;

Observatie: La declararea variabilei intregi g s-a realizat si initializarea acesteia ( adica stabilirea unei valori initiale).

Variabilele care sunt declarate in interiorul corpului unei functii se numesc variabile locale, iar cele declarate in afara oricarei functii din program se numesc variabile globale. Variabilele globale vor putea fi utilizate in toate functiile ce compun programul, iar variabilele locale doar in cadrul functiei in care au fost definite.