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 ic:
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
vercarea 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 semnicative 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 ecient a a aplicat iilor com-
plexe. Aceasta se asigur a pe baza:
elabor arii de componente reutilizabile, extensibile si usor modicabile,
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 modicabile.
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 denirea 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 speciers`.
O clas a este utilizat a pentru a specica 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 specic 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 clasic a ^ n: tablouri, point-
eri, structuri, uniuni, enumer ari sau tip denit de utilizator.
1.3 Constante si variabile
Limbajul C lucreaz a cu valori ce pot stocate ^ n constante sau variabile.
Constantele stocheaz a valori nemodicabile pe parcursul execut iei progra-
mului ^ n timp ce variabilele sunt m arimi care ^ si modic 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 denesc prin caracterele care compun constanta respectiv a.
8 CAPITOLUL 1. NOT IUNI INTRODUCTIVE
1.3.1 Constante ^ ntregi
Constantele ^ ntregi sunt constante numerice care identic 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 specice 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 denite
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 denite 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 " >>", redenit, 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 " <<", redenit, 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 predenite 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 denesc 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, veric^ 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 >specic a init ializ arile necesare ciclului;
<expresie2 >specic a testul care se face ^ nainte de ecare ieterat ie;
<expresie3 >specic 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.
Bibliograe
[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
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: 1.1 Bazele program arii ^ n limbajul C++ . . . . . . . . . . . . . . 5 1.2 Prezentarea limbajului: clase si obiecte, vocabular si tipuri de… [608177] (ID: 608177)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
