1.1 Bazele program arii ^ n limbajul C++ . . . . . . . . . . . . . . 5 1.2 Prezentarea limbajului: clase  si obiecte, vocabular  si tipuri de… [608177]

UNIVERSITATEA DIN PITES TI
FACULTATEA DE S TIINTE, EDUCAT  IE FIZIC A S I INFORMATIC A
LUCRARE DE LICENT  A
PROGRAMARE ^IN C++, INSTRUMENT
ESENT IAL ^IN REZOLVAREA UNOR
PROBLEME DE MATEMATIC A
Coordonator  stiint i c:
Lect. univ. Adrian T urcanu
Absolvent a:
Miruna – Maria Grosu
{ 2017 {

2

Cuprins
1 Not iuni introductive 5
1.1 Bazele program arii ^ n limbajul C++ . . . . . . . . . . . . . . 5
1.2 Prezentarea limbajului: clase  si obiecte, vocabular  si tipuri de
date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Constante  si variabile . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Constante ^ ntregi . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Constante
otante . . . . . . . . . . . . . . . . . . . . 8
1.3.3 Constante caracter . . . . . . . . . . . . . . . . . . . . 8
1.3.4 Variabile . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Operatori  si expresii . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.1 Operatori aritmetici: "+, -, *, /, %" . . . . . . . . . . 9
1.4.2 Operatori relat ionali: " <,>,,, ==, !=" . . . . . . 9
1.4.3 Operatori logici: " jj, !" . . . . . . . . . . . . . . . . . . 10
1.4.4 Operatori de atribuire: "=, += , -= ,*= , /=" . . . . . 10
1.4.5 Operatorul condit ional: "? : " . . . . . . . . . . . . . . 10
1.4.6 Operatorul secvent ial: "," . . . . . . . . . . . . . . . . 11
1.5 Operat ii de intrare – ie sire . . . . . . . . . . . . . . . . . . . . 11
1.5.1 Funct ii pentru operat ii de intrare/ie sire la nivel ^ nalt . 12
1.5.2 Manipulatori de intrare/ie sire . . . . . . . . . . . . . . 13
1.5.3 Funct ii pentru operat ii la nivel de caracter . . . . . . . 13
1.6 Instruct iuni C++ . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.6.1 Instruct iunea de atribuire . . . . . . . . . . . . . . . . 15
1.6.2 Instruct iunea compus a . . . . . . . . . . . . . . . . . . 15
1.6.3 Instruct iunea if . . . . . . . . . . . . . . . . . . . . . . 15
1.6.4 Instruct iunea while . . . . . . . . . . . . . . . . . . . . 16
1.6.5 Instruct iunea do. . . while . . . . . . . . . . . . . . . . . 17
1.6.6 Instruct iunea for . . . . . . . . . . . . . . . . . . . . . 18
1.6.7 Instruct iunea switch . . . . . . . . . . . . . . . . . . . 18
1.6.8 Instruct iunea break . . . . . . . . . . . . . . . . . . . . 19
1.6.9 Instruct iunea continue . . . . . . . . . . . . . . . . . . 20
3

4 CUPRINS
2 Exercit ii 21

Capitolul 1
Not iuni introductive
1.1 Bazele program arii ^ n limbajul C++
Limbajul de programare general a, C++ , a fost dezvoltat ^ n ani 1970 ca
o serie de ^ mbun at at iri ale limbajului C, ind un limbaj multi-paradigm a cu
ver carea static a a tipului variabilelor ce suport a programare procedural a.
Dezvoltatorii Ken Thompson  si Dennis Ritchie care la ^ nceputul anilor
1970, ^ n urma necesit at ii unui limbaj simplu  si portabil au creat limbajul C.
Ceste un limbaj de programare ce sust ine programarea structurat a,
domeniul variabil lexical  si recursivitatea. Acesta utilizeaz a un num ar mare
de funct ii repartizate ^ n unul sau mai multe  siere surs a dar  si anumite bib-
lioteci de funct ii surs a sau obiect.
La scurt timp dup a aparit ia limbajului Ca fost dezvoltat C cu clase care
avea ca scop programarea orientat a pe obiecte. Limbajul s au a inclus clase,
argumente funct ionale implicite pe l^ ang a toate caracteristicile limbajului C.
^In anul 1983 numele limbajului C cu clase a fost schimbat ^ n C++ .
Multe caracteristici noi au fost ad augate ^ n acest moment, dintre care cele
mai notabile sunt funct iile virtuale, supra^ nc arcarea funct iilor, referint ele
cu simbolul  si comentariile cu o singur a linie utiliz^ and dou a slash-uri. Au
ap arut mo stenirea multipl a, clase abstracte, funct ii statice, funct ii constante
 si template-uri, except ii, spat ii de nume precum  si tipul boolean.
Odat a cu evolut ia limbajului C++ a evoluat  si o bibliotec a standard ^ n
care prima ad augire a fost biblioteca de intr ari/ie siri care oferea facilit at i
pentru a ^ nlocui funct iile tradit ionale C cum ar printf  si scanf.Printre cele
mai semni cative ad augari la biblioteca standard a fost biblioteca de formate
standard, STL.
Standardul C++ cuprinde dou a p art i: limba de baz a  si biblioteca stan-
dard. Biblioteca standard include vectori, liste, h art i, algoritmi, seturi, fa-
5

6 CAPITOLUL 1. NOT  IUNI INTRODUCTIVE
cilit at i de intrare / ie sire, indicatori inteligent i pentru gestionarea automat a
a memoriei, suport pentru expresii regulate etc.
Limjaul C++ ofer a posibilitatea program arii orientate pe obiecte. Pro-
gramarea orientat a pe obiecte se bazeaz a pe not iunea de obiect  si reprezint a
un stil de programare care permite abordarea e cient a a aplicat iilor com-
plexe. Aceasta se asigur a pe baza:
elabor arii de componente reutilizabile, extensibile  si usor modi cabile,
f ar a reprograma totul de la ^ nceput;
construirii de biblioteci de module extensibile;
implement arii simple a interact iunilor programelor cu mediul de calcul
prin utilizarea unor elemente standartizate.
Putem spune c a programarea orientat a pe obiecte permite implementarea
unor sisteme complexe cu ajutorul unor componente individuale standarti-
zate, extensibile  si u sor modi cabile.
1.2 Prezentarea limbajului: clase  si obiecte,
vocabular  si tipuri de date
Limbile care suport a programarea orientat a pe obiecte folosesc ^ n mod
obi snuit mo stenire pentru reutilizarea codului  si extensibilitate sub form a de
clase sau prototipuri. Cei care folosesc clasele sust in dou a concepte princi-
pale:
Clase – cont in elementele de date  si funct iile membrilor;
Obiecte – exemple de clase.
Un obiect programabil este o entitate de baz a de execut ie  si corespunde
uneori unui obiect din lumea real a, am^ andou a caracteriz^ andu-se prin pro-
priet at i  si prin metodele de lucru cu obiectul respectiv. Obiectul program-
abil este o instant  a a unei anumite clase  si se descrie prin datele asociate
lui, cunoscute  si ca propriet at i,  si prin act iunile ce se pot efectua cu acel
obiect, numite metode. Datele  si codul ec arui obiect sunt necesare pentru
manipularea datelor.
Clasa reprezint a caracteristica central a alimbajului C++ care sust ine pro-
gramarea orientat a pe obiect  si permite de nirea de noi tipuri de date descrise
de utilizator.

1.3. CONSTANTE S I VARIABILE 7
Clasele sunt un concept extins de structuri de date av^ and formatul asem an ator
structurilor de date cu except ia faptului c a acestea pot include at^ at funct ii
c^ at  si a sa numitele `acces speci ers`.
O clas a este utilizat a pentru a speci ca forma unui obiect  si combin a
reprezentarea datelor  si metodelor de manipulare a acestor date ^ ntr-un sin-
gur pachet. Datele  si funct iile dintr-o clas a sunt numite membri ai clasei.
Un program este un text ce speci c a act iuni care vor executate de un
procesor. Scrierea unui program se face ^ ntr-un limbaj de programare.
Un limbaj de programare are vocabular  si reguli de sintax a, vocabularul ind
format din unit at i lexicale iar sintaxa reprezent^ and un ansamblu de reguli
pe baza c arora se combin a elementele vocabularului pentru a obt ine fraze
corecte. Elementele vocabularului sunt alc atuite din caractere, orice caracter
ind reprezentat, ^ n calculator, ^ n codul ASCII, de un num ar natural unic,
cuprins ^ ntre 0  si 255.
Pentru scrierea unit at ilor lexicale ale limbajului C++, cuvinte cheie, con-
stante,  siruri, se folosesc reguli precise date de sintaxa limbajului prin uti-
lizarea setului de caractere al codului ASCII.
Tipul unei date determin a:
– spat iul de memorie ocupat;
-modul de reprezentare intern a;
-timpul de viat  a asociat datei;
-domeniul de valori;
-operatorii utilizat i;
-restrict iile ^ n folosirea operatorilor utilizat i.
Tipurile de date utilizate de limbajul C sunt de dou a feluri, tipuri fun-
damentale  si tipuri derivate. Tipurile fundamentale sunt: caracter, ^ ntregi,
reale  si de tip void ^ n timp ce tipurile derivate se clasi c a ^ n: tablouri, point-
eri, structuri, uniuni, enumer ari sau tip de nit de utilizator.
1.3 Constante  si variabile
Limbajul C lucreaz a cu valori ce pot stocate ^ n constante sau variabile.
Constantele stocheaz a valori nemodi cabile pe parcursul execut iei progra-
mului ^ n timp ce variabilele sunt m arimi care ^  si modi c a valoarea ^ n timpul
execut iei.
O constat a C are un tip  si o valoare. At^ at tipul c^ at  si valoarea unei con-
stante se de nesc prin caracterele care compun constanta respectiv a.

8 CAPITOLUL 1. NOT  IUNI INTRODUCTIVE
1.3.1 Constante ^ ntregi
Constantele ^ ntregi sunt constante numerice care identi c a valori ^ ntregi.
Ele reprezint a o succesiune simpl a de cifre reprezent^ and un num ar ^ ntreg
zecimal.
Limbajul C++ permite utilizarea numerelor octale, scrise ^ n baza 8,  si a
numerelor hexazecimale, scrise ^ n baza 16, ca  si constante literale.
Pentru scrierea ^ n baza 8 cifrele sunt precedate de un caracter 0 ^ n timp
ce pentru scrierea ^ n baza 16, constantele vor precedate de caracterele 0x
respectiv 0X.
Exemplu : 0x4D2
1.3.2 Constante
otante
Constantele
otante exprim a valori reale  si pot include e un punct zecimal,
e un caracter e, sau ambele, adic a un punct zecimal  si un caracter e. Partea
^ ntreag a  si partea fract ionar a sunt constituite din c^ ate o succesiune de cifre.
At^ at partea ^ ntreag a c^ at  si partea fract ionar a pot lipsi dintr-o constant a

otant a dar nu simultan, respectiv punctul zecimal  si caracterul e.
Exemplu : 1.6e-19;
3.0
1.3.3 Constante caracter
Constanta caracter este un carcter inclus ^ ntre caracterele apostrof,
exemplu : 'a'  si '0'. Caracterele sunt simboluri grupate ^ n litere, cifre  si
semne speciale:
litere mari ale alfabetului englez sunt reprezentate de codurile de la 65,
pana la 90!A,B,, X, Y,Z;
literele mici ale alfabetului sunt reprezentate de codurile de la 97 la 122
!a, b,,x, y, z;
cifrele bazei zece, care au codurile ^ n 48, , 57!0, 1, 2,, 9;
semne de punctuat ie  si semne speciale: , . : ? ' ( ) [ ] fg!;
1.3.4 Variabile
C++ este un limbaj ce necesit a ca ec arei variabile s a ^ i e declarat tipul
^ nainte de prima utilizare. Declararea tipului variabilei informeaz a compi-

1.4. OPERATORI S I EXPRESII 9
latorul cu privire la dimensiunea care trebuie rezervat a ^ n memorie pentru
variabil a  si modul ^ n care se interpreteaz a valoarea acesteia.
Variabilele reprezint a zonele temporare de stocare a datelor ale c aror
valori se pot schimba ^ n timpul execut iei programului. Unei variabile i se
asociaz a un nume prin intermediul c aruia putem avea acces la valoarea ei,  si
un tip de date care stabile ste valorile pe care le poate lua variabila. Relat ia
de corespondent  a dintre tipul variabil a  si nume se nume ste declarat ie  si poate
avea forma:
<tip> <lista de nume >;
unde <lista de nume >este e un nume, e mai multe separate prin virgule.
Exemplu:
int i,j,x;
unsigned long k;

oat a,b;
char c;
1.4 Operatori  si expresii
Valorile variabilelor interact ioneaz a ^ ntre ele prin simboluri  si se numesc op-
eratori. Operatorii folosit i ^ n C++ sunt:
Operatori aritmetici
Operatori relat ionali
Operatori logici
Operatori de atribuire
Operatorul condit ional
Operatorul secvent ial.
1.4.1 Operatori aritmetici: "+, -, *, /, %"
A/B reprezint a c^ atul ^ mp art irii. Acest operator se comport a diferit,
^ n funct ie de tipul operanzilor  si anume, dac a ambi operanzi sunt numere
^ ntregi, atunci  si rezultatul va un num ar ^ ntreg, dar dac a cel put in unul
dintre operanzi este un num ar real, atunci  si rezultatul va un num ar real.
[%] reprezint a restul ^ mp art irii  si acesta poate aplicat doar ^ ntre oper-
anzii de tip ^ ntreg.

10 CAPITOLUL 1. NOT  IUNI INTRODUCTIVE
1.4.2 Operatori relat ionali: " <,>,,,==, !="
Operatorii relat ionali, ca  si cei aritmetici sunt operatori binari, adic a com-
par a doi operanzi. O instruct iune cu doi operanzi  si un operator relat ional
^ ntre ei se nume ste relat ie relat ional a, rezultatul acesteia put^ and avea dou a
valori, true (adevarat) sau false (fals).
Operatorul " == " stabile ste egalitatea unei expresii:
1. Expresia a == b are valoarea 1 atunci c^ and cele dou a sunt egale
respectiv 0 atunci c^ and cele dou a sunt diferite.
2. Expresia a!=b are valoare 1 atunci c^ and cele dou a sunt diferite  si re-
spectiv 0 atunci c^ and cele dou a sunt egale.
1.4.3 Operatori logici: " jj, !"
Operatorul de negat ie [ ! ] transform a adev arul ^ n fals  si falsul ^ n adev ar.
Operatorul de disjunct ie [ jj] produce valoare 1 atunci c^ and cel put in o
expresie este adev arat a , respectiv 0 c^ and toate sunt false.
1.4.4 Operatori de atribuire: "=, += , -= ,*= , /="
Operatorii de atribure sunt operatori binari, ce se aplic a tuturor tipurilor de
variabile.
expresie1 = expresie2;
Se evalueaz a expresia din membrul drept, iar valoarea acesteia este atribuit a
variabilei din membrul st^ ang. Dac a tipurile membrilor st^ ang  si drept difer a,
se pot realiza anumite conversii.
1.4.5 Operatorul condit ional: "? : "
Singurul operator ternar este operatorul condit ional care se folose ste ^ n
situat iile ^ n care exist a dou a variante de obt inere a unui rezultat. Dintre
aceste dou a variante se va alege o singur a variant a ^ n funct ie de ^ ndeplinirea
sau ne^ ndeplinirea unei condit ii. Cei trei operanzi sunt expresii, prima reprezent^ and
condit ia testat a.
expresie1?expresie2 : expresie3

1.5. OPERAT  II DE INTRARE – IES IRE 11
Dac a valoarea expresie1 este adevarat a ( !=0 ), se evalueaz a exprsie2, alt-
fel expresie3, rezultatul expresiei evaluate ind rezultatul nal al expresiei
condit ionale.
1.4.6 Operatorul secvent ial: ","
Operatorul secvent ial, virgula se folose ste atunci c^ and sintaxa limbajului
impune prezent a unei singure expresii, iar prelucrarea presupune evaluarea
a dou a sau mai multor expresii; acestea se evalueaz a de la st^ anga la dreapta,
iar rezultatul ^ ntregii expresii este cel al ultimei expresii ( exprn ):
expr1,expr2,…,exprn.
Expresiile reprezint a combinat ii valide de operatori, variabile  si constante
ce se evalueaz a pe baza unui set de reguli care precizeaz a prioritatea  si modul
de asociere a operatorilor precum  si conversiile aplicate operanzilor:
– ordinea de efectuare a operat iilor ^ ntr-o expresie este data de prioritatea
operatorilor;
-ordinea de efectuare a operat iilor ^ ntr-o secvent  a de operat ii care au acea si
prioritate este indicat a de modul de asociere.
1.5 Operat ii de intrare – ie sire
Comunicarea dintre un program de calculator  si utilizator se realizeaz a
prin  siere.Un  sier poate ^ nt eles ca ind un  sir de octet i a
at i pe un
suport oarecare  si transferabili folosind un echipament periferic. Programul
poate citi date din  siere de intrare  si poate scrie rezultate i n  siere de
ie sire. Limbajul C++ asigur a posibilitatea de a folosi orice echipamente
periferice precum consola (tastatura  si monitorul), imprimanta, unit at i de
disc magnetic, banda magnetic a etc.
Un  sier de intrare poate cont ine mai multe seturi de date. Prin prelu-
crarea lor, ^ n  sierul de ie sire vor scrise mai multe seturi de rezultate.
Un program poate solicita citirea unei secvent e de octet i unui periferic
(tastatura de exemplu) sau poate solicita citirea aceleia si secvent e dintr-un
 sier ^ nregistrat pe un disc magnetic a sa cum la scriere, programul poate
realiza trimiterea unei secvent e de octet i spre un periferic (ecran) sau poate
realiza trimiterea succesiunii de octet i spre un  sier a
at pe un disc magnetic.
Limbajul C++ nu dispune de instruct iuni speci ce pentru operat iile de
intrare-ie sire, acestea ind efectuate cu ajutorul unor funct ii de bibliotec a

12 CAPITOLUL 1. NOT  IUNI INTRODUCTIVE
ce folosesc concepte generale ale limbajului C++. Pentru a folosi funct ii din
bibliotecile livrate de realizatorii compilatorului, acestea trebuie declarate, ^ n
cazul limbajului C++ se vor include  sierele <iostream > si<fstream.h >.Fi sierul
<ioastream >trebuie inclus ^ n orice program pentru a apela operat iile de
intrare-ie sire, el cont in^ and cele mai importante funct ii de lucru cu tastatura
 si ecranul. ^In acest sier sunt de nite
uxurile:
cin- folosit pentru intrare,dispozitiv implicit tastatur a;
cout – folosit pentru ie sire, dispozitiv implicit ecranul;
cerr – folosit pentru a  sarea erorilor, dispozitiv implicit ecranul;
clog – folosit pentru a  sarea erorilor, dispozitiv implicit ecranul.
^In  sierul iostream sunt de nite noi tipuri de date printre care istream
 siostream . Dispozitivul logic de intrare cinreprezint a un obiect de tipul
istream ^ n timp ce dispozitivele logice de ie sire, cout ,cerr,clog sunt obiecte
de tipul ostream .
Se prev ad dou a nivele de interfat  a^ ntre programator  si dispozitivele logice
de intrare/ie sire, prin dou a seturi de funct ii:
funct ii pentru operat ii de intrare/ie sire la nivel ^ nalt;
funct ii pentru operat ii la nivel ^ nalt de caracter.
1.5.1 Funct ii pentru operat ii de intrare/ie sire la nivel
^ nalt
Pentru operat iile de intrare/ie sire la nivel ^ nalt, au fost supra^ nc arcat i
operatorii " >>" pentru
uxul cin  si " <<" pentru
uxul cout, cerr, clog.
Operatorul " >>", rede nit, se nume ste operator de extract ie sau ex-
tractor, aceast a denumire provenind de la faptul c a la citire se extrag date
dintr-un stream.
Operatorul " <<", rede nit, se nume ste operator de insert ie sau insertor,
denumirea provenind de la faptul c a un operator de ie sire insereaz a informat ia
^ n stream.
Operatorii de extract ie si de insert ie posed a proprietatea de asociativitate
la st^ anga  si returneaz a o referint  a la streamul asociat ca prim operand, deci
ei pot ^ nl ant uit i.
Exemplu: # include <iostream >
using namespace std;

1.5. OPERAT  II DE INTRARE – IES IRE 13
int main()
f
int n,m,sum;
cout<<"Dati valoare numarului n= "; cin >>n;
cout<<"Dati valoare numarului m= "; cin >>m;
sum=n+m;
cout<<"Suma numerelor " <<m<<" si " <<n<<" este: " <<sum;
return 0;
g
Char ,short ,int,long sunt tipurile de date prede nite acceptate implicit
at^ at de c atre un stream de intrare c^ at  si de c atre un stream de ie sire.
1.5.2 Manipulatori de intrare/ie sire
Manipulatorii de intrare/ie sire reprezint a comenzi prin care avem posi-
bilitatea de a controla formatele de intrare si ie sire, acestea ind incluse ^ n
construct iile de intrare/ie sire. Manipulatorii sunt de dou a tipuri, manipula-
tori f ar a parametri  si manipulatori care au parametri. Diferent a dintre cele
dou a tipuri de manipulatori este aceea c a pentru a putea folosi manipulatorii
care au parametri trebuie s a includem  sierul iomanip.h. Manipulatorii pot
apare ^ n lant ul de operat ii de intrare/ie sire.
1.5.3 Funct ii pentru operat ii la nivel de caracter
Funct iile uzuale la nivel de caracter, asociate unui stream sunt:
stream &put (char c) – insereaz a un caracter ^ n streamul de ie sire  si
returneaz a streamul de ie sire;
Exemplu de apel:
char x;
. . . . . .
cout.put(x);
int.get(void) -extrage urm atorul caracter din streamul de intrare  si ^ l
returneaz a;
Exemplu de apel:
char x;

14 CAPITOLUL 1. NOT  IUNI INTRODUCTIVE
x=xin.get();
istream &get(unsigned char &)
istream &get(signed char &)-cele dou a funct ii extrag urm atorul car-
acter din streamul de intrare^ n variabila dat a ca argument  si returneaz a
streamul de intrare;
Exemplu de apel:
char x; cin.get(x);
istream &get(unsigned char *c, int n, char= ' nn ');
istream &get(signed char *c, int n, char= ' nn '); – aceste dou a
funct ii extrag un  sir de caractere din streamul de ie sire ^ n variabila
tablou "c". Num arul maxim de caractere al  sirului este dat deal doilea
argument (se extrag maxim n-1 caractere). Al treilea argument indic a
a sa-zisul caracter de sf^ ar sit care nu va citit  si nici nu va eliminat
din stream.
Exemplu de apel:
char.c[10];
cin.get(c,10);
– se extrag 9 caractere sau p^ an a la ^ nt^ alnirea caracterului de sf^ ar sit
implicit0nn'
cin.get (c, 10, ',');
– se extrag 9 caractere sau p^ an a la ^ nt^ alnirea caracterului "," care nu
va extras din  sir.
istream &read (char *c, int n);
– cite ste n caractere din stream ^ n tabloul c. Niciun caracter de delim-
itare nu ^ ntrerupe citirea.
Exemplu:
# include<iostream
void main();
fchar c[10];
cin .read(c,7);
cout<<c<<endl;
g
Exemplul de mai sus cite ste 7 caractere la care adaug a caracterul " n0";

1.6. INSTRUCT  IUNI C++ 15
ostream &write (char *c, int n);
– se insereaz a n caractere din  sirul c ^ n streamul de ie sire asociat;
1.6 Instruct iuni C++
O instruct iune este o serie de comenzi date de c atre programator calcula-
torului pentru a executate.
1.6.1 Instruct iunea de atribuire
Instruct iunea de atribuire se obt ine pun^ and punct  si virgul a dup a o
expresie de atribuire sau dup a o expresie ^ n care se aplic a la o variabil a unul
din operatorii de incrementare sau decrementare. Instructiunea de atribuire
are una din urm atoarele forme:
<expresie de atribuire >;
<variabil a >++;
++<variabil a >;
<variabil a >- -;
– -<variabil a >;
1.6.2 Instruct iunea compus a
Instruct iunea compus a reprezint a o succesiune de instruct iuni incluse ^ ntre
acolade, succesiune care eventual poate cont ine declarat ii. Dac a ^ n instruc-
tiune sunt prezente declarat ii, acestea de nesc variabile care sunt valabile
doar ^ n instruct iunea compus a respectiv a. Dup a ^ nchiderea instruct iunii nu
se folose ste ";". Instruct iunea este de forma:
f
<declarat ii  si instruct iuni >
g
1.6.3 Instruct iunea if
Instruct iunea if este o instruct iune de decizie ce se folose ste pentru a
executa un cod numai ^ n cazul ^ n care valoarea unei expresii relat ionale este
adev arat a. Aceasta este de forma:
if (<expresie >)
<instruct iune1 >
else

16 CAPITOLUL 1. NOT  IUNI INTRODUCTIVE
<instruct iune2 >.
Intruct iunea if este o instruct iune condit ional a deoarece execut a numai dac a
valoarea expresiei este adevarat a, altfel instruct iunea condit ional a nu se ex-
ecut a, ceea ce ^ nseamn a c a este omis a.
Exemplu:
#include <iostream >
using namespace std;
int main(void)
f
int n;
cout<<" Introducet i un num ar ^ ntreg: "; cin >>n;
if(n%2 == 0)
cout<<"Num arul este par " <<endl;
else
cout<<"Num arul este impar " <<endl;
return 0;
g
Programul de mai sus, testeaz a dac a un num ar ^ ntreg, introdus de
c atre utilizator, este par sau impar prin utilizarea instruct iunii if.
1.6.4 Instruct iunea while
Instruct iunea while implementeaz a structura repetitiv a cu test init ial ce
are sintaxa:
while (<expresie >)

1.6. INSTRUCT  IUNI C++ 17
<instruct iune >
La ^ nt^ alnirea instruct iunii while prima dat a se execut a expresia
din paranteze, veri c^ and dac a aceasta este adev arat a. Dac a expresia este
adev arat a se execut a instruct iunea, repet^ and acest ciclu p^ an a c^ and valoarea
expresiei din paranteze devine negativ a, trec^ and astfel la instruct iunea urm atoare
instruct iunii while .
Exemplu:
intn= 0;
while ( n10)
f
cout<<n<<" ";
n++;
g
Programul de mai sus, a  seaz a toate numerele ^ ntregi de la 0 p^ an a la 10,
c^ at timp n este mai mic sau egal cu 10.
1.6.5 Instruct iunea do. . . while
Instruct iunea do. . . while implementeaz a structura repetitiv a cu test nal
 si este de forma:
do
<instruct iune >
while (<expresie >);
Aceasta execut a instruct iunea c^ at timp expresia este adev arat a.
Exemplul anterior se poate scrie  si pentru instruct iunea do. . . while
Exemplu:
intn= 0;
do
f
cout<<n<<" ";
n++;
g
while ( n10)

18 CAPITOLUL 1. NOT  IUNI INTRODUCTIVE
1.6.6 Instruct iunea for
Asem an ator instruct iunii while , instruct iunea forse utilizeaz a pentru a
realiza o structur a repetitiv a cu test init ial. Instruct iunea for se folose ste ^ n
special pentru implementarea structurii repetitive cu ciclu cu contor. Ea are
sintaxa:
for(<expresie1 >;<expresie2 >;<expresie3 >)
<instruct iune >
unde,
<expresie1 >speci c a init ializ arile necesare ciclului;
<expresie2 >speci c a testul care se face ^ nainte de ecare ieterat ie;
<expresie3 >speci c a reinit ializ arile ce se efectueaz a dup a ecare iterat ie,
 si
<instruct iune >formeaz a corpul ciclului, care se execut a repetat. Carac-
terele "textbf;" nu trebuie s a lipseasc a.
Exemplul urm ator va ar ta toate numerele, pentru n cuprins ^ ntre 0  si 10
Exemplu:
int n;
for(n=0; n10; n++)
cout<<n<<" ";
1.6.7 Instruct iunea switch
Instruct iunea switch permite realizarea structurii select ie  si este de forma:
switch( <expresie >)
fcase < c 1>:< sir1>
case < c 2>:< sir2>
: : : : : : : : : : : : : : : : : : : : :
case < cn>:< sirn>
default : <sir>
g
unde,
< c 1>; < c 2>; : : : ; < c n>sunt expresii constante de tip ^ ntreg,
<expresie >nu poate de tip
oat, double, long double, structurat ,
deci este o expresie de tip ^ ntreg,
< sir1>,< sir2>; : : : ; <  sirn>sunt  siruri de instruct iuni.

1.6. INSTRUCT  IUNI C++ 19
1.6.8 Instruct iunea break
Formatul acestei instruct iuni este:
break;
Aceasta produce ie sirea fort at a din instruct iunile repetitive while, do
while  si for sau dintr-o instruct iune switch . Instruct iunea break permite
ie sirea dintr-un singur ciclu, nu  si din eventualele cicluri care ar cont ine ciclul
^ n care s-a executat instruct iunea break .
Cel mai frecvent, aceasta este utilizat a pentru ie sirea din instruct iunea
for:
for(;;)
f: : :
if(: : 🙂 break;
: : :
g
Instruct iunea break provoac a eroare dac a apare ^ n afara instruct iunilor
while, for, do while  siswitch .
Exemplul urm ator a  seaz a pozit ia pe care se a
 a un num ar x ^ n vectorul
(a1; a2; : : : ; a n):
#include <iostream.h >
void main ()
flong a[100], x, poz;
int n, i;
cout <<"n=";
cin>>n;
for (i=1; i <=n; i++)
fcout <<"a"<<i<<"=";
cin>>a[i];
g
cout<<"x"<<"=";
cin>>x;
poz=0;
for (i=1; i <=n; i++)
if( a[i]==x)fpoz=i; break;g
if(poz >0) cout <<x<<"se a
 a^ n vector pe pozit ia " <<poz<<endl;
else cout <<x<<"nu se a
 a ^ n vector " <<endl;
g

20 CAPITOLUL 1. NOT  IUNI INTRODUCTIVE
1.6.9 Instruct iunea continue
Sintaxa instruct iunii este urm atoarea:
continue;
Instruct iunea se utilizeaz a^ n corpul unui ciclu  si are ca efecte urm atoarele:
^ n ciclurile while  sido while ea realizeaz a saltul la evaluarea expresiei
care decide asupra continu arii ciclului
^ n ciclul forea realizeaz a saltul la pasul de reinit ializare.
#include <iostream.h >
#include <conio.h >
void main()
flong s, x;
for(;;)
fcout<<"x="; cin >>x;
if(x<=0) continue;
s=s+x;
if(s>=1000) break;
cout<<"x*x= " <<endl;
g
g
^In programul de mai sus se introduc date de la tastatur a, numere ^ ntregi
a^ at pozitive c^ at  si negative.C^ at timp suma numerelor pozitive este mai mic a
dec^ at 1000, programul a  seaz a p atratul numerelor pozitive.

Capitolul 2
Exercit ii
Exercit iul 2.0.1. "A
at i care este exponentul lui 3 ^ n descompunerea ^ n
factori primi a num a rului 100 ".
Pentru rezolvarea exercit iului de mai sus, vom crea un program c++
care ne va ajuta s a a
 am exponentul oric arui num ar, introdus de la tastatur a,
^ n descompunerea ^ n factori primi a unui num ar dat.
#include <iostream >
using namespace std;
int main()
f
intn; m; p = 0;
cout<<"n= "; cin >> n ;
cout<<"m= "; cin >> m ;
while( n%m== 0)
f
p=p+ 1;
n=n=m;
g
cout<< p
return 0;
g
21

22 CAPITOLUL 2. EXERCIT  II
Figure 2.1: p1
Exercit iul 2.0.2. " S a se g aseasc a toate numerele cuprinse ^ ntre 10  si 200
care se mic soreaz a de un num ar ^ ntreg de ori prin ^ nl aturarea ultimei cifre "
Pentru rezolvarea acestui exercit iu avem nevoie de un program care
testeaz a dac a un num ar se mic soreaz a de un num ar^ ntreg de ori prin^ nl aturarea
ultimei cifre.
#include <iostream >
using namespace std;
int main()
f
intn; m; k; i; j ;
cout<<"m= "; cin >> m ;
cout<<"n= "; cin >> n ;
cout<<"k= "; cin >> k ;
for (i=m;i <=n;i+ +)
fj=i=10;
if(i==jk)
cout<< i << endl;

23
g
return 0;g
Figure 2.2: p2
Pentru intervalul f10;200gprogramul de mai sus ne a  seaz a numerele
ce se mic soreaz a de un num ar intreg de ori, respectiv 11.
Exercit iul 2.0.3. "A
at i numerele care ^ mp art ite la 5 dau c^ atul cu o unitate
mai mare dec^ at restul."
#include <iostream >
#include <math.h >
using namespace std;
int main()
f
intn; x; y; d ;
cout<<"n= "; cin >> n ;
for (d= 1;d <= 100; d+ +)
f
x=d=n;

24 CAPITOLUL 2. EXERCIT  II
y=d%n;
if (x==y+ 1)
cout<< d << endl;
g
return 0;
g
Programul de mai sus a  seaz a numerele care, ^ mp art ite la un num ar dat,
^ n cazul nostru 5, dau c^ atul cu o unitate mai mare dec^ at restul.
Figure 2.3: p3
Exercit iul 2.0.4. "S a se arate c a 74088 este cub perfect"
Descompunerea ^ n factori primi a num arului 74088 este:

25
74088 2
37044 2
18522 2
9261 2
3087 3
1029 3
343 7
49 7
7 7
Observ am din descompunerea ^ n factori primi a num arului 74088
ca este un produs de cuburi perfecte. Urm atorul program va a  sa dac a un
num ar este cub perfect prin a
area exponentului ^ n descompunerea ^ n factori
primi.
#include <iostream >
#include <math.h >
using namespace std;
int prim(int n)
f
if(n <2)
return 0;
if(n== 2)
return 1;
if (n=2 == 0)
return 0;
for (int i= 3;i <=n=2;i+ = 2)
if(n%i== 0)
return 0;
return 1;
g
int main()
fintn; p= 0; d= 1;
cout<<"n= "; cin >> n ;
for(d= 1;d <=n=2;d+ +)
fif (prim( d)==1)

26 CAPITOLUL 2. EXERCIT  II
f
while ( n%d== 0)
f
p=p+ 1;
n=n=d;
g
g
g
if (p%3 == 0)
cout<<"numarul este un cub perfect";
return 0;
g
Figure 2.4: p4
Exercit iul 2.0.5. "C^ ate numere de 4 cifre se pot scrie ca p atratul unui
num ar prim?"
Observ am c a:

27
312= 961
322= 1024.
Deci 312<1000 <322
992= 9801
1002= 10000
Deci 992<9999 <1002
Cu ajutorul urm atorului program vom a
a c^ ate numere prime sunt ^ ntr-
un interval dat, respectiv f322;992g.
#include <iostream >
#include <math.h >
using namespace std;
int prim(int n)
f
if(n <2)
return 0;
if(n== 2)
return 1;
if (n=2 == 0)
return 0;
for (int i= 3;i <=n=2;i+ = 2)
if(n%i== 0)
return 0;
return 1;
g
int main()
fintn; m; i; sum = 0;
cout<<"n= "; cin >> n ;
cout<<"m= "; cin >> m ;
for (i=n;i <=m;i+ +)
fif (prim (i) == 1)
sum =sum + 1;
g

28 CAPITOLUL 2. EXERCIT  II
cout<<sum;
return 0;
g
Figure 2.5: p5
Cum ^ n intervalul f322;992gsunt 11 numere prime )exist a 11 numere
de 4 cifre care se pot scrie ca p atratul unui num ar prim.

Bibliogra e
[1] Barbu Gheorghe, Viorel P aun, Programarea ^ n limbajul C/C++ , Editura
Matrix Rom, Bucure sti, 2011.
[2] Viorel P aun, Bazele program arii ^ n limbajul C++ : Probleme alese , Edi-
tura Atelierul de Multiplicare al Universit at ii din Pite sti , Pite sti, 1998.
[3]Gazeta Matematic a .
29

Similar Posts