SlideShare a Scribd company logo
copyright@www.adrian.runceanu.ro
Programarea calculatoarelor
#1
Adrian Runceanu
www.runceanu.ro/adrian
2016
C++
Algoritmi
copyright@www.adrian.runceanu.ro
Curs 1
Algoritmi
02.12.2016 Programarea Calculatoarelor - curs 2
copyright@www.adrian.runceanu.ro
1. ALGORITMI
1.1. Noţiunea de algoritm
1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari
02.12.2016 Programarea Calculatoarelor - curs 3
copyright@www.adrian.runceanu.ro
1.1. Noţiunea de algoritm
În procesul de rezolvare a unei probleme folosind
calculatorul există doua etape:
1. Definirea şi analiza problemei
2. Proiectarea şi implementarea unui algoritm care
rezolvă problema
1. Definirea şi analiza problemei poate fi la rândul ei
descompusă în:
 specificarea datelor de intrare
 specificarea datelor de ieşire
02.12.2016 Programarea Calculatoarelor - curs 4
copyright@www.adrian.runceanu.ro
1.1. Noţiunea de algoritm
Specificarea datelor de intrare constă în:
1. Ce date vor fi primite la intrare
2. Care este formatul (forma lor de reprezentare) datelor
de intrare
3. Care sunt valorile permise sau nepermise pentru
datele de intrare
4. Există unele restricţii (altele decât la 3) privind valorile
de intrare
5. Câte valori vor fi la intrare, sau dacă nu se poate
specifica un număr fix de valori, cum se va şti când s-
au terminat de introdus datele de intrare
02.12.2016 Programarea Calculatoarelor - curs 5
copyright@www.adrian.runceanu.ro
1.1. Noţiunea de algoritm
Specificarea datelor de ieşire trebuie să ţină cont de
următoarele aspecte:
1. Care din valorile rezultate în cursul aplicării algoritmului
de calcul, asupra datelor de intrare, vor fi afişate
(necesare utilizatorului), în acest pas se face
diferenţierea clară între date intermediare şi date de
ieşire
2. Care va fi formatul datelor de ieşire (de exemplu un
număr real poate fi afişat cu trei sau cu cinci zecimale,
sau un text poate fi afişat integral sau parţial)
02.12.2016 Programarea Calculatoarelor - curs 6
copyright@www.adrian.runceanu.ro
1.1. Noţiunea de algoritm
3. Sunt sau nu necesare explicaţii suplimentare
pentru utilizator în afara datelor de ieşire
4. Care este numărul de date de ieşire care trebuie
transmise către ieşire
02.12.2016 Programarea Calculatoarelor - curs 7
copyright@www.adrian.runceanu.ro
1.1. Noţiunea de algoritm
O definiţie a noţiunii de algoritm poate fi:
înlănţuirea de paşi simpli, operaţii distincte care
descriu modul de prelucrare a unor date de intrare
în scopul rezolvării unei probleme.
Un exemplu simplu de algoritm ar fi suita de
operaţii matematice făcută în rezolvarea unei ecuaţii
matematice de gradul II:
02.12.2016 Programarea Calculatoarelor - curs 8
aX2+bX+c=0,
coeficienţii a, b, c se schimbă dar
modul de procesare a valorilor lor, nu
copyright@www.adrian.runceanu.ro
1.1. Noţiunea de algoritm
Proprietăţile unui algoritm sunt:
1. Este compus din instrucţiuni simple şi clare
2. Operaţiunile specificate de instrucţiuni se
execută într-o anumită secvenţă
3. Soluţia trebuie obţinută într-un număr finit de
paşi
02.12.2016 Programarea Calculatoarelor - curs 9
copyright@www.adrian.runceanu.ro
1.1. Noţiunea de algoritm
Rezolvarea unei probleme este un proces complex, care
are mai multe etape:
1. Analiza problemei, pentru a stabili datele de intrare şi
de ieşire
2. Elaborarea unui algoritm de rezolvare a problemei
3. Implementarea algoritmului într-un limbaj de
programare
4. Verificarea corectitudinii algoritmului implementat
5. Analiza complexitatii algoritmului
02.12.2016 Programarea Calculatoarelor - curs 10
copyright@www.adrian.runceanu.ro
1. ALGORITMI
1.1. Noţiunea de algoritm
1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari
02.12.2016 Programarea Calculatoarelor - curs 11
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
În general, un algoritm poate fi considerat ca o
descriere a prelucrărilor efectuate asupra unui flux de
date, prelucrări care au loc cu un scop bine
determinat.
Modul de descriere a unui algoritm, este
independent de un limbaj de programare, existând
două metode clasice:
1. metoda schemei logice
2. metoda pseudocod-ului
02.12.2016 Programarea Calculatoarelor - curs 12
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
1. Metoda schemei logice
În cadrul acestei metode se foloseşte un set de
simboluri, prezentat în figura 1, pentru descrierea
paşilor ce trebuie executaţi pentru ca algoritmul
rezultat să ne rezolve o anumită problemă.
Deşi a fost extrem de folosită, până nu de mult,
această metodă a pierdut teren în faţa reprezentării
de tip pseudocod, poate şi datorită timpului
suplimentar pierdut de utilizator cu executarea
simbolurilor grafice.
02.12.2016 Programarea Calculatoarelor - curs 13
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
02.12.2016 Programarea Calculatoarelor - curs 14
Start
Bloc de atribuire
Bloc citire variabile
conditie
Stop
Bloc scriere variabile
Nu Da
Figura 1. Reprezentarea algoritmilor prin metoda schemei logice
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
Să analizăm un
algoritm de calcul a
mediei pentru trei note
obținute de un student
într-o sesiune de
examene şi să vedem
cum ar apărea descris
prin această metodă.
02.12.2016 Programarea Calculatoarelor - curs 15
Start
Citire nota1, nota2, nota3
media <-(nota1+nota2+nota3)/3
Scriere media
Stop
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
2. Metoda pseudocod-ului
Există mai multe variante de limbaje
algoritmice, care însă nu diferă esenţial.
Am ales forma în care:
cuvintele cheie sunt în limba română
şi operatorii sunt cei uzuali din matematică
02.12.2016 Programarea Calculatoarelor - curs 16
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
Pseudocod-ul are în componenţă mai multe
comenzi standard care încep, în general cu un
cuvânt cheie care defineşte operaţia de bază din
algoritm şi care va fi evidenţiat prin utilizarea
aldinelor (cuvintelor îngroşate).
Comenzilor standard ale pseudocod-ului le
corespund instrucţiuni din limbajele de
programare, fapt care uşurează implementarea
algoritmului în limbaj.
02.12.2016 Programarea Calculatoarelor - curs 17
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
Comenzile standard de bază ale pseudocod-
ului sunt:
1) Comanda de atribuire
- are forma:
- este comanda care nu conţine cuvinte cheie şi
corespunde unei operaţii de atribuire
02.12.2016 Programarea Calculatoarelor - curs 18
variabilă expresie
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
2) Comanda de citire
- are forma:
- este comanda care corespunde unei operaţii de
citire
3) Comanda de scriere
- are forma:
- este comanda care corespunde unei operaţii de
scriere
02.12.2016 Programarea Calculatoarelor - curs 19
citeşte listă de variabile
scrie listă de expresii
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
4) Structura de decizie
- are două forme
corespunzătoare celor
două forme ale
structurii alternative
(structurii de decizie):
02.12.2016 Programarea Calculatoarelor - curs 20
dacă condiţie atunci
instructiune1
…
instructiunen
altfel
instructiune1
…
instructiunen
sfârşit dacă
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
A doua formă a
structurii de
decizie:
02.12.2016 Programarea Calculatoarelor - curs 21
dacă condiţie atunci
instructiune1
…
instructiunen
sfârşit dacă
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
5) Structura cât timp
- are forma:
- corespunde ciclului
repetitiv cu test iniţial
02.12.2016 Programarea Calculatoarelor - curs 22
cât timp condiţie execută
instructiune1
…
instructiunen
sfârşit cât timp
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
6) Structura
repetă până când
- are forma:
- corespunde ciclului
repetitiv cu test final
02.12.2016 Programarea Calculatoarelor - curs 23
repetă
instructiune1
…
instructiunen
până când condiţie
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
7) Structura pentru
- are forma:
- corespunde ciclului repetitiv cu număr cunoscut
de pași
02.12.2016 Programarea Calculatoarelor - curs 24
pentru variabila<-valoare initiala, valoare finala executa
instructiune1
…
instructiunen
sfârşit pentru
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
8) Structura de oprire a algoritmului
- are forma:
02.12.2016 Programarea Calculatoarelor - curs 25
stop
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
Reluăm exemplul cu media a trei note pe
care îl vom scrie atât cu ajutorul schemelor
logice, cât şi cu ajutorul pseudocod-ului.
02.12.2016 Programarea Calculatoarelor - curs 26
copyright@www.adrian.runceanu.ro
1.2. Reprezentarea unui algoritm
real nota1, nota2, nota3, media
citeşte nota1, nota2, nota3
media (nota1+nota2+nota3)/3
scrie media
stop

