Sunteți pe pagina 1din 30

CUPRINS

Introducere Code Blocks.............................................................................................................................2


P r e z e nt a r e a e c r a n u l ui me d i u l u i d e pr o g r a ma r e C O D E B L O C K S ...............................3
Elementele de baz ale limbajului de programare C++...............................................................................8
Structura general a unui program C++......................................................................................................9
Elementele de limbaj.................................................................................................................................11
Setul de caractere......................................................................................................................................11
Identificatori..............................................................................................................................................11
Cuvinte cheie (keywords).........................................................................................................................12
Separatori i comentarii.............................................................................................................................12
Tipuri de date C/C++................................................................................................................................12
Citirea/scrierea datelor..............................................................................................................................15
Instruciunile limbajului C++....................................................................................................................18
Instruciunea if......................................................................................................................................19
Instruciunea while................................................................................................................................21
Instruciunea do while...........................................................................................................................22
Instruciunea for........................................................................................................................................23
Bibliografie...............................................................................................................................................25

1
Introducere Code Blocks
Descrcare Code Blocks de la adresele:

http://www.cnlr.ro/~tucu/viewtopic.php?f=2&t=31
sau
http://www.codeblocks.org

Pentru a obine un program executabil, trebuie parcurse urmtoarele etape:


editarea programului surs;
compilarea programului surs;
editarea legturilor programului surs;
lansarea n execuie a programului executabil;
depanarea interactiv a programului;
memorarea programului surs i a programului executabil, pe un suport de informaie.
Aceste operaii pot fi asigurate de diferite programe precum:
editor de texte;
compilator;
editor de legturi;
program depanator.
Aceste programe pot fi ncorporate ntr-un mediu integrat numit mediu de programare. Pentru
crearea programelor C++ folosim un IDE.
Un IDE (Integrated Development Environment) este un program ce cuprinde un editor de
text, un compilator, debugger i builder. De ex. CodeBlocks
Mediul de programare C++ recunoate urmtoarele extensii de fiiere:
.exe program executabil;
.cpp program surs;
.obj program obiect;
.lib bibliotec C++;
.h fiier antet.

Pre z e nta rea ecra nulu i me diu lui de progra ma re C ODE BLOC K S
2
Lansarea n execuie a editorului Code Blocks se face apsnd dublu clik pe iconul:

si se va deschide pe ecran fereastra aplicaiei.( daca este necesar nchidei ferestrele suplimentare
care apar). Ecranul editorului Code Blocks arata astfel:

Primul PROIECT (PROJECT)


Pentru a reui s scriei un program n limbajul C++ trebuie s deschidem mai nti spa iu de
lucru. La un moment dat putem avea n lucru unul sau mai multe proiecte n spaiul de lucru. Un
proiect este o colecie de una sau mai multe surse i fiiere. Fi ierele surs sunt fi iere care
conin codul surs pentru programul tu. Un fiier care conine un cod surs scris n limbajul C
++ va avea extensia .cpp. Configurarea unui proiect v permite s urmrii toate fiierele ntr-un
mod organizat.

Pas 1: Selectai de pe ecran opiunea Create a new object

Pas 2: Se va deschide o fereast ca n imaginea urmtoare din care vei selecta opiunea
Console Application, dup care apsai butonul Go

3
Pas 3: Selectai opiunea C+ +, dup care apsai butonul Next

Pas 3: n seciunea Project Title scriei numele noului proiect, dup care din seciunea Folder
to create project in: se stabilete locul n care se va salva noul proiect, iar la sfarit selectai
butonul next.

4
Pas 4: Din seciunea Compiler se alege compilatorul GNU GCC Compiler si se apas butonul
Finish

Pas 5: Din partea dreapta a ecranului se deschide folderul Sources i se deschide cu dublu click
fisierul main.cpp. Din acest moment putei ncepe s editai noul cod surs. Spor la lucru!

5
Pas 6: Dup ce ai editat codul surs programul trebuie verificat dac este corect scris, din punct
de vedere sintactic (etapa de compilare - Build). Acest lucru se poate realiza astfel:

din meniu superior selectm n ordine optiunile: BuildBuild

sau apsnd combinaia de taste Shift+F9

sau apasnd pe icon-ul Build:

