Sunteți pe pagina 1din 6

Introducere

Limbajul C++ este construit pe structura limbajului C, fiind unul dintre cele mai importante i populare limbaje din lume. n forma obinuit, C++ este o versiune dezvoltat a limbajului C standard ANSI (American National Standards Institute) care este un document de baz pentru standardul ANSI C++. Spre deosebire de C, limbajului C ++ i s-au adugat noi faciliti, acesta devenind mai riguros i permind programarea orientat pe obiecte (OOP). Limbajul C a fost inventat i inplementat prima oar de Dennis Ritchie pe un calculator DEC PDP-11 care utiliza sistemul de operare UNIX. Limbajul C este rezultatul unui process de dezvoltare care a nceput cu un limbaj numit BCPL, creat de Martin Richards. Plecnd de la limbajul BCPL, Ken Thompson a inventat un limbaj numit B, de la care, n anii 70, s-a ajuns la dezvoltarea limbajului C. O dat cu apariia calculatoarelor personale, au fost create numeroase implementri de C. Deoarece ntre aceste implementri apreau divergene, n 1983, a fost stabilit un comitet petru crearea unui standard ANSI care s defineasc limbajul C. Procesul de standardizare a durat 6 ani fiind adoptat n 1989, primele copii devenind disponibile n 1990. Astzi toate compilatoarele C/C++ se supun standardelor ANSI C. Limbajul C este un limbaj de nivel mediu, combinnd facilitile unui limbaj de nalt nivel (Pascal, Basic etc.) cu flexibilitatea unui limbaj de asamblare. C permite lucrul cu bii, octei i adrese elemente care stau la baza funcionrii calculatorului. De asemenea este un limbaj portabil, adic un soft, scris n C pentru un anumit calculator i un anumit sistem de operare, se adapteaz uor pe oricare altul. Spre deosebire de un limbaj de nalt nivel, C nu efectueaz aproape nici un control al erorilor, n timpul rulrii unui program,ntreaga responsabilitate revenindu-i programatorului. Limbajul C are doar 32 de cuvinte-cheie, spre deosebire de limbajelede nalt nivel care au mult mai multe. Cuvintele cheie ANSI C sunt urmtoarele: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static union unsigned void volatile while struct switch typedef

Cele cinci cuvinte-cheie accentuate au fost adaugate de ctre comitetul ANSI C. C este un limbaj structurat dar nu este structurat n blocuri , adic nu permite crearea de funcii n interiorul funciilor, componenta structural principal n C fiind funcia. Un alt mod de a structura i compartimenta un cod n C este utilizarea blocurilor de cod. Blocul de cod este ncadrat de acolade i constituie un singur element logic. n urmtorul exemplu,

if (x<10) { printf(Bloc de cod\n); scanf(%d,&x); } ambele instruciuni situate dup if sunt executate dac x este mai mic ca 10.

Structura unui program n C


n caz general, structura unui program n C este urmtoarea: declaraii globale returneaz-afiez main (lista de parametrii) { secven de instruciuni } returneaz-afiez funcia_1 (lista de parametrii) { secven de instruciuni } returneaz-afiez funcia_2 (lista de parametrii) { secven de instruciuni } returneaz-afiez funcia_N (lista de parametrii) { secven de instruciuni } Majoritatea programelor includ apeluri la biblioteca standard, adic ncep cu una sau mai multe instruciuni #include. Instruciunea #include cere compilatorului s foloseasc coninutul unui anumit fiier. Acesta este un fiier ASCII, conine cod surs n C i are extensia h. Numele fiierului trebuie ncadrat de delimitatorii < >. De exemplu, n programul: #include <stdio.h> void main(void) { printf("Program in C"); } i se cere compilatorului utilizarea fisierului stdio.h. Observaie: Fiierele apelate cu directiva #include sunt denumite fiiere antet (header) sau fiiere includ. Dup directiva #include, de obicei se utilizeaz o instruciune de genul: void main(void) 2

instruciune care, pentru compilator, identific grupul de instruciuni ce trebuie executate mai nti, adic instruciunile programului principal. Instruciunile sunt ncadrate de dou acolade({ }). Cnd ntre acolade sunt plasate mai multe instruciuni, acestea se separ prin caracterul punct i virgul (;) #include <stdio.h> void main(void) { printf("Program"); printf(" in "); printf("C"); } Pentru a explica procesele ce se execut ntr-un program, se pot utiliza comentarii. Acestea se pot scrie pe un singur rnd, caz n care trebuie s nceap cu dou caractere slash: // comentariu sau se pot scrie pe unul sau mai multe rnduri , dac sunt ncadrate de grupurile de caractere: (/*) i (*/): /* comentariu*/ De exemplu, urmtorul program conine dou categorii de comentariu: //Acesta este un comentariu de un rand /* Acesta este un comentariu pe doua randuri */ #include <stdio.h> void main(void) { printf("Program in C"); }

Tipuri de date fundamentale


O variabil este un nume pe care compilatorul de C l asociaz cu una sau mai multe locaii de memorie. Tipul unei variabile specific setul de valori pe care variabila le poate pstra i setul de operaii pe care programul le poate executa asupra datelor. n C, exist cinci tipuri de date fundamentale: caracter (char); ntreg (int); n virgul mobil(float); n virgul mobil cu dubl precizie(double); fr nici o valoare (void).