02.12.2016 Programarea Calculatoarelor - curs 27
Start
Citire nota1, nota2, nota3
media <-(nota1+nota2+nota3)/3
Scriere media
Stop
Se observă că este mult
mai uşor să se redacteze un
algoritm cu ajutorul
pseudocod-ului, decât cu
ajutorul schemelor logice.
copyright@www.adrian.runceanu.ro
1. ALGORITMI
1.1. Noţiunea de algoritm
1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari
02.12.2016 Programarea Calculatoarelor - curs 28
copyright@www.adrian.runceanu.ro
1.3. Conceptia unui algoritm
Pași necesari:
1. Problema care va fi rezolvată, trebuie citită cu
atenţie.
2. Apoi se stabilesc prelucrările care sunt necesare
obţinerii rezultatelor dorite.
Pentru a crea un algoritm eficient trebuie
evidenţiate datele de intrare şi datele de ieşire.
02.12.2016 Programarea Calculatoarelor - curs 29
copyright@www.adrian.runceanu.ro
1.3. Conceptia unui algoritm
02.12.2016 Programarea Calculatoarelor - curs 30
Date de
intrare
Date de
ieșire
ALGORITM
copyright@www.adrian.runceanu.ro
1. ALGORITMI
1.1. Noţiunea de algoritm
1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari
02.12.2016 Programarea Calculatoarelor - curs 31
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează algoritmii
Obiectele cu care lucrează algoritmii sunt:
a) Constante
b) Variabile
c) Operaţii
d) Expresii
02.12.2016 Programarea Calculatoarelor - curs 32
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează algoritmii
a) Constantele sunt date de un anumit tip care nu
se modifică pe parcursul execuţiei unui algoritm.
Pot fi:
1. Constante numerice, adică numere întregi sau
reale
2. Constante nenumerice, adică şiruri de
caractere cuprinse între apostrofuri
3. Constante logice, adevărat şi fals
02.12.2016 Programarea Calculatoarelor - curs 33
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează algoritmii
b) Variabilele sunt date ale căror valori se modifică
pe parcursul execuţiei unui algoritm.
Ele se utilizează pentru a păstra datele
iniţiale, sau pentru a păstra rezultatele parţiale
sau finale ale algoritmului.
Fiecare variabilă va avea o locaţie de
memorie asociată ei, unde i se păstrează
valoarea.
Variabilele pot: naturale, întregi, reale, logice
sau şiruri de caractere.
02.12.2016 Programarea Calculatoarelor - curs 34
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează
algoritmii
c) Operatorii sunt cei
folosiţi uzuali în
matematică:
1. Operatori aritmetici
2. Operatori relaţionali
3. Operatori logici
Operatori aritmetici
Operator Semnificaţie
+ Adunare
- Scădere
* Înmulţire
/ Împărţire
Operatori relaţionali
< Mai mic
<= Mai mic sau egal
> Mai mare
>= Mai mare sau egal
= Egal
<> Diferit
Operatori logici
not Negaţie
si Şi (conjuncţie)
sau Sau (disjuncţie)02.12.2016 Programarea Calculatoarelor - curs 35
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează algoritmii
d) Expresiile sunt formate din constante şi variabile
legate între ele cu ajutorul operatorilor.
Pot fi de mai multe tipuri, în funcţie de tipul
operatorilor si a operanzilor:
1. Expresii aritmetice
2. Expresii relaţionale
3. Expresii logice
02.12.2016 Programarea Calculatoarelor - curs 36
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează algoritmii
O expresie aritmetică este o expresie care
cuprinde:
1. constante
2. variabile
3. sau funcţii aritmetice elementare legate,
eventual, prin operatori aritmetici.
02.12.2016 Programarea Calculatoarelor - curs 37
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează algoritmii
O expresie relaţională poate fi formată din:
Două expresii aritmetice legate printr-un singur
operator relaţional (de exemplu: b2 > 4*a*c)
Două variabile nenumerice legate printr-un
operator relaţional (de exemplu:
nume1<>nume2)
O variabilă şi o constantă nenumerice legate
printr-un operator relaţional (de exemplu:
raspuns=‘da’)
02.12.2016 Programarea Calculatoarelor - curs 38
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează algoritmii
O expresie logică cuprinde:
1. constante
2. variabile
3. sau expresii relaţionale legate prin operatori
logici a cărei valoare este fie adevărat, fie fals.
02.12.2016 Programarea Calculatoarelor - curs 39
copyright@www.adrian.runceanu.ro
1.4. Obiectele cu care lucrează algoritmii
Condiţiile care apar în algoritmi vor fi
întotdeauna exprimate prin expresii
relaţionale sau logice.
02.12.2016 Programarea Calculatoarelor - curs 40
copyright@www.adrian.runceanu.ro
1. ALGORITMI
1.1. Noţiunea de algoritm
1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari
02.12.2016 Programarea Calculatoarelor - curs 41
copyright@www.adrian.runceanu.ro
1.5. Exemple de algoritmi elementari
Enunţ:
Să se calculeze perimetrul şi aria unui triunghi oarecare
dacă se cunosc laturile triunghiului.
Pas 1: Stabilim care sunt datele de intrare si datele de
iesire, adică cele care vor fi prelucrate cu ajutorul
algoritmului.
În cazul problemei date, avem:
Date de intrare: a, b, şi c numere reale ce reprezintă
laturile triunghiului.
Date de iesire: p = perimetrul si s = aria triunghiului
02.12.2016 Programarea Calculatoarelor - curs 42
copyright@www.adrian.runceanu.ro
1.5. Exemple de algoritmi elementari
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi
prelucrate în cadrul algoritmului.
În cadrul problemei pe care o avem de rezolvat,
cunoaştem formula lui Heron pentru calculul ariei
unui triunghi dacă se cunosc laturile sale:
unde p reprezintă semiperimetrul triunghiului.
02.12.2016 Programarea Calculatoarelor - curs 43
))()(( cpbpappS 
1.5. Exemple de algoritmi elementari
Pas 3:
Scrierea
algoritmului în
pseudocod:


02.12.2016 Programarea Calculatoarelor - curs 44
real a, b, c, p, S
citeşte a, b, c
p a + b + c
scrie ‘Perimetrul triunghiului este ‘, p
p p / 2
scrie ‘Aria triunghiului este’, S
stop
c)b)(pa)(pp(pS 
copyright@www.adrian.runceanu.ro
1.5. Exemple de algoritmi elementari
Pas 4: Implementarea algoritmului în limbajul de
programare dorit - în cazul nostru vom utiliza
limbajul C++.
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Ultimii doi paşi îi vom scrie după
prezentarea limbajului C++.
02.12.2016 Programarea Calculatoarelor - curs 45
copyright@www.adrian.runceanu.ro
1.5. Exemple de algoritmi elementari
Enunţ:
Considerăm ecuaţia de gradul I de forma:
ax + b = 0, unde a şi b sunt numere reale.
Să se scrie un algoritm care să rezolve ecuaţia dată pentru
orice două valori a şi b date.
Pas 1: Stabilim care sunt datele de intrare si de iesire, adică
cele care vor fi prelucrate cu ajutorul algoritmului.
În cazul problemei date, avem:
Date de intrare: a, b - numere reale
Date de iesire: x - solutia ecuatiei
02.12.2016 Programarea Calculatoarelor - curs 46
copyright@www.adrian.runceanu.ro
1.5. Exemple de algoritmi elementari
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le îndeplinească
datele de intrare pentru a fi prelucrate în cadrul algoritmului.
Căutăm cazurile particulare.
În cadrul problemei pe care o avem de rezolvat,
cunoaştem următoarele:
Ecuaţia ax+b=0, are solutii reale daca a si b sunt diferite de 0.
Cazurile particulare sunt:
1) Daca a = 0, atunci ecuatia data are o infinitate de solutii.
2) Daca a = 0 si b = 0, atunci ecuatia este nedeterminata
3) Daca a ≠ 0 si b ≠ 0, atunci ecuatia are o singura solutie si
anume:
x = -b/a
02.12.2016 Programarea Calculatoarelor - curs 47
copyright@www.adrian.runceanu.ro
1.5. Exemple de algoritmi elementari
Pas 3:
Scrierea
algoritmului în
pseudocod:

02.12.2016 Programarea Calculatoarelor - curs 48
real a, b, x
citeşte a, b
dacă a = 0 atunci
scrie ‘Ecuaţia are o infinitate de soluţii’
altfel
dacă b = 0 atunci
scrie ‘Ecuaţia este nedeterminată’
altfel
x - b / a
scrie x
sfârşit dacă
sfarşit dacă
stop
copyright@www.adrian.runceanu.ro
1.5. Exemple de algoritmi elementari
Pas 4: Implementarea algoritmului în limbajul de
programare dorit - în cazul nostru vom utiliza
limbajul C++.
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Ultimii doi paşi îi vom scrie după
prezentarea limbajului C++.
02.12.2016 Programarea Calculatoarelor - curs 49
copyright@www.adrian.runceanu.ro
Recapitulare
1. Ce este un algoritm?
2. Cum se pot reprezenta algoritmii?
3. Folosind metoda pseudocod-ului de reprezentare a
algoritmilor, cum se reprezintă structura de decizie?
4. Folosind metoda pseudocod-ului de reprezentare a
algoritmilor, cum se reprezintă structura repetitivă cu
test iniţial?
02.12.2016 Programarea Calculatoarelor - curs 50
copyright@www.adrian.runceanu.ro
Enunţuri de probleme ce pot fi rezolvate
1. Să se calculeze perimetrul şi aria unui
dreptunghi, ştiind laturile sale.
2. Să se calculeze unghiurile(in radiani) unui
triunghi, ştiind laturile sale.
02.12.2016 Programarea Calculatoarelor - curs 51
copyright@www.adrian.runceanu.ro
Curs 2
Algoritmi
(continuare)
02.12.2016 Curs - Programarea calculatoarelor 52
copyright@www.adrian.runceanu.ro
2. ALGORITMI
2.1. Algoritmi elementari (numai cu operatia de
atribuire)
2.2. Algoritmi cu structura de decizie
2.3. Algoritmi cu structura repetitivă cu test iniţial
2.4. Algoritmi cu structura repetitivă cu test final
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
02.12.2016 Curs - Programarea calculatoarelor 53
copyright@www.adrian.runceanu.ro
2.1. Algoritmi elementari
PROBLEMA 1
Să se calculeze perimetrul şi aria unui dreptunghi,
ştiind laturile sale.
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: l şi L numere reale ce reprezintă laturile
dreptunghiului.
Date de ieşire: p şi A numere reale ce reprezintă
perimetrul, respectiv aria dreptunghiului.
02.12.2016 Curs - Programarea calculatoarelor 54
copyright@www.adrian.runceanu.ro
2.1. Algoritmi elementari
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi prelucrate în
cadrul algoritmului.
În cadrul problemei pe care o avem de rezolvat,
cunoaştem formulele pentru calculul perimetrului,
respectiv ariei unui dreptunghi dacă se stiu laturile
sale:
Perimetru = 2*( latime + Lungime )
Aria = latime * Lungime
02.12.2016 Curs - Programarea calculatoarelor 55
2.1. Algoritmi elementari
Pas 3:
Scrierea
algoritmului în
pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 56
real l, L, p, A
citeşte l, L
p <- 2 * ( l + L )
scrie ‘Perimetrul dreptunghiului este ‘, p
A <- l * L
scrie ‘Aria dreptunghiului este’, A
stop
copyright@www.adrian.runceanu.ro
2.1. Algoritmi elementari
PROBLEMA 2
Sa se calculeze si sa se afiseze valoarea distantei
intre doua puncte, dandu-se coordonatele acestora:
A(x1, y1) si B(x2, y2).
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: x1, x2, y1 şi y2 numere reale ce reprezintă
coordonatele celor doua puncte.
Date de ieşire: d = distanta intre cele doua puncte
02.12.2016 Curs - Programarea calculatoarelor 57
copyright@www.adrian.runceanu.ro
2.1. Algoritmi elementari
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi prelucrate
în cadrul algoritmului.
În cadrul problemei pe care o avem de rezolvat,
cunoaştem formula de calcul pentru aflarea
distantei dintre doua puncte in plan:
02.12.2016 Curs - Programarea calculatoarelor 58
)()()()( 21212121 yyyyxxxxd 
2.1. Algoritmi elementari
Pas 3:
Scrierea
algoritmului în
pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 59
real x1, x2, y1, y2, d
citeşte x1, y1, x2, y2
scrie ‘Distanta dintre cele doua puncte
este ’, d
stop
)21()21()21()21( yyyyxxxxd 
copyright@www.adrian.runceanu.ro
2.1. Algoritmi elementari
PROBLEMA 3
Se dau două numere reale x şi y. Să se calculeze
următoarele expresii:
A = 2 + x - y
B = x * A + y
C = A - 2 * B + x
Pas 1: Stabilim care sunt datele de intrare, şi ce tip de date
reprezintă, împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: x şi y numere reale
Date de ieşire: A, B şi C numere reale
02.12.2016 Curs - Programarea calculatoarelor 60
copyright@www.adrian.runceanu.ro
2.1. Algoritmi elementari
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi
prelucrate în cadrul algoritmului.
În cadrul problemei pe care o avem de rezolvat,
cunoaştem formulele pentru fiecare expresie:
A = 2 + x - y
B = x * A + y
C = A - 2 * B + x
02.12.2016 Curs - Programarea calculatoarelor 61
2.1. Algoritmi elementari
Pas 3:
Scrierea
algoritmului în
pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 62
real x, y, A, B, C
citeşte x, y
A <- 2 + x - y
B <- x * A + y
C <- A - 2 * B + x
scrie ‘Valoarea expresiei A este ‘, A
scrie ‘Valoarea expresiei B este ‘, B
scrie ‘Valoarea expresiei C este ‘, C
stop
copyright@www.adrian.runceanu.ro
2. ALGORITMI
2.1. Algoritmi elementari numai cu operatia de
atribuire)
2.2. Algoritmi cu structura de decizie
2.3. Algoritmi cu structura repetitivă cu test iniţial
2.4. Algoritmi cu structura repetitivă cu test final
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
02.12.2016 Curs - Programarea calculatoarelor 63
copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
PROBLEMA 4
Se dau trei numere întregi a, b si c. Să se scrie un
algoritm care să se determine maximul și minimul
acestor valori.
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: a, b și c numere întregi
Date de ieșire: min, respectiv max
02.12.2016 Curs - Programarea calculatoarelor 64
copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi prelucrate în
cadrul algoritmului.
i) Comparăm primele două numere (a și b). În funcție de
care este mai mic sau mai mare am determinat minimul
și maximul celor două valori.
ii) Comparăm valorile de minim, respectiv de maxim cu cel
de-al treilea număr si astfel vom determina cea mai
mică, respectiv cea mai mare valoare dintre cele trei
date.
02.12.2016 Curs - Programarea calculatoarelor 65
copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
Pas 3:
Scrierea
algoritmului
în pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 66
intreg a, b, c, min, max
citeşte a, b, c
dacă a < b atunci
min <- a
max <- b
altfel
min <- b
max <- a
sfârşit dacă
dacă c < min atunci
min <- c
sfarşit dacă
dacă c > max atunci
max <- c
sfarşit dacă
scrie min, max
stop
2.2. Algoritmi cu structura de decizie
PROBLEMA 5
Să se calculeze valoarea funcţiei f(x), ştiind că x este un număr real
introdus de la tastatură:
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: x număr real
Date de iesire: f număr real, reprezentând valoarea funcţiei date
02.12.2016 Curs - Programarea calculatoarelor 67









