capitolul 1 introd

10
7/18/2019 Capitolul 1 Introd http://slidepdf.com/reader/full/capitolul-1-introd 1/10 Capitolul 1. Introducere în limbajul C++ 1.1. Despre limbajele C şi C++ Limbajul  a fost inventat şi implementat de doi programatori: Dennis Ritchie şi Ken Thompson, folosit de către primul calculator PDP-11 care utiliza sistemul de operare UNIX. El este continuarea unui alt limbaj denumit  B inventat de K. Thompson în 1970 şi folosit de acesta pentru primul sistem UNIX pe un calculator PDP-7 şi care avea la bază o versiune creată de Martin Richards. Limbajul  a fost descris pentru  prima dată în cartea lui B. Kerninghan şi D. Ritchie The C programming language, din anul 1978. Standardul ANSI C (American National Standards Institute) a fost adoptat în decembrie 1989. ANSI C este o  bază pentru propunerea de standardizare a limbajului C++. C++ este o versiune îmbunătăţită a limbajului C şi a fost elaborată de Bjarne Stroustrup în anul 1980, în cadrul laboratoarelor Bell. El este un limbaj orientat pe obiecte (fiind o extensie a limbajului ). Iniţial s-a numit C cu clase, dar în anul 1983 numele său a fost schimbat în C++. Acest limbaj a fost solicitat de complexitatea programelor . Deşi  este un limbaj foarte flexibil şi este excelent pentru programare, mai are încă limite. Dacă codul programului depăşeşte 100000 de linii de cod, programul  devine foarte complex şi greu de gestionat ca întreg. Scopul C++ este tocmai de a depăşi aceste bariere. În afară de modificările specifice programării orientate pe obiecte (POO) , există şi alte câteva  diferenţe între C++ şi . Acestea se situează în domeniul alocării dinamice (crearea unor variabile în timpul execuţiei programului) şi a declarării tipurilor de date definite de utilizator. Diferenţa între  şi C++ se manifestă şi la nivelul operaţiilor de intrare / ieşire. Stroustrup a creat în C++ un nou mecanism de tratare a operaţiilor de intrare / ieşire (I / O), mai flexibil decât în . Vechile operaţii de I / O din  sunt disponibile şi în C++. Deşi mulţi programatori folosesc şi astăzi  funcţiile de I / O definite în STDIO.H , există şi mulţi alţii care recomandă numai utilizarea bibliotecilor C++, care conţin funcţii de I / O în flux  ( stream). Foarte des, în C++ se foloseşte noţiunea de stream. Stream-ul este un concept abstract  prin care se înţelege orice flux de date de la o sursă la o destinaţie . Astfel se deosebesc stream-ul de ieşire (sursa = memoria internă, destinaţia = fişier oarecare) şi stream-ul de intrare (sursa = fişier oarecare, destinaţia = memoria internă) . La ora actuală sunt dezvoltate câteva variante de C++.  Totuşi C++ nu este încă standardizat ANSI. Este astfel catalogat ca fiind un "limbaj în lucru", fiind într- o continuă evoluţie. Astăzi, orice schimbare făcută în structura sa este supervizată de Comisia ANSI C++ , deciziile în acest sens nemaiputând fi luate doar de proiectanţii de la Bell. Această comisie lucrează la standardizarea limbajului şi a bibliotecilor sale  principale. Următoarele caracteristici ale limbajelor de nivel înalt caracterizează limbajele C, C++ :  conceptul de tip de dată, dar nu este centrat pe tipurile de date ca limbajul Pas cal, de exemplu, el  permiţând aproape toate tipurile de date;  este un limbaj structurat. Au de asemenea o serie de alte caracteristici specifice limbajelor de asamblare, cum ar fi operarea directă pe biţi, octeţi, cuvinte, pointeri ş.a.  Utilizarea limbajelor C, respectiv C++ atinge eficienţa codului de asamblare combinată cu structura limbajelor Algol sau Modula 2. Limbajul C++ are puţine cuvinte cheie  (32), puţine în comparaţie cu alte limbaje de nivel înalt. Toate cuvintele cheie se scriu cu litere mici . Orice cuvânt cheie trebuie folosit numai în scopul  pentru care a fost creat. Toate programele C++ constau din una sau mai multe funcţii. Singura funcţie care trebuie să fie  prezentă se numeşte main(). Ea este prima funcţie cu care începe  programul şi ea deţine controlul execuţiei întregului program. 1.2. Medii integrate de dezvoltare Mediul integrat de dezvoltare (Integrated Development Environment  –  IDE) se poate defini ca un ansamblu de instrumente care asistă programatorii în crearea de aplicaţi i software într-un anumit limbaj de  programare. În componenţa unui IDE se găsesc următoarele elemente:  editor de text specific (se numeşte şi editor de cod sursă);   compilator şi / sau interpretor;  unelte de build-automation.

