Sunteți pe pagina 1din 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 ctre 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 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 mbuntit 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). Iniial s-a
numit C cu clase, dar n anul 1983 numele su a fost schimbat n C++. Acest limbaj a fost solicitat de
complexitatea programelor. Dei C este un limbaj foarte flexibil i este excelent pentru programare, mai are
nc limite. Dac codul programului depete 100000 de linii de cod, programul C devine foarte complex i
greu de gestionat ca ntreg. Scopul C++ este tocmai de a depi aceste bariere.
n afar de modificrile specifice programrii orientate pe obiecte (POO), exist i alte cteva
diferene ntre C++ i C. Acestea se situeaz n domeniul alocrii dinamice (crearea unor variabile n timpul
execuiei programului) i a declarrii tipurilor de date definite de utilizator. Diferena ntre C i C++ se
manifest i la nivelul operaiilor de intrare / ieire. Stroustrup a creat n C++ un nou mecanism de tratare
a operaiilor de intrare / ieire (I / O), mai flexibil dect n C. Vechile operaii de I / O din C sunt disponibile
i n C++. Dei muli programatori folosesc i astzi funciile de I / O definite n STDIO.H, exist i muli
alii care recomand numai utilizarea bibliotecilor C++, care conin funcii de I / O n flux (stream). Foarte
des, n C++ se folosete noiunea de stream. Stream-ul este un concept abstract prin care se nelege orice
flux de date de la o surs la o destinaie. Astfel se deosebesc stream-ul de ieire (sursa = memoria intern,
destinaia = fiier oarecare) i stream-ul de intrare (sursa = fiier oarecare, destinaia = memoria intern).
La ora actual sunt dezvoltate cteva variante de C++. Totui C++ nu este nc standardizat ANSI.
Este astfel catalogat ca fiind un "limbaj n lucru", fiind ntr-o continu evoluie. Astzi, orice schimbare
fcut n structura sa este supervizat de Comisia ANSI C++, deciziile n acest sens nemaiputnd fi luate
doar de proiectanii de la Bell. Aceast comisie lucreaz la standardizarea limbajului i a bibliotecilor sale
principale.
Urmtoarele 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 Pascal, de exemplu, el
permind 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 bii, octei, cuvinte, pointeri .a.
Utilizarea limbajelor C, respectiv C++ atinge eficiena codului de asamblare combinat cu structura
limbajelor Algol sau Modula 2.
Limbajul C++ are puine cuvinte cheie (32), puine n comparaie cu alte limbaje de nivel nalt.
Toate cuvintele cheie se scriu cu litere mici. Orice cuvnt cheie trebuie folosit numai n scopul
pentru care a fost creat.
Toate programele C++ constau din una sau mai multe funcii. Singura funcie care trebuie s fie
prezent se numete main(). Ea este prima funcie cu care ncepe programul i ea deine controlul execuiei
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 aplicaii software ntr-un anumit limbaj de
programare.
n componena unui IDE se gsesc urmtoarele elemente:
editor de text specific (se numete i editor de cod surs);
compilator i / sau interpretor;
unelte de build-automation.

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