Atunci cnd programul nostru nu conine erori de sintax n partea inferioar a ecranului ne
apare un mesaj de forma:

Pas 7: n acest moment putem lansa n execuie programul nostru pentru a vedea rezultatele
obinute astfel:

din meniul superior selectm n ordine opiunile: BuildRun

sau apsnd combinaa de taste Ctrl+F10

sau apsnd pe icon-ul Run:

sau

6
Compilare, rulare i link-editare program surs: Build Build&Run sau tasta F9 sau

Pas 8: nchidere fereastr de compilare Close

7
Elementele de baz ale limbajului de programare
C++

Un limbaj de programare reprezint un mijloc de comunicare ntre programator i


calculator.
Informaia ce trebuie comunicat este codificat printr-un program pe baza a trei
componente:
un set de aciuni, care acioneaz asupra unui
set de date ntr-o anumit
secven de acionare.

Repere istorice n evoluia limbajelor de programare:


1955 FORTRAN (FORmula TRANslation)
1960 ALGOL (ALGOrithmic Language)
1960 COBOL (COmmon Business Oriented Language)
1971 Pascal (Blaise PASCAL)
1972 C
1980 C++
1995 Java

Limbajul de programare C++


La nceputul anilor 70 a aprut limbajul C creaia lui Dennis Ritchie i Brain Kernighan.
Limbajul C++ este creaia lui Bjarne Stroustrup i reprezint o extensie a limbajului C care
permite programarea pe obiecte.

Realizarea unui program scris n C++ necesit parcurgerea a patru etape:


editare scrierea programului surs, prin crearea unui fiier cu extensia .cpp;
compilare se aduce n memoria intern programul surs, se verific erorile i se convertete
acest program n program obiect, avnd extensia .obj;
link-editare se leag programul obiect cu bibliotecile de sistem i se transform ntr-un
program executabil avnd extensia .exe;
execuie se lanseaz n execuie programul obiect: se efectueaz citirea datelor, calculele i
scrierea rezultatelor, formndu-se fiierul.

8
Structura general a unui program C++
Un program C++ este alctuit din funcii i variabile. Are urmtoarea structur:

Unde:

# - directive pentru preprocesor

- indicaii pentru compilator

< > indic compilatorului s caute fiiere ce trebuie introduse n program

Orice mediu de programare C++ dispune de un set de funcii predefinite, scrise de autorii
limbajului. Se plaseaz la nceputul programului.

Sintaxa: #include<nume_header>

Directivele preprocesor sunt fiiere librrii memorate separat i care au extensia .h.

iostream este un fiier antet (header) care este utilizat pentru a gestiona intrrile i ieirile
implicite de date (datele de intrare se vor prelua implicit de la tastatur i datele de ieire vor fi
afiate n mod implicit pe monitor). Librria iostream face parte din biblioteca implicit a
limbajului C++.

n funcie de alte opiuni ale utilizatorului se vor insera n codul surs i alte fiiere antet cum ar
fi:

cmath este un fiier care face parte din biblioteca standard a limbajului C, unde sunt
definite funciile matematice (cum ar fi radical din x sqrt(x), ridicare la putere pow(a,b),
modulul unui numr abs(a),funciile trigonometrice, etc.

fstream - este un fiier n care sunt definite funciile de baz pentru lucru cu fiiere text.
Stream-urile implicite tastaura i monitorul se vor schimba n fiiere text de intrare sau de ieire.

!! Directivele nu se ncheie cu ;

Std este o prescurtare a cuvntului standard. n cadrul spaiului de nume std gsim
funcii simple pentru citirea i afiarea textului pe ecran, raportarea unor erori de logic ce apar
n timpul execuiei programului. (pachet ce conine date utilizate de program)

9
Dup includerea n program a fiierelor header urmeaz o seciune rezervat definirii de
tipuri de date i variabile globale.

Definiie 2: Definirile globale de variabile se fac la nceputul programului i acestea vor fi


cunoscute n toate funciile din program.

Definiie 3: Definirile locale de variabile se fac n cadrul unei fucii i ele sunt cunoscute doar n
funcia n care au fost definite.

n cazul programelor simple, care conin doar funcia main() nu este necesar definirea
global a variabilelor.

Funciile utilizator :

definirea oricrei funcii este construit din antetul funciei i corpul funciei

antetul funciei conine numele funciei, tipul rezultatului pe care funcia l calculeaz i
o list de parametri prin care funcia comunic cu exteriorul ei, ncadrat ntre
paranteze rotunde:

tip_rezultat nume_functie(lista de parametri)

Orice program C++ trebuie s conin n mod obligatoriu o funcie special numit main.

Funcia main() este o fucie special, mai este numit i funcia principal sau programul
principal.

int main()

Cuvntul-cheie int reprezint o variabil de tip numr ntreg, parentezele rotunde arat faptul c
main este o funcie, toate funciile deosebindu-se de variabile i clase prin parantezele rotunde.

return 0;

Determin funcia main s se finalizeze. Este cel mai utilizat mod de ncheiere a unui program n
consol.

Funcia main fiind de tip int, aceasta trebuie s returneze o variabil de tip ntreg dup
executarea ei. n cazul n care codul a fost executat corect, fr erori, func ia main va returna
valoarea 0.

Acoladele sunt separatori ai funciei main, iar ce se afl n interiorul lor este codul pe care
funcia main l va executa la rularea programului.

Un program poate s conin comentarii:

//comentariu pe un rnd sau

/* comentariu pe
10
mai multe rnduri*/

11
Elementele de limbaj

Limbajul C++ este caracterizat de:


sintax format din totalitatea regulilor de scriere corect a programelor;
semantic reprezint semnificaia construciilor corecte din punct de vedere sintactic;
vocabular este format din totalitatea cuvintelor care pot fi folosite ntr-un program.

Vocabularul limbajului C++ este format din:


setul de caractere;
identificatori;
cuvinte cheie;
comentarii;

separatori.

Setul de caractere utilizat pentru scrierea programelor este setul de caractere al


codului ASCII:

litere mari i mici ale alfabetului englez

cifrele sistemului zecimal

semnele matematice i de punctuaie i separatori: +,-,*,/,%,<,>,=,#,!,&,|,?,^,(,),[,],{,},;

Identificatori
Definiie: Identificatorii sunt acele construcii care au rolul de a denumi elemente ale
programului i reprezint nume de: constante, variabile, funcii, etc.

Din punct de vedere sintactic un identificator este constituit dintr-o succesiune de litere
mari sau mici ale alfabetului englez, cifrele sistemului zecimal i caracterul _, cu condiia ca
primul caracter s nu fie o cifr.

Spre exemplu:

Identificatori corect scrii Identificatori greit scrii

max_1 nume prenume

citire_vector 1max

_unu a+b

Numele variabilelor nu pot s nceap cu o cifr.

Observaii:

1. un identificator poate avea orice lungime, dar sunt luate n considerare doar primele 31
de caractere

12
2. n limbajul C++ se face diferenta dintre literele mari i literele mici, din acest punct de
vedere spunem c limbajul este case-sensitive (identificatorii max_1 i Max_1 sunt
diferii).

3. este recomandat ca identificatorii folosii s fie sugestivi, pentru a nu apela la


comentarii pentru a ntelege scopul n care este folosit un identificator. Este util s
construim identificatori prin compunerea mai multor cuvinte, i recomandat este ca
iniiala fiecrui cuvnt s fie majuscul (Citire_Vector, Afisare_Matrice)

Cuvinte cheie (keywords)


Cuvintele cheie sunt identificatori speciali, rezervai limbajului C++, cu neles predefinit i
care pot fi utilizai numai n construciile sintactice n care sunt definii. n limbajul C++ toate
cuvintele cheie se scriu doar cu litere mici.

Tabelul care cuprinde toate cele 32 de cuvinte cheie ale limbajului C++ este:

auto double int struct

break else long switch

case enum registe typedef


r

char extern return union

const float short unsigned

continu for signed void


e

default goto sizeof volatile

do if static while

Separatori i comentarii

Separatorii au rolul de a delimita unitile lexicale dintr-un program.

Lista separatorilor admii n limbajul C++ este:

(,) parantezele rotunde ncadreaz lista de parametrii a unei funcii, sau precizeaz
ordinea de efectuare a operaiilor pentru evaluarea unei expresii.

{ } acoladele ncadreaz instruciunile compuse, care se mai numesc i blocuri.

[ ] parantezele drepte ncadreaz dimensiunile tablourilor

13
" " ghilimelele ncadreaz irurile de caractere

' ' apostrofii ncadreaz un singur caracter

; fiecare instruciune se ncheie cu caracterul ;

/* */ comentariile sunt ncadrate de caracterele /* i */ sau dac dorim ca un singur rnd


din codul surs sa fie comentat, sau n dreptul unei instruciuni s apara un comentariu
folosim caracterele //. Comentariile sunt texte care vor fi ignorate n momentul execuiei
programelor, dar au rolul de a clarifica si a face un cod surs mai clar pentru cel care
citete acel cod.

Tipuri de date C/C++

Tipul de date reprezint un concept foarte important n C/C++. Orice dat (constant sau
variabil) este de un numit tip. Tipul datei precizeaz ce valori poate avea acea dat i ce operaii
se pot face cu ea.

n C/C++ tipurile de date sunt:

1. Tipuri simple

o Tipuri ntregi

o Tipuri reale

o Tipul pointer

o Tipul bool

o Tipul void

2. Tipuri derivate

o Tipul tablou

o Tipul structur

o Tipul enumerare

Tipuri simple
Tipurile ntregi
Tipurile ntregi permit memorarea de valori ntregi. Tipul de baz este int. O dat de tip int
poate memora valori ntregi cuprinse ntre -231 i 231-1.

14
Tipurile ntregi difer prin numrul de octei necesari pentru memorarea datei, tipul datei (cu
semn sau fr semn) i implicit intervalul de valori pe care le pate lua respectiva dat. Tipurile
ntregi sunt:

Reprezentar Interval de
Denumire tip -
e valori
4 octei cu -2147483648 ...
int -231 ... 231-1
semn 2147483647

4 octei fr
unsigned int 0 ... 232-1 0 ... 4294967295
semn
4 octei cu -2147483648 ...
long int -231 ... 231-1
semn 2147483647

4 octei fr
unsigned long int 0 ... 232-1 0 ... 4294967295
semn
2 octei cu
short int -215 ... 215-1 -32768 ... 32767
semn
2 octei fr
unsigned short int 0 ... 216-1 0 ... 65535
semn
8 octei cu
long long int -263 ... 263-1
semn
unsigned long long 8 octei fr
0 ... 264-1
int semn
1 octet cu
char -27 ... 27-1 -128 ... 127
semn
1 octet fr
unsigned char 0 ... 28-1 0 ... 255
semn
Tipurile char i unsigned char memoreaz valori ntregi. La afiarea unei date de acest tip
nu se va afia numrul pe care l memoreaz ci caracterul care are are codul ASCII egal cu acel
numr. Operaia de citire a unei date de acest tip este similar.

Tipurile reale n virgul mobil


Memoreaz valori reale, reprezentate prin mantis i exponent. n acest mod se pot reprezenta
valori foarte mari, dar precizia reprezentrii poate fi slab numrul de cifre semnificative
memorate poate fi mult mai mic dect numrul de cifre din numr.

Tipurile reale sunt:

float se reprezinta pe 4 octei;

double se reprezinta pe 8 octei;

15
long double se reprezinta pe 10 octei;

Tipul void permite explicitarea faptului c o funcie nu returneaz nimic sau nu are nici
un parametru. Este tipul de dat vid (fr tip specificat), utilizat n general pentru mrirea
claritii programelor.
Exemplu:
void salut(void)
{
cout<<SALUTAM PROGRAMATORII IN LIMBAJUL C++!!!\<<endl;
}

Tipul pointer
O dat de tip pointer memoreaz o adres de memorie de exemplu adresa unei variabile. Vom
reveni asupra tipului pointer mai trziu.

Tipul bool
Anumite operaii care se fac cu datele au ca rezultat valori de adevr: adevrat sau false. n
anumite limbaje de programare exist un tip de date care memoreaz exact aceste dou valori.

n limbajul C++ exist tipul bool. Acest tip conine dou valori: literalii true i false. De
fapt, acestea sunt redenumiri ale valorilor 1 i 0.

16
Citirea/scrierea datelor
Citirea datelor reprezint operaia prin care una sau mai multe variabile primesc
valori prin introducerea lor de la tastatur sau prin extragerea lor de pe un suport extern
(adic dintr-un fiier text)
n fiierul antet iostream este definit acest stream (flux) de intrare a datelor de la
tastatur, denumit cin (console input). Atunci cnd dorim s citim datelele de la tastatur le vom
extrage din fluxul de intrare, folosind operatorul de extragere >>. Din acest punct de vedere
forma general a operaiei de citire este:
cin>>nume_variabil;

Dac dorim s citim succesiv mai multe variabile, atunci putem utiliza operatorul de extragere
nlnuit, adic:
cin>>nume_variabil_1>>nume_variabil_2>>>>nume_variabil_n;

Ex. cin>>x;

Prin afiarea sau scrierea datelor vom ntelege operaia prin care rezultatele
obinute prin prelucrarea datelor de intrare vor fi afiate pe ecranul monitorului, fie vor fi
memorate ntr-un fiier text pe un suport extern de memorare.

17
n fiierul antet iostream este definit acest stream de ieire a datelor de la tastatur,
denumit cout (console output). Atunci cnd dorim s afim datelele le vom extrage din fluxul
de ieire, folosind operatorul de ieire <<. Din acest punct de vedere forma general a
operaiei de afiare este:
cout<<expresie;

Ca efect, se evaluez expresia, iar valoarea ei este convertit ntr-o succesiune de caractere care
vor fi afiate pe ecran. i operatorul de ieire poate fi utilizat nlnuit atunci cand dorim sa
afim mai multe date pe ecran:
cout<<expresie_1<<expresie_2<<expresie_3<<<<expresie_n;

Ex. cout<<s-a citit numrul x;

Pentru afiarea unui text pe mai multe rnduri se folosete secvena Escape \n care are ca efect
mutarea cursorului la nceputul rndului urmtor pe ecran. (salt la un rnd nou).

Se poate utiliza i manipulatorul numit endl (end line).

La scrierea n streamuri, datele de ieire se acumuleaz ntr-un buffer (stream) care se golete
periodic, nefiind nevoie de accesarea discului la fiecare operaie de scriere. Manipulatorul de
format endl, face flush stream-ului de ieire, ceea ce foreaz scrierea pe disc. Dac aceasta se
ntampl ntr-un ciclu, atunci viteza scade catastrofal. (din Sfaturi de bun practic pentru
concurenii OJI / ONI 2016)

Aplicaii
1. Afiarea unui text:

18
2. Rescriei exemplele de la punctul 1 utiliznd secvena Escape.

3. Scriei un program care cere introducerea valorii pentru un numr ntreg x i apoi l afieaz.

4. Se citesc de la tastatur dou numere ntregi a i b. Scriei un program care calculeaz i


afieaz pe ecran suma lor.

19
5. Scriei un program care s afieze pe ecran:

6. S se realizeze o carte de vizit dup modelul:


*************************
* Numele vostru *
* *
*************************

20
Instruciunile limbajului C++

Limbajul C++ consider instruciunile ca fiind instruciuni simple i instruciuni


compuse:
O instruciune simpl este de fapt o singur instruciune, cum ar fi aceea de atribuire sau
de apel a unei funcii standard (de exemplu funcia cout).
O instruciune compus este alctuit din dou sau mai multe instruciuni incluse ntre
acolade.

Instruciunea expresie:
Are 3 forme:
a) instruciunea de atribuire
b) instruciunea de apel de funcie
c) instruciunea de incrementare / decrementare