Upload: dumitru-mihai

Post on 29-Feb-2016

216 views

Category:

Documents


0 download

DESCRIPTION

upc facultate

TRANSCRIPT

Page 1: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 1/10

Capitolul 1. Introducere în limbajul C++

1.1. Despre limbajele C şi C++ 

Limbajul C   a fost inventat şi implementat de doi programatori: Dennis Ritchie şi Ken Thompson,

folosit de către primul calculator PDP-11 care utiliza sistemul de operare UNIX. El este continuarea unui altlimbaj denumit B  inventat de K. Thompson în 1970 şi folosit de acesta pentru primul sistem UNIX pe uncalculator PDP-7 şi care avea la bază o versiune creată de Martin Richards. Limbajul C  a fost descris pentru prima dată în cartea lui B. Kerninghan şi D. Ritchie  The C programming language, din anul 1978.Standardul ANSI C (American National Standards Institute) a fost adoptat în decembrie 1989. ANSI C este o bază pentru propunerea de standardizare a limbajului C++.

C++ este o versiune îmbunătăţită a limbajului C şi a fost elaborată de Bjarne Stroustrup în anul 1980,în cadrul laboratoarelor Bell. El este un limbaj orientat pe obiecte (fiind o extensie a limbajului C ). Iniţial s-anumit C cu clase, dar în anul 1983  numele său a fost schimbat în C++. Acest limbaj a fost solicitat decomplexitatea programelor . Deşi C  este un limbaj foarte flexibil şi este excelent pentru programare, mai areîncă limite. Dacă codul programului depăşeşte 100000 de linii de cod, programul C  devine foarte complex şigreu de gestionat ca întreg. Scopul C++ este tocmai de a depăşi aceste bariere.

În afară de modificările specifice programării orientate pe obiecte (POO), există şi alte câteva diferenţe între C++ şi C . Acestea se situează în domeniul alocării dinamice (crearea unor variabile în timpulexecuţiei programului) şi a declarării tipurilor de date definite de utilizator. Diferenţa între C  şi C++ semanifestă şi la nivelul operaţiilor de intrare / ieşire. Stroustrup a creat în C++ un nou mecanism de tratarea operaţiilor de intrare / ieşire (I / O), mai flexibil decât în C . Vechile operaţii de I / O din C  sunt disponibileşi în C++. Deşi mulţi programatori folosesc şi astăzi funcţiile de I / O definite în STDIO.H , există şi mulţi alţii care recomandă numai utilizarea bibliotecilor C++, care conţin funcţii de I / O în flux  (stream). Foartedes, în C++ se foloseşte noţiunea de stream. Stream-ul este un concept abstract  prin care se înţelege oriceflux de date de la o sursă la o destinaţie . Astfel se deosebesc stream-ul de ieşire (sursa = memoria internă,destinaţia = fişier oarecare) şi stream-ul de intrare (sursa = fişier oarecare, destinaţia = memoria internă).

La ora actuală sunt dezvoltate câteva variante de C++.  Totuşi C++ nu este încă standardizat ANSI.Este astfel catalogat ca fiind un "limbaj în lucru", fiind într-o continuă evoluţie. Astăzi, orice schimbarefăcută în structura sa este supervizată de Comisia ANSI C++, deciziile în acest sens nemaiputând fi luate

doar de proiectanţii de la Bell. Această comisie lucrează la standardizarea limbajului şi a bibliotecilor sale principale.

Următoarele caracteristici ale limbajelor de nivel înalt caracterizează limbajele C, C++:  conceptul de tip de dată, dar nu este centrat pe tipurile de date ca limbajul Pas cal, de exemplu, el

 permiţând aproape toate tipurile de date;   este un limbaj structurat.

Au de asemenea o serie de alte caracteristici specifice limbajelor de asamblare, cum ar fi operareadirectă pe biţi, octeţi, cuvinte, pointeri ş.a. 

Utilizarea limbajelor C, respectiv C++ atinge eficienţa codului de asamblare combinată cu structuralimbajelor Algol sau Modula 2.

