SlideShare a Scribd company logo
1 of 95
Download to read offline
Programarea calculatoarelor
#2
Adrian Runceanu
www.runceanu.ro/adrian
2016
C++
Elemente introductive ale
limbajului C++
copyright@www.adrian.runceanu.ro
Curs 2
Elemente introductive ale
limbajului C++
02.12.2016 Curs - Programarea calculatoarelor 2
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.2. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 3
copyright@www.adrian.runceanu.ro
2.1. Programarea şi limbaje de programare
Prin programare se înţelege în mod generic
transpunerea unor operaţii repetitive, asupra unui set de
date, într-un limbaj inteligibil de către un sistem de calcul
care urmează ulterior să le execute.
Acest lucru este realizat în două etape:
1. etapă în care este implicat omul şi anume cea de trecere de
la problema reală la transpunerea într-un limbaj de
programare.
2. o a doua etapă, automată, care transpune codul sursă
(înşiruirea de instrucţiuni specifice limbajului respectiv) într-
un cod direct executabil (inteligibil sistemului de calcul)
lucru de care se ocupă programe specializate numite
compilatoare.
02.12.2016 Curs - Programarea calculatoarelor 4
copyright@www.adrian.runceanu.ro
2.1. Programarea şi limbaje de programare
Rolul programării este ca de fiecare dată
când o anumită operaţiune sau o suită de
operaţiuni repetitive care se aplică asupra unor
seturi de date mereu diferite să fie scris un
program care să:
1. ceară setul de date de intrare (cele care trebuie
să fie prelucrate)
2. să execute asupra lor suita standard de
operaţiuni
3. şi să livreze datele de ieşire (adică rezultatele)
02.12.2016 Curs - Programarea calculatoarelor 5
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.2. Constante
2.3.2. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 6
copyright@www.adrian.runceanu.ro
2.2. Limbajul C
Limbajele de programare de nivel mediu au fost
serios dezvoltate pe la mijlocul anilor '50.
La ora actuală se estimează că există peste 2000 de
limbaje de programare, diferenţele între ele fiind legate
în principal de stilul de programare.
Limbajul C, dezvoltat în 1972 de Dennis M. Ritchie*
la Laboratoarele AT&T Bell, este primul limbaj pentru
crearea de sisteme de operare.
*Dennis M. Ritchie a decedat pe 14.10.2011 (la varsta de 70 de ani)!
02.12.2016 Curs - Programarea calculatoarelor 7
copyright@www.adrian.runceanu.ro
2.2. Limbajul C
Numele limbajului provine din faptul că este
rezultatul îmbunătăţirii limbajului B, folosit în scrierea
sistemului de operare UNIX pentru DEC PDP7.
Prima documentaţie despre acest limbaj a fost "The
C Programing Language", scrisă de Dennis Ritchie şi
Brian Kernighan în 1977.
Înaintea ei exista doar "The C Reference Manual",
scrisă de Dennis Ritchie.
O caracteristică importantă a acestui limbaj este
faptul că poate fi considerat simultan şi un limbaj de
nivel mediu şi un limbaj de nivel scăzut.
02.12.2016 Curs - Programarea calculatoarelor 8
copyright@www.adrian.runceanu.ro
2.2. Limbajul C
Limbajul C şi versiunile sale OOP (Object
Oriented Programming) C++, Visual C++ şi
mai noul C# sunt printre cele mai folosite
limbaje de programare la ora actuală.
02.12.2016 Curs - Programarea calculatoarelor 9
copyright@www.adrian.runceanu.ro
2.2. Limbajul C
http://spectrum.ieee.org/computing/software/the-
2015-top-ten-programming-languages
02.12.2016 Curs - Programarea calculatoarelor 10
copyright@www.adrian.runceanu.ro
2.2. Limbajul C
Limbajul C permite folosirea a două tehnici
de programare:
1. programare structurată
2. acces direct la maşină
fapt care-l face să fie foarte flexibil.
Ultimul şi poate cel mai important motiv
pentru învăţarea limbajului C este faptul că
permite trecerea cu uşurinţă la varianta sa C++,
la limbajul Java sau la limbajul C#.
02.12.2016 Curs - Programarea calculatoarelor 11
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 12
copyright@www.adrian.runceanu.ro
2.2. Elemente de bază ale limbajului C++
Vom studia în cele ce urmează varianta
orientată pe obiecte a limbajului standard C, şi
anume limbajul C++.
02.12.2016 Curs - Programarea calculatoarelor 13
copyright@www.adrian.runceanu.ro
2.2. Elemente de bază ale limbajului C++
1. Tipuri de date. Variabile. Constante
Cuvinte cheie
Limbajul C, ca orice limbaj de programare,
este compus din câteva denumiri (identificatori)
cu o semnificaţie bine stabilită, numite cuvinte
cheie.
Observaţie: Când alegeţi denumiri de variabile
pentru programe să nu utilizaţi aceste denumiri.
02.12.2016 Curs - Programarea calculatoarelor 14
copyright@www.adrian.runceanu.ro
2.2. Elemente de bază ale limbajului C++
Limbajul C++ adaugă noi cuvinte cheie la cele
existente ale limbajului C.
02.12.2016 Curs - Programarea calculatoarelor 15
auto break case char const continue default do
double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while
asm bool catch class delete
friend inline mutable namespace new
operator private public protected template
this using virtual
Cuvintele cheie ale limbajului C.
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 16
copyright@www.adrian.runceanu.ro
2.3.1. Tipuri de date
Un tip de date specifică (precizează):
mulţimea de valori pe care variabila respectivă
le poate lua
cât şi setul de operaţii pe care programatorul le
poate efectua cu acea variabilă
02.12.2016 Curs - Programarea calculatoarelor 17
copyright@www.adrian.runceanu.ro
2.3.1. Tipuri de date
NUMELE
TIPULUI
CARACTERISTICI
char
reţine un singur caracter
Exemple: ‘A’, ’a’, ’%’, etc.
int
reţine numere întregi cu semn
Exemple: 23, -45, 0, etc.
float
reţine numere reale în format cu virgulă mobilă, în
simplă precizie
Exemple: 7.8965, -4.123, 7.0, etc.
double
reţine numere reale în format cu virgulă mobilă, în
dublă precizie
Exemple: 123456789.89654321,
-123456789.1234567890, 123456789.0, etc. (se
utilizează când se prelucrează numere foarte mari sau
foarte mici)
void
tip de date special care nu specifică un anumit set de
valori iniţial, dar care poate fi specificat ulterior
declarării.
02.12.2016 Curs - Programarea calculatoarelor 18
copyright@www.adrian.runceanu.ro
2.3.1. Tipuri de date
Reprezentarea caracterelor in memoria calculatorului
 Programatorii pot folosi in programe valori de orice tip (cifra,
litera mica, litera mare, caractere speciale, alte caractere).
 In memoria calculatorului fiecare astfel de caracter se
reprezinta printr-un cod numeric - ASCII (codul numeric al
caracterului respectiv). Intervalul este intre 0 si 255.
02.12.2016 Curs - Programarea calculatoarelor 19
Interval valori (selecție)
Cod ASCII
Semnificație
[0, 32] Caractere neprintabile(netipăribile)
[48, 57] Cifrele de la 0 la 9
[65, 90] Literele mari de la A la Z
[97, 122] Literele mici de la a la z
copyright@www.adrian.runceanu.ro
2.3.1. Tipuri de date
1. Tipul de date char
Se reprezintă în memoria calculatorului folosind 8 biţi (un octet) şi
poate păstra valori cuprinse între –128 şi 127.
Dacă se declară fără semn (adică se utilizează modificatorul unsigned),
intervalul de valori se întinde de la 0 la 255.
Programatorii pot atribui valori de tip caracter unei astfel de
variabile în două modalităţi distincte, dar care acţionează identic:
 reprezentarea din ASCII (codul numeric al caracterului respectiv)
 sau caracterul respectiv între două apostrofuri
02.12.2016 Curs - Programarea calculatoarelor 20
Exemplu:
char litera_mica;
char litera_mica=97;
sau char litera_mica=’a’;
char <definitie_de_data>;
copyright@www.adrian.runceanu.ro
2.3.1. Tipuri de date
2. Tipul de date int
Se reprezintă în memoria calculatorului folosind 16
biţi (2 octeţi) şi poate păstra valori cuprinse între
–32768 şi 32767.
Dacă se declară fără semn (adică se utilizează
modificatorul unsigned), intervalul de valori se întinde
de la 0 la 65535.
02.12.2016 Curs - Programarea calculatoarelor 21
int <definitie_de_data>;
Exemplu: int a=9;
int b=6725;
int c=-31567;
copyright@www.adrian.runceanu.ro
2.3.1. Tipuri de date
3. Tipul de date float
Se reprezintă în memoria calculatorului folosind 32
biţi (4 octeţi) şi poate păstra valori cuprinse între 3.4E-
38 şi 3.4E+38.
02.12.2016 Curs - Programarea calculatoarelor 22
float <definitie_de_data>;
Exemplu: float x=9.789;
float y=-6725.123;
float z=-3156723;
copyright@www.adrian.runceanu.ro
2.3.1. Tipuri de date
4. Tipul de date double
Se reprezintă în memoria calculatorului folosind
64 biţi (8 octeţi) şi poate păstra valori cuprinse între
1.7E-308 şi 1.7E+308.
02.12.2016 Curs - Programarea calculatoarelor 23
double <definitie_de_data>;
Exemplu:
double numar_foarte_mare=123456789123456789.123456789123456789;
double numar_foarte_mic=-123456789123456789.123456789123456789;
double numar_mare=-123456789;
copyright@www.adrian.runceanu.ro
2.3.1. Tipuri de date
5. Tipul de date void
 Este tipul de dată vidă (fără tip specificat), utilizat în general
pentru mărirea clarităţii programelor.
 Tipul void permite explicitarea faptului că o funcţie nu
returnează nimic sau nu are nici un parametru.
02.12.2016 Curs - Programarea calculatoarelor 24
[void ] <definitie_de_functie([void])
sau
void <definitie_de_pointer>;
Exemplu:
void salut(void)
{
cout<<"SALUTAM PROGRAMATORII IN LIMBAJUL C++ !!!n";
}
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 25
copyright@www.adrian.runceanu.ro
2.3.2. Modificatorii de tip
Limbajul C++ oferă pe lîngă cele 5 tipuri de bază
prezentate mai sus, un set de modificatori de tip:
1. unsigned (fără semn)
2. long (lung)
3. signed (cu semn)
4. register (registru)
5. short (scurt)
 Un modificator de tip schimbă domeniul valorilor pe care o
variabilă le poate păstra, sau modul în care compilatorul
păstrează o variabilă.
 Pentru a se modifica un tip de data, se va plasa modificatorul
