„Managementul clasei de elevi”, Tatiana Lungu. Programul „Integrarea elevilor cu CES: provocări și soluții” https://chisinauedu.md/linkurile-programului-de-instruire-integrarea-copiilor-cu-ces/?fbclid=IwAR3F48LxtzQTK-U9Pf-IA7oYuFuBQlxfC0D6LqdfCZmNJUSpGqgSM92rluk
„Managementul clasei de elevi”, Tatiana Lungu. Programul „Integrarea elevilor cu CES: provocări și soluții” https://chisinauedu.md/linkurile-programului-de-instruire-integrarea-copiilor-cu-ces/?fbclid=IwAR3F48LxtzQTK-U9Pf-IA7oYuFuBQlxfC0D6LqdfCZmNJUSpGqgSM92rluk
O prezentare (pentru ediția 2015 a Școlii de vară "Informatica la Castel" de la Macea, Arad – www.informaticalacastel.ro) descriind o serie de instrumente Web disponibile liber și bazate pe diversele tehnologii aliniate curentului "cloud computing" pentru editarea, testarea, rularea și partajarea de cod-sursă scris în mai multe limbaje de programare.
Pentru alte detalii, a se vizita siturile aferente materiilor predate de Sabin Buraga: http://profs.info.uaic.ro/~busaco/teach/
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)Sabin Buraga
A practical presentation regarding the most useful concepts of CSS (Cascading Style Sheets) specifications in the Web design context. These slides were prepared for delivery at the "Computer Science at the Castle" Summer School (Macea, Arad, Romania, 2016). Various resources are available at http://profs.info.uaic.ro/~busaco/teach/labs/css/
O prezentare practică vizând cele mai utile concepte ale specificațiilor CSS (Cascading Style Sheets) în contextul designului Web. Aceste informații au fost expuse în cadrul Școlii de vară "Informatica la Castel" (Macea, Arad, România, 2016). Diverse resurse de interes sunt oferite la http://profs.info.uaic.ro/~busaco/teach/labs/css/
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ă
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
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
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