Limbajul C++ are puţine cuvinte cheie (32), puţine în comparaţie cu alte limbaje de nivel înalt.Toate cuvintele cheie se scriu cu litere mici. Orice cuvânt cheie trebuie folosit numai în scopul

 pentru care a fost creat.Toate programele C++ constau din una sau mai multe funcţii. Singura funcţie care trebuie să fie

 prezentă se numeşte main(). Ea este prima funcţie cu care începe  programul şi ea deţine controlul execuţieiîntregului program.

1.2. Medii integrate de dezvoltare

Mediul integrat de dezvoltare (Integrated Development Environment  –   IDE) se poate defini ca unansamblu de instrumente care asistă programatorii în crearea de aplicaţii software într-un anumit limbaj de programare.

În componenţa unui IDE se găsesc următoarele elemente:  

editor de text specific (se numeşte şi editor de cod sursă);   compilator şi / sau interpretor;  unelte de build-automation.

Page 2: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 2/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 2

Opţional, pe lângă aceste elemente pot fi prezente şi facilităţi de testare şi depanare, care la nevoieajută programatorul în activitatea de depistare şi corectare a erorilor. Asemenea opţiuni sunt:

  breakpoints  –   pentru întreruperea execuţiei algoritmului în punctele stabilite de programator;  trace  –   pentru execuţia pas-cu-pas a programului;  watch  –   pentru urmărirea conţinutului variabilelor.

O formă mai dezvoltată a mediilor integrate de dezvoltare reprezintă mediile integrate de dezvoltare

vizuală, această ultima categorie  vizând asistarea programatorului în realizarea interfeţelor grafice aleaplicaţiilor (Grafical User Interface  –  GUI). În aceste variante de IDE sunt integrate version control system şi alte unelte prin care se simplifică construcţia unui GUI. De asemenea, aceste IDE-uri moderne prezintă şiun inspector de obiecte, browser de clase, diagrama de ierarhii de clase, utile mai ales în programareaorientată pe obiecte. Obiectivul acestor IDE-uri mai dezvoltate este de a scuti programatorul de conceperea şiscrierea codului specific lucrului cu interfaţa grafică. 

În mod normal un IDE este specific unui limbaj de programare, dar la ora actuală, pe piaţă există maimulte IDE-uri care au implementate mai multe limbaje (IDE multi-limbaj), cum ar fi:

  Eclipse IDE;  Komodo IDE;  CodeBlocks; 

 NetBeans;  Microsoft Visual Studio (există varianta free Microsoft Visual Studio Express). 

De exemplu, Eclipse are ca limbaj de bază Java, dar dispune de plugin -yui pentru C / C++, Phyton,Perl, Ruby, Fortran, Cobol, PHP, JSP / Servlet, J2EE, OOD/OOP etc. Evident, toate cu propriul debugger  şiopţiuni IDE integrate proprii. 

În ceea ce urmează, se prezintă sub formă de tabele, câteva medii integrate de dezvoltare maicunoscute şi mai utilizate de programatori (tabelul 1.1).

Tabelul 1.1. Cele mai utilizate tipuri de IDE-uri

IDE pentru Windows, Linux, MAC

Code::Blocks