în faţa tipului respectiv.
02.12.2016 Curs - Programarea calculatoarelor 26
Exemplu: unsigned int numar;
register int i;
long int numar_foarte_mare;
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 27
copyright@www.adrian.runceanu.ro
2.3.3. Constante
Sunt date a căror valoare nu poate fi modificată în
timpul execuţiei programului.
Ele reprezintă un tip şi o valoare şi astfel pot fi de mai
multe tipuri:
1. constantă întreagă
2. constantă flotantă
3. constantă caracter
4. constantă șir de caractere
02.12.2016 Curs - Programarea calculatoarelor 28
copyright@www.adrian.runceanu.ro
2.3.3. Constante
1. constantă întreagă = se reprezintă sub forma unei înşiruiri de cifre.
Se clasifică în:
– constante zecimale (se scriu în baza 10) Exemplu: 14, 568,
17342
– constante octale (se scriu în baza 8) Exemplu: 0şir de cifre în
baza 8
– constante hexazecimale (se scriu în baza 16) Exemplu: 0x şir de
cifre în baza 16
Constantele întregi se reprezintă pe 16 biţi sau pe 32 de biţi. Dacă
la sfârşitul unei constante punem litera l sau L, atunci constanta
respectivă va fi reprezentată pe 32 de biţi.
Exemplu: numărul 17 se reprezintă pe 16 biţi
numărul 17L se reprezintă pe 32 biţi
02.12.2016 Curs - Programarea calculatoarelor 29
copyright@www.adrian.runceanu.ro
2.3.3. Constante
2. constantă flotantă este compusă din 2 părţi
– partea fracţionară (care poate fi vidă) şi
– exponent (care poate fi el vid)
O constantă reală este sub următoarea formă:
Exemplu: 3.45e-17  3,45*10-17
Toate constantele flotante se reprezintă pe 16 biţi.
02.12.2016 Curs - Programarea calculatoarelor 30
parte întreagă.parte fracţionară e  exponent
copyright@www.adrian.runceanu.ro
2.3.3. Constante
3. constantă caracter este de fapt un caracter între apostrofuri.
Se reprezintă pe 8 biţi, fiind chiar reprezentarea în codul ASCII a
caracterului respectiv.
Exemplu:
‘A’ reprezentare internă: 65 (codul ASCII a caracterului ‘A’)
‘a’ reprezentare internă: 97 (codul ASCII a caracterului ‘a’)
În plus avem o notaţie specială ‘’ = backslash, care se poate folosi
împreună cu câteva litere mici cu următoarele semnificaţii:
02.12.2016 Curs - Programarea calculatoarelor 31
Caracter semnificatie
n linie noua
r retur de car
t tabulator orizontal
v tabulator vertical
 backslash
nnn valoare ASCII in octal
xnnn valoare ASCII in hexazecimal
copyright@www.adrian.runceanu.ro
2.3.3. Constante
4. constantă şir sau şir de caractere
 Acest tip de constantă apare ca o succesiune de caractere scrise
între ghilimele.
 Poate fi şi şirul vid. Reprezentarea internă este astfel încât fiecare
caracter apare pe câte un singur octet, iar ca terminator de şir
avem caracterul 0 (nul).
 Constantele şir pot fi scrise pe linii diferite, dar pe prima linie
ultimul caracter este backslash, înainte de apăsarea tastei
RETURN.
Exemplu: linia 1 : "conti
linia 2 : nuare"
Exemplu: "AbbA" se reprezintă intern astfel:
659898650 A b b A
02.12.2016 Curs - Programarea calculatoarelor 32
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 33
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
 Pentru a putea utiliza informaţiile ce pot fi prelucrate
prin intermediul programelor, trebuie să folosim
denumiri (identificatori), care să fie compuşi din
caractere – litere, cifre şi liniuţa de subliniere -
underscore(‘_’) din maximum 31 caractere.
 Numim variabilă o denumire (identificator) pe care
compilatorul o asociază cu o anumită zonă de memorie.
02.12.2016 Curs - Programarea calculatoarelor 34
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
Când se declară o variabilă, trebuie specificat atât
numele ei cât şi tipul de date asociat.
02.12.2016 Curs - Programarea calculatoarelor 35
Exemple:
int variabila_de_tip_intreg;
float variabila_de_tip_real;
char variabila_de_tip_caracter;
void variabila_fara_tip;
Restricţie: Numele variabilelor nu poate să înceapă cu o
cifră.
Exemplu: variabila1 - este corect
1variabila - nu este corect
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
Observaţie:
 Limbajul C este case sensitive, adică face diferenţa dintre