a) instruciunea de atribuire
variabila = expresie;
sau
variabila operator = expresie;
Exemplu:
int x, y, z;
z = x + 5 * y;
x + = 10; (semnificaie: x = x + 10;)

b) instruciunea de apel de funcie


nume_functie(pa1, pa2, . . . ,pan);
unde pa1, pa2, . . ., pan sunt parametrii actuali ai funciei (adic valorile cu care se va
lucra n funcia respectiv la apelul funciei).

Exemplu:
maxim (int a, int b); // apelul functiei maxim care are doi parametri actuali de tip ntreg

c) instruciunea de incrementare/decrementare

variabila ++;
++ variabila;
variabila --;
-- variabila;

St la baza celor mai muli algoritmi. Forma cea mai des folosit este var++sau var--, n
traducere nsemnnd var+1, respectiv var-1.

Exemplu:
int i, j, k;
i++;
--j;
k++ + --i;

21
22
Instruciunea if (instruciune de decizie sau condiional)

Are dou forme:


if (expresie) instructiune;

if (expresie)
instructiune1;
else
instructiune2;

Aplicaii - Instruciunea if

1. Se dau trei numere ntregi a,b,c. S se afieze numerele n ordine cresctoare.


Exemplu: Dac a = 12, b = 2, c = 9, atunci obinem a = 2, b = 9, c = 12