Opional, pe lng aceste elemente pot fi prezente i faciliti de testare i depanare, care la nevoie
ajut programatorul n activitatea de depistare i corectare a erorilor. Asemenea opiuni sunt:
breakpoints pentru ntreruperea execuiei algoritmului n punctele stabilite de programator;
trace pentru execuia pas-cu-pas a programului;
watch pentru urmrirea coninutului variabilelor.
O form mai dezvoltat a mediilor integrate de dezvoltare reprezint mediile integrate de dezvoltare
vizual, aceast ultima categorie viznd asistarea programatorului n realizarea interfeelor grafice ale
aplicaiilor (Grafical User Interface GUI). n aceste variante de IDE sunt integrate version control system
i alte unelte prin care se simplific construcia unui GUI. De asemenea, aceste IDE-uri moderne prezint i
un inspector de obiecte, browser de clase, diagrama de ierarhii de clase, utile mai ales n programarea
orientat pe obiecte. Obiectivul acestor IDE-uri mai dezvoltate este de a scuti programatorul de conceperea i
scrierea codului specific lucrului cu interfaa grafic.
n mod normal un IDE este specific unui limbaj de programare, dar la ora actual, pe pia exist mai
multe 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 i
opiuni IDE integrate proprii.
n ceea ce urmeaz, se prezint sub form de tabele, cteva medii integrate de dezvoltare mai
cunoscute 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
CodeLite
DialogBlocks
Eclipse
SPE (Stani's Python Editor)
wxHatch
MinGW Developer Studio
NetBeans C/C++ Development Pack
IDE exclusiv pentru Windows

Borland C++ Builder


Dev-C++
Microsoft Visual C++
Microsoft Visual Studio
Microsoft Visual Studio Express
VisualWX
Philasmicos Entwickler Studio
Zeus IDE
IDE exclusiv pentru Linux

Anjuta
CodeForge
KDevelop
IDE exclusiv pentru MAC OS

Xcode
Fiecare IDE cu compilatorul i / sau interpretorul lui sau cu o list de compilatoare i / sau
interpretoare, oferind ansa programatorului s decid cu care dorete s lucreze.

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

1.3. Compilare i interpretare


Un compilator este un instrument care primete la intrare un text scris ntr-un limbaj de programare
cod surs i produce la ieire un text echivalent n limbaj de asamblare sau cod main cod obiect. Un
compilator este un translator.
Deosebirea ntre procesele de compilare i interpretare const n faptul c la prima categorie codul
surs este translatat n cod main, dup care poate fi executat, iar la cea de a doua, programul este executat
direct din cod surs prin intermediul unui instrument, numit interpretor.
n continuare se prezint o list de compilatoare, 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

GCC

DA

DA

C++ Builder
Turbo C++ Explorer
C++ Compiler
Borland C++
Clang
Intel C++ Compiler
NetBeans
Open64
XL C/C++
VisualAge C++
Visual C++

DA
DA
DA
DA
DA
DA
DA
NU
NU
DA
DA

DA
NU
NU
NU
DA
DA
NU
DA
DA
DA
NU

Tip licen

IDE

CodeBlocks, Eclipse, NetBeans,


GPLv3
Kdevelop, Xcode
Cu plat
C++ Builder XE7
Gratuit
PLplot, Turbo Delphi
Gratuit
Nu exist
Cu plat
UEStudio, CodeCutter
BSD-like
Xcode, QtCreator
Cu plat
Eclipse, Tizen, Visual Studio
Cu plat
NetBeans
GPLv2 modificat Nu exist
Cu plat
Eclipse, Xcode
Cu plat
Lotus, VisualAge C++
Cu plat
Visual Studio

Acest proces de compilare, n urma cruia codul surs se transform n limbaj cod main i se
genereaz executabilul se ntmpl n mai multe faze. Principale faze ale compilrii se pot urmri pe fig. 1.1.

Fig. 1.1. Fazele procesului de compilare

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

1.2. Structura programului


Un program C++ are urmtoarea structur:
declaraii globale
tip_returnat main (lista de parametrii)
{
instruciuni
}
tip_returnat f1 (lista de parametrii)
{
instruciuni
}
...
tip_returnat fn (lista de parametrii)
{
instruciuni
}

unde fiecare fi este numele unei funcii; tip_returnat reprezint tipul valorii calculate de funcie.
Funcia main() reprezint programul principal care deine controlul informaional al ntregului
program, iar celelalte funcii sunt apelate. Funcia main nu poate fi apelat. Orice funcie ns poate apela o
funcie fie din program, fie din biblioteca sistemului. n acest caz ea se numete apelant.
Instruciunile funciilor care descriu algoritmul implementat n funcie se termin fiecare cu caracterul
; i se ncadreaz ntre acolade formnd corpul funciei. Funcia main() nu trebuie neaprat s fie prima n
program ca ordine, dar ea va fi apelat prima dat la rularea programului.
Partea de program care deine controlul ntregului program se numete program principal. n C++
acesta este reprezentat de funcia main(). Celelalte sunt subprograme.
Subprogramele sunt de dou tipuri: funcii i proceduri. Ele sunt asemntoare din punct de vedere
structural.
O funcie descrie un sub-algoritm i returneaz programului apelant un singur rezultat care este o
constant de un anumit tip care trebuie precizat (tip_returnat).
Exemplu:
un subprogram care calculeaz valoarea unui determinant al unei matrice ptrate este un numr, deci
calculul determinantului poate fi descris de o funcie.
O procedur descrie i ea un sub-algoritm, dar poate returna programului apelant 0, unul sau mai
multe rezultate. Prin urmare, procedura este mai general dect funcia.
Exemplu:
calculul sumei a doi vectori de acelai tip i aceeai dimensiune se poate descrie folosind o procedur;
produsul a dou matrice (tot o matrice) poate fi descris de o procedur.
Modul de apelare le deosebete de asemenea.
O funcie se apeleaz prin citirea numelui su, urmat n paranteze de lista parametrilor actuali:
dac det(A) 0 atunci sistem compatibil,
funcia det(A) apare n expresia det(A) 0.
O procedur se apeleaz printr-o instruciune de apel de procedur.
Funciile 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 cnd 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 funcie. De asemenea nu exist
nici termenul de funcie intrinsec, ca n alte limbaje, acestea gsindu-se n diferite biblioteci.
Toate compilatoarele C se livreaz cu o bibliotec standard de funcii care efectueaz operaii de baz.
C++ admite ntreaga bibliotec a standardului ANSI C. Prin urmare, toate funciile limbajului standard
C sunt valabile att n programele scrise n C, ct i n C++. C++ are ns i funcii de bibliotec proprii.
Toate compilatoarele de C++ sunt i compilatoare de C.
Atunci cnd se compileaz programe n C fiierul trebuie s aib extensia .C, iar cnd se compileaz
programe n C++, fiierele trebuie s aib extensia .CPP.

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

C i C++ nu permit scrierea funciilor n interiorul altor funcii.


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

exemplu 2:
//un program simplu care afieaz pe monitor un mesaj de salut
#include <iostream>
using namespace std;
int main()
{
cout << "Acesta este primul meu program C++ !";
return 0;
}

Examinnd codul programului prezentat n exemplul 2, se remarc urmtoarele caracteristici ale unui
program scris n limbajul C++ :
comentariile care nu depesc 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 sfritul comentariului a caracterelor */ . Aceast ultim modalitate de inserare a comentariilor
este specific limbajului C.
programele accept codul surs la dou niveluri: global i local (n funcii). n limbajul C++, funciile
nu pot conine la rndul lor subfuncii (sau funcii imbricate).
funcia main() joac un rol foarte important n viaa unui program C++, pentru c execuia oricrui
astfel de program ncepe cu ea. Prin urmare, un program C++ nu poate avea dect o singur funcie
main().
funcia main() poate fi plasat oriunde n cadrul codului surs al programului. ntruct main() este o
funcie similar (ca structur i funcionalitate) oricrei alte funcii C++, ea poate avea propriile sale
tipuri de date locale, constante i variabile. n plus, funcia main() trebuie s returneze o valoare, la fel
ca orice alt funcie.
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 sfrit de bloc.
fiecare instruciune dintr-un program C++ trebuie s aib la sfrit caracterul ; (punct i virgul).
acest program conine o directiv de preprocesare #include. Pentru ca o funcie s fie apelat,
compilatorul trebuie s gseasc anumite informaii despre ea (prototipul su). Aceste informaii se
gsesc ntr-un fiier avnd extensia .h (n cazul de fa IOSTREAM.H). A fost aleas aceast extensie
datorit faptului c un astfel de fiier este considerat de tip header (antet). Prototipurile funciilor care
pot fi apelate n cadrul limbajului s gsesc grupate n fiiere de tip header. Acestea reprezint o
resurs central pentru declaraiile i apelul unor funcii utilizate n program. Mai multe funcii
nrudite (de exemplu cele pentru citire / scriere) au prototipurile grupate n acelai fiier. Fiecare
program ncepe cu una sau mai multe instruciuni de includere a fiierelor antet. Aceste fiiere se afl n
mod normal ntr-un subdirector numit Include din cadrul directorului care conine compilatorul de C++.
n procesul de translatare a codului surs n program executabil apare o nou faz care se execut
naintea compilrii. Aceast faz se numete preprocesare. Se execut de programul numit
preprocesor, care se apeleaz automat. n faza de preprocesare fiierul header este inclus n textul
surs. Directiva include solicit programului preprocesor includerea n cadrul textului surs a fiierului
header solicitat de programator.
de asemenea, se poate observa prezena directivei de compilare using. Atenie la diferena ntre
directiva using (using Directive) i instruciunea de declarare using (using Declaration). n timp ce
directiva using permite identificatorilor ntr-un spaiu de nume s fie utilizate fr specificarea
denumirii spaiului de nume ca i calificator explicit, instruciunea de declarare using permite definirea

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

unui identificator ntr-o regiune declarativ. De exemplu, standardul ANSI/ISO C++ solicit declararea
explicit a spaiului de nume din biblioteca standard. tiind acest lucru, programatorul cnd utilizeaz
biblioteca iostream, pentru instruciunea de afiare cout trebuie s specifice spaiul de nume ntr-unul
din urmtoarele moduri:
explicit: std::cout;
utiliznd directiva using: using namespace std;
utiliznd instruciunea de declarare using: using std::cout.
instruciunae "using namespace std;" este compus din patru atomi lexicali: using, namespace sunt
cuvinte cheie, identificatorul std care denumete spaiul de nume standard i simbolul ";" prin care se
ncheie orice instruciune simpl (cele compuse conin bloc de instruciuni, deci n cazul lor se
utilizeaz simbolurile {}). Mai devreme s-a explicat la ce se utilizeaz cuvntul cheie using. n
continuare se prezint utilitatea cuvntului namespace (spaiu de nume). Acesta se definete ca o
regiune declarativ care ofer o modalitate de a separa un spaiu de nume de altul. n practic, ca
urmare a creterii complexitii programelor i a utilizrii unor biblioteci de funcii i de clase tot mai
bogate, pentru evitarea coliziunilor dintre nume (utilizarea aceluiai identificator pentru obiecte
diferite) a fost introdus mecanismul namespace (fig. 1.2).

Fig. 1.2. Mecanismul "namespace"


Pentru mai bun nelegere, se consider situaia cnd n aceeai clas se gsesc dou persoane cu
nume identice, George. De fiecare dat cnd se dorete diferenierea lor este nevoie de o informaie
suplimentar pe lng numele lor. Prenume tat, prenume mam, zona din care provin etc. Aceeai situaie
poate aprea i n aplicaiile C++. De exemplu, ntr-o seciune de cod dintr-un program scris apare o funcie
cu numele calcul() i ntr-o bibliotec inclus se gsete o alt funcie care poart aceeai nume calcul() .
Compilatorul nu dispune de ci de a afla care versiune a funciei s-a utilizat n cod. Mecanismul n discuie a
fost conceput pentru a depi aceast dificultate i practic este folosit ca informaie suplimentar pentru
diferenierea funciilor similare, claselor, variabilelor etc., care poart acelai nume dar provin din biblioteci
separate. n concluzie, numele din cadrul unui spaiu nu va intra n conflict cu acelai nume declarat n alt
spaiu. Exist spaii de nume predefinite (sunt livrate cu bibliotecile ataate standard compilatorului) i exist
posibilitatea ca programatorul s defineasc propriile spaii de nume. Sintaxa de definire a unui spaiu de
nume este:
namespace nume_spaiu_de_nume
{
instruciuni;
}

unde namespace este cuvntul rezervat pentru definirea spaiilor de nume, nume_spaiu_de_nume este
identificatorul spaiului de nume. Apelarea spaiilor de nume se face prin:
nume_spaiu_de_nume::cod;

unde cod poate s fie o variabil sau o funcie.


Exemplu de definire a unor spaii de nume:

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

#include <iostream>
using namespace std;
// spaiu de nume #1
namespace primul_spatiu_de_nume
{
void calcul(){
cout << "Coninut primul_spatiu_de_nume " << endl;
}
}
// spaiu de nume #2
namespace al_doilea_spatiu_de_nume
{
void calcul(){
cout << "Continut al_doilea_spatiu_de_nume " << endl;
}
}
int main ()
{
// Apelare funcie din primul spaiu de nume.
primul_spatiu_de_nume::calcul();
// Apelare funcie din al doilea spaiu de nume.
al_doilea_spatiu_de_nume::calcul();
return 0;
}

programul C++ prezentat anterior afieaz irul de caractere Acesta este primul meu program
C++ ! la dispozitivul standard de ieire, numit cout, care, n majoritatea cazurilor este monitorul.
Acest lucru se realizeaz cu ajutorul operatorului de inserare <<.
funcia main() trebuie s returneze o valoare care s semnaleze o eventual eroare n program. Faptul
c funcia main() a returnat valoarea 0 semnaleaz sistemului de operare terminarea normal, fr
erori, a programului.
instruciunile programului se separ i se termin cu caracterul ; (punct i virgul) i se includ ntre
acolade ( { } ).

1.3. Gramatica limbajului


Limbajul C++ folosete urmtoarea mulime de caractere:
litere: cele 26 de litere mari i mici ale alfabetului englez: A-Z, a-z;
cifre: cele 10 cifre ale sistemului de numeraie zecimal: 0-9;
caractere speciale: + - * / = < > ( ) [ ] { } ^ | & ! . , : ; # $ @ _ blanc % " '
Corespunztor mulimii acestor caractere se introduce operaia de concatenare. n acest fel se obin
cuvinte. Unele cuvinte au destinaie special i se numesc cuvinte cheie ale limbajului.
Un identificator n C++ este un cuvnt format din litere, cifre i liniua 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 destinaie special i nu trebuie folosite n alte scopuri n afara celor pentru care au
fost create. n comparaie ns cu alte limbaje, C++ are puine cuvinte cheie.

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

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


Toate cuvintele cheie sunt scrise n C++ cu litere mici, limbajul fcnd distincie ntre literele mici
i cele mari.
Exemplu: FOR nu este cuvnt cheie, ns for este cuvnt cheie.
Cuvintele formate din caractere i care au o semnificaie lingvistic se numesc uniti lexicale. Ele se
separ prin: blanc (spaiu), CR (carriage 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. Instruciunea de afiare cout


Instruciunea de afiare permite afiarea pe ecranul calculatorului a unor constante din program i este
esenial pentru limbaj.
Pentru C++ instruciunea de afiare este cout i are urmtoarea sintax:
cout<<e1<<e2<< ... <<en;

Este echivalent cu urmtoarea secven de instruciuni:


cout << e1;
cout << e2;
...
cout << en;

unde e1, e2, ..., en sunt constante, variabile, funcii, expresii n general.
Constantele ir de caractere se scriu ntre ghilimele. Cuvntul cout reprezint un flux de ieire ctre
monitor, iar caracterele << se numesc operator de inserare.
Instruciunea cout solicit introducerea fiierului antet iostream.h i din acesta spaiul de nume
(namespace) std.
Diagrama sintactic a instruciunii de ieire cout << este prezentat n fig. 1.3.

Fig. 1.3. Diagrama sintactic a instruciunii cout.

Prin stream se nelege un flux de informaii care provine de la o surs de date ctre o destinaie.
Instruciunea cout arat c datele provin de la expresii i sunt transmise ctre monitor.

Exemple
cout<<11<<22;

pe monitor se afieaz: 1122


cout<<11<<"

"<<22<<' '<<33;

pe monitor se afieaz: 11 22 33
cout<<11<<endl<<22;

pe monitor se afieaz: 11

22
Instruciunea endl (end line sfrit de linie) realizeaz salt la linia urmtoare. n locul acesteia se
poate folosi caracterul de linie nou \n.

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

Caracterul \n se plaseaz n dou moduri:


plasarea caracterului \n n irul de caractere de ieire, ceea ce conduce la afiarea informaiilor pe dou
linii:
cout << "Universitatea Politehnica Timioara \n Bd. V. Prvan, nr. 2";

pe monitor se afieaz:
Universitatea Politehnica Timioara
Bd. V. Prvan, nr. 2

plasarea caracterului \n ntre dou apostrofuri:


cout<<11<<'\n'<<22;

pe monitor se afieaz: 11
22
Se observ faptul c C++ trateaz simbolul de linie nou ca pe orice alt caracter: 'A', 'z', '$', '8' etc.
n expresiile de ieire se pot folosi caracterele speciale (coduri backslash) prezentate n Tabelul 1.1.
Tabelul 1.1. Codurile backslash ale limbajului C++
Nr. crt.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.

Cod
\b
\f
\n
\r
\t
\"
\'
\0
\\
\v
\a
\N
\xN

Semnificaie
Caracter backspace
Caracter avans de pagin
Caracter linie nou
Carriage return (corespunde accesrii tastei ENTER)
Caracter tabulator orizontal (salt de 8 caractere)
Caracterul ghilimele
Caracterul apostrof
Caracterul nul
Caracterul backslash
Caracterul tabulator vertical
Caracterul de avertizare (sunet)
Octal constant (unde N este o constant octal)
Hexazecimal constant (unde N este o constant hexa)

Toate aceste caractere se plaseaz ntre apostrofuri dac se folosesc independent i nencadrate dac se
utilizeaz ntr-un ir.
Exemplu:
cout<<"Anul viitor este "<<2016;

pe monitor se afieaz: Anul viitor este 2016


Limea cmpului de ieire poate fi setat cu modificatorul setw (set width), cu sintaxa:
setw(n)

unde n limea cmpului pe care urmeaz s fie afiat valoarea, aliniat la dreapta n cmp. Utilizarea
modificatorului setw(n) solicit introducerea fiierului 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 afieaz:
Anul acesta este 2015
Anul viitor este

2016

valoarea 2015 este afiat ntr-un cmp de lungime 4 setw(4) , iar valoarea 2016 ntr-un cmp de
lungime 8 setw(8), aliniate la dreapta n cadrul cmpului.

Conf.dr.ing. Constantin Brbulescu Cap. 1. Introducere n limbajul C++ Note de curs UPC2 2014-2015

10

1.5. Instruciunea de citire cin


Pentru introducerea datelor de la tastatur limbajul C++ folosete instruciunea cin>>.
cin>>v1>>v2>>...>>vn;

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


Este echivalent cu urmtoarea secven de instruciuni:
cin>>v1;
cin>>v2;
...
cin>>vn;

Diagrama sintactic a instruciunii de citire cin>> este prezentat n fig. 1.4.

Fig. 1.4. Diagrama sintactic a instruciunii cin.

Instruciunea cin arat c datele provin de la tastatur i sunt transmise ctre variabile.
nainte de citirea datelor, se execut o instruciune cout cu indicaii asupra datelor care se introduc.
Exemplu:
1.
{
int a, b, c;
cout<<"Introducei valori ntregi pentru a, b, c i accesai 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 afieaz:
a, b, c =
5
10
15
Dup rularea programului se afieaz:
5
10
15
Folosind cuvntul 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. cte una pe un rnd, dup fiecare valoare introdus tastnd Enter (a se vedea exemplele anterioare);
5 (Enter)
10 (Enter)
15 (Enter)
2. mai multe valori pe aceeai 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 depire. De
asemenea, datele tastate trebuie s fie de acelai tip cu cel al variabilelor corespunztoare.

S-ar putea să vă placă și