capitolul 1 introd
DESCRIPTION
upc facultateTRANSCRIPT
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.
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.
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
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.
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
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:
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.
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.
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.
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.