Pas 1: Date de intrare: a, b, c numere ntregi


Date de iesire: a, b, c n ordine cresctoare

Pas 2: Analiza problemei


1) Comparm primele dou numere a i b, dac a este mai mare dect b atunci vom
interschimba cele dou valori.
2) Comparm urmtoarele dou numere b i c, dac b este mai mare dect c atunci vom
interschimba cele dou valori.
3) Comparm din nou cele dou numere a i b, dac a este mai mare dect b atunci vom
interschimba cele dou valori.

Pas 3: Scrierea algoritmului n pseudocod: Pas 4: Implementarea algoritmului n


limbajul de programare C++:
#include <iostream>
using namespace std;
int main()
{
int a,b,c,aux;
cin>>a; cin>>b; cin>>c;
if(a>b){
aux=a;
a=b;
b=aux;
}
if(b>c){
aux=b;
b=c;
c=aux;
}
if(a>b){
aux=a;
a=b;
b=aux;
}
cout<<a<<" "<<b<<" "<<c;
}

23
2. S se calculeze valoarea funciei f(x), tiind c x este un numr real introdus de la
tastatur:

Scrierea algoritmului n pseudocod: Implementarea algoritmului n limbajul de


programare C++:

#include <iostream>
#include <cmath>

using namespace std;