literele mici şi mari, astfel încât, două denumiri de
variabile sau de funcţii, care sunt identice dar sunt scrise
o dată cu litere mici iar apoi cu litere mari, se consideră
ca fiind două denumiri de variabile sau de funcţii
diferite.
Exemplu: int var_intreaga;
int VAR_INTREAGA;
semnifică două denumiri total diferite.
02.12.2016 Curs - Programarea calculatoarelor 36
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
Variabilele pot fi:
1. simple
2. compuse:
a) tablou
b) structură/uniune/enumerare
02.12.2016 Curs - Programarea calculatoarelor 37
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
1. Variabilele simple
Declaraţia de variabilă simplă are forma:
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 38
tip nume_variabila;
int i;
int j, k, l;
double a, b;
float x, y;
char m, n, t;
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
2. Variabilele tablou
Prin tablou înţelegem o mulţime ordonată
de acelaşi tip; accesul la elementele tabloului
făcându-se cu ajutorul indicilor.
Declaraţia este:
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 39
tip nume_tablou[dimensiune];
int v[5];
float x[15];
double a[3];
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
Observaţie:
Numerotarea elementelor unui tablou în
limbajul C++ începe cu indicele 0.
Elementele lui int v[5] vor fi:
v[0],v[1],v[2],v[3],v[4];
Indice poate să fie orice expresie întreagă.
Putem avea chiar şi tablouri de şiruri de
caractere: char t[20];
Numele tabloului este de fapt adresa
primului său element.
02.12.2016 Curs - Programarea calculatoarelor 40
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
Iniţializarea variabilelor
Poate fi făcută chiar pe linia de declarare a variabilelor:
Exemplu:
Pentru iniţializarea variabilelor de tip şir de caractere avem
următoarele posibilităţi:
char t[15] = { ’s’, ’i’, ’r’, ’ ’, ’c’, ’o’, ’r’, ’e’, ’c’, ’t’, ’0’ };
sau char t[15] = ”sir corect”;
02.12.2016 Curs - Programarea calculatoarelor 41
int i=5;
float x=7.8;
int v[5]={1,2,7,10,-5};
float y[3]={-9.034,89,2};
char c=’B’;
copyright@www.adrian.runceanu.ro
2.3.4. Variabile
Comentarii în programe
Numim comentarii, acele texte care nu sunt luate
în considerare de compilator şi care apar între
simbolurile
/* comentariu */
sau
când este vorba despre o singură linie
// comentariu
Se mai pot pune comentarii pentru ca să se
elimine una sau mai multe instrucţiuni din
programul C++.
02.12.2016 Curs - Programarea calculatoarelor 42
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 43
copyright@www.adrian.runceanu.ro
2.4. OPERATORII LIMBAJULUI C++
Expresii
O expresie poate să fie un operand sau mai
mulţi operanzi legaţi prin operatori
Orice expresie are tip şi valoare care se obtin
după evaluarea expresiei
02.12.2016 Curs - Programarea calculatoarelor 44
copyright@www.adrian.runceanu.ro
2.4. OPERATORII LIMBAJULUI C++
Operatori
Operatorii folosiţi în limbajul C++ au o asociere
de la stânga la dreapta – în general – cu excepţia
- operatorilor unari (se aplică la un singur operand),
- relaţionali
- şi de atribuire,
la care asocierea se face de la dreapta la stânga.
02.12.2016 Curs - Programarea calculatoarelor 45
copyright@www.adrian.runceanu.ro
2.4. OPERATORII LIMBAJULUI C++
Operatorii sunt împărţiţi în 11 categorii:
Operatori
1 aritmetici
2 relaţionali
3 de egalitate
4 logici
5 logici pe biţi
6 de atribuire
7 de incrementare şi decrementare
8 de conversie explicită (cast)
9 de lungime (sizeof)
10 condiţional
11 virgulă
02.12.2016 Curs - Programarea calculatoarelor 46
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 47
copyright@www.adrian.runceanu.ro
2.4.1. Operatori aritmetici
În cele mai simple programe se pot utiliza operaţii matematice cum ar fi
adunarea, scăderea, înmulţirea şi împărţirea.
OPERATOR FUNCŢIE
+ Adunare
- Scădere
* Înmulţire
/ Împărţire
% Restul împărţirii
+ adunare unară
- scădere unară
02.12.2016 Curs - Programarea calculatoarelor 48
Exemplu:
int i=9, j=2;
atunci i/j are ca rezultat 4
i%j are ca rezultat 1
copyright@www.adrian.runceanu.ro
2.4.1. Operatori aritmetici
Prezentăm în următorul program scris în C++, principalii operatori
matematici:
#include <iostream.h>
int main(void)
{
int secunde_pe_ora;
float media;
secunde_pe_ora = 60 * 60;
media = (5 + 10 + 15 + 20) / 4;
cout<<“Numarul de secunde intr-o ora este ”<< secunde_pe_ora
<<endl;
cout<<“Media numerelor 5, 10, 15 si 20 este ”<<media<<endl;
cout<<“Numarul de secunde in 48 de minute este
”<<secunde_pe_ora – 12 * 60<<endl;
} 02.12.2016 Curs - Programarea calculatoarelor 49
copyright@www.adrian.runceanu.ro
2.4.1. Operatori aritmetici
După execuţia programului se vor afişa pe ecran
următoarele rezultate:
Numarul de secunde intr-o ora este 3600
Media numerelor 5, 10, 15 si 20 este 12.000000
Numarul de secunde in 48 de minute este 2880
02.12.2016 Curs - Programarea calculatoarelor 50
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 51
copyright@www.adrian.runceanu.ro
2.4.2. Operatori relaţionali
În programe, prin aplicarea acestor operatori relaţionali se
pot obţine două valori posibile, la evaluarea expresiilor care îi
conţin:
0 – ceea ce înseamnă că expresia este falsă
1 – ceea ce înseamnă că expresia este adevărată
OPERATOR FUNCŢIE
< mai mic
<= mai mic sau egal
> mai mare
>= mai mare sau egal
02.12.2016 Curs - Programarea calculatoarelor 52
Exemplu:
int i=3, j=8;
Atunci pentru expresia i < j avem valoarea 1
Iar pentru expresia i >= j avem valoarea 0
copyright@www.adrian.runceanu.ro
2.4.2. Operatori relaţionali
Se citesc doua numere întregi a si b. Să se realizeze un algoritm
care să verifice care numar este mai mare, afişandu-se un mesaj
corespunzator:
#include <iostream.h>
int main(void)
{
int a,b;
cin>>a; cin>>b;
if(a > b)
cout<<“Numarul a este mai mare decat numarul bn”;
else
cout<<“Numarul b este mai mare decat numarul an”;
}
02.12.2016 Curs - Programarea calculatoarelor 53
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.1. Programarea şi limbaje de programare
2.2. Limbajul C
2.3. Elemente de bază ale limbajului C++
2.3.1. Tipuri de date
2.3.2. Modificatorii de tip
2.3.3. Constante
2.3.4. Variabile
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relationali
2.4.3. Operatori de egalitate
02.12.2016 Curs - Programarea calculatoarelor 54
copyright@www.adrian.runceanu.ro
2.4.3. Operatori de egalitate
În programe, prin aplicarea acestor operatori de egalitate se
pot obţine două valori posibile, la evaluarea expresiilor care îi
conţin:
0 – ceea ce înseamnă că expresia este falsă
1 – ceea ce înseamnă că expresia este adevărată
OPERATOR FUNCŢIE
== egal
!= diferit
02.12.2016 Curs - Programarea calculatoarelor 55
Exemplu:
int i=2, j=5, k=2;
Atunci pentru expresia i!=j avem valoarea 1
Pentru expresia i==j avem valoarea 0
Iar pentru expresia i==k avem valoarea 1
copyright@www.adrian.runceanu.ro
2.4.3. Operatori de egalitate
Se citeşte un număr întreg a. Să se realizeze un algoritm care să
verifice dacă numărul a este par, afişandu-se un mesaj
corespunzator:
#include <iostream.h>
int main(void)
{
int a;
cin>>a;
if( a % 2 == 0 )
cout<<“Numarul este parn”;
else
cout<<“Numarul este imparn”;
}
02.12.2016 Curs - Programarea calculatoarelor 56
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relaţionali
2.4.3. Operatori de egalitate
2.4.4. Operatori logici
2.4.5. Operatori logici pe biţi
2.4.6. Operatorul de atribuire
2.4.7. Operatori de incrementare şi de decrementare
2.4.8. Operatorul de conversie explicită (cast)
2.4.9. Operatorul de lungime (sizeof)
2.4.10. Operatorii condiţionali
2.4.11. Operatorul virgulă
02.12.2016 Programarea calculatoarelor 57
2.4.4. Operatori logici
În limbajul C/C++ nu există valori speciale pentru adevărat
sau fals şi de aceea:
- valoarea de fals este reprezentată prin zero (0)
- iar valoarea de adevarat este reprezentată prin orice număr
diferit de zero (0)
Observaţie:
Din punct de vedere al priorităţii, operatorii unari au cea mai
mare prioritate şi de aceea, în acest caz, operatorul ‘!’ are
prioritatea cea mai mare, urmat în ordine de operatorul ‘&&’ şi
de operatorul ‘||’.02.12.2016 Programarea calculatoarelor 58
OPERATOR FUNCŢIE
! negare
&& şi logic
|| sau logic
2.4.4. Operatori logici
Reamintim tabele de adevăr ale celor trei operatori
logici:
Exemplu:
expresia !0 are valoarea 1
expresia !5 are valoarea 0
expresia !(a==b) are valoarea 1 sau 0 în funcţie de valorile lui
a, respectiv b.
02.12.2016 Programarea calculatoarelor 59
&& 0 0
0 0 0
0 0 1
|| 0 0
0 0 1
0 1 1
!0 1
! 0 0
2.4.4. Operatori logici
Prezentăm mai
jos, un exemplu mai
amplu cu câteva
expresii la care le
evaluăm valorile:
Presupunem că avem
variabilele întregi:
• i = 0
• j  0
• k  0
02.12.2016 Programarea calculatoarelor 60
Expresie
i && j
!i && j
i || j
i ||!j
!(i && j)
!i || !j
!i && j || !j && i
i <= j || j <= k
0
1
1
0
1
1
1
0 sau 1
Valoare
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relaţionali
2.4.3. Operatori de egalitate
2.4.4. Operatori logici
2.4.5. Operatori logici pe biţi
2.4.6. Operatorul de atribuire
2.4.7. Operatori de incrementare şi de decrementare
2.4.8. Operatorul de conversie explicită (cast)
2.4.9. Operatorul de lungime (sizeof)
2.4.10. Operatorii condiţionali
2.4.11. Operatorul virgulă
02.12.2016 Programarea calculatoarelor 61
2.4.5. Operatori logici pe biţi
Operatorii logici pe biţi se pot folosi în limbajul C++, pentru a
mări performanţele unui program sau pentru a-i reduce consumul
de memorie utilizată.
Acest tip de operatori se aplică unuia sau mai multor biţi
dintr-o expresie.
02.12.2016 Programarea calculatoarelor 62
OPERATOR FUNCŢIE
~ negație logică pe biţi
& şi pe biţi
| sau pe biţi
^ sau exclusiv pe biţi
<< deplasare la stânga pe biţi
>> deplasare la dreapta pe biţi
copyright@www.adrian.runceanu.ro
2.4.5. Operatori logici pe biţi
Operatorul unar “~” returnează operandul
asupra căruia este folosit cu toţi biţii negaţi
Exemplu : ~0 are valoarea 1
010 = 000000002
prin negare bit cu bit se transformă în
~010 = 111111112 (numărul este 25510)
02.12.2016 Programarea calculatoarelor 63
2.4.5. Operatori logici pe biţi
Operatorul binar “&” se utilizează pentru a
transforma în 0 anumiţi biţi, sau pentru a testa o
anumită configuraţie de biţi.
Exemplu:
110 = 000000012 110 = 000000012
210 = 000000102 310 = 000000112
-------------------- --------------------
010 = 000000002 110 = 000000012
expresie valoare
1 & 2 0
1 & 3 1
02.12.2016 Programarea calculatoarelor 64
2.4.5. Operatori logici pe biţi
Operatorul binar “|” se utilizează pentru a
transforma în 1 anumiţi biţi.
Exemplu:
110 = 000000012 110 = 000000012
210 = 000000102 310 = 000000112
-------------------- --------------------
310 = 000000112 310 = 000000112
expresie valoare
1 | 2 3
1 | 3 3
02.12.2016 Programarea calculatoarelor 65
2.4.5. Operatori logici pe biţi
Operatorul binar “^” are următoarea tabelă de
valori:
Exemplu:
110 = 000000012 110 = 000000012
210 = 000000102 310 = 000000112
-------------------- ---------------------
310 = 000000112 210 = 000000102
expresie valoare
1 ^ 2 3
1 ^ 3 2
02.12.2016 Programarea calculatoarelor 66
^ 0 1
0 0 1
1 1 0
copyright@www.adrian.runceanu.ro
2.4.5. Operatori logici pe biţi
Operatorul “<<” se foloseşte pentru a deplasa spre stânga biţii
unui număr întreg cu n biţi specificaţi după operator; biţii rămaşi în
dreapta se completează cu 0.
Exemplu: 2 << 2
210 = 000000102
---------------------
810 = 000010002
Deci, în general, a << n înseamnă, ca valoare, a*2 la puterea n.
Operatorul “>>” realizează deplasarea spre dreapta a biţilor unui
număr întreg cu n poziţii.
Deci, în general, a >> n înseamnă, ca valoare, a/(2^n), fiind de fapt
împărţirea cu 2 la puterea n a numărului.
02.12.2016 Programarea calculatoarelor 67
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relaţionali
2.4.3. Operatori de egalitate
2.4.4. Operatori logici
2.4.5. Operatori logici pe biţi
2.4.6. Operatorul de atribuire
2.4.7. Operatori de incrementare şi de decrementare
2.4.8. Operatorul de conversie explicită (cast)
2.4.9. Operatorul de lungime (sizeof)
2.4.10. Operatorii condiţionali
2.4.11. Operatorul virgulă
02.12.2016 Programarea calculatoarelor 68
2.4.6. Operatorul de atribuire
Are cea mai mică prioritate după operatorul virgulă şi
apare sub forma:
Dacă avem var = var operator expresie, atunci în C/C++, se
poate scrie prescurtat:
unde operator poate să fie un operator aritmetic sau un operator
logic pe biţi.
Exemplu: int i, j;
i = i + 2; se poate scrie i + = 2;
j = j | 1; se poate scrie j | = 1;
var = expresie
02.12.2016 Programarea calculatoarelor 69
var operator = expresie
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relaţionali
2.4.3. Operatori de egalitate
2.4.4. Operatori logici
2.4.5. Operatori logici pe biţi
2.4.6. Operatorul de atribuire
2.4.7. Operatori de incrementare şi de decrementare
2.4.8. Operatorul de conversie explicită (cast)
2.4.9. Operatorul de lungime (sizeof)
2.4.10. Operatorii condiţionali
2.4.11. Operatorul virgulă
02.12.2016 Programarea calculatoarelor 70
2.4.7. Operatori de incrementare (++) şi de
decrementare (--)
02.12.2016 Programarea calculatoarelor 71
OPERATOR FUNCŢIE
++i incrementare prefixată
--i decrementare prefixată
i++ incrementare postfixată
i-- decrementare postfixată
copyright@www.adrian.runceanu.ro
2.4.7. Operatori de incrementare (++) şi de
decrementare (--)
De fapt:
++i  i = i + 1 - incrementarea se face înainte de
evaluarea expresiei în care apare ++
i++  i = i + 1 - incrementarea se face după evaluarea
expresiei în care apare ++
--i  i = i - 1 - decrementarea se face înainte de
evaluarea expresiei în care apare --
i--  i = i - 1 - decrementarea se face după evaluarea
expresiei în care apare --
Observaţie: Aceşti operatori nu se aplică unor expresii.
02.12.2016 Programarea calculatoarelor 72
copyright@www.adrian.runceanu.ro
2.4.7. Operatori de incrementare (++) şi de
decrementare (--)
Pentru a înţelegere mai eficient diferenţa între cele două forme,
prezentăm mai jos o secvenţă de program care utilizează ambii operatori:
Rezultatele execuţiei sunt următoarele:
Utilizarea formei postfixate 1
Valoarea dupa incrementare 2
Utilizarea formei prefixate 2
Valoarea dupa incrementare 2
02.12.2016 Programarea calculatoarelor 73
int valoare = 1;
cout<<"Utilizarea formei postfixate "<<valoare++<<endl;
cout<<"Valoarea dupa incrementare "<<valoare<<endl;
valoare=1;
cout<<"Utilizarea formei prefixate "<<++valoare<<endl;
cout<<"Valoarea dupa incrementare "<<valoare<<endl;
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relaţionali
2.4.3. Operatori de egalitate
2.4.4. Operatori logici
2.4.5. Operatori logici pe biţi
2.4.6. Operatorul de atribuire
2.4.7. Operatori de incrementare şi de decrementare
2.4.8. Operatorul de conversie explicită (cast)
2.4.9. Operatorul de lungime (sizeof)
2.4.10. Operatorii condiţionali
2.4.11. Operatorul virgulă
02.12.2016 Programarea calculatoarelor 74
2.4.8. Operatorul de conversie explicită
(cast)
Se foloseşte pentru forţarea tipului unui operand.
Are forma:
unde operand poate fi şi o expresie, iar tip este un operator
unar.
Exemplu:
int i=5, j=2;
float a;
a = i / j; înseamnă că a primeşte valoarea întreagă 2
a = (float) (i / j); înseamnă că a primeşte ca valoare 2
a = (float) i / j; înseamnă că a primeşte ca valoare 2.5
(tip) operand
02.12.2016 Programarea calculatoarelor 75
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relaţionali
2.4.3. Operatori de egalitate
2.4.4. Operatori logici
2.4.5. Operatori logici pe biţi
2.4.6. Operatorul de atribuire
2.4.7. Operatori de incrementare şi de decrementare
2.4.8. Operatorul de conversie explicită (cast)
2.4.9. Operatorul de lungime (sizeof)
2.4.10. Operatorii condiţionali
2.4.11. Operatorul virgulă
02.12.2016 Programarea calculatoarelor 76
copyright@www.adrian.runceanu.ro
2.4.9. Operatorul de lungime (sizeof)
Este un operator cu o prioritate mare,
folosit în determinarea lungimii în octeţi a unui
operand care poate fi o expresie sau un tip de
date.
02.12.2016 Programarea calculatoarelor 77
sizeof (expresie) sizeof (tip)
copyright@www.adrian.runceanu.ro
2.4.9. Operatorul de lungime (sizeof)
Pentru a putea înţelege eficienţa folosirii acestui operator, prezentăm un
scurt program:
În funcţie de compilatorul C/C++ folosit (exemplu MinGW) se obţin
următoarele rezultate:
Variabila de tip int foloseşte 2 octeţi
Variabila de tip float foloseşte 4 octeţi
Variabila de tip double foloseşte 8 octeţi
Variabila de tip unsigned foloseşte 2 octeţi
Variabila de tip long foloseşte 4 octeţi
02.12.2016 Programarea calculatoarelor 78
cout<<"Variabila de tip int foloseste "<<sizeof(int)<<" octetin";
cout<<"Variabila de tip float foloseste "<<sizeof(float)<<" octetin";
cout<<"Variabila de tip double foloseste "<< sizeof(double)<<
" octetin";
cout<<"Variabila de tip unsigned foloseste "<<sizeof(unsigned)<<"
octetin”;
cout<<"Variabila de tip long foloseste "<<sizeof(long)<<" octetin";
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relaţionali
2.4.3. Operatori de egalitate
2.4.4. Operatori logici
2.4.5. Operatori logici pe biţi
2.4.6. Operatorul de atribuire
2.4.7. Operatori de incrementare şi de decrementare
2.4.8. Operatorul de conversie explicită (cast)
2.4.9. Operatorul de lungime (sizeof)
2.4.10. Operatorii condiţionali
2.4.11. Operatorul virgulă
02.12.2016 Programarea calculatoarelor 79
2.4.10. Operatorii condiţionali “?” “:”
Se folosesc numai împreună şi funcţionează ca o
instrucţiune if.
Forma este următoarea:
sau
unde expresie1 este o expresie logică care poate fi adevarată sau
falsă; când este adevarată rezultatul este expresie2, iar când este
falsă rezultatul este expresie3.
Exemplu:
modul = x < 0 ? –x : x;
max = a < b ? b : a;
min = a < b ? a : b;
expresie1 ? expresie2 : expresie3
var = expresie1 ? expresie2 : expresie3
02.12.2016 Programarea calculatoarelor 80
copyright@www.adrian.runceanu.ro
2. Elemente introductive ale limbajului
C++
2.4. Operatorii limbajului C++
2.4.1. Operatori aritmetici
2.4.2. Operatori relaţionali
2.4.3. Operatori de egalitate
2.4.4. Operatori logici
2.4.5. Operatori logici pe biţi
2.4.6. Operatorul de atribuire
2.4.7. Operatori de incrementare şi de decrementare
2.4.8. Operatorul de conversie explicită (cast)
2.4.9. Operatorul de lungime (sizeof)
2.4.10. Operatorii condiţionali
2.4.11. Operatorul virgulă
02.12.2016 Programarea calculatoarelor 81
2.4.11. Operatorul virgulă “,”
Are prioritatea cea mai scazută din toţi
operatorii.
Are următoarea formă:
sau
Această expresie se evaluează de la stânga la
dreapta, evaluându-se pe rând fiecare expresie până
se ajunge la ultima.
expresie1, expresie2, expresie3, . . . , expresien
expresie = expresie1, expresie2, expresie3, . . . , expresien
02.12.2016 Programarea calculatoarelor 82
Tabela de priorităţi a operatorilor
În limbajul C/C++, pentru a evalua expresiile în care apar
operatori, s-au stabilit anumite reguli de prioritate (precedenţă)
a operatorilor.
02.12.2016 Programarea calculatoarelor 83
NIVEL DE
PRIORITATE
OPERATOR ASOCIATIVITATE
1 () [] . -> stânga -> dreapta
2 - (unar) + (unar) & (unar) ! ~ *(unar) (cast) (sizeof) ++ -- dreapta -> stânga
3 * (binar) / % stânga -> dreapta
4 + (binar) - (binar) stânga -> dreapta
5 << >> stânga -> dreapta
6 < <= > >= dreapta -> stânga
7 == != stânga -> dreapta
8 & stânga -> dreapta
9 ^ stânga -> dreapta
10 | stânga -> dreapta
11 && stânga -> dreapta
12 || stânga -> dreapta
13 ? : stânga -> dreapta
14 = dreapta -> stânga
15 , stânga -> dreapta
Probleme propuse spre rezolvare
02.12.2016 Programarea calculatoarelor 84
copyright@www.adrian.runceanu.ro
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Problema 1
Să se scrie un program care să afișeze toate
numerele perechi de numere prime gemene mai mici
decât un număr natural n dat.
Spunem că două numere a și b sunt prime gemene
dacă îndeplinesc următoarele condiții:
1. sunt prime
2. |a - b|=2
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 85
Pt. n=20 se obțin valorile:
(3,5); (5,7); (11,13); (17,19)
copyright@www.adrian.runceanu.ro
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Pas 1: Stabilim care sunt datele de intrare, adică
cele care vor fi prelucrate cu ajutorul
algoritmului, împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: n număr întreg
Date de ieșire: numere prime gemene
02.12.2016 Curs - Programarea calculatoarelor 86
copyright@www.adrian.runceanu.ro
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi prelucrate în
cadrul algoritmului.
Verificăm valorile a între 3 și n-2. Pentru aceste
valori verificăm:
a) Numărul a este sau nu număr prim
b) Numărul b=a+2 este sau nu număr prim
Dacă ambele numere sunt prime, atunci am găsit o
pereche de numere prime gemene.
02.12.2016 Curs - Programarea calculatoarelor 87
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Pas 3:
Scrierea
algoritmului în
pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 88
întreg n, a, b, prim1, prim2, i, j
citeşte n
pentru a=3,n-2 execută
prim1 <- 1
pentru i=2, a/2 execută
dacă a % i = 0 atunci
prim1 <- 0
sfârșit dacă
sfârșit pentru
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Pas 3:
Scrierea
algoritmului în
pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 89
b <- a+2
prim2 <- 1
pentru j=2, b/2 execută
dacă b % j = 0 atunci
prim2 <- 0
sfârșit dacă
sfârșit pentru
dacă prim1 = 1 și prim2=1 atunci
scrie a, b
sfârșit dacă
sfârșit pentru
stop
copyright@www.adrian.runceanu.ro
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Problema 2
Sa se scrie un program care sa determine
toate numerele prime palindrom dintr-un
interval [a, b] dat, cu a si b valori naturale.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 90
Pt. a=10 si b=400 se obțin valorile:
(11, 101, 131, 151, 181, 191, 313, 353, 373)
copyright@www.adrian.runceanu.ro
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Problema 3
Se citesc numere naturale strict pozitive până
la întâlnirea numărului 0.
Să se numere câte dintre ele sunt pare,
presupunând că cel puţin primul element este
nenul.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 91
Date de intrare: 4 3 6 5 7 7 0
Date de ieşire: 2 numere pare
copyright@www.adrian.runceanu.ro
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Problema 4
Se citesc de la tastatură numere intregi
pozitive până la întâlnirea numărului 0.
Să se scrie un program care să afişeze cea mai mică
şi cea mai mare valoare a acestor numere.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 92
Date de intrare: 550 345 100 45 0
Date de ieşire: max=550 min=100
copyright@www.adrian.runceanu.ro
Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Problema 5
Se introduce un număr natural cu maxim 9
cifre. Să se determine şi să se afişeze numărul de
cifre, cea mai mare cifră şi suma tuturor cifrelor
acestui număr.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 93
Date de intrare: 24356103
Date de ieşire:
8 cifre
max = 6
suma = 24
copyright@www.adrian.runceanu.ro
Referinte bibliografice
Bibliografia necesară cursului:
1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de programare în
limbajul C++, Academica Brâncuşi, Târgu-Jiu, 2012, ISBN 978-
973-144-550-2, 483 pagini
2. Adrian Runceanu, Programarea şi utilizarea calculatoarelor,
Editura Academică Brâncuși Targu-Jiu, 2003
3. Octavian Dogaru, C++ - Teorie şi practică, volumul I, Editura
Mirton, Timişoara, 2004
4. O.Catrina, I.Cojocaru, Turbo C+, Editura Teora, Bucureşti, 1993
5. D.Costea, Iniţiere în limbajul C, Editura Teora, Bucureşti, 1996
6. K.Jamsa, C++, Editura Teora,1999
7. K.Jamsa & L.Klander, Totul despre C si C++, Teora, 2004
02.12.2016 Programarea Calculatoarelor - curs 94
copyright@www.adrian.runceanu.ro
“First, solve the problem. Then, write
the code.”
- John Johnson
02.12.2016 Programarea Calculatoarelor - curs 95

More Related Content

Viewers also liked

Programare Web - PHP (o prezentare generala)
Programare Web - PHP (o prezentare generala)Programare Web - PHP (o prezentare generala)
Programare Web - PHP (o prezentare generala)Sabin Buraga
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"Sabin Buraga
 
curs utilizarea-calculatorului
curs utilizarea-calculatoruluicurs utilizarea-calculatorului
curs utilizarea-calculatoruluicomsys00
 
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)Sabin Buraga
 
Pagina de Facebook - Ghid practic
Pagina de Facebook - Ghid practicPagina de Facebook - Ghid practic
Pagina de Facebook - Ghid practicAlexandru Negrea
 
Ghid pentru utilizarea calculatorului si a internetului
Ghid pentru utilizarea calculatorului si a internetuluiGhid pentru utilizarea calculatorului si a internetului
Ghid pentru utilizarea calculatorului si a internetuluiEla Iliesi
 

Viewers also liked (6)

Programare Web - PHP (o prezentare generala)
Programare Web - PHP (o prezentare generala)Programare Web - PHP (o prezentare generala)
Programare Web - PHP (o prezentare generala)
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
curs utilizarea-calculatorului
curs utilizarea-calculatoruluicurs utilizarea-calculatorului
curs utilizarea-calculatorului
 
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
 