0,2
]0,7(,30
]7,(,206
)(
xdacax
xdacax
xdacax
xf
copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi
prelucrate în cadrul algoritmului. Căutăm cazurile
particulare.
În cadrul problemei pe care o avem de rezolvat,
verificăm condiţiile date în expresia funcţiei:
1) Dacă x <= -7, atunci funcţia are valoarea: -6x + 20
2) Daca x > -7 si x <= 0, atunci funcţia are valoarea:
x+30
3) Daca x > 0, atunci funcţia are valoarea: sqrt(x) + 2
02.12.2016 Curs - Programarea calculatoarelor 68
2.2. Algoritmi cu structura de decizie
Pas 3:
Scrierea
algoritmului în
pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 69
real x, f
citeşte x
dacă x <= -7 atunci
f <- -6 * x + 20
altfel
dacă x > -7 şi x <= 0 atunci
f <- x + 30
altfel
f <- sqrt(x) + 2
sfârşit dacă
sfarşit dacă
scrie f
stop
copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
PROBLEMA 6
Să se citească trei valori naturale a, b și c. Să se scrie
un algoritm care să verifice dacă cele trei numere sunt
sau nu numere pitagorice.
Precizare: Numim numere pitagorice, trei valori care
îndeplinesc Teorema lui Pitagora, adică verifică una din
condițiile:
02.12.2016 Curs - Programarea calculatoarelor 70
222
222
222
bac
cab
cba



copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
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: a, b și c numere naturale
Date de ieşire: mesaj corespunzător
02.12.2016 Curs - Programarea calculatoarelor 71
copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le îndeplinească
datele de intrare pentru a fi prelucrate în cadrul
algoritmului.
În cadrul problemei pe care o avem de rezolvat,
verificăm condiţiile care trebuie îndeplinite de cele trei
valori:
1) Dacă 𝒂 𝟐
= 𝒃 𝟐
+ 𝒄 𝟐
, atunci sunt numere pitagorice.
Sau
2) Daca 𝒃 𝟐
= 𝒂 𝟐
+ 𝒄 𝟐
, atunci sunt numere pitagorice.
Sau
3) Daca 𝒄 𝟐
= 𝒂 𝟐
+ 𝒃 𝟐
, atunci sunt numere pitagorice.
02.12.2016 Curs - Programarea calculatoarelor 72
copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
Pas 3:
Scrierea
algoritmului
în
pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 73
natural a,b,c
citeşte a,b,c
dacă 𝑎2 = 𝑏2 + 𝑐2 atunci
scrie ‘Numere pitagorice’
altfel
dacă 𝑏2 = 𝑎2 + 𝑐2 atunci
scrie ‘Numere pitagorice’
altfel
dacă 𝑐2 = 𝑎2 + 𝑏2 atunci
scrie ‘Numere pitagorice’
altfel
scrie ‘NU SUNT nr. pitagorice’
sfârşit dacă
sfarşit dacă
sfarşit dacă
stop
copyright@www.adrian.runceanu.ro
2.2. Algoritmi cu structura de decizie
Varianta II-a
Pas 3:
Scrierea
algoritmului
în
pseudocod:
02.12.2016 Curs - Programarea calculatoarelor 74
natural a,b,c
citeşte a,b,c
dacă 𝑎2 = 𝑏2 + 𝑐2 sau 𝑏2 = 𝑎2 + 𝑐2 sau
𝑐2
= 𝑎2
+ 𝑏2
atunci
scrie ‘Numere pitagorice’
altfel
scrie ‘NU SUNT nr. pitagorice’
sfarşit dacă
stop
copyright@www.adrian.runceanu.ro
2. ALGORITMI
2.1. Algoritmi elementari (numai cu operatia de
atribuire)
2.2. Algoritmi cu structura de decizie
2.3. Algoritmi cu structura repetitivă cu test iniţial
2.4. Algoritmi cu structura repetitivă cu test final
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
02.12.2016 Curs - Programarea calculatoarelor 75
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
PROBLEMA 7
Să se citească un număr natural n. Să se scrie un
algoritm care afişează toţi divizorii numărului dat.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 76
Pentru n = 12, mulţimea divizorilor este formată
din valorile 1, 2, 3, 4, 6, 12.
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
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 natural
Date de ieşire: divizorii numărului n
02.12.2016 Curs - Programarea calculatoarelor 77
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
Pas 2: Analiza problemei
În cadrul problemei pe care o avem de rezolvat,
verificăm condiţia ca un număr să fie divizor al altui
număr şi anume:
i este divizor al numărului n dacă se împarte exact
la el, adică dacă este adevărată expresia n % i = 0.
Pentru a găsi toţi divizorii numărului n dat, vom
da valori lui i, pornind de la valoarea 1 până la
valoarea n.
Deci vom utiliza o structură repetitivă.
02.12.2016 Curs - Programarea calculatoarelor 78
2.3. Algoritmi cu structura repetitivă cu test
iniţial
02.12.2016 Curs - Programarea calculatoarelor 79
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, i
citeşte n
i <- 1
cât timp i <= n execută
dacă n % i = 0 atunci
scrie i
sfârşit dacă
i <- i + 1
sfârşit cât timp
stop
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
PROBLEMA 8
Să se citească un număr natural n. Să se scrie un
algoritm care verifică dacă numărul dat este sau nu
număr prim.
Un număr n este prim dacă are ca divizori doar
valorile 1 şi n.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 80
Pentru n = 7, se va afişa mesajul ‘numărul este prim’,
iar pentru n = 22, se va afişa mesajul ‘numărul NU
este prim’.
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
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 natural
Date de ieşire: număr prim sau nu
02.12.2016 Curs - Programarea calculatoarelor 81
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
Pas 2: Analiza problemei:
1) Vom presupune, la începutul problemei, că numărul n dat
este prim, şi vom specifica acest lucru cu ajutorul unei
variabile de tip logic, căreia îi vom da valoarea ‘adevărat’.
2) Apoi vom evalua, pe rând, toate valorile începând cu
valoarea 2 şi până la n-1, ca să determinăm dacă sunt divizori
ai numărului n dat.
3) Dacă găsim un singur divizor printre aceste numere, atunci
vom acorda valoarea ‘fals’ variabilei de tip logic de la
începutul algoritmului.
4) La sfârşit vom verifica care este valoarea variabilei de tip
logic şi vom afişa un mesaj corespunzător.
02.12.2016 Curs - Programarea calculatoarelor 82
2.3. Algoritmi cu structura repetitivă cu test
iniţial
02.12.2016 Curs - Programarea calculatoarelor 83
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, i
logic p
citeşte n
p <- adevărat
i <- 2
cât timp i <= n-1 execută
dacă n % i = 0 atunci
p <- fals
sfârşit dacă
i <- i + 1
sfârşit cât timp
dacă p = adevărat atunci
scrie ‘Numarul este prim’
altfel
scrie ‘Numarul NU este prim’
sfârşit dacă
stop
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
PROBLEMA 9
Să se calculeze suma şi produsul primelor n
numere naturale, n fiind introdus de la
tastatură.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 84
Pentru n = 5, se vor afişa valorile
s = 1 + 2 + 3 + 4 + 5 = 15
p = 1 * 2 * 3 * 4 * 5 = 120
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
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 natural
Date de ieşire: s şi p
02.12.2016 Curs - Programarea calculatoarelor 85
copyright@www.adrian.runceanu.ro
2.3. Algoritmi cu structura repetitivă cu test
iniţial
Pas 2: Analiza problemei
La începutul problemei, vom iniţializa două
valori, s pentru sumă cu 0 şi p pentru produs cu
1.
Apoi vom verifica, pe rând, toate valorile
naturale de la 1 la n şi le vom însuma, respectiv
înmulţi.
Soluţiile obţinute le vom afişa.
02.12.2016 Curs - Programarea calculatoarelor 86
2.3. Algoritmi cu structura repetitivă cu test
iniţial
02.12.2016 Curs - Programarea calculatoarelor 87
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, i, s, p
citeşte n
s <- 0
p <- 1
i <- 1
cât timp i <= n execută
s <- s + i
p <- p * i
i <- i + 1
sfârşit cât timp
scrie ‘Suma numerelor este’, s
scrie ‘Produsul numerelor este’, p
stop
copyright@www.adrian.runceanu.ro
2. ALGORITMI
2.1. Algoritmi elementari (numai cu operatia de
atribuire)
2.2. Algoritmi cu structura de decizie
2.3. Algoritmi cu structura repetitivă cu test iniţial
2.4. Algoritmi cu structura repetitivă cu test final
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
02.12.2016 Curs - Programarea calculatoarelor 88
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
PROBLEMA 10
Să se scrie un program care verifică dacă un
număr n este perfect sau nu.
Un număr perfect este egal cu suma divizorilor lui,
inclusiv 1 (exemplu: 6 = 1 + 2 + 3), mai putin el însuși.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 89
Pentru n = 28, se va afişa mesajul
Numar perfect (divizorii lui 28 sunt
1,2,4,7,14)
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
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 natural
Date de ieşire: mesaj corespunzător
02.12.2016 Curs - Programarea calculatoarelor 90
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
Pas 2: Analiza problemei
1) La începutul problemei, vom verifica initializa o
variabila de tip suma cu valoarea 0.
2) Pentru fiecare valoare i de la 1 la n-1 o vom
verifica dacă i este divizor al numarului n. Daca
este divizor atunci il insumam la valoarea s.
3) Verificam daca suma obtinuta este egala cu
numarul n. Daca da atunci scriem mesajul
‘Numarul este perfect’.
02.12.2016 Curs - Programarea calculatoarelor 91
2.4. Algoritmi cu structura repetitivă cu test
final
02.12.2016 Curs - Programarea calculatoarelor 92
Pas 3:
Scrierea
algoritmului
în
pseudocod:
natural n, i, s
citeşte n
i <- 1
s<- 0
repetă
dacă n % i = 0 atunci
s <- s + i
sfârşit dacă
i <- i + 1
până când i > n-1
dacă s = n atunci
scrie ‘Numarul este perfect’
altfel
scrie ‘Numarul NU este perfect’
sfârşit dacă
stop
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
PROBLEMA 11
Fie şirul lui Fibonacci, definit astfel:
f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) în cazul în care
n>1.
Să se scrie un algoritm care implementează
valorile şirului lui Fibonacci.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 93
Pentru n = 7, se vor afişa valorile
1, 1, 2, 3, 5, 8, 13.
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
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 natural
Date de ieşire: numerele din şirul lui Fibonacci
02.12.2016 Curs - Programarea calculatoarelor 94
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
Pas 2: Analiza problemei
La începutul problemei, vom iniţializa două
valori (a şi b) cu primele două elemente ale
şirului lui Fibonacci, adică cu valori de 1.
Apoi, într-un ciclu repetitiv vom calcula cu
ajutorul unei a treia valori (variabila c) suma lor
şi vom da următoarele valori variabilelor a şi b.
02.12.2016 Curs - Programarea calculatoarelor 95
2.4. Algoritmi cu structura repetitivă cu test
final
02.12.2016 Curs - Programarea calculatoarelor 96
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, i, a, b, c
citeşte n
i <- 1
a <- 1
b <- 1
repetă
c <- a + b
scrie c
a <- b
b <- c
i <- i + 1
până când i > n-2
stop
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
PROBLEMA 12
Fie un număr natural n de cinci cifre. Să se
scrie un algoritm care să calculeze suma cifrelor
numărului dat.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 97
Pentru n = 2178, se va afişa valoarea
s = 2+1+7+8=18.
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
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 natural
Date de ieşire: s = suma cifrelor
02.12.2016 Curs - Programarea calculatoarelor 98
copyright@www.adrian.runceanu.ro
2.4. Algoritmi cu structura repetitivă cu test
final
Pas 2: Analiza problemei
La începutul problemei, vom iniţializa
valoarea sumei cifrelor numărului n dat cu 0.
Apoi, într-un ciclu repetitiv vom calcula
suma cifrelor numărului, ştiind că o cifră a unui
număr scris în baza 10 este dată de n%10, iar
câtul este dat de n/10.
02.12.2016 Curs - Programarea calculatoarelor 99
2.4. Algoritmi cu structura repetitivă cu test
final
02.12.2016 Curs - Programarea calculatoarelor 100
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, s
citeşte n
s <- 0
repetă
s <- s + n%10
n <- n/10
până când n = 0
scrie s
stop
Numarul
fara ultima
cifra
Ultima
cifra a lui n
copyright@www.adrian.runceanu.ro
2. ALGORITMI
2.1. Algoritmi elementari (numai cu operatia de
atribuire)
2.2. Algoritmi cu structura de decizie
2.3. Algoritmi cu structura repetitivă cu test iniţial
2.4. Algoritmi cu structura repetitivă cu test final
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
02.12.2016 Curs - Programarea calculatoarelor 101
copyright@www.adrian.runceanu.ro
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
PROBLEMA 13
Se citesc două numere întregi a şi b. Să se realizeze
in pseudocod un algoritm care să verifice dacă cele doua
numere sunt prietene.
Spunem ca două numere sunt prietene dacă suma
divizorilor proprii ai unui număr este egală cu celalalt şi
invers.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 102
Pentru n = 220, si m = 284 se vor afişa valorile
Divizorii lui 220, sunt 1, 2, 4, 5, 10, 11, 20, 22,
44, 55 și 110
Divizorii lui 284, sunt 1, 2, 4, 71 și 142
copyright@www.adrian.runceanu.ro
2.5. 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 si m numere naturale
Date de ieşire: numerele sunt sau nu prietene
02.12.2016 Curs - Programarea calculatoarelor 103
copyright@www.adrian.runceanu.ro
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Pas 2: Analiza problemei
La începutul problemei, vom iniţializa valoarea unei
variabile pentru suma divizorilor lui n cu 0, iar apoi
valoarea unei variabile pentru suma divizorilor lui m cu 0.
Apoi, într-un ciclu repetitiv avand n/2 pasi vom calcula
suma divizorilor lui n.
Apoi, într-un ciclu repetitiv avand m/2 pasi vom calcula
suma divizorilor lui m.
La sfarsit vom verifica daca cele suma divizorilor
primului numar este egala cu cel de-al doilea numar, iar
suma divizorilor celui de-al doilea numar este egala cu
primul numar.
02.12.2016 Curs - Programarea calculatoarelor 104
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
02.12.2016 Curs - Programarea calculatoarelor 105
Pas 3:
Scrierea
algoritmului
în
pseudocod:
natural n, m, i, j, suma_n, suma_m
citeşte n
suma_n <- 0
pentru i=1,n/2 execută
daca n%i=0 atunci
suma_n <- suma_n + i
sfârșit daca
sfârșit pentru
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
02.12.2016 Curs - Programarea calculatoarelor 106
Pas 3:
Scrierea
algoritmului
în
pseudocod:
suma_m <- 0
pentru j=1,m/2 execută
dacă m%j=0 atunci
suma_m <- suma_m + j
sfârșit dacă
sfârșit pentru
dacă suma_n = m AND suma_m=n
atunci
scrie “Numere prietene”
altfel
scrie “Numere neprietene”
sfârșit dacă
stop
copyright@www.adrian.runceanu.ro
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
PROBLEMA 14
Se citesc pe rând, n numere naturale. Să se
realizeze, în pseudocod, un algoritm care să
determine cel mai mare număr dintre cele n
date.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 107
Pentru n = 10, si valorile următoare:
-2, 12, 56, -123, 34, 7, -45, 90, 23, 6
Valoarea maximă este 90
copyright@www.adrian.runceanu.ro
2.5. 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 natural, n numere
naturale
Date de ieşire: valoarea maximă
02.12.2016 Curs - Programarea calculatoarelor 108
copyright@www.adrian.runceanu.ro
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
Pas 2: Analiza problemei
La începutul problemei, vom iniţializa o variabilă, în
care vom reține valoarea maximă, cu o valoare foarte
mica, arbitrar aleasă.
Apoi, într-un ciclu repetitiv având n pași vom
compara, pe rând cele n valori citite de la tastatură și vom
reține de fiecare valoare mai mare decât cea din variabila
max.
La sfârșit vom avea valoarea cea mai mare în variabila
max.
02.12.2016 Curs - Programarea calculatoarelor 109
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
02.12.2016 Curs - Programarea calculatoarelor 110
Pas 3:
Scrierea
algoritmului
în
pseudocod:
natural n, i, max, x
citeşte n
max <- -10000
pentru i=1,n execută
citește x
daca x>max atunci
max <- x
sfârșit daca
sfârșit pentru
scrie max
stop
copyright@www.adrian.runceanu.ro
Alte probleme propuse spre rezolvare
Enunt
Ce citesc trei numere naturale nenule. Sa se
verifice daca ele coincid chiar cu valorile 1, 2, si 3.
Exemplu:
02.12.2016 Curs - Programarea calculatoarelor 111
Pentru n = 10, si valorile următoare:
-2, 12, 56, -123, 34, 7, -45, 90, 23, 6
Valoarea maximă este 90
copyright@www.adrian.runceanu.ro
Alte probleme propuse spre rezolvare
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: a,b,c numere natural nenule
Date de ieşire: mesaj corespunzator
02.12.2016 Curs - Programarea calculatoarelor 112
copyright@www.adrian.runceanu.ro
Alte probleme propuse spre rezolvare
Pas 2: Analiza problemei
Pentru a identifica daca cele trei numere citite sunt
chiar egale cu valorile 1, 2 si 3, putem verifica acest
lucru intr-un mod simplu.
Calculam suma si produsul lor si daca obtinem
pentru fiecare din cele doua valori astfel calculate,
valoarea 6, atunci am gasit rezultatul dorit.
02.12.2016 Curs - Programarea calculatoarelor 113
Alte probleme propuse spre rezolvare
02.12.2016 Curs - Programarea calculatoarelor 114
Pas 3:
Scrierea
algoritmului
în
pseudocod:
natural a, b, c, s, p
citeste a, b, c
s <- a + b + c
p <- a * b * c
daca s = 6 si p = 6 atunci
scrie ‘Numerele citite sunt chiar 1, 2 si
3’
altfel
scrie ‘Numerele citite un sunt egale cu
1,2 si 3’
sfarsit daca
stop
copyright@www.adrian.runceanu.ro
Alte probleme propuse spre rezolvare
Problema 2:
Se citesc trei numere a,b,c. Sa se verifice daca aceste
numere (puse in orice odine) sunt in progresie
aritmetica si sa se afiseze ratia progresiei in caz
afirmativ.
Problema 3:
Se dau trei numere a,b,c. Sa se verifice daca pot
reprezenta laturile unui triunghi. In caz afirmativ sa se
precizeze ce tip de triunghi este: echilateral, isoscel,
dreptunghic sau oarecare.
02.12.2016 Curs - Programarea calculatoarelor 115
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 116
copyright@www.adrian.runceanu.ro
“First, solve the problem. Then, write
the code.”
- John Johnson
02.12.2016 Programarea Calculatoarelor - curs 117