int main()
{
float x,f;
cin>>x;
if(x <=-7)
f = -6 * x + 20;
else
if(x >-7 && x <= 0)
f = x + 30;
else
f = sqrt(x) + 2;
cout<<"f = "<<f;
}

3. Scriei un program care rezolv ecuaia de gradul nti de forma ax+b=0. Dac a 0 se va
afia soluia, n caz contrar se va afia mesajul nu exist soluii. Dac a=b=0 se va afia
mesajul o infinitate de soluii.

#include <iostream>
using namespace std;
int main()
{
double a,b,x;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
if (a!=0)
{ x=-b/a;
cout<<"x="<<x;
}
else
if (b==0)
cout<<"o infinitate de solutii ";
else cout<<"nu sunt solutii";
}

4.Scriei un program care va afia calificativul obinut n urma examenului de compentene


digitale. Astfel:
24
P<=10, fara punctaj
11<=p<=30 incepator
31<=p<=55 mediu
56<=p<=74 avansat
p>=75 experimentat

5.Se citesc 4 numere de la tastatur. S se determine dac suma lor este pozitiv.
6. Se citesc 3 numere de la tastatur. S se determine dac produsul lor este pozitiv.
7. Se citete un numr de la tastatur, ntreg i pozitiv de maxim 5 cifre. S se determine cte
cifre are numrul. Exemplu: n=123 are 3 cifre.

Instruciunea while (instruciune repetitiv cu test iniial)

Are urmtoarea form:


while (expresie)
instructiune;

unde instruciune poate fi:


instruciunea vid
instruciunea simpl
sau instruciunea compus

Funcionarea unei astfel de instruciuni se bazeaz pe evaluarea expresiei date i executarea


repetat a instruciunii ct timp expresia este ndeplinit.
Aplicaii instruciunea while
1. Se citete un numr n. S se afieze suma cifrelor numrului n.
Pseudocod: Program C++:
ntreg n,s #include<iostream>
citeste n using namespace std;
s 0 int s,n;
| cat timp n!=0 executa int main ()
|s s+n%10 {
| n n/10; s=0;
| cout<<"n=";cin>>n;
while(n!=0)
scrie s
{
s=s+n%10;
n=n/10;
}
cout<<s;
}