Toate celelalte tipuri de date se bazeaz pe acestea cinci, gama tipurilor fiind extins de urmtorii modificatori de tip: signed, unsigned, register, short i long. Tipului char i se pot aplica modificatorii signed i unsigned, tipului int i se pot aplica modificatorii signed, unsigned, short i long, iar tipului double i se poate aplica modificatorul long. Modificatorul register se utilizeaz pentru a indica compilatorului ca o anume variabil, des utilizat, (de exemplu un contor) s fi pstrat ntr-un registru. n acest fel scade timpul de acces la variabila respectiv. Un modificator de tip schimb domeniul valorilor pe care o variabil le poate pstra sau modul n care compilatorul pstreaz o variabil. Tipuri de date caracter Variabilelor de tip char li se aloc un octet. Acestea pot s pstreze valori n intervalul dintre 128 i 127. Aceste afirmaii sunt valabile i pentru tipul signed char. n fig.1, este reprezentat o variabil de tip char sau signed char, n libajul C. 1 octet

7 bii de date Bit de semn Fig. 1. Reprezentarea unei valori de tip char sau signed char. Variabilelor de tip unsigned char li se aloc tot un octet, dar nu se mai rezerv bit pentru semn. Acestea pot s pstreze valori n intervalul dintre 0 i 255. n fig.2, este reprezentat o variabil de tip unsigned char, n libajul C. 1 octet

8 bii de date Fig. 2. Reprezentarea unei valori de tip unsigned char. Tipuri de date ntreg Variabilelor de tip int li se aloc 2 octei. Acestea pot s pstreze valori n intervalul dintre 32.768 i 32.767. Aceste afirmaii sunt valabile i pentru tipurile signed int, short int sau signed short int. n fig.3, este reprezentat o variabil de tip signed int, short int sau signed short int, n libajul C.

2 octei

Bit de semn

15 bii de date

Fig. 3. Reprezentarea unei valori de tip int, signed int, short int sau signed short int. Variabilelor de tip unsigned int li se aloc tot doi octei, dar nu se mai rezerv bit pentru semn. Acestea pot s pstreze valori n intervalul dintre 0 i 65.535. Aceste afirmaii sunt valabile i pentru tipurile unsigned short int. n fig.4, este reprezentat o variabil de tip unsigned int sau de tip unsigned short int, n libajul C. 2 octei

16 bii de date Fig. 4. Reprezentarea unei valori de tip unsigned int sau unsigned short int. Variabilelor de tip long int li se aloc patru octei. Acestea pot s pstreze valori n intervalul dintre 2.147.483.648 i 2.147.483.647. Aceste afirmaii sunt valabile i pentru tipurile signed long int. n fig.5, este reprezentat o variabil de tip long int sau signed long int, n libajul C. 4 octei

Bit de semn

31 bii de date

Fig. 5. Reprezentarea unei valori de tip long int sau signed long int. Variabilelor de tip unsigned long int li se aloc patru octei, dar nu se rezerv bit pentru semn. Acestea pot s pstreze valori n intervalul dintre 0 i 4.294.967.295. n fig.6, este reprezentat o variabil de tip unsigned long int, n libajul C. 4 octei

32 bii de date Fig. 6. Reprezentarea unei valori de tip unsigned long int.

Tipul de date float Variabilelor de tip float li se aloc patru octei: un bit pentru semn, 8 bii pentru exponent i 23 de bii pentru mantis. Aceste variabile pot s pstreze valori n intervalul dintre 3.4E-38 i 3.4E+38. n fig.7, este reprezentat o variabil de tip float, n libajul C. 4 octei

Exponent pe 8 bii Mantis pe 23 bii Bit de semn Fig. 6. Reprezentarea unei valori de tip float. Tipuri de date n dubl precizie Variabilelor de tip double li se aloc opt octei: un bit pentru semn, 11 bii pentru exponent i 52 de bii pentru mantis. Aceste variabile pot s pstreze valori n intervalul dintre 1.7E-308 i 1.7E+308. Variabilelor de tip long double li se aloc 10 octei: un bit pentru semn, 19 bii pentru exponent i 60 de bii pentru mantis. Aceste variabile pot s pstreze valori n intervalul dintre 3.4E-4932 i 1.1E+4932. Precizia este de 80 de cifre.

Nume de identificatori
Identificatorii sunt nume de variabile, constante, funcii sau alte obiecte definite de ctre utilizator. Identificatorii pot s conin unul sau mai multe caractere; primul caracter trebuie s fie o liter sau caracterul de subliniere ( _ ), iar urmtoarele pot fi litere, cifre sau caracterul de subliniere. De exemplu, identificatorii: a, nume, fis_1, _ab sunt coreci, iar identificatorii: 1a, n!, fis..1 sunt incoreci. Observaii: 1. ntr-un identificator literele mari sunt tratate distinct de literele mici. De exemplu, urmtorii identificatori sunt diferii: nume, Nume, NUME. 2. Un identificator nu poate fi identic cu un cuvnt-cheie.