Pagina de Facebook - Ghid practic
Pagina de Facebook - Ghid practicPagina de Facebook - Ghid practic
Pagina de Facebook - Ghid practic
 
Ghid pentru utilizarea calculatorului si a internetului
Ghid pentru utilizarea calculatorului si a internetuluiGhid pentru utilizarea calculatorului si a internetului
Ghid pentru utilizarea calculatorului si a internetului
 

Similar to Lecture2 - PC

Similar to Lecture2 - PC (6)

Cap02
Cap02Cap02
Cap02
 
baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.
 
Introd
IntrodIntrod
Introd
 
Etapele procesului de programare
Etapele procesului de programareEtapele procesului de programare
Etapele procesului de programare
 
manual-de-programare-c
manual-de-programare-cmanual-de-programare-c
manual-de-programare-c
 
Modulul ii algoritmi
Modulul ii   algoritmiModulul ii   algoritmi
Modulul ii algoritmi
 

Lecture2 - PC

  • 2. copyright@www.adrian.runceanu.ro Curs 2 Elemente introductive ale limbajului C++ 02.12.2016 Curs - Programarea calculatoarelor 2
  • 3. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.2. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 3
  • 4. copyright@www.adrian.runceanu.ro 2.1. Programarea şi limbaje de programare Prin programare se înţelege în mod generic transpunerea unor operaţii repetitive, asupra unui set de date, într-un limbaj inteligibil de către un sistem de calcul care urmează ulterior să le execute. Acest lucru este realizat în două etape: 1. etapă în care este implicat omul şi anume cea de trecere de la problema reală la transpunerea într-un limbaj de programare. 2. o a doua etapă, automată, care transpune codul sursă (înşiruirea de instrucţiuni specifice limbajului respectiv) într- un cod direct executabil (inteligibil sistemului de calcul) lucru de care se ocupă programe specializate numite compilatoare. 02.12.2016 Curs - Programarea calculatoarelor 4
  • 5. copyright@www.adrian.runceanu.ro 2.1. Programarea şi limbaje de programare Rolul programării este ca de fiecare dată când o anumită operaţiune sau o suită de operaţiuni repetitive care se aplică asupra unor seturi de date mereu diferite să fie scris un program care să: 1. ceară setul de date de intrare (cele care trebuie să fie prelucrate) 2. să execute asupra lor suita standard de operaţiuni 3. şi să livreze datele de ieşire (adică rezultatele) 02.12.2016 Curs - Programarea calculatoarelor 5
  • 6. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.2. Constante 2.3.2. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 6
  • 7. copyright@www.adrian.runceanu.ro 2.2. Limbajul C Limbajele de programare de nivel mediu au fost serios dezvoltate pe la mijlocul anilor '50. La ora actuală se estimează că există peste 2000 de limbaje de programare, diferenţele între ele fiind legate în principal de stilul de programare. Limbajul C, dezvoltat în 1972 de Dennis M. Ritchie* la Laboratoarele AT&T Bell, este primul limbaj pentru crearea de sisteme de operare. *Dennis M. Ritchie a decedat pe 14.10.2011 (la varsta de 70 de ani)! 02.12.2016 Curs - Programarea calculatoarelor 7
  • 8. copyright@www.adrian.runceanu.ro 2.2. Limbajul C Numele limbajului provine din faptul că este rezultatul îmbunătăţirii limbajului B, folosit în scrierea sistemului de operare UNIX pentru DEC PDP7. Prima documentaţie despre acest limbaj a fost "The C Programing Language", scrisă de Dennis Ritchie şi Brian Kernighan în 1977. Înaintea ei exista doar "The C Reference Manual", scrisă de Dennis Ritchie. O caracteristică importantă a acestui limbaj este faptul că poate fi considerat simultan şi un limbaj de nivel mediu şi un limbaj de nivel scăzut. 02.12.2016 Curs - Programarea calculatoarelor 8
  • 9. copyright@www.adrian.runceanu.ro 2.2. Limbajul C Limbajul C şi versiunile sale OOP (Object Oriented Programming) C++, Visual C++ şi mai noul C# sunt printre cele mai folosite limbaje de programare la ora actuală. 02.12.2016 Curs - Programarea calculatoarelor 9
  • 11. copyright@www.adrian.runceanu.ro 2.2. Limbajul C Limbajul C permite folosirea a două tehnici de programare: 1. programare structurată 2. acces direct la maşină fapt care-l face să fie foarte flexibil. Ultimul şi poate cel mai important motiv pentru învăţarea limbajului C este faptul că permite trecerea cu uşurinţă la varianta sa C++, la limbajul Java sau la limbajul C#. 02.12.2016 Curs - Programarea calculatoarelor 11
  • 12. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 12
  • 13. copyright@www.adrian.runceanu.ro 2.2. Elemente de bază ale limbajului C++ Vom studia în cele ce urmează varianta orientată pe obiecte a limbajului standard C, şi anume limbajul C++. 02.12.2016 Curs - Programarea calculatoarelor 13
  • 14. copyright@www.adrian.runceanu.ro 2.2. Elemente de bază ale limbajului C++ 1. Tipuri de date. Variabile. Constante Cuvinte cheie Limbajul C, ca orice limbaj de programare, este compus din câteva denumiri (identificatori) cu o semnificaţie bine stabilită, numite cuvinte cheie. Observaţie: Când alegeţi denumiri de variabile pentru programe să nu utilizaţi aceste denumiri. 02.12.2016 Curs - Programarea calculatoarelor 14
  • 15. copyright@www.adrian.runceanu.ro 2.2. Elemente de bază ale limbajului C++ Limbajul C++ adaugă noi cuvinte cheie la cele existente ale limbajului C. 02.12.2016 Curs - Programarea calculatoarelor 15 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while asm bool catch class delete friend inline mutable namespace new operator private public protected template this using virtual Cuvintele cheie ale limbajului C.
  • 16. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 16
  • 17. copyright@www.adrian.runceanu.ro 2.3.1. Tipuri de date Un tip de date specifică (precizează): mulţimea de valori pe care variabila respectivă le poate lua cât şi setul de operaţii pe care programatorul le poate efectua cu acea variabilă 02.12.2016 Curs - Programarea calculatoarelor 17
  • 18. copyright@www.adrian.runceanu.ro 2.3.1. Tipuri de date NUMELE TIPULUI CARACTERISTICI char reţine un singur caracter Exemple: ‘A’, ’a’, ’%’, etc. int reţine numere întregi cu semn Exemple: 23, -45, 0, etc. float reţine numere reale în format cu virgulă mobilă, în simplă precizie Exemple: 7.8965, -4.123, 7.0, etc. double reţine numere reale în format cu virgulă mobilă, în dublă precizie Exemple: 123456789.89654321, -123456789.1234567890, 123456789.0, etc. (se utilizează când se prelucrează numere foarte mari sau foarte mici) void tip de date special care nu specifică un anumit set de valori iniţial, dar care poate fi specificat ulterior declarării. 02.12.2016 Curs - Programarea calculatoarelor 18
  • 19. copyright@www.adrian.runceanu.ro 2.3.1. Tipuri de date Reprezentarea caracterelor in memoria calculatorului  Programatorii pot folosi in programe valori de orice tip (cifra, litera mica, litera mare, caractere speciale, alte caractere).  In memoria calculatorului fiecare astfel de caracter se reprezinta printr-un cod numeric - ASCII (codul numeric al caracterului respectiv). Intervalul este intre 0 si 255. 02.12.2016 Curs - Programarea calculatoarelor 19 Interval valori (selecție) Cod ASCII Semnificație [0, 32] Caractere neprintabile(netipăribile) [48, 57] Cifrele de la 0 la 9 [65, 90] Literele mari de la A la Z [97, 122] Literele mici de la a la z
  • 20. copyright@www.adrian.runceanu.ro 2.3.1. Tipuri de date 1. Tipul de date char Se reprezintă în memoria calculatorului folosind 8 biţi (un octet) şi poate păstra valori cuprinse între –128 şi 127. Dacă se declară fără semn (adică se utilizează modificatorul unsigned), intervalul de valori se întinde de la 0 la 255. Programatorii pot atribui valori de tip caracter unei astfel de variabile în două modalităţi distincte, dar care acţionează identic:  reprezentarea din ASCII (codul numeric al caracterului respectiv)  sau caracterul respectiv între două apostrofuri 02.12.2016 Curs - Programarea calculatoarelor 20 Exemplu: char litera_mica; char litera_mica=97; sau char litera_mica=’a’; char <definitie_de_data>;
  • 21. copyright@www.adrian.runceanu.ro 2.3.1. Tipuri de date 2. Tipul de date int Se reprezintă în memoria calculatorului folosind 16 biţi (2 octeţi) şi poate păstra valori cuprinse între –32768 şi 32767. Dacă se declară fără semn (adică se utilizează modificatorul unsigned), intervalul de valori se întinde de la 0 la 65535. 02.12.2016 Curs - Programarea calculatoarelor 21 int <definitie_de_data>; Exemplu: int a=9; int b=6725; int c=-31567;
  • 22. copyright@www.adrian.runceanu.ro 2.3.1. Tipuri de date 3. Tipul de date float Se reprezintă în memoria calculatorului folosind 32 biţi (4 octeţi) şi poate păstra valori cuprinse între 3.4E- 38 şi 3.4E+38. 02.12.2016 Curs - Programarea calculatoarelor 22 float <definitie_de_data>; Exemplu: float x=9.789; float y=-6725.123; float z=-3156723;
  • 23. copyright@www.adrian.runceanu.ro 2.3.1. Tipuri de date 4. Tipul de date double Se reprezintă în memoria calculatorului folosind 64 biţi (8 octeţi) şi poate păstra valori cuprinse între 1.7E-308 şi 1.7E+308. 02.12.2016 Curs - Programarea calculatoarelor 23 double <definitie_de_data>; Exemplu: double numar_foarte_mare=123456789123456789.123456789123456789; double numar_foarte_mic=-123456789123456789.123456789123456789; double numar_mare=-123456789;
  • 24. copyright@www.adrian.runceanu.ro 2.3.1. Tipuri de date 5. Tipul de date void  Este tipul de dată vidă (fără tip specificat), utilizat în general pentru mărirea clarităţii programelor.  Tipul void permite explicitarea faptului că o funcţie nu returnează nimic sau nu are nici un parametru. 02.12.2016 Curs - Programarea calculatoarelor 24 [void ] <definitie_de_functie([void]) sau void <definitie_de_pointer>; Exemplu: void salut(void) { cout<<"SALUTAM PROGRAMATORII IN LIMBAJUL C++ !!!n"; }
  • 25. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 25
  • 26. copyright@www.adrian.runceanu.ro 2.3.2. Modificatorii de tip Limbajul C++ oferă pe lîngă cele 5 tipuri de bază prezentate mai sus, un set de modificatori de tip: 1. unsigned (fără semn) 2. long (lung) 3. signed (cu semn) 4. register (registru) 5. short (scurt)  Un modificator de tip schimbă domeniul valorilor pe care o variabilă le poate păstra, sau modul în care compilatorul păstrează o variabilă.  Pentru a se modifica un tip de data, se va plasa modificatorul în faţa tipului respectiv. 02.12.2016 Curs - Programarea calculatoarelor 26 Exemplu: unsigned int numar; register int i; long int numar_foarte_mare;
  • 27. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 27
  • 28. copyright@www.adrian.runceanu.ro 2.3.3. Constante Sunt date a căror valoare nu poate fi modificată în timpul execuţiei programului. Ele reprezintă un tip şi o valoare şi astfel pot fi de mai multe tipuri: 1. constantă întreagă 2. constantă flotantă 3. constantă caracter 4. constantă șir de caractere 02.12.2016 Curs - Programarea calculatoarelor 28
  • 29. copyright@www.adrian.runceanu.ro 2.3.3. Constante 1. constantă întreagă = se reprezintă sub forma unei înşiruiri de cifre. Se clasifică în: – constante zecimale (se scriu în baza 10) Exemplu: 14, 568, 17342 – constante octale (se scriu în baza 8) Exemplu: 0şir de cifre în baza 8 – constante hexazecimale (se scriu în baza 16) Exemplu: 0x şir de cifre în baza 16 Constantele întregi se reprezintă pe 16 biţi sau pe 32 de biţi. Dacă la sfârşitul unei constante punem litera l sau L, atunci constanta respectivă va fi reprezentată pe 32 de biţi. Exemplu: numărul 17 se reprezintă pe 16 biţi numărul 17L se reprezintă pe 32 biţi 02.12.2016 Curs - Programarea calculatoarelor 29
  • 30. copyright@www.adrian.runceanu.ro 2.3.3. Constante 2. constantă flotantă este compusă din 2 părţi – partea fracţionară (care poate fi vidă) şi – exponent (care poate fi el vid) O constantă reală este sub următoarea formă: Exemplu: 3.45e-17  3,45*10-17 Toate constantele flotante se reprezintă pe 16 biţi. 02.12.2016 Curs - Programarea calculatoarelor 30 parte întreagă.parte fracţionară e  exponent
  • 31. copyright@www.adrian.runceanu.ro 2.3.3. Constante 3. constantă caracter este de fapt un caracter între apostrofuri. Se reprezintă pe 8 biţi, fiind chiar reprezentarea în codul ASCII a caracterului respectiv. Exemplu: ‘A’ reprezentare internă: 65 (codul ASCII a caracterului ‘A’) ‘a’ reprezentare internă: 97 (codul ASCII a caracterului ‘a’) În plus avem o notaţie specială ‘’ = backslash, care se poate folosi împreună cu câteva litere mici cu următoarele semnificaţii: 02.12.2016 Curs - Programarea calculatoarelor 31 Caracter semnificatie n linie noua r retur de car t tabulator orizontal v tabulator vertical backslash nnn valoare ASCII in octal xnnn valoare ASCII in hexazecimal
  • 32. copyright@www.adrian.runceanu.ro 2.3.3. Constante 4. constantă şir sau şir de caractere  Acest tip de constantă apare ca o succesiune de caractere scrise între ghilimele.  Poate fi şi şirul vid. Reprezentarea internă este astfel încât fiecare caracter apare pe câte un singur octet, iar ca terminator de şir avem caracterul 0 (nul).  Constantele şir pot fi scrise pe linii diferite, dar pe prima linie ultimul caracter este backslash, înainte de apăsarea tastei RETURN. Exemplu: linia 1 : "conti linia 2 : nuare" Exemplu: "AbbA" se reprezintă intern astfel: 659898650 A b b A 02.12.2016 Curs - Programarea calculatoarelor 32
  • 33. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 33
  • 34. copyright@www.adrian.runceanu.ro 2.3.4. Variabile  Pentru a putea utiliza informaţiile ce pot fi prelucrate prin intermediul programelor, trebuie să folosim denumiri (identificatori), care să fie compuşi din caractere – litere, cifre şi liniuţa de subliniere - underscore(‘_’) din maximum 31 caractere.  Numim variabilă o denumire (identificator) pe care compilatorul o asociază cu o anumită zonă de memorie. 02.12.2016 Curs - Programarea calculatoarelor 34
  • 35. copyright@www.adrian.runceanu.ro 2.3.4. Variabile Când se declară o variabilă, trebuie specificat atât numele ei cât şi tipul de date asociat. 02.12.2016 Curs - Programarea calculatoarelor 35 Exemple: int variabila_de_tip_intreg; float variabila_de_tip_real; char variabila_de_tip_caracter; void variabila_fara_tip; Restricţie: Numele variabilelor nu poate să înceapă cu o cifră. Exemplu: variabila1 - este corect 1variabila - nu este corect
  • 36. copyright@www.adrian.runceanu.ro 2.3.4. Variabile Observaţie:  Limbajul C este case sensitive, adică face diferenţa dintre literele mici şi mari, astfel încât, două denumiri de variabile sau de funcţii, care sunt identice dar sunt scrise o dată cu litere mici iar apoi cu litere mari, se consideră ca fiind două denumiri de variabile sau de funcţii diferite. Exemplu: int var_intreaga; int VAR_INTREAGA; semnifică două denumiri total diferite. 02.12.2016 Curs - Programarea calculatoarelor 36
  • 37. copyright@www.adrian.runceanu.ro 2.3.4. Variabile Variabilele pot fi: 1. simple 2. compuse: a) tablou b) structură/uniune/enumerare 02.12.2016 Curs - Programarea calculatoarelor 37
  • 38. copyright@www.adrian.runceanu.ro 2.3.4. Variabile 1. Variabilele simple Declaraţia de variabilă simplă are forma: Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 38 tip nume_variabila; int i; int j, k, l; double a, b; float x, y; char m, n, t;
  • 39. copyright@www.adrian.runceanu.ro 2.3.4. Variabile 2. Variabilele tablou Prin tablou înţelegem o mulţime ordonată de acelaşi tip; accesul la elementele tabloului făcându-se cu ajutorul indicilor. Declaraţia este: Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 39 tip nume_tablou[dimensiune]; int v[5]; float x[15]; double a[3];
  • 40. copyright@www.adrian.runceanu.ro 2.3.4. Variabile Observaţie: Numerotarea elementelor unui tablou în limbajul C++ începe cu indicele 0. Elementele lui int v[5] vor fi: v[0],v[1],v[2],v[3],v[4]; Indice poate să fie orice expresie întreagă. Putem avea chiar şi tablouri de şiruri de caractere: char t[20]; Numele tabloului este de fapt adresa primului său element. 02.12.2016 Curs - Programarea calculatoarelor 40
  • 41. copyright@www.adrian.runceanu.ro 2.3.4. Variabile Iniţializarea variabilelor Poate fi făcută chiar pe linia de declarare a variabilelor: Exemplu: Pentru iniţializarea variabilelor de tip şir de caractere avem următoarele posibilităţi: char t[15] = { ’s’, ’i’, ’r’, ’ ’, ’c’, ’o’, ’r’, ’e’, ’c’, ’t’, ’0’ }; sau char t[15] = ”sir corect”; 02.12.2016 Curs - Programarea calculatoarelor 41 int i=5; float x=7.8; int v[5]={1,2,7,10,-5}; float y[3]={-9.034,89,2}; char c=’B’;
  • 42. copyright@www.adrian.runceanu.ro 2.3.4. Variabile Comentarii în programe Numim comentarii, acele texte care nu sunt luate în considerare de compilator şi care apar între simbolurile /* comentariu */ sau când este vorba despre o singură linie // comentariu Se mai pot pune comentarii pentru ca să se elimine una sau mai multe instrucţiuni din programul C++. 02.12.2016 Curs - Programarea calculatoarelor 42
  • 43. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 43
  • 44. copyright@www.adrian.runceanu.ro 2.4. OPERATORII LIMBAJULUI C++ Expresii O expresie poate să fie un operand sau mai mulţi operanzi legaţi prin operatori Orice expresie are tip şi valoare care se obtin după evaluarea expresiei 02.12.2016 Curs - Programarea calculatoarelor 44
  • 45. copyright@www.adrian.runceanu.ro 2.4. OPERATORII LIMBAJULUI C++ Operatori Operatorii folosiţi în limbajul C++ au o asociere de la stânga la dreapta – în general – cu excepţia - operatorilor unari (se aplică la un singur operand), - relaţionali - şi de atribuire, la care asocierea se face de la dreapta la stânga. 02.12.2016 Curs - Programarea calculatoarelor 45
  • 46. copyright@www.adrian.runceanu.ro 2.4. OPERATORII LIMBAJULUI C++ Operatorii sunt împărţiţi în 11 categorii: Operatori 1 aritmetici 2 relaţionali 3 de egalitate 4 logici 5 logici pe biţi 6 de atribuire 7 de incrementare şi decrementare 8 de conversie explicită (cast) 9 de lungime (sizeof) 10 condiţional 11 virgulă 02.12.2016 Curs - Programarea calculatoarelor 46
  • 47. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 47
  • 48. copyright@www.adrian.runceanu.ro 2.4.1. Operatori aritmetici În cele mai simple programe se pot utiliza operaţii matematice cum ar fi adunarea, scăderea, înmulţirea şi împărţirea. OPERATOR FUNCŢIE + Adunare - Scădere * Înmulţire / Împărţire % Restul împărţirii + adunare unară - scădere unară 02.12.2016 Curs - Programarea calculatoarelor 48 Exemplu: int i=9, j=2; atunci i/j are ca rezultat 4 i%j are ca rezultat 1
  • 49. copyright@www.adrian.runceanu.ro 2.4.1. Operatori aritmetici Prezentăm în următorul program scris în C++, principalii operatori matematici: #include <iostream.h> int main(void) { int secunde_pe_ora; float media; secunde_pe_ora = 60 * 60; media = (5 + 10 + 15 + 20) / 4; cout<<“Numarul de secunde intr-o ora este ”<< secunde_pe_ora <<endl; cout<<“Media numerelor 5, 10, 15 si 20 este ”<<media<<endl; cout<<“Numarul de secunde in 48 de minute este ”<<secunde_pe_ora – 12 * 60<<endl; } 02.12.2016 Curs - Programarea calculatoarelor 49
  • 50. copyright@www.adrian.runceanu.ro 2.4.1. Operatori aritmetici După execuţia programului se vor afişa pe ecran următoarele rezultate: Numarul de secunde intr-o ora este 3600 Media numerelor 5, 10, 15 si 20 este 12.000000 Numarul de secunde in 48 de minute este 2880 02.12.2016 Curs - Programarea calculatoarelor 50
  • 51. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 51
  • 52. copyright@www.adrian.runceanu.ro 2.4.2. Operatori relaţionali În programe, prin aplicarea acestor operatori relaţionali se pot obţine două valori posibile, la evaluarea expresiilor care îi conţin: 0 – ceea ce înseamnă că expresia este falsă 1 – ceea ce înseamnă că expresia este adevărată OPERATOR FUNCŢIE < mai mic <= mai mic sau egal > mai mare >= mai mare sau egal 02.12.2016 Curs - Programarea calculatoarelor 52 Exemplu: int i=3, j=8; Atunci pentru expresia i < j avem valoarea 1 Iar pentru expresia i >= j avem valoarea 0
  • 53. copyright@www.adrian.runceanu.ro 2.4.2. Operatori relaţionali Se citesc doua numere întregi a si b. Să se realizeze un algoritm care să verifice care numar este mai mare, afişandu-se un mesaj corespunzator: #include <iostream.h> int main(void) { int a,b; cin>>a; cin>>b; if(a > b) cout<<“Numarul a este mai mare decat numarul bn”; else cout<<“Numarul b este mai mare decat numarul an”; } 02.12.2016 Curs - Programarea calculatoarelor 53
  • 54. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.1. Programarea şi limbaje de programare 2.2. Limbajul C 2.3. Elemente de bază ale limbajului C++ 2.3.1. Tipuri de date 2.3.2. Modificatorii de tip 2.3.3. Constante 2.3.4. Variabile 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relationali 2.4.3. Operatori de egalitate 02.12.2016 Curs - Programarea calculatoarelor 54
  • 55. copyright@www.adrian.runceanu.ro 2.4.3. Operatori de egalitate În programe, prin aplicarea acestor operatori de egalitate se pot obţine două valori posibile, la evaluarea expresiilor care îi conţin: 0 – ceea ce înseamnă că expresia este falsă 1 – ceea ce înseamnă că expresia este adevărată OPERATOR FUNCŢIE == egal != diferit 02.12.2016 Curs - Programarea calculatoarelor 55 Exemplu: int i=2, j=5, k=2; Atunci pentru expresia i!=j avem valoarea 1 Pentru expresia i==j avem valoarea 0 Iar pentru expresia i==k avem valoarea 1
  • 56. copyright@www.adrian.runceanu.ro 2.4.3. Operatori de egalitate Se citeşte un număr întreg a. Să se realizeze un algoritm care să verifice dacă numărul a este par, afişandu-se un mesaj corespunzator: #include <iostream.h> int main(void) { int a; cin>>a; if( a % 2 == 0 ) cout<<“Numarul este parn”; else cout<<“Numarul este imparn”; } 02.12.2016 Curs - Programarea calculatoarelor 56
  • 57. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relaţionali 2.4.3. Operatori de egalitate 2.4.4. Operatori logici 2.4.5. Operatori logici pe biţi 2.4.6. Operatorul de atribuire 2.4.7. Operatori de incrementare şi de decrementare 2.4.8. Operatorul de conversie explicită (cast) 2.4.9. Operatorul de lungime (sizeof) 2.4.10. Operatorii condiţionali 2.4.11. Operatorul virgulă 02.12.2016 Programarea calculatoarelor 57
  • 58. 2.4.4. Operatori logici În limbajul C/C++ nu există valori speciale pentru adevărat sau fals şi de aceea: - valoarea de fals este reprezentată prin zero (0) - iar valoarea de adevarat este reprezentată prin orice număr diferit de zero (0) Observaţie: Din punct de vedere al priorităţii, operatorii unari au cea mai mare prioritate şi de aceea, în acest caz, operatorul ‘!’ are prioritatea cea mai mare, urmat în ordine de operatorul ‘&&’ şi de operatorul ‘||’.02.12.2016 Programarea calculatoarelor 58 OPERATOR FUNCŢIE ! negare && şi logic || sau logic
  • 59. 2.4.4. Operatori logici Reamintim tabele de adevăr ale celor trei operatori logici: Exemplu: expresia !0 are valoarea 1 expresia !5 are valoarea 0 expresia !(a==b) are valoarea 1 sau 0 în funcţie de valorile lui a, respectiv b. 02.12.2016 Programarea calculatoarelor 59 && 0 0 0 0 0 0 0 1 || 0 0 0 0 1 0 1 1 !0 1 ! 0 0
  • 60. 2.4.4. Operatori logici Prezentăm mai jos, un exemplu mai amplu cu câteva expresii la care le evaluăm valorile: Presupunem că avem variabilele întregi: • i = 0 • j  0 • k  0 02.12.2016 Programarea calculatoarelor 60 Expresie i && j !i && j i || j i ||!j !(i && j) !i || !j !i && j || !j && i i <= j || j <= k 0 1 1 0 1 1 1 0 sau 1 Valoare
  • 61. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relaţionali 2.4.3. Operatori de egalitate 2.4.4. Operatori logici 2.4.5. Operatori logici pe biţi 2.4.6. Operatorul de atribuire 2.4.7. Operatori de incrementare şi de decrementare 2.4.8. Operatorul de conversie explicită (cast) 2.4.9. Operatorul de lungime (sizeof) 2.4.10. Operatorii condiţionali 2.4.11. Operatorul virgulă 02.12.2016 Programarea calculatoarelor 61
  • 62. 2.4.5. Operatori logici pe biţi Operatorii logici pe biţi se pot folosi în limbajul C++, pentru a mări performanţele unui program sau pentru a-i reduce consumul de memorie utilizată. Acest tip de operatori se aplică unuia sau mai multor biţi dintr-o expresie. 02.12.2016 Programarea calculatoarelor 62 OPERATOR FUNCŢIE ~ negație logică pe biţi & şi pe biţi | sau pe biţi ^ sau exclusiv pe biţi << deplasare la stânga pe biţi >> deplasare la dreapta pe biţi
  • 63. copyright@www.adrian.runceanu.ro 2.4.5. Operatori logici pe biţi Operatorul unar “~” returnează operandul asupra căruia este folosit cu toţi biţii negaţi Exemplu : ~0 are valoarea 1 010 = 000000002 prin negare bit cu bit se transformă în ~010 = 111111112 (numărul este 25510) 02.12.2016 Programarea calculatoarelor 63
  • 64. 2.4.5. Operatori logici pe biţi Operatorul binar “&” se utilizează pentru a transforma în 0 anumiţi biţi, sau pentru a testa o anumită configuraţie de biţi. Exemplu: 110 = 000000012 110 = 000000012 210 = 000000102 310 = 000000112 -------------------- -------------------- 010 = 000000002 110 = 000000012 expresie valoare 1 & 2 0 1 & 3 1 02.12.2016 Programarea calculatoarelor 64
  • 65. 2.4.5. Operatori logici pe biţi Operatorul binar “|” se utilizează pentru a transforma în 1 anumiţi biţi. Exemplu: 110 = 000000012 110 = 000000012 210 = 000000102 310 = 000000112 -------------------- -------------------- 310 = 000000112 310 = 000000112 expresie valoare 1 | 2 3 1 | 3 3 02.12.2016 Programarea calculatoarelor 65
  • 66. 2.4.5. Operatori logici pe biţi Operatorul binar “^” are următoarea tabelă de valori: Exemplu: 110 = 000000012 110 = 000000012 210 = 000000102 310 = 000000112 -------------------- --------------------- 310 = 000000112 210 = 000000102 expresie valoare 1 ^ 2 3 1 ^ 3 2 02.12.2016 Programarea calculatoarelor 66 ^ 0 1 0 0 1 1 1 0
  • 67. copyright@www.adrian.runceanu.ro 2.4.5. Operatori logici pe biţi Operatorul “<<” se foloseşte pentru a deplasa spre stânga biţii unui număr întreg cu n biţi specificaţi după operator; biţii rămaşi în dreapta se completează cu 0. Exemplu: 2 << 2 210 = 000000102 --------------------- 810 = 000010002 Deci, în general, a << n înseamnă, ca valoare, a*2 la puterea n. Operatorul “>>” realizează deplasarea spre dreapta a biţilor unui număr întreg cu n poziţii. Deci, în general, a >> n înseamnă, ca valoare, a/(2^n), fiind de fapt împărţirea cu 2 la puterea n a numărului. 02.12.2016 Programarea calculatoarelor 67
  • 68. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relaţionali 2.4.3. Operatori de egalitate 2.4.4. Operatori logici 2.4.5. Operatori logici pe biţi 2.4.6. Operatorul de atribuire 2.4.7. Operatori de incrementare şi de decrementare 2.4.8. Operatorul de conversie explicită (cast) 2.4.9. Operatorul de lungime (sizeof) 2.4.10. Operatorii condiţionali 2.4.11. Operatorul virgulă 02.12.2016 Programarea calculatoarelor 68
  • 69. 2.4.6. Operatorul de atribuire Are cea mai mică prioritate după operatorul virgulă şi apare sub forma: Dacă avem var = var operator expresie, atunci în C/C++, se poate scrie prescurtat: unde operator poate să fie un operator aritmetic sau un operator logic pe biţi. Exemplu: int i, j; i = i + 2; se poate scrie i + = 2; j = j | 1; se poate scrie j | = 1; var = expresie 02.12.2016 Programarea calculatoarelor 69 var operator = expresie
  • 70. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relaţionali 2.4.3. Operatori de egalitate 2.4.4. Operatori logici 2.4.5. Operatori logici pe biţi 2.4.6. Operatorul de atribuire 2.4.7. Operatori de incrementare şi de decrementare 2.4.8. Operatorul de conversie explicită (cast) 2.4.9. Operatorul de lungime (sizeof) 2.4.10. Operatorii condiţionali 2.4.11. Operatorul virgulă 02.12.2016 Programarea calculatoarelor 70
  • 71. 2.4.7. Operatori de incrementare (++) şi de decrementare (--) 02.12.2016 Programarea calculatoarelor 71 OPERATOR FUNCŢIE ++i incrementare prefixată --i decrementare prefixată i++ incrementare postfixată i-- decrementare postfixată
  • 72. copyright@www.adrian.runceanu.ro 2.4.7. Operatori de incrementare (++) şi de decrementare (--) De fapt: ++i  i = i + 1 - incrementarea se face înainte de evaluarea expresiei în care apare ++ i++  i = i + 1 - incrementarea se face după evaluarea expresiei în care apare ++ --i  i = i - 1 - decrementarea se face înainte de evaluarea expresiei în care apare -- i--  i = i - 1 - decrementarea se face după evaluarea expresiei în care apare -- Observaţie: Aceşti operatori nu se aplică unor expresii. 02.12.2016 Programarea calculatoarelor 72
  • 73. copyright@www.adrian.runceanu.ro 2.4.7. Operatori de incrementare (++) şi de decrementare (--) Pentru a înţelegere mai eficient diferenţa între cele două forme, prezentăm mai jos o secvenţă de program care utilizează ambii operatori: Rezultatele execuţiei sunt următoarele: Utilizarea formei postfixate 1 Valoarea dupa incrementare 2 Utilizarea formei prefixate 2 Valoarea dupa incrementare 2 02.12.2016 Programarea calculatoarelor 73 int valoare = 1; cout<<"Utilizarea formei postfixate "<<valoare++<<endl; cout<<"Valoarea dupa incrementare "<<valoare<<endl; valoare=1; cout<<"Utilizarea formei prefixate "<<++valoare<<endl; cout<<"Valoarea dupa incrementare "<<valoare<<endl;
  • 74. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relaţionali 2.4.3. Operatori de egalitate 2.4.4. Operatori logici 2.4.5. Operatori logici pe biţi 2.4.6. Operatorul de atribuire 2.4.7. Operatori de incrementare şi de decrementare 2.4.8. Operatorul de conversie explicită (cast) 2.4.9. Operatorul de lungime (sizeof) 2.4.10. Operatorii condiţionali 2.4.11. Operatorul virgulă 02.12.2016 Programarea calculatoarelor 74
  • 75. 2.4.8. Operatorul de conversie explicită (cast) Se foloseşte pentru forţarea tipului unui operand. Are forma: unde operand poate fi şi o expresie, iar tip este un operator unar. Exemplu: int i=5, j=2; float a; a = i / j; înseamnă că a primeşte valoarea întreagă 2 a = (float) (i / j); înseamnă că a primeşte ca valoare 2 a = (float) i / j; înseamnă că a primeşte ca valoare 2.5 (tip) operand 02.12.2016 Programarea calculatoarelor 75
  • 76. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relaţionali 2.4.3. Operatori de egalitate 2.4.4. Operatori logici 2.4.5. Operatori logici pe biţi 2.4.6. Operatorul de atribuire 2.4.7. Operatori de incrementare şi de decrementare 2.4.8. Operatorul de conversie explicită (cast) 2.4.9. Operatorul de lungime (sizeof) 2.4.10. Operatorii condiţionali 2.4.11. Operatorul virgulă 02.12.2016 Programarea calculatoarelor 76
  • 77. copyright@www.adrian.runceanu.ro 2.4.9. Operatorul de lungime (sizeof) Este un operator cu o prioritate mare, folosit în determinarea lungimii în octeţi a unui operand care poate fi o expresie sau un tip de date. 02.12.2016 Programarea calculatoarelor 77 sizeof (expresie) sizeof (tip)
  • 78. copyright@www.adrian.runceanu.ro 2.4.9. Operatorul de lungime (sizeof) Pentru a putea înţelege eficienţa folosirii acestui operator, prezentăm un scurt program: În funcţie de compilatorul C/C++ folosit (exemplu MinGW) se obţin următoarele rezultate: Variabila de tip int foloseşte 2 octeţi Variabila de tip float foloseşte 4 octeţi Variabila de tip double foloseşte 8 octeţi Variabila de tip unsigned foloseşte 2 octeţi Variabila de tip long foloseşte 4 octeţi 02.12.2016 Programarea calculatoarelor 78 cout<<"Variabila de tip int foloseste "<<sizeof(int)<<" octetin"; cout<<"Variabila de tip float foloseste "<<sizeof(float)<<" octetin"; cout<<"Variabila de tip double foloseste "<< sizeof(double)<< " octetin"; cout<<"Variabila de tip unsigned foloseste "<<sizeof(unsigned)<<" octetin”; cout<<"Variabila de tip long foloseste "<<sizeof(long)<<" octetin";
  • 79. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relaţionali 2.4.3. Operatori de egalitate 2.4.4. Operatori logici 2.4.5. Operatori logici pe biţi 2.4.6. Operatorul de atribuire 2.4.7. Operatori de incrementare şi de decrementare 2.4.8. Operatorul de conversie explicită (cast) 2.4.9. Operatorul de lungime (sizeof) 2.4.10. Operatorii condiţionali 2.4.11. Operatorul virgulă 02.12.2016 Programarea calculatoarelor 79
  • 80. 2.4.10. Operatorii condiţionali “?” “:” Se folosesc numai împreună şi funcţionează ca o instrucţiune if. Forma este următoarea: sau unde expresie1 este o expresie logică care poate fi adevarată sau falsă; când este adevarată rezultatul este expresie2, iar când este falsă rezultatul este expresie3. Exemplu: modul = x < 0 ? –x : x; max = a < b ? b : a; min = a < b ? a : b; expresie1 ? expresie2 : expresie3 var = expresie1 ? expresie2 : expresie3 02.12.2016 Programarea calculatoarelor 80
  • 81. copyright@www.adrian.runceanu.ro 2. Elemente introductive ale limbajului C++ 2.4. Operatorii limbajului C++ 2.4.1. Operatori aritmetici 2.4.2. Operatori relaţionali 2.4.3. Operatori de egalitate 2.4.4. Operatori logici 2.4.5. Operatori logici pe biţi 2.4.6. Operatorul de atribuire 2.4.7. Operatori de incrementare şi de decrementare 2.4.8. Operatorul de conversie explicită (cast) 2.4.9. Operatorul de lungime (sizeof) 2.4.10. Operatorii condiţionali 2.4.11. Operatorul virgulă 02.12.2016 Programarea calculatoarelor 81
  • 82. 2.4.11. Operatorul virgulă “,” Are prioritatea cea mai scazută din toţi operatorii. Are următoarea formă: sau Această expresie se evaluează de la stânga la dreapta, evaluându-se pe rând fiecare expresie până se ajunge la ultima. expresie1, expresie2, expresie3, . . . , expresien expresie = expresie1, expresie2, expresie3, . . . , expresien 02.12.2016 Programarea calculatoarelor 82
  • 83. Tabela de priorităţi a operatorilor În limbajul C/C++, pentru a evalua expresiile în care apar operatori, s-au stabilit anumite reguli de prioritate (precedenţă) a operatorilor. 02.12.2016 Programarea calculatoarelor 83 NIVEL DE PRIORITATE OPERATOR ASOCIATIVITATE 1 () [] . -> stânga -> dreapta 2 - (unar) + (unar) & (unar) ! ~ *(unar) (cast) (sizeof) ++ -- dreapta -> stânga 3 * (binar) / % stânga -> dreapta 4 + (binar) - (binar) stânga -> dreapta 5 << >> stânga -> dreapta 6 < <= > >= dreapta -> stânga 7 == != stânga -> dreapta 8 & stânga -> dreapta 9 ^ stânga -> dreapta 10 | stânga -> dreapta 11 && stânga -> dreapta 12 || stânga -> dreapta 13 ? : stânga -> dreapta 14 = dreapta -> stânga 15 , stânga -> dreapta
  • 84. Probleme propuse spre rezolvare 02.12.2016 Programarea calculatoarelor 84
  • 85. copyright@www.adrian.runceanu.ro Algoritmi cu structura repetitivă cu număr cunoscut de pași Problema 1 Să se scrie un program care să afișeze toate numerele perechi de numere prime gemene mai mici decât un număr natural n dat. Spunem că două numere a și b sunt prime gemene dacă îndeplinesc următoarele condiții: 1. sunt prime 2. |a - b|=2 Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 85 Pt. n=20 se obțin valorile: (3,5); (5,7); (11,13); (17,19)
  • 86. copyright@www.adrian.runceanu.ro Algoritmi cu structura repetitivă cu număr cunoscut de pași Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: n număr întreg Date de ieșire: numere prime gemene 02.12.2016 Curs - Programarea calculatoarelor 86
  • 87. copyright@www.adrian.runceanu.ro Algoritmi cu structura repetitivă cu număr cunoscut de pași Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. Verificăm valorile a între 3 și n-2. Pentru aceste valori verificăm: a) Numărul a este sau nu număr prim b) Numărul b=a+2 este sau nu număr prim Dacă ambele numere sunt prime, atunci am găsit o pereche de numere prime gemene. 02.12.2016 Curs - Programarea calculatoarelor 87
  • 88. Algoritmi cu structura repetitivă cu număr cunoscut de pași Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 88 întreg n, a, b, prim1, prim2, i, j citeşte n pentru a=3,n-2 execută prim1 <- 1 pentru i=2, a/2 execută dacă a % i = 0 atunci prim1 <- 0 sfârșit dacă sfârșit pentru
  • 89. Algoritmi cu structura repetitivă cu număr cunoscut de pași Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 89 b <- a+2 prim2 <- 1 pentru j=2, b/2 execută dacă b % j = 0 atunci prim2 <- 0 sfârșit dacă sfârșit pentru dacă prim1 = 1 și prim2=1 atunci scrie a, b sfârșit dacă sfârșit pentru stop
  • 90. copyright@www.adrian.runceanu.ro Algoritmi cu structura repetitivă cu număr cunoscut de pași Problema 2 Sa se scrie un program care sa determine toate numerele prime palindrom dintr-un interval [a, b] dat, cu a si b valori naturale. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 90 Pt. a=10 si b=400 se obțin valorile: (11, 101, 131, 151, 181, 191, 313, 353, 373)
  • 91. copyright@www.adrian.runceanu.ro Algoritmi cu structura repetitivă cu număr cunoscut de pași Problema 3 Se citesc numere naturale strict pozitive până la întâlnirea numărului 0. Să se numere câte dintre ele sunt pare, presupunând că cel puţin primul element este nenul. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 91 Date de intrare: 4 3 6 5 7 7 0 Date de ieşire: 2 numere pare
  • 92. copyright@www.adrian.runceanu.ro Algoritmi cu structura repetitivă cu număr cunoscut de pași Problema 4 Se citesc de la tastatură numere intregi pozitive până la întâlnirea numărului 0. Să se scrie un program care să afişeze cea mai mică şi cea mai mare valoare a acestor numere. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 92 Date de intrare: 550 345 100 45 0 Date de ieşire: max=550 min=100
  • 93. copyright@www.adrian.runceanu.ro Algoritmi cu structura repetitivă cu număr cunoscut de pași Problema 5 Se introduce un număr natural cu maxim 9 cifre. Să se determine şi să se afişeze numărul de cifre, cea mai mare cifră şi suma tuturor cifrelor acestui număr. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 93 Date de intrare: 24356103 Date de ieşire: 8 cifre max = 6 suma = 24
  • 94. copyright@www.adrian.runceanu.ro Referinte bibliografice Bibliografia necesară cursului: 1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de programare în limbajul C++, Academica Brâncuşi, Târgu-Jiu, 2012, ISBN 978- 973-144-550-2, 483 pagini 2. Adrian Runceanu, Programarea şi utilizarea calculatoarelor, Editura Academică Brâncuși Targu-Jiu, 2003 3. Octavian Dogaru, C++ - Teorie şi practică, volumul I, Editura Mirton, Timişoara, 2004 4. O.Catrina, I.Cojocaru, Turbo C+, Editura Teora, Bucureşti, 1993 5. D.Costea, Iniţiere în limbajul C, Editura Teora, Bucureşti, 1996 6. K.Jamsa, C++, Editura Teora,1999 7. K.Jamsa & L.Klander, Totul despre C si C++, Teora, 2004 02.12.2016 Programarea Calculatoarelor - curs 94
  • 95. copyright@www.adrian.runceanu.ro “First, solve the problem. Then, write the code.” - John Johnson 02.12.2016 Programarea Calculatoarelor - curs 95