25
2. Scriei un program care afieaz cmmdc a dou numere a i b citite de la tastatur.
(Algoritmul lui Euclid)
3. Scriei un program care afieaz cmmdc a dou numere a i b citite de la tastatur.
(Algoritmul lui Nicomahus)
4. Scriei un program care afieaz cmmmc a dou numere a i b citite de la tastatur.
(cmmmc=a*b/cmmdc)
5. Se citete un numr ntreg a. S se scrie un program care s verifice dac numrul citit este
sau nu palindrom.
Numim palindrom un numr care este egal cu oglinditul su. De exemplu dac se citete
pentru a valoarea 121 atunci algoritmul va afia este palindrom", iar dac va citi 122
va afia nu este palindrom".
6. S se scrie un program care citete un numr i numr cte cifre pare i cte impare are
numrul.
7. Se citete un numr natural n. S se calculeze suma cifrelor numrului n.
8. Se citete un numr natural n. S se calculeze produsul cifrelor numrului n.

Instruciunea do while (instruciune repetitiv cu test final)

Are urmtoarea form:

do
instructiune
while (expresie);

unde instruciune poate fi:


instruciunea vid
instruciunea simpl
instruciunea compus

Funcionarea unei astfel de instruciuni se bazeaz pe executarea repetat a instruciunii ct


timp condiia este ndeplinit.

Aplicaii instruciunea do while

1. Fie un numr natural n de cinci cifre. S se scrie un algoritm care s calculeze suma cifrelor
numrului dat.
Exemplu:
Pentru n = 20178, se va afia valoarea s = 2+0+1+7+8 = 18

Pseudocod: natural n, s
citete n
26
s <- 0 #include<iostream>
execut using namespace std;
s <- s + n % 10 int main()
n <- n / 10 {
ct timp n! = 0 int n, s;
scrie s cin>>n;
s = 0;
do
{
s = s + n % 10;
n = n / 10;
}while( n != 0 );
Program cout<<s;
}

2. S se scrie un program care tiprete numerele naturale de la 0 la 9 i suma lor pe


parcurs.

Pseudocod: Program
#include<iostream>
ntreg numar0,total0; using namespace std;
execut int main()
totaltotal+numar; {
scrie numar, total; int numar = 0, total = 0;
numar++;
do{
ct timp (numar< 10);
total = total + numar;
cout<<"numar = "<<numar++<<" total =
"<<total<<"\n";
}while (numar<10);
}

Instruciunea for

Este una dintre cele mai puternice instruciuni ale limbajului C/C++, datorit formei sale.

Forma instruciunii este:

for(expresie1; expresie2; expresie3)


instructiune;

expresie1 reprezint secvena de iniializarea a ciclului


expresie2 reprezint condiia de terminare a ciclului
expresie3 reprezint secvena de reiniializare a ciclului
instruciune - corpul ciclului

Funcionarea instruciunii for are loc astfel:


Se pornete ciclul repetitiv prin iniializarea sa, adic prin execuia expresia1
iar apoi se evalueaz expresia2 i dac este adevrat se execut corpul ciclului, adic
instruciune
27
dup aceea se execut expresia3, i se reia evaluarea expresiei2.

Observaie:
expresia1, expresia2, expresia3 pot s lipseasc, dar este obligatorie prezena semnelor: ;.
for(;;) while(1) bucl infinit

Se stie c instruciunea for este de fapt o variant particular a instruciunii while, drept pentru
care se poate scrie echivalent astfel:

expresie1;
while(expresie2)
{
instructiune;
expresie3;
}

Aplicaii instruciunea for


1. Fie un numr natural n. S se scrie un algoritm care s calculeze factorialul numrului
dat.
Exemplu:
Pentru n = 5, se va afia valoarea p = 1*2*3*4*5=120.

Pseudocod Program C++

natural n, p, i #include<iostream>
citete n using namespace std;
p <- 1 int main()
pentru (i=1,n) execut {
p <- p * i unsigned int n, p, i;
scrie p cin>>n;
p = 1;
for(i = 1; i<=n; i++)
p = p * i;
cout<<p;
}

28
Bibliografie

1. Coord. Semenescu Augustin Informatic, Bucureti, Ed. Niculescu, 2015


2. Moraru Pavel Florin Informatic pentru liceu i Bacalaureat, Sibiu, Ed. Donaris, 2003
3. https://sites.google.com/site/eildegez/
4. http://www.pbinfo.ro
5. http://olimpiada.info/oji2011/OJI_ONI_good_practice.pdf
6. www.runceanu.ro/
7. http://www.ududec.com/