CodeLiteDialogBlocksEclipseSPE (Stani's Python Editor)wxHatchMinGW Developer Studio NetBeans C/C++ Development Pack

IDE exclusiv pentru Windows

Borland C++ BuilderDev-C++Microsoft Visual C++

Microsoft Visual StudioMicrosoft Visual Studio ExpressVisualWXPhilasmicos Entwickler StudioZeus IDE

IDE exclusiv pentru Linux

AnjutaCodeForgeKDevelop

IDE exclusiv pentru MAC OS

XcodeFiecare IDE cu compilatorul şi  / sau interpretorul lui sau cu o listă  de compilatoare şi  / sau

interpretoare, oferind şansa programatorului să decidă cu care doreşte să lucreze. 

Page 3: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 3/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 3

1.3. Compilare şi interpretare 

Un compilator este un instrument care primeşte la intrare un text scris într-un limbaj de programare  –  cod sursă –  şi produce la ieşire un text echivalent în limbaj de asamblare sau cod maşină –  cod obiect. Uncompilator este un translator.

Deosebirea între procesele de compilare şi interpretare constă în faptul că la prima categorie codulsursă este translatat în cod maşină, după care poate fi executat, iar la cea de a doua , programul este executatdirect din cod sursă prin intermediul unui instrument, numit interpretor. 

În continuare se prezintă o listă de com pilatoare, tipul sistemului de operare cu care sunt compatibile,dacă sunt gratuite sau nu şi mediile integrate de dezvoltare care le utilizează (tabelul 1.2).

Tabelul 1.2. Cele mai utilizate compilatoare

Compilator Windows Unix Tip licenţă  IDE

GCC DA DA GPLv3CodeBlocks, Eclipse, NetBeans,Kdevelop, Xcode

C++ Builder DA DA Cu plată  C++ Builder XE7Turbo C++ Explorer DA NU Gratuit PLplot, Turbo DelphiC++ Compiler DA NU Gratuit  Nu există Borland C++ DA NU Cu plată  UEStudio, CodeCutterClang DA DA BSD-like Xcode, QtCreatorIntel C++ Compiler DA DA Cu plată  Eclipse, Tizen, Visual Studio NetBeans DA NU Cu plată  NetBeansOpen64 NU DA GPLv2 modificat  Nu există XL C/C++ NU DA Cu plată  Eclipse, XcodeVisualAge C++ DA DA Cu plată  Lotus, VisualAge C++Visual C++ DA NU Cu plată  Visual Studio

Acest proces de compilare, în urma căruia codul sursă se transformă în limbaj cod maşină şi se

generează executabilul se întâmplă în mai multe faze. Principale faze ale compilării se pot urmări pe fig. 1.1.

 Fig. 1.1. Fazele procesului de compilare

Page 4: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 4/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 4

1.2. Structura programului

Un program C++ are următoarea structură: declaraţii globale tip_returnat main (lista de parametrii)

{instrucţiuni 

}tip_returnat f1 (lista de parametrii){

instrucţiuni }...tip_returnat fn (lista de parametrii){

instrucţiuni }

unde fiecare f i este numele unei funcţii; tip_returnat  repr ezintă tipul valorii calculate de funcţie.

Funcţia main()  reprezintă programul principal  care deţine controlul  informaţional  al întregului program, iar celelalte funcţii sunt apelate. Funcţia main nu poate fi apelată. Orice funcţie însă poate apela ofuncţie fie din program, fie din biblioteca sistemului. În acest caz ea se numeşte apelantă.

Instrucţiunile funcţiilor care descriu algoritmul implementat în funcţie se termină fiecare cu caracterul; şi se încadrează între acolade formând corpul funcţiei. Funcţia main() nu trebuie neapărat să fie prima în program ca ordine, dar ea va fi apelată prima dată la rularea programului.

Partea de program care deţine controlul întregului program se numeşte program principal. În C++acesta este reprezentat de funcţia main(). Celelalte sunt subprograme.

Subprogramele sunt de două tipuri:  funcţii  şi  proceduri. Ele sunt asemănătoare din punct de vederestructural.

O funcţie descrie un sub-algoritm şi returnează  programului apelant un singur  rezultat care este oconstantă de un anumit tip care trebuie precizat (tip_returnat ).

Exemplu:  un subprogram care calculează valoarea unui determinant al unei matrice  pătrate este un număr , deci

calculul determinantului poate fi descris de o funcţie. 

O procedură  descrie şi ea un sub-algoritm, dar poate returna programului apelant 0, unul sau maimulte rezultate. Prin urmare, procedura este mai generală decât funcţia.

Exemplu:  calculul sumei a doi vectori de acelaşi tip şi aceeaşi dimensiune se poate descrie folosind o procedură;   produsul a două matrice (tot o matrice)  poate fi descris de o procedură. 

 Modul de apelare le deosebeşte de asemenea.O funcţie se apelează prin citirea numelui său, urmat în paranteze de lista parametrilor actuali: 

dacă det(A)   0 atunci sistem compatibil,funcţia det(A) apare în expresia det(A)   0.

O procedură se apelează printr-o instrucţiune de apel de procedură.Funcţiile şi procedurile se împart în:

  intrinseci, ale limbajului, care sunt frecvent folosite de programatori, motiv pentru care sunt salvate în bibliotecile limbajului. Acestea sunt apelate atunci când este necesar (de exemplu: sin, cos etc.);

  definite de utilizator  şi create în procesul de rezolvare a problemelor.

În C  şi C++ nu există însă termenul de procedură, ci numai cel de funcţie. De asemenea nu existănici termenul de funcţie intrinsecă, ca în alte limbaje, acestea găsindu-se în diferite biblioteci.

Toate compilatoarele C   se livrează cu o bibliotecă standard de funcţii care efectuează operaţii de bază. C++ admite întreaga bibliotecă a standardului ANSI C. Prin urmare, toate funcţiile limbajului standard

C  sunt valabile atât în programele scrise în C , cât şi în C++. C++ are însă şi funcţii de bibliotecă proprii.Toate compilatoarele de C++ sunt şi compilatoare de C .Atunci când se compilează programe în C  fişierul trebuie să aibă extensia .C, iar când se compilează

 programe în C++, fişierele trebuie să aibă extensia .CPP.

Page 5: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 5/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 5

C  şi C++ nu permit scrierea funcţiilor în interiorul altor funcţii. 

Cel mai simplu program C++ este:  exemplu 1 (evident, nu realizează nimic):

main(){}

  exemplu 2:

//un program simplu care afişează pe monitor un mesaj de salut 

#include <iostream>using namespace std;

int main(){cout << "Acesta este primul meu program C++ !";return 0;

}

Examinând codul programului prezentat în exemplul 2, se remarcă următoarele caracteristici ale unui

 program scris în limbajul C++ :  comentariile care nu depăşesc o linie sunt precedate de caracterele // . Este acceptată şi modalitatea de

inserare a comentariilor în cadrul codului sursă prin folosirea, la începutul comentariului a caracterelor/* şi la sfârşitul comentariului a caracterelor */ . Această ultimă modalitate de inserare a comentariiloreste specifică limbajului C .

  programele acceptă codul sursă la două niveluri: global şi local (în funcţii). În limbajul C ++, funcţiilenu pot conţine la rândul lor subfuncţii (sau funcţii imbricate).

  funcţia main()  joacă un rol foarte important în viaţa unui program C++, pentru că execuţia oricăruiastfel de program începe cu ea. Prin urmare, un program C++ nu poate avea decât o singură funcţiemain().

  funcţia main() poate fi  plasată oriunde în cadrul codului sursă al programului. Întrucât main() este ofuncţie similară  (ca structură şi funcţionalitate) oricărei alte funcţii C++, ea poate avea propriile sale

tipuri de date locale, constante şi variabile. În plus, funcţia main() trebuie să returneze o valoare, la felca orice altă funcţie. 

  şirurile de caractere în C++ se scriu între ghilimele, în timp ce caracterele se scriu între apostrofuri.Exemplu: 'A' este un caracter; "A" reprezintă un şir de caractere format dintr -un singur caracter. C++tratează diferit 'A' şi "A".

  pentru a defini blocuri de program, în C++ se utilizează  caracterele paranteze acolade ( { }  ), pentruînceput, respectiv sfârşit de bloc. 

  fiecare instrucţiune dintr-un program C++ trebuie să aibă la sfârşit caracterul ; (punct şi virgulă).   acest program conţine  o directivă de  preprocesare #include. Pentru ca o funcţie să fie apelată, 

compilatorul trebuie să găsească anumite informaţii despre ea (prototipul său). Aceste informaţii segăsesc într -un fişier având extensia .h (în cazul de faţă  IOSTREAM.H ). A fost aleasă această extensie

datorită faptului că un astfel de fişier este considerat de tip header (antet). Prototipurile funcţiilor carepot fi apelate în cadrul limbajului să găsesc grupate în fişiere de tip header . Acestea reprezintă oresursă centrală pentru declaraţiile şi apelul unor funcţii utilizate în program. Mai multe funcţiiînrudite (de exemplu cele pentru citire / scriere) au prototipurile grupate în acelaşi fişier.  Fiecare program începe cu una sau mai multe instrucţiuni de includere a fişierelor antet. Aceste fişiere se află înmod normal într-un subdirector numit Include din cadrul directorului care conţine compilatorul de C++. În procesul de translatare a codului sursă în program executabil apare o nouă fază care se executăînaintea compilării. Această fază se numeşte preprocesare. Se execută de programul numitpreprocesor, care se apelează automat. În faza de preprocesare fişierul header este inclus în textulsursă. Directiva include solicită programului preprocesor  includerea în cadrul textului sursă a fişieruluiheader solicitat de programator.

  de asemenea, se poate observa prezenţa directivei de compilare using . Atenţie  la diferenţa  între

directiva using (using Directive) şi instrucţiunea de declarare using (using Declaration). În timp cedirectiva  using   permite identificatorilor într-un spaţiu de nume să fie utilizate fără specificareadenumirii spaţiului de nume ca şi calificator explicit, instrucţiunea de declarare using  permite definirea

Page 6: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 6/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 6

unui identificator într-o regiune declarativă. De exem plu, standardul ANSI/ISO C++ solicită declarareaexplicită a spaţiului de nume din biblioteca  standard . Ştiind acest lucru, programatorul când utilizează biblioteca iostream, pentru instrucţiunea de afişare cout   trebuie să specifice spaţiul de nume într -unuldin următoarele moduri: 

  explicit: std::cout;  utilizând directiva using : using namespace std; 

utilizând instrucţiunea de declarare using : using std::cout.  instrucţiunae "using namespace std;" este compusă din patru atomi lexicali: using, namespace sunt

cuvinte cheie, identificatorul std  –  care denumeşte spaţiul de nume standar d şi simbolul ";" prin care seîncheie orice instrucţiune simplă (cele compuse conţin bloc de instrucţiuni, deci în cazul lor seutilizează simbolurile {}). Mai devreme s-a explicat la ce se utilizează cuvântul cheie using . Încontinuare se  prezintă utilitatea  cuvântului namespace (spaţiu de nume). Acesta se defineşte ca oregiune declarativă car e oferă o modalitate de a separa un spaţiu  de nume de altul. În practică, caurmare a creşterii complexităţii programelor şi a utilizării unor biblioteci de funcţii şi de clase tot mai bogate, pentru evitarea coliziunilor dintre nume (utilizarea aceluiaşi identificator pentru obiectediferite) a fost introdus mecanismul namespace (fig. 1.2).

 Fig. 1.2. Mecanismul "namespace"

Pentru mai bună înţelegere, se consideră situaţia când în aceeaşi clasă se găsesc două persoane cunume identice, George. De fiecare dată când se doreşte diferenţierea lor este nevoie de o informaţiesuplimentară pe lângă numele lor. Prenume tată, prenume mamă, zona din care provin etc. Aceeaşi situaţie poate apărea şi în aplicaţiile C++. De exemplu, într -o secţiune de cod dintr -un program scris apare o funcţie cu numele calcul() şi într -o bibliotecă inclusă se găseşte o altă funcţie care poartă aceeaşi nume calcul() .Compilatorul nu dispune de căi de a afla care versiune a funcţiei s-a utilizat în cod. Mecanismul în discuţie afost conceput pentru a depăşi această dificultate şi practic este folosit ca informaţie suplimentară pentrudiferenţierea funcţiilor similare, claselor, variabilelor etc., care poartă ace laşi nume dar provin din biblioteci

separate. În concluzie, numele din cadrul unui spaţiu nu va intra în conflict cu acelaşi nume declarat în altspaţiu. Există spaţii de nume predefinite (sunt livrate cu bibliotecile ataşate standard compilatorului) şi există posibilitatea ca programatorul să definească propriile spaţii de nume. Sintaxa de definire a unui spaţiu denume este:

namespace nume_spaţiu_de_nume 

{

instrucţiuni; 

}

unde namespace  este cuvântul rezervat pentru definirea spaţiilor de nume, nume_spaţiu_de_nume  esteidentificatorul spaţiului de nume. Apelarea spaţiilor de nume se face prin: 

nume_spaţiu_de_nume::cod; 

unde cod   poate să fie o variabilă sau o funcţie.Exemplu de definire a unor spaţii de nume:

Page 7: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 7/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 7

#include <iostream>

using namespace std;

// spaţiu de nume #1 

namespace primul_spatiu_de_nume

{

void calcul(){cout << "Conţinut primul_spatiu_de_nume " << endl;

}

}

// spaţiu de nume #2 

namespace al_doilea_spatiu_de_nume

{

void calcul(){

cout << "Continut al_doilea_spatiu_de_nume " << endl;

}

}

int main ()

{

// Apelare funcţie din primul spaţiu de nume. 

primul_spatiu_de_nume::calcul();

// Apelare funcţie din al doilea spaţiu de nume. 

al_doilea_spatiu_de_nume::calcul();

return 0;

}

  programul C++ prezentat anterior afişează şirul de caractere Acesta este primul meu program

C++ !  la dispozitivul standard de ieşire, numit cout, care, în majoritatea cazurilor este monitorul.Acest lucru se realizează cu ajutorul operatorului de inserare <<.

  funcţia main() trebuie să returneze o valoare care să semnaleze o eventuală eroare în program. Faptulcă funcţia main()  a returnat valoarea 0  semnalează sistemului de operare  terminarea normală, fărăerori, a programului.

  instrucţiunile programului se separă şi se termină cu caracterul ;  (punct şi virgulă) şi se includ întreacolade ( { } ).

1.3. Gramatica limbajului

Limbajul C++ foloseşte următoarea mulţime de caractere: 

litere: cele 26  de litere mari şi mici ale alfabetului englez: A-Z , a-z ;  cifre: cele 10 cifre ale sistemului de numeraţie zecimal: 0-9;  caractere speciale: + - * / = < > ( ) [ ] { } ^ | & ! . , : ; # $ @ _ blanc % " '

Corespunzător  mulţimii acestor caractere se introduce operaţia de concatenare. În acest fel se obţincuvinte. Unele cuvinte au destinaţie specială şi se numesc cuvinte cheie ale limbajului.

Un identificator în C++ este un cuvânt format din litere, cifre şi liniuţa de subliniere ( _ ) , din care primul caracter nu trebuie să fie cifră. Într -un identificator literele mici şi cele mari sunt tratate distinct.

Exemple: a, viteza, putere, tensiune, b3.

sunt identificatori, dar:

6xi, sd'4, a b 

nu sunt identificatori.Cuvintele cheie au destinaţie specială şi nu trebuie folosite în alte scopuri în afara celor pentru care au

fost create. În comparaţie însă cu alte limbaje, C++ are puţine cuvinte cheie.

Page 8: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 8/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 8

Exemple: cout, cin, for, while, else.

Toate cuvintele cheie sunt scrise în C++ cu litere mici, limbajul făcând distincţie între literele mici

şi cele mari.

Exemplu: FOR nu este cuvânt cheie, însă for este cuvânt cheie.

Cuvintele formate din caractere şi care au o semnificaţie lingvistică se numesc unităţi lexicale. Ele sesepară  prin: blanc (spaţiu), CR (carr iage return –  tasta ENTER), caracterul ; (punct şi virgulă).

Comentariile se scriu în două moduri:  între caracterele perechi /* */, ca de exemplu:

/* Acesta este un comentariu * /

care poate fi scris pe mai multe linii;  scris pe o singură linie precedat de caractere //, ca de exemplu:

// Acesta este un comentariu

Exemplu:a=10; //variabilei a i s-a atribuit valoarea 10

b='V'; //variabilei b i s-a atribuit valoarea 'V'

1.4. Instrucţiunea de afişare cout 

Instrucţiunea de afişare permite afişarea pe ecr anul calculatorului a unor constante din program şi esteesenţială pentru limbaj.

Pentru C++ instrucţiunea de afişare este cout şi are următoarea sintaxă: cout<<e1<<e2<< ... <<en;

Este echivalentă cu următoarea secvenţă de instrucţiuni: cout << e1;

cout << e2;

...

cout << en;

unde e1, e2, ..., en sunt constante, variabile, funcţii, expresii în general.Constantele şir de caractere se scriu între ghilimele. Cuvântul cout reprezintă un flux de ieşire către

monitor, iar caracterele << se numesc operator de inserare.Instrucţiunea cout  solicită introducerea fişierului antet  iostream.h şi din acesta spaţiul  de nume

(namespace) std.Diagrama sintactică a instrucţiunii de ieşire cout << este prezentată în fig. 1.3.

 Fig. 1.3. Diagrama sintactică a instrucţiunii cout.

Prin stream  se înţelege un flux de informaţii care provine de la  o sursă de date către o destinaţie.Instrucţiunea cout arată că datele provin de la expresii şi sunt transmise către monitor.

Exemplecout<<11<<22;

 pe monitor se afişează: 1122 

cout<<11<<" "<<22<<' '<<33;

 pe monitor se afişează: 11  22  33 

cout<<11<<endl<<22;

 pe monitor se afişează: 11 22 

Instrucţiunea endl  (end line  –   sfârşit de linie) realizează salt la linia următoare. În locul acesteia se poate folosi caracterul de linie nouă \n.

Page 9: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 9/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 9

Caracterul \n se plasează în două moduri:   plasarea caracterului \n în şirul de caractere de ieşire, ceea ce conduce la afişarea informaţiilor pe două

linii:cout << "Universitatea Politehnica Timişoara \n Bd. V. Pârvan, nr. 2";

 pe monitor se afişează: Universitatea Politehnica Timişoara 

Bd. V. Pârvan, nr. 2

  plasarea caracterului \n între două apostrofuri: cout<<11<<'\n'<<22; 

 pe monitor se afişează: 11 22 

Se observă faptul că C++ tratează simbolul de linie nouă ca pe orice alt caracter: 'A', 'z', '$', '8' etc.În expresiile de ieşire se pot folosi caracterele speciale (coduri backslash) prezentate în Tabelul 1.1.

Tabelul 1.1. Codurile backslash ale limbajului C++

Nr. crt. Cod Semnificaţie 

1. \b Caracter backspace

2. \f Caracter avans de pagină 3. \n Caracter linie nouă 4. \r Carriage return (corespunde accesării tastei ENTER) 5. \t Caracter tabulator orizontal (salt de 8 caractere)6. \" Caracterul ghilimele7. \' Caracterul apostrof8. \0 Caracterul nul9. \\ Caracterul backslash

10. \v Caracterul tabulator vertical11. \a Caracterul de avertizare (sunet)12. \N Octal constant (unde N  este o constantă octală) 13. \xN Hexazecimal constant (unde N  este o constantă hexa) 

Toate aceste caractere se plasează între apostrofuri dacă se folosesc independent şi neîncadrate dacă seutilizează într -un şir.

Exemplu:

cout<<"Anul viitor este "<<2016;

 pe monitor se afişează: Anul viitor este 2016  Lăţimea câmpului de ieşire  poate fi setată cu modificatorul setw ( set width), cu sintaxa:

setw(n)

unde n  –   lăţimea câmpului  pe care urmează să fie afişată  valoarea, aliniată la dreapta în câmp. Utilizareamodificatorului setw(n) solicită introducerea fişierului antet <iomanip>.

Exemplu:#include <iostream>#include <iomanip>using namespace std;int main(){

cout<<"Anul acesta este "<<setw(4)<<2015<<endl;cout<<"Anul viitor este "<<setw(8)<<2016<<endl;return 0;

}

 pe monitor se afişează: Anul acesta este 2015Anul viitor este 2016

valoarea 2015  este afişată într -un câmp de lungime 4  –   setw(4)  – , iar valoarea 2016   într-un câmp delungime 8 –  setw(8), aliniate la dreapta în cadrul câmpului.

Page 10: Capitolul 1 Introd

7/18/2019 Capitolul 1 Introd

http://slidepdf.com/reader/full/capitolul-1-introd 10/10

Conf .dr.ing. Constantin Bărbulescu  –  Cap. 1. Introducere în limbajul C++  –  Note de curs  –  UPC2  –  2014-2015 10

1.5. Instrucţiunea de citire cin 

Pentru introducerea datelor de la tastatură limbajul C++ foloseşte instrucţiunea cin>>.

cin>>v1>>v2>>...>>vn;

unde v1, v2, ...., vn sunt variabile de un anumit tip.

Este echivalentă cu următoarea secvenţă de instrucţiuni: cin>>v 1;

cin>>v 2;

...

cin>>v n;

Diagrama sintactică a instrucţiunii de citire cin>> este prezentată în fig. 1.4.

 Fig. 1.4. Diagrama sintactică a instrucţiunii cin.

Instrucţiunea cin arată că datele provin de la tastatură şi sunt transmise către variabile.Înainte de citirea datelor, se execută o instrucţiune cout cu indicaţii asupra datelor care se introduc.Exemplu:

1.{int a, b, c;cout<<"Introduceţi valori întregi pentru a, b, c şi accesaţi tasta Enter";cin>>a>>b>>c;cout<<a<<'\t'<<b<<'\t'<<c<<endl;return 0;

}

2.{int a, b, c;cout<<"a, b, c =";cin>>a>>b>>c;cout<<a<<'\t'<<b<<'\t'<<c<<endl;return 0;

}

 pe monitor se afişează:

a, b, c =51015După rularea programului se afişează: 5 10 15

Folosind cuvântul cheie int s-a precizat faptul că datele introduse de la tastatură sunt de tip întreg.Datele se pot introduce de la tastatură în două moduri: 1. câte una pe un rând, după fiecare valoare introdusă tastând Enter (a se vedea exemplele anterioare); 

5 (Enter)

10 (Enter)

15 (Enter)

2. mai multe valori pe aceeaşi linie, caz în care se separă prin Tab, blancuri:

5 tab 10 tab 15

Date introduse trebuie să fie din domeniul tipului variabilelor, altfel va apare o eroare de depăşire. Deasemenea, datele tastate trebuie să fie de acelaşi tip cu cel al variabilelor corespunzătoare.