More Related Content

What's hot

Limba română, clasa 1, Tainele cărții.
Limba română, clasa 1, Tainele cărții. Limba română, clasa 1, Tainele cărții.
Limba română, clasa 1, Tainele cărții.
Daniela State
 
Plan educaţional individualizat
Plan educaţional individualizatPlan educaţional individualizat
Plan educaţional individualizat
Cristina Moraru
 
Sapunuri si detergenti(varianta corecta)
Sapunuri si detergenti(varianta corecta)Sapunuri si detergenti(varianta corecta)
Sapunuri si detergenti(varianta corecta)Nicu Dandu
 
Prezentare de carte.pptx
Prezentare de carte.pptxPrezentare de carte.pptx
Prezentare de carte.pptx
MiaAim2
 
Limba și literatura română
Limba și literatura românăLimba și literatura română
Limba și literatura română
NadyaRacila
 
Avantaje si dezavantaje proiectarii itemilor
Avantaje si dezavantaje proiectarii itemilorAvantaje si dezavantaje proiectarii itemilor
Avantaje si dezavantaje proiectarii itemilorsavatage22
 
Rolul verbelor
Rolul verbelorRolul verbelor
Rolul verbelor
Nicoleta Dumitru
 
Hronicul si cantecul varstelor
Hronicul si cantecul varstelorHronicul si cantecul varstelor
Hronicul si cantecul varstelor
Emil Mustata
 
FORMARE ATESTAREA CADRELOR DIDACTICE.pptx
FORMARE ATESTAREA CADRELOR DIDACTICE.pptxFORMARE ATESTAREA CADRELOR DIDACTICE.pptx
FORMARE ATESTAREA CADRELOR DIDACTICE.pptx
Daniela Munca-Aftenev
 
Prezentare Gremalschi Anatol.pptx
Prezentare Gremalschi Anatol.pptxPrezentare Gremalschi Anatol.pptx
Prezentare Gremalschi Anatol.pptx
NadyaRacila
 
Managementul clasei
Managementul claseiManagementul clasei
Managementul clasei
Олечка Шерепера
 
Circuitulmaterieiinecosistem
CircuitulmaterieiinecosistemCircuitulmaterieiinecosistem
Circuitulmaterieiinecosistem
Gavril Simona
 
Distrugerea Vietii Prin Poluarea
Distrugerea Vietii Prin PoluareaDistrugerea Vietii Prin Poluarea
Distrugerea Vietii Prin Poluarea
Angesha
 
Poluarea apei
Poluarea apeiPoluarea apei
Poluarea apei
violetacorbu
 
Formarea zilelor, a noptilor si a anotimpurilor
Formarea zilelor, a noptilor si a anotimpurilorFormarea zilelor, a noptilor si a anotimpurilor
Formarea zilelor, a noptilor si a anotimpurilor
TiuAni
 
„Managementul clasei de elevi”, Tatiana Lungu
 „Managementul clasei de elevi”, Tatiana Lungu „Managementul clasei de elevi”, Tatiana Lungu
„Managementul clasei de elevi”, Tatiana Lungu
Daniela Munca-Aftenev
 

What's hot (20)

Limba română, clasa 1, Tainele cărții.
Limba română, clasa 1, Tainele cărții. Limba română, clasa 1, Tainele cărții.
Limba română, clasa 1, Tainele cărții.
 
Vulcani.ppt
Vulcani.pptVulcani.ppt
Vulcani.ppt
 
Plan educaţional individualizat
Plan educaţional individualizatPlan educaţional individualizat
Plan educaţional individualizat
 
Sapunuri si detergenti(varianta corecta)
Sapunuri si detergenti(varianta corecta)Sapunuri si detergenti(varianta corecta)
Sapunuri si detergenti(varianta corecta)
 
Prezentare de carte.pptx
Prezentare de carte.pptxPrezentare de carte.pptx
Prezentare de carte.pptx
 
Referat
ReferatReferat
Referat
 
Limba și literatura română
Limba și literatura românăLimba și literatura română
Limba și literatura română
 
Proteinele
ProteineleProteinele
Proteinele
 
Avantaje si dezavantaje proiectarii itemilor
Avantaje si dezavantaje proiectarii itemilorAvantaje si dezavantaje proiectarii itemilor
Avantaje si dezavantaje proiectarii itemilor
 
Rolul verbelor
Rolul verbelorRolul verbelor
Rolul verbelor
 
Hronicul si cantecul varstelor
Hronicul si cantecul varstelorHronicul si cantecul varstelor
Hronicul si cantecul varstelor
 
FORMARE ATESTAREA CADRELOR DIDACTICE.pptx
FORMARE ATESTAREA CADRELOR DIDACTICE.pptxFORMARE ATESTAREA CADRELOR DIDACTICE.pptx
FORMARE ATESTAREA CADRELOR DIDACTICE.pptx
 
Prezentare Gremalschi Anatol.pptx
Prezentare Gremalschi Anatol.pptxPrezentare Gremalschi Anatol.pptx
Prezentare Gremalschi Anatol.pptx
 
Managementul clasei
Managementul claseiManagementul clasei
Managementul clasei
 
Circuitulmaterieiinecosistem
CircuitulmaterieiinecosistemCircuitulmaterieiinecosistem
Circuitulmaterieiinecosistem
 
Distrugerea Vietii Prin Poluarea
Distrugerea Vietii Prin PoluareaDistrugerea Vietii Prin Poluarea
Distrugerea Vietii Prin Poluarea
 
Asistenta la ore
Asistenta la oreAsistenta la ore
Asistenta la ore
 
Poluarea apei
Poluarea apeiPoluarea apei
Poluarea apei
 
Formarea zilelor, a noptilor si a anotimpurilor
Formarea zilelor, a noptilor si a anotimpurilorFormarea zilelor, a noptilor si a anotimpurilor
Formarea zilelor, a noptilor si a anotimpurilor
 
„Managementul clasei de elevi”, Tatiana Lungu
 „Managementul clasei de elevi”, Tatiana Lungu „Managementul clasei de elevi”, Tatiana Lungu
„Managementul clasei de elevi”, Tatiana Lungu
 

Viewers also liked

Lecture2 - PC
Lecture2 - PCLecture2 - PC
Lecture2 - PC
Adrian Runceanu
 
Lecture3 - PC
Lecture3 - PCLecture3 - PC
Lecture3 - PC
Adrian Runceanu
 
Lecture5 - PC
Lecture5 - PCLecture5 - PC
Lecture5 - PC
Adrian Runceanu
 
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
 
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
 

Viewers also liked (6)

Lecture2 - PC
Lecture2 - PCLecture2 - PC
Lecture2 - PC
 
Lecture3 - PC
Lecture3 - PCLecture3 - PC
Lecture3 - PC
 
Lecture5 - PC
Lecture5 - PCLecture5 - PC
Lecture5 - PC
 
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"
 
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)
 

Similar to Lecture1 pc

Introducere in informatica
Introducere in informaticaIntroducere in informatica
Introducere in informatica
leliana loredana buzatu
 
Lecture4 - PC
Lecture4 - PCLecture4 - PC
Lecture4 - PC
Adrian Runceanu
 
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.
AdrianaDanielaCupsa
 
Elemente de programare ap
Elemente de programare apElemente de programare ap
Elemente de programare apAutoProg
 
Curs2 poo 2016
Curs2 poo 2016Curs2 poo 2016
Curs2 poo 2016
Adrian Runceanu
 
Simatic step 7 v5
Simatic step 7 v5Simatic step 7 v5
Simatic step 7 v5
Neagoe Cristian
 
Simatic step 7 v5 prog
Simatic step 7 v5 progSimatic step 7 v5 prog
Simatic step 7 v5 prog
MARIUS scutaru
 
Plan calendaristic clasa a XII
Plan calendaristic clasa a XIIPlan calendaristic clasa a XII
Plan calendaristic clasa a XII
teovascan
 

Similar to Lecture1 pc (12)

Introducere in informatica
Introducere in informaticaIntroducere in informatica
Introducere in informatica
 
Lecture4 - PC
Lecture4 - PCLecture4 - PC
Lecture4 - PC
 
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.
 
Manual QM
Manual QMManual QM
Manual QM
 
Tema2 algoritmi
Tema2 algoritmiTema2 algoritmi
Tema2 algoritmi
 
Cap01
Cap01Cap01
Cap01
 
Elemente de programare ap
Elemente de programare apElemente de programare ap
Elemente de programare ap
 
Curs2 poo 2016
Curs2 poo 2016Curs2 poo 2016
Curs2 poo 2016
 
date dit
date ditdate dit
date dit
 
Simatic step 7 v5
Simatic step 7 v5Simatic step 7 v5
Simatic step 7 v5
 
Simatic step 7 v5 prog
Simatic step 7 v5 progSimatic step 7 v5 prog
Simatic step 7 v5 prog
 
Plan calendaristic clasa a XII
Plan calendaristic clasa a XIIPlan calendaristic clasa a XII
Plan calendaristic clasa a XII
 

Lecture1 pc

  • 3. copyright@www.adrian.runceanu.ro 1. ALGORITMI 1.1. Noţiunea de algoritm 1.2. Reprezentarea unui algoritm 1.3. Concepţia unui algoritm 1.4. Obiectele cu care lucrează algoritmii 1.5. Exemple de algoritmi elementari 02.12.2016 Programarea Calculatoarelor - curs 3
  • 4. copyright@www.adrian.runceanu.ro 1.1. Noţiunea de algoritm În procesul de rezolvare a unei probleme folosind calculatorul există doua etape: 1. Definirea şi analiza problemei 2. Proiectarea şi implementarea unui algoritm care rezolvă problema 1. Definirea şi analiza problemei poate fi la rândul ei descompusă în:  specificarea datelor de intrare  specificarea datelor de ieşire 02.12.2016 Programarea Calculatoarelor - curs 4
  • 5. copyright@www.adrian.runceanu.ro 1.1. Noţiunea de algoritm Specificarea datelor de intrare constă în: 1. Ce date vor fi primite la intrare 2. Care este formatul (forma lor de reprezentare) datelor de intrare 3. Care sunt valorile permise sau nepermise pentru datele de intrare 4. Există unele restricţii (altele decât la 3) privind valorile de intrare 5. Câte valori vor fi la intrare, sau dacă nu se poate specifica un număr fix de valori, cum se va şti când s- au terminat de introdus datele de intrare 02.12.2016 Programarea Calculatoarelor - curs 5
  • 6. copyright@www.adrian.runceanu.ro 1.1. Noţiunea de algoritm Specificarea datelor de ieşire trebuie să ţină cont de următoarele aspecte: 1. Care din valorile rezultate în cursul aplicării algoritmului de calcul, asupra datelor de intrare, vor fi afişate (necesare utilizatorului), în acest pas se face diferenţierea clară între date intermediare şi date de ieşire 2. Care va fi formatul datelor de ieşire (de exemplu un număr real poate fi afişat cu trei sau cu cinci zecimale, sau un text poate fi afişat integral sau parţial) 02.12.2016 Programarea Calculatoarelor - curs 6
  • 7. copyright@www.adrian.runceanu.ro 1.1. Noţiunea de algoritm 3. Sunt sau nu necesare explicaţii suplimentare pentru utilizator în afara datelor de ieşire 4. Care este numărul de date de ieşire care trebuie transmise către ieşire 02.12.2016 Programarea Calculatoarelor - curs 7
  • 8. copyright@www.adrian.runceanu.ro 1.1. Noţiunea de algoritm O definiţie a noţiunii de algoritm poate fi: înlănţuirea de paşi simpli, operaţii distincte care descriu modul de prelucrare a unor date de intrare în scopul rezolvării unei probleme. Un exemplu simplu de algoritm ar fi suita de operaţii matematice făcută în rezolvarea unei ecuaţii matematice de gradul II: 02.12.2016 Programarea Calculatoarelor - curs 8 aX2+bX+c=0, coeficienţii a, b, c se schimbă dar modul de procesare a valorilor lor, nu
  • 9. copyright@www.adrian.runceanu.ro 1.1. Noţiunea de algoritm Proprietăţile unui algoritm sunt: 1. Este compus din instrucţiuni simple şi clare 2. Operaţiunile specificate de instrucţiuni se execută într-o anumită secvenţă 3. Soluţia trebuie obţinută într-un număr finit de paşi 02.12.2016 Programarea Calculatoarelor - curs 9
  • 10. copyright@www.adrian.runceanu.ro 1.1. Noţiunea de algoritm Rezolvarea unei probleme este un proces complex, care are mai multe etape: 1. Analiza problemei, pentru a stabili datele de intrare şi de ieşire 2. Elaborarea unui algoritm de rezolvare a problemei 3. Implementarea algoritmului într-un limbaj de programare 4. Verificarea corectitudinii algoritmului implementat 5. Analiza complexitatii algoritmului 02.12.2016 Programarea Calculatoarelor - curs 10
  • 11. copyright@www.adrian.runceanu.ro 1. ALGORITMI 1.1. Noţiunea de algoritm 1.2. Reprezentarea unui algoritm 1.3. Concepţia unui algoritm 1.4. Obiectele cu care lucrează algoritmii 1.5. Exemple de algoritmi elementari 02.12.2016 Programarea Calculatoarelor - curs 11
  • 12. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm În general, un algoritm poate fi considerat ca o descriere a prelucrărilor efectuate asupra unui flux de date, prelucrări care au loc cu un scop bine determinat. Modul de descriere a unui algoritm, este independent de un limbaj de programare, existând două metode clasice: 1. metoda schemei logice 2. metoda pseudocod-ului 02.12.2016 Programarea Calculatoarelor - curs 12
  • 13. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 1. Metoda schemei logice În cadrul acestei metode se foloseşte un set de simboluri, prezentat în figura 1, pentru descrierea paşilor ce trebuie executaţi pentru ca algoritmul rezultat să ne rezolve o anumită problemă. Deşi a fost extrem de folosită, până nu de mult, această metodă a pierdut teren în faţa reprezentării de tip pseudocod, poate şi datorită timpului suplimentar pierdut de utilizator cu executarea simbolurilor grafice. 02.12.2016 Programarea Calculatoarelor - curs 13
  • 14. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 02.12.2016 Programarea Calculatoarelor - curs 14 Start Bloc de atribuire Bloc citire variabile conditie Stop Bloc scriere variabile Nu Da Figura 1. Reprezentarea algoritmilor prin metoda schemei logice
  • 15. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm Să analizăm un algoritm de calcul a mediei pentru trei note obținute de un student într-o sesiune de examene şi să vedem cum ar apărea descris prin această metodă. 02.12.2016 Programarea Calculatoarelor - curs 15 Start Citire nota1, nota2, nota3 media <-(nota1+nota2+nota3)/3 Scriere media Stop
  • 16. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 2. Metoda pseudocod-ului Există mai multe variante de limbaje algoritmice, care însă nu diferă esenţial. Am ales forma în care: cuvintele cheie sunt în limba română şi operatorii sunt cei uzuali din matematică 02.12.2016 Programarea Calculatoarelor - curs 16
  • 17. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm Pseudocod-ul are în componenţă mai multe comenzi standard care încep, în general cu un cuvânt cheie care defineşte operaţia de bază din algoritm şi care va fi evidenţiat prin utilizarea aldinelor (cuvintelor îngroşate). Comenzilor standard ale pseudocod-ului le corespund instrucţiuni din limbajele de programare, fapt care uşurează implementarea algoritmului în limbaj. 02.12.2016 Programarea Calculatoarelor - curs 17
  • 18. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm Comenzile standard de bază ale pseudocod- ului sunt: 1) Comanda de atribuire - are forma: - este comanda care nu conţine cuvinte cheie şi corespunde unei operaţii de atribuire 02.12.2016 Programarea Calculatoarelor - curs 18 variabilă expresie
  • 19. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 2) Comanda de citire - are forma: - este comanda care corespunde unei operaţii de citire 3) Comanda de scriere - are forma: - este comanda care corespunde unei operaţii de scriere 02.12.2016 Programarea Calculatoarelor - curs 19 citeşte listă de variabile scrie listă de expresii
  • 20. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 4) Structura de decizie - are două forme corespunzătoare celor două forme ale structurii alternative (structurii de decizie): 02.12.2016 Programarea Calculatoarelor - curs 20 dacă condiţie atunci instructiune1 … instructiunen altfel instructiune1 … instructiunen sfârşit dacă
  • 21. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm A doua formă a structurii de decizie: 02.12.2016 Programarea Calculatoarelor - curs 21 dacă condiţie atunci instructiune1 … instructiunen sfârşit dacă
  • 22. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 5) Structura cât timp - are forma: - corespunde ciclului repetitiv cu test iniţial 02.12.2016 Programarea Calculatoarelor - curs 22 cât timp condiţie execută instructiune1 … instructiunen sfârşit cât timp
  • 23. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 6) Structura repetă până când - are forma: - corespunde ciclului repetitiv cu test final 02.12.2016 Programarea Calculatoarelor - curs 23 repetă instructiune1 … instructiunen până când condiţie
  • 24. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 7) Structura pentru - are forma: - corespunde ciclului repetitiv cu număr cunoscut de pași 02.12.2016 Programarea Calculatoarelor - curs 24 pentru variabila<-valoare initiala, valoare finala executa instructiune1 … instructiunen sfârşit pentru
  • 25. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm 8) Structura de oprire a algoritmului - are forma: 02.12.2016 Programarea Calculatoarelor - curs 25 stop
  • 26. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm Reluăm exemplul cu media a trei note pe care îl vom scrie atât cu ajutorul schemelor logice, cât şi cu ajutorul pseudocod-ului. 02.12.2016 Programarea Calculatoarelor - curs 26
  • 27. copyright@www.adrian.runceanu.ro 1.2. Reprezentarea unui algoritm real nota1, nota2, nota3, media citeşte nota1, nota2, nota3 media (nota1+nota2+nota3)/3 scrie media stop  02.12.2016 Programarea Calculatoarelor - curs 27 Start Citire nota1, nota2, nota3 media <-(nota1+nota2+nota3)/3 Scriere media Stop Se observă că este mult mai uşor să se redacteze un algoritm cu ajutorul pseudocod-ului, decât cu ajutorul schemelor logice.
  • 28. copyright@www.adrian.runceanu.ro 1. ALGORITMI 1.1. Noţiunea de algoritm 1.2. Reprezentarea unui algoritm 1.3. Concepţia unui algoritm 1.4. Obiectele cu care lucrează algoritmii 1.5. Exemple de algoritmi elementari 02.12.2016 Programarea Calculatoarelor - curs 28
  • 29. copyright@www.adrian.runceanu.ro 1.3. Conceptia unui algoritm Pași necesari: 1. Problema care va fi rezolvată, trebuie citită cu atenţie. 2. Apoi se stabilesc prelucrările care sunt necesare obţinerii rezultatelor dorite. Pentru a crea un algoritm eficient trebuie evidenţiate datele de intrare şi datele de ieşire. 02.12.2016 Programarea Calculatoarelor - curs 29
  • 30. copyright@www.adrian.runceanu.ro 1.3. Conceptia unui algoritm 02.12.2016 Programarea Calculatoarelor - curs 30 Date de intrare Date de ieșire ALGORITM
  • 31. copyright@www.adrian.runceanu.ro 1. ALGORITMI 1.1. Noţiunea de algoritm 1.2. Reprezentarea unui algoritm 1.3. Concepţia unui algoritm 1.4. Obiectele cu care lucrează algoritmii 1.5. Exemple de algoritmi elementari 02.12.2016 Programarea Calculatoarelor - curs 31
  • 32. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii Obiectele cu care lucrează algoritmii sunt: a) Constante b) Variabile c) Operaţii d) Expresii 02.12.2016 Programarea Calculatoarelor - curs 32
  • 33. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii a) Constantele sunt date de un anumit tip care nu se modifică pe parcursul execuţiei unui algoritm. Pot fi: 1. Constante numerice, adică numere întregi sau reale 2. Constante nenumerice, adică şiruri de caractere cuprinse între apostrofuri 3. Constante logice, adevărat şi fals 02.12.2016 Programarea Calculatoarelor - curs 33
  • 34. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii b) Variabilele sunt date ale căror valori se modifică pe parcursul execuţiei unui algoritm. Ele se utilizează pentru a păstra datele iniţiale, sau pentru a păstra rezultatele parţiale sau finale ale algoritmului. Fiecare variabilă va avea o locaţie de memorie asociată ei, unde i se păstrează valoarea. Variabilele pot: naturale, întregi, reale, logice sau şiruri de caractere. 02.12.2016 Programarea Calculatoarelor - curs 34
  • 35. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii c) Operatorii sunt cei folosiţi uzuali în matematică: 1. Operatori aritmetici 2. Operatori relaţionali 3. Operatori logici Operatori aritmetici Operator Semnificaţie + Adunare - Scădere * Înmulţire / Împărţire Operatori relaţionali < Mai mic <= Mai mic sau egal > Mai mare >= Mai mare sau egal = Egal <> Diferit Operatori logici not Negaţie si Şi (conjuncţie) sau Sau (disjuncţie)02.12.2016 Programarea Calculatoarelor - curs 35
  • 36. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii d) Expresiile sunt formate din constante şi variabile legate între ele cu ajutorul operatorilor. Pot fi de mai multe tipuri, în funcţie de tipul operatorilor si a operanzilor: 1. Expresii aritmetice 2. Expresii relaţionale 3. Expresii logice 02.12.2016 Programarea Calculatoarelor - curs 36
  • 37. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii O expresie aritmetică este o expresie care cuprinde: 1. constante 2. variabile 3. sau funcţii aritmetice elementare legate, eventual, prin operatori aritmetici. 02.12.2016 Programarea Calculatoarelor - curs 37
  • 38. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii O expresie relaţională poate fi formată din: Două expresii aritmetice legate printr-un singur operator relaţional (de exemplu: b2 > 4*a*c) Două variabile nenumerice legate printr-un operator relaţional (de exemplu: nume1<>nume2) O variabilă şi o constantă nenumerice legate printr-un operator relaţional (de exemplu: raspuns=‘da’) 02.12.2016 Programarea Calculatoarelor - curs 38
  • 39. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii O expresie logică cuprinde: 1. constante 2. variabile 3. sau expresii relaţionale legate prin operatori logici a cărei valoare este fie adevărat, fie fals. 02.12.2016 Programarea Calculatoarelor - curs 39
  • 40. copyright@www.adrian.runceanu.ro 1.4. Obiectele cu care lucrează algoritmii Condiţiile care apar în algoritmi vor fi întotdeauna exprimate prin expresii relaţionale sau logice. 02.12.2016 Programarea Calculatoarelor - curs 40
  • 41. copyright@www.adrian.runceanu.ro 1. ALGORITMI 1.1. Noţiunea de algoritm 1.2. Reprezentarea unui algoritm 1.3. Concepţia unui algoritm 1.4. Obiectele cu care lucrează algoritmii 1.5. Exemple de algoritmi elementari 02.12.2016 Programarea Calculatoarelor - curs 41
  • 42. copyright@www.adrian.runceanu.ro 1.5. Exemple de algoritmi elementari Enunţ: Să se calculeze perimetrul şi aria unui triunghi oarecare dacă se cunosc laturile triunghiului. Pas 1: Stabilim care sunt datele de intrare si datele de iesire, adică cele care vor fi prelucrate cu ajutorul algoritmului. În cazul problemei date, avem: Date de intrare: a, b, şi c numere reale ce reprezintă laturile triunghiului. Date de iesire: p = perimetrul si s = aria triunghiului 02.12.2016 Programarea Calculatoarelor - curs 42
  • 43. copyright@www.adrian.runceanu.ro 1.5. Exemple de algoritmi elementari Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. În cadrul problemei pe care o avem de rezolvat, cunoaştem formula lui Heron pentru calculul ariei unui triunghi dacă se cunosc laturile sale: unde p reprezintă semiperimetrul triunghiului. 02.12.2016 Programarea Calculatoarelor - curs 43 ))()(( cpbpappS 
  • 44. 1.5. Exemple de algoritmi elementari Pas 3: Scrierea algoritmului în pseudocod:   02.12.2016 Programarea Calculatoarelor - curs 44 real a, b, c, p, S citeşte a, b, c p a + b + c scrie ‘Perimetrul triunghiului este ‘, p p p / 2 scrie ‘Aria triunghiului este’, S stop c)b)(pa)(pp(pS 
  • 45. copyright@www.adrian.runceanu.ro 1.5. Exemple de algoritmi elementari Pas 4: Implementarea algoritmului în limbajul de programare dorit - în cazul nostru vom utiliza limbajul C++. Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Ultimii doi paşi îi vom scrie după prezentarea limbajului C++. 02.12.2016 Programarea Calculatoarelor - curs 45
  • 46. copyright@www.adrian.runceanu.ro 1.5. Exemple de algoritmi elementari Enunţ: Considerăm ecuaţia de gradul I de forma: ax + b = 0, unde a şi b sunt numere reale. Să se scrie un algoritm care să rezolve ecuaţia dată pentru orice două valori a şi b date. Pas 1: Stabilim care sunt datele de intrare si de iesire, adică cele care vor fi prelucrate cu ajutorul algoritmului. În cazul problemei date, avem: Date de intrare: a, b - numere reale Date de iesire: x - solutia ecuatiei 02.12.2016 Programarea Calculatoarelor - curs 46
  • 47. copyright@www.adrian.runceanu.ro 1.5. Exemple de algoritmi elementari Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. Căutăm cazurile particulare. În cadrul problemei pe care o avem de rezolvat, cunoaştem următoarele: Ecuaţia ax+b=0, are solutii reale daca a si b sunt diferite de 0. Cazurile particulare sunt: 1) Daca a = 0, atunci ecuatia data are o infinitate de solutii. 2) Daca a = 0 si b = 0, atunci ecuatia este nedeterminata 3) Daca a ≠ 0 si b ≠ 0, atunci ecuatia are o singura solutie si anume: x = -b/a 02.12.2016 Programarea Calculatoarelor - curs 47
  • 48. copyright@www.adrian.runceanu.ro 1.5. Exemple de algoritmi elementari Pas 3: Scrierea algoritmului în pseudocod:  02.12.2016 Programarea Calculatoarelor - curs 48 real a, b, x citeşte a, b dacă a = 0 atunci scrie ‘Ecuaţia are o infinitate de soluţii’ altfel dacă b = 0 atunci scrie ‘Ecuaţia este nedeterminată’ altfel x - b / a scrie x sfârşit dacă sfarşit dacă stop
  • 49. copyright@www.adrian.runceanu.ro 1.5. Exemple de algoritmi elementari Pas 4: Implementarea algoritmului în limbajul de programare dorit - în cazul nostru vom utiliza limbajul C++. Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Ultimii doi paşi îi vom scrie după prezentarea limbajului C++. 02.12.2016 Programarea Calculatoarelor - curs 49
  • 50. copyright@www.adrian.runceanu.ro Recapitulare 1. Ce este un algoritm? 2. Cum se pot reprezenta algoritmii? 3. Folosind metoda pseudocod-ului de reprezentare a algoritmilor, cum se reprezintă structura de decizie? 4. Folosind metoda pseudocod-ului de reprezentare a algoritmilor, cum se reprezintă structura repetitivă cu test iniţial? 02.12.2016 Programarea Calculatoarelor - curs 50
  • 51. copyright@www.adrian.runceanu.ro Enunţuri de probleme ce pot fi rezolvate 1. Să se calculeze perimetrul şi aria unui dreptunghi, ştiind laturile sale. 2. Să se calculeze unghiurile(in radiani) unui triunghi, ştiind laturile sale. 02.12.2016 Programarea Calculatoarelor - curs 51
  • 53. copyright@www.adrian.runceanu.ro 2. ALGORITMI 2.1. Algoritmi elementari (numai cu operatia de atribuire) 2.2. Algoritmi cu structura de decizie 2.3. Algoritmi cu structura repetitivă cu test iniţial 2.4. Algoritmi cu structura repetitivă cu test final 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași 02.12.2016 Curs - Programarea calculatoarelor 53
  • 54. copyright@www.adrian.runceanu.ro 2.1. Algoritmi elementari PROBLEMA 1 Să se calculeze perimetrul şi aria unui dreptunghi, ştiind laturile sale. 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: l şi L numere reale ce reprezintă laturile dreptunghiului. Date de ieşire: p şi A numere reale ce reprezintă perimetrul, respectiv aria dreptunghiului. 02.12.2016 Curs - Programarea calculatoarelor 54
  • 55. copyright@www.adrian.runceanu.ro 2.1. Algoritmi elementari Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. În cadrul problemei pe care o avem de rezolvat, cunoaştem formulele pentru calculul perimetrului, respectiv ariei unui dreptunghi dacă se stiu laturile sale: Perimetru = 2*( latime + Lungime ) Aria = latime * Lungime 02.12.2016 Curs - Programarea calculatoarelor 55
  • 56. 2.1. Algoritmi elementari Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 56 real l, L, p, A citeşte l, L p <- 2 * ( l + L ) scrie ‘Perimetrul dreptunghiului este ‘, p A <- l * L scrie ‘Aria dreptunghiului este’, A stop
  • 57. copyright@www.adrian.runceanu.ro 2.1. Algoritmi elementari PROBLEMA 2 Sa se calculeze si sa se afiseze valoarea distantei intre doua puncte, dandu-se coordonatele acestora: A(x1, y1) si B(x2, y2). 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: x1, x2, y1 şi y2 numere reale ce reprezintă coordonatele celor doua puncte. Date de ieşire: d = distanta intre cele doua puncte 02.12.2016 Curs - Programarea calculatoarelor 57
  • 58. copyright@www.adrian.runceanu.ro 2.1. Algoritmi elementari Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. În cadrul problemei pe care o avem de rezolvat, cunoaştem formula de calcul pentru aflarea distantei dintre doua puncte in plan: 02.12.2016 Curs - Programarea calculatoarelor 58 )()()()( 21212121 yyyyxxxxd 
  • 59. 2.1. Algoritmi elementari Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 59 real x1, x2, y1, y2, d citeşte x1, y1, x2, y2 scrie ‘Distanta dintre cele doua puncte este ’, d stop )21()21()21()21( yyyyxxxxd 
  • 60. copyright@www.adrian.runceanu.ro 2.1. Algoritmi elementari PROBLEMA 3 Se dau două numere reale x şi y. Să se calculeze următoarele expresii: A = 2 + x - y B = x * A + y C = A - 2 * B + x Pas 1: Stabilim care sunt datele de intrare, şi ce tip de date reprezintă, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: x şi y numere reale Date de ieşire: A, B şi C numere reale 02.12.2016 Curs - Programarea calculatoarelor 60
  • 61. copyright@www.adrian.runceanu.ro 2.1. Algoritmi elementari Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. În cadrul problemei pe care o avem de rezolvat, cunoaştem formulele pentru fiecare expresie: A = 2 + x - y B = x * A + y C = A - 2 * B + x 02.12.2016 Curs - Programarea calculatoarelor 61
  • 62. 2.1. Algoritmi elementari Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 62 real x, y, A, B, C citeşte x, y A <- 2 + x - y B <- x * A + y C <- A - 2 * B + x scrie ‘Valoarea expresiei A este ‘, A scrie ‘Valoarea expresiei B este ‘, B scrie ‘Valoarea expresiei C este ‘, C stop
  • 63. copyright@www.adrian.runceanu.ro 2. ALGORITMI 2.1. Algoritmi elementari numai cu operatia de atribuire) 2.2. Algoritmi cu structura de decizie 2.3. Algoritmi cu structura repetitivă cu test iniţial 2.4. Algoritmi cu structura repetitivă cu test final 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași 02.12.2016 Curs - Programarea calculatoarelor 63
  • 64. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie PROBLEMA 4 Se dau trei numere întregi a, b si c. Să se scrie un algoritm care să se determine maximul și minimul acestor valori. 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: a, b și c numere întregi Date de ieșire: min, respectiv max 02.12.2016 Curs - Programarea calculatoarelor 64
  • 65. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. i) Comparăm primele două numere (a și b). În funcție de care este mai mic sau mai mare am determinat minimul și maximul celor două valori. ii) Comparăm valorile de minim, respectiv de maxim cu cel de-al treilea număr si astfel vom determina cea mai mică, respectiv cea mai mare valoare dintre cele trei date. 02.12.2016 Curs - Programarea calculatoarelor 65
  • 66. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 66 intreg a, b, c, min, max citeşte a, b, c dacă a < b atunci min <- a max <- b altfel min <- b max <- a sfârşit dacă dacă c < min atunci min <- c sfarşit dacă dacă c > max atunci max <- c sfarşit dacă scrie min, max stop
  • 67. 2.2. Algoritmi cu structura de decizie PROBLEMA 5 Să se calculeze valoarea funcţiei f(x), ştiind că x este un număr real introdus de la tastatură: 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: x număr real Date de iesire: f număr real, reprezentând valoarea funcţiei date 02.12.2016 Curs - Programarea calculatoarelor 67          0,2 ]0,7(,30 ]7,(,206 )( xdacax xdacax xdacax xf
  • 68. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. Căutăm cazurile particulare. În cadrul problemei pe care o avem de rezolvat, verificăm condiţiile date în expresia funcţiei: 1) Dacă x <= -7, atunci funcţia are valoarea: -6x + 20 2) Daca x > -7 si x <= 0, atunci funcţia are valoarea: x+30 3) Daca x > 0, atunci funcţia are valoarea: sqrt(x) + 2 02.12.2016 Curs - Programarea calculatoarelor 68
  • 69. 2.2. Algoritmi cu structura de decizie Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 69 real x, f citeşte x dacă x <= -7 atunci f <- -6 * x + 20 altfel dacă x > -7 şi x <= 0 atunci f <- x + 30 altfel f <- sqrt(x) + 2 sfârşit dacă sfarşit dacă scrie f stop
  • 70. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie PROBLEMA 6 Să se citească trei valori naturale a, b și c. Să se scrie un algoritm care să verifice dacă cele trei numere sunt sau nu numere pitagorice. Precizare: Numim numere pitagorice, trei valori care îndeplinesc Teorema lui Pitagora, adică verifică una din condițiile: 02.12.2016 Curs - Programarea calculatoarelor 70 222 222 222 bac cab cba   
  • 71. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie 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: a, b și c numere naturale Date de ieşire: mesaj corespunzător 02.12.2016 Curs - Programarea calculatoarelor 71
  • 72. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. În cadrul problemei pe care o avem de rezolvat, verificăm condiţiile care trebuie îndeplinite de cele trei valori: 1) Dacă 𝒂 𝟐 = 𝒃 𝟐 + 𝒄 𝟐 , atunci sunt numere pitagorice. Sau 2) Daca 𝒃 𝟐 = 𝒂 𝟐 + 𝒄 𝟐 , atunci sunt numere pitagorice. Sau 3) Daca 𝒄 𝟐 = 𝒂 𝟐 + 𝒃 𝟐 , atunci sunt numere pitagorice. 02.12.2016 Curs - Programarea calculatoarelor 72
  • 73. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 73 natural a,b,c citeşte a,b,c dacă 𝑎2 = 𝑏2 + 𝑐2 atunci scrie ‘Numere pitagorice’ altfel dacă 𝑏2 = 𝑎2 + 𝑐2 atunci scrie ‘Numere pitagorice’ altfel dacă 𝑐2 = 𝑎2 + 𝑏2 atunci scrie ‘Numere pitagorice’ altfel scrie ‘NU SUNT nr. pitagorice’ sfârşit dacă sfarşit dacă sfarşit dacă stop
  • 74. copyright@www.adrian.runceanu.ro 2.2. Algoritmi cu structura de decizie Varianta II-a Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Curs - Programarea calculatoarelor 74 natural a,b,c citeşte a,b,c dacă 𝑎2 = 𝑏2 + 𝑐2 sau 𝑏2 = 𝑎2 + 𝑐2 sau 𝑐2 = 𝑎2 + 𝑏2 atunci scrie ‘Numere pitagorice’ altfel scrie ‘NU SUNT nr. pitagorice’ sfarşit dacă stop
  • 75. copyright@www.adrian.runceanu.ro 2. ALGORITMI 2.1. Algoritmi elementari (numai cu operatia de atribuire) 2.2. Algoritmi cu structura de decizie 2.3. Algoritmi cu structura repetitivă cu test iniţial 2.4. Algoritmi cu structura repetitivă cu test final 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași 02.12.2016 Curs - Programarea calculatoarelor 75
  • 76. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial PROBLEMA 7 Să se citească un număr natural n. Să se scrie un algoritm care afişează toţi divizorii numărului dat. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 76 Pentru n = 12, mulţimea divizorilor este formată din valorile 1, 2, 3, 4, 6, 12.
  • 77. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial 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 natural Date de ieşire: divizorii numărului n 02.12.2016 Curs - Programarea calculatoarelor 77
  • 78. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial Pas 2: Analiza problemei În cadrul problemei pe care o avem de rezolvat, verificăm condiţia ca un număr să fie divizor al altui număr şi anume: i este divizor al numărului n dacă se împarte exact la el, adică dacă este adevărată expresia n % i = 0. Pentru a găsi toţi divizorii numărului n dat, vom da valori lui i, pornind de la valoarea 1 până la valoarea n. Deci vom utiliza o structură repetitivă. 02.12.2016 Curs - Programarea calculatoarelor 78
  • 79. 2.3. Algoritmi cu structura repetitivă cu test iniţial 02.12.2016 Curs - Programarea calculatoarelor 79 Pas 3: Scrierea algoritmului în pseudocod: natural n, i citeşte n i <- 1 cât timp i <= n execută dacă n % i = 0 atunci scrie i sfârşit dacă i <- i + 1 sfârşit cât timp stop
  • 80. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial PROBLEMA 8 Să se citească un număr natural n. Să se scrie un algoritm care verifică dacă numărul dat este sau nu număr prim. Un număr n este prim dacă are ca divizori doar valorile 1 şi n. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 80 Pentru n = 7, se va afişa mesajul ‘numărul este prim’, iar pentru n = 22, se va afişa mesajul ‘numărul NU este prim’.
  • 81. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial 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 natural Date de ieşire: număr prim sau nu 02.12.2016 Curs - Programarea calculatoarelor 81
  • 82. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial Pas 2: Analiza problemei: 1) Vom presupune, la începutul problemei, că numărul n dat este prim, şi vom specifica acest lucru cu ajutorul unei variabile de tip logic, căreia îi vom da valoarea ‘adevărat’. 2) Apoi vom evalua, pe rând, toate valorile începând cu valoarea 2 şi până la n-1, ca să determinăm dacă sunt divizori ai numărului n dat. 3) Dacă găsim un singur divizor printre aceste numere, atunci vom acorda valoarea ‘fals’ variabilei de tip logic de la începutul algoritmului. 4) La sfârşit vom verifica care este valoarea variabilei de tip logic şi vom afişa un mesaj corespunzător. 02.12.2016 Curs - Programarea calculatoarelor 82
  • 83. 2.3. Algoritmi cu structura repetitivă cu test iniţial 02.12.2016 Curs - Programarea calculatoarelor 83 Pas 3: Scrierea algoritmului în pseudocod: natural n, i logic p citeşte n p <- adevărat i <- 2 cât timp i <= n-1 execută dacă n % i = 0 atunci p <- fals sfârşit dacă i <- i + 1 sfârşit cât timp dacă p = adevărat atunci scrie ‘Numarul este prim’ altfel scrie ‘Numarul NU este prim’ sfârşit dacă stop
  • 84. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial PROBLEMA 9 Să se calculeze suma şi produsul primelor n numere naturale, n fiind introdus de la tastatură. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 84 Pentru n = 5, se vor afişa valorile s = 1 + 2 + 3 + 4 + 5 = 15 p = 1 * 2 * 3 * 4 * 5 = 120
  • 85. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial 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 natural Date de ieşire: s şi p 02.12.2016 Curs - Programarea calculatoarelor 85
  • 86. copyright@www.adrian.runceanu.ro 2.3. Algoritmi cu structura repetitivă cu test iniţial Pas 2: Analiza problemei La începutul problemei, vom iniţializa două valori, s pentru sumă cu 0 şi p pentru produs cu 1. Apoi vom verifica, pe rând, toate valorile naturale de la 1 la n şi le vom însuma, respectiv înmulţi. Soluţiile obţinute le vom afişa. 02.12.2016 Curs - Programarea calculatoarelor 86
  • 87. 2.3. Algoritmi cu structura repetitivă cu test iniţial 02.12.2016 Curs - Programarea calculatoarelor 87 Pas 3: Scrierea algoritmului în pseudocod: natural n, i, s, p citeşte n s <- 0 p <- 1 i <- 1 cât timp i <= n execută s <- s + i p <- p * i i <- i + 1 sfârşit cât timp scrie ‘Suma numerelor este’, s scrie ‘Produsul numerelor este’, p stop
  • 88. copyright@www.adrian.runceanu.ro 2. ALGORITMI 2.1. Algoritmi elementari (numai cu operatia de atribuire) 2.2. Algoritmi cu structura de decizie 2.3. Algoritmi cu structura repetitivă cu test iniţial 2.4. Algoritmi cu structura repetitivă cu test final 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași 02.12.2016 Curs - Programarea calculatoarelor 88
  • 89. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final PROBLEMA 10 Să se scrie un program care verifică dacă un număr n este perfect sau nu. Un număr perfect este egal cu suma divizorilor lui, inclusiv 1 (exemplu: 6 = 1 + 2 + 3), mai putin el însuși. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 89 Pentru n = 28, se va afişa mesajul Numar perfect (divizorii lui 28 sunt 1,2,4,7,14)
  • 90. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final 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 natural Date de ieşire: mesaj corespunzător 02.12.2016 Curs - Programarea calculatoarelor 90
  • 91. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final Pas 2: Analiza problemei 1) La începutul problemei, vom verifica initializa o variabila de tip suma cu valoarea 0. 2) Pentru fiecare valoare i de la 1 la n-1 o vom verifica dacă i este divizor al numarului n. Daca este divizor atunci il insumam la valoarea s. 3) Verificam daca suma obtinuta este egala cu numarul n. Daca da atunci scriem mesajul ‘Numarul este perfect’. 02.12.2016 Curs - Programarea calculatoarelor 91
  • 92. 2.4. Algoritmi cu structura repetitivă cu test final 02.12.2016 Curs - Programarea calculatoarelor 92 Pas 3: Scrierea algoritmului în pseudocod: natural n, i, s citeşte n i <- 1 s<- 0 repetă dacă n % i = 0 atunci s <- s + i sfârşit dacă i <- i + 1 până când i > n-1 dacă s = n atunci scrie ‘Numarul este perfect’ altfel scrie ‘Numarul NU este perfect’ sfârşit dacă stop
  • 93. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final PROBLEMA 11 Fie şirul lui Fibonacci, definit astfel: f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) în cazul în care n>1. Să se scrie un algoritm care implementează valorile şirului lui Fibonacci. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 93 Pentru n = 7, se vor afişa valorile 1, 1, 2, 3, 5, 8, 13.
  • 94. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final 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 natural Date de ieşire: numerele din şirul lui Fibonacci 02.12.2016 Curs - Programarea calculatoarelor 94
  • 95. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final Pas 2: Analiza problemei La începutul problemei, vom iniţializa două valori (a şi b) cu primele două elemente ale şirului lui Fibonacci, adică cu valori de 1. Apoi, într-un ciclu repetitiv vom calcula cu ajutorul unei a treia valori (variabila c) suma lor şi vom da următoarele valori variabilelor a şi b. 02.12.2016 Curs - Programarea calculatoarelor 95
  • 96. 2.4. Algoritmi cu structura repetitivă cu test final 02.12.2016 Curs - Programarea calculatoarelor 96 Pas 3: Scrierea algoritmului în pseudocod: natural n, i, a, b, c citeşte n i <- 1 a <- 1 b <- 1 repetă c <- a + b scrie c a <- b b <- c i <- i + 1 până când i > n-2 stop
  • 97. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final PROBLEMA 12 Fie un număr natural n de cinci cifre. Să se scrie un algoritm care să calculeze suma cifrelor numărului dat. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 97 Pentru n = 2178, se va afişa valoarea s = 2+1+7+8=18.
  • 98. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final 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 natural Date de ieşire: s = suma cifrelor 02.12.2016 Curs - Programarea calculatoarelor 98
  • 99. copyright@www.adrian.runceanu.ro 2.4. Algoritmi cu structura repetitivă cu test final Pas 2: Analiza problemei La începutul problemei, vom iniţializa valoarea sumei cifrelor numărului n dat cu 0. Apoi, într-un ciclu repetitiv vom calcula suma cifrelor numărului, ştiind că o cifră a unui număr scris în baza 10 este dată de n%10, iar câtul este dat de n/10. 02.12.2016 Curs - Programarea calculatoarelor 99
  • 100. 2.4. Algoritmi cu structura repetitivă cu test final 02.12.2016 Curs - Programarea calculatoarelor 100 Pas 3: Scrierea algoritmului în pseudocod: natural n, s citeşte n s <- 0 repetă s <- s + n%10 n <- n/10 până când n = 0 scrie s stop Numarul fara ultima cifra Ultima cifra a lui n
  • 101. copyright@www.adrian.runceanu.ro 2. ALGORITMI 2.1. Algoritmi elementari (numai cu operatia de atribuire) 2.2. Algoritmi cu structura de decizie 2.3. Algoritmi cu structura repetitivă cu test iniţial 2.4. Algoritmi cu structura repetitivă cu test final 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași 02.12.2016 Curs - Programarea calculatoarelor 101
  • 102. copyright@www.adrian.runceanu.ro 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași PROBLEMA 13 Se citesc două numere întregi a şi b. Să se realizeze in pseudocod un algoritm care să verifice dacă cele doua numere sunt prietene. Spunem ca două numere sunt prietene dacă suma divizorilor proprii ai unui număr este egală cu celalalt şi invers. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 102 Pentru n = 220, si m = 284 se vor afişa valorile Divizorii lui 220, sunt 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 și 110 Divizorii lui 284, sunt 1, 2, 4, 71 și 142
  • 103. copyright@www.adrian.runceanu.ro 2.5. 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 si m numere naturale Date de ieşire: numerele sunt sau nu prietene 02.12.2016 Curs - Programarea calculatoarelor 103
  • 104. copyright@www.adrian.runceanu.ro 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași Pas 2: Analiza problemei La începutul problemei, vom iniţializa valoarea unei variabile pentru suma divizorilor lui n cu 0, iar apoi valoarea unei variabile pentru suma divizorilor lui m cu 0. Apoi, într-un ciclu repetitiv avand n/2 pasi vom calcula suma divizorilor lui n. Apoi, într-un ciclu repetitiv avand m/2 pasi vom calcula suma divizorilor lui m. La sfarsit vom verifica daca cele suma divizorilor primului numar este egala cu cel de-al doilea numar, iar suma divizorilor celui de-al doilea numar este egala cu primul numar. 02.12.2016 Curs - Programarea calculatoarelor 104
  • 105. 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași 02.12.2016 Curs - Programarea calculatoarelor 105 Pas 3: Scrierea algoritmului în pseudocod: natural n, m, i, j, suma_n, suma_m citeşte n suma_n <- 0 pentru i=1,n/2 execută daca n%i=0 atunci suma_n <- suma_n + i sfârșit daca sfârșit pentru
  • 106. 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași 02.12.2016 Curs - Programarea calculatoarelor 106 Pas 3: Scrierea algoritmului în pseudocod: suma_m <- 0 pentru j=1,m/2 execută dacă m%j=0 atunci suma_m <- suma_m + j sfârșit dacă sfârșit pentru dacă suma_n = m AND suma_m=n atunci scrie “Numere prietene” altfel scrie “Numere neprietene” sfârșit dacă stop
  • 107. copyright@www.adrian.runceanu.ro 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași PROBLEMA 14 Se citesc pe rând, n numere naturale. Să se realizeze, în pseudocod, un algoritm care să determine cel mai mare număr dintre cele n date. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 107 Pentru n = 10, si valorile următoare: -2, 12, 56, -123, 34, 7, -45, 90, 23, 6 Valoarea maximă este 90
  • 108. copyright@www.adrian.runceanu.ro 2.5. 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 natural, n numere naturale Date de ieşire: valoarea maximă 02.12.2016 Curs - Programarea calculatoarelor 108
  • 109. copyright@www.adrian.runceanu.ro 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași Pas 2: Analiza problemei La începutul problemei, vom iniţializa o variabilă, în care vom reține valoarea maximă, cu o valoare foarte mica, arbitrar aleasă. Apoi, într-un ciclu repetitiv având n pași vom compara, pe rând cele n valori citite de la tastatură și vom reține de fiecare valoare mai mare decât cea din variabila max. La sfârșit vom avea valoarea cea mai mare în variabila max. 02.12.2016 Curs - Programarea calculatoarelor 109
  • 110. 2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași 02.12.2016 Curs - Programarea calculatoarelor 110 Pas 3: Scrierea algoritmului în pseudocod: natural n, i, max, x citeşte n max <- -10000 pentru i=1,n execută citește x daca x>max atunci max <- x sfârșit daca sfârșit pentru scrie max stop
  • 111. copyright@www.adrian.runceanu.ro Alte probleme propuse spre rezolvare Enunt Ce citesc trei numere naturale nenule. Sa se verifice daca ele coincid chiar cu valorile 1, 2, si 3. Exemplu: 02.12.2016 Curs - Programarea calculatoarelor 111 Pentru n = 10, si valorile următoare: -2, 12, 56, -123, 34, 7, -45, 90, 23, 6 Valoarea maximă este 90
  • 112. copyright@www.adrian.runceanu.ro Alte probleme propuse spre rezolvare 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: a,b,c numere natural nenule Date de ieşire: mesaj corespunzator 02.12.2016 Curs - Programarea calculatoarelor 112
  • 113. copyright@www.adrian.runceanu.ro Alte probleme propuse spre rezolvare Pas 2: Analiza problemei Pentru a identifica daca cele trei numere citite sunt chiar egale cu valorile 1, 2 si 3, putem verifica acest lucru intr-un mod simplu. Calculam suma si produsul lor si daca obtinem pentru fiecare din cele doua valori astfel calculate, valoarea 6, atunci am gasit rezultatul dorit. 02.12.2016 Curs - Programarea calculatoarelor 113
  • 114. Alte probleme propuse spre rezolvare 02.12.2016 Curs - Programarea calculatoarelor 114 Pas 3: Scrierea algoritmului în pseudocod: natural a, b, c, s, p citeste a, b, c s <- a + b + c p <- a * b * c daca s = 6 si p = 6 atunci scrie ‘Numerele citite sunt chiar 1, 2 si 3’ altfel scrie ‘Numerele citite un sunt egale cu 1,2 si 3’ sfarsit daca stop
  • 115. copyright@www.adrian.runceanu.ro Alte probleme propuse spre rezolvare Problema 2: Se citesc trei numere a,b,c. Sa se verifice daca aceste numere (puse in orice odine) sunt in progresie aritmetica si sa se afiseze ratia progresiei in caz afirmativ. Problema 3: Se dau trei numere a,b,c. Sa se verifice daca pot reprezenta laturile unui triunghi. In caz afirmativ sa se precizeze ce tip de triunghi este: echilateral, isoscel, dreptunghic sau oarecare. 02.12.2016 Curs - Programarea calculatoarelor 115
  • 116. 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 116
  • 117. copyright@www.adrian.runceanu.ro “First, solve the problem. Then, write the code.” - John Johnson 02.12.2016 Programarea Calculatoarelor - curs 117