curs2-pc2
DESCRIPTION
bbTRANSCRIPT
-
Programarea calculatoarelor
Universitatea Constantin Brncui din Trgu-Jiu Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu
Lect.dr. Adrian Runceanu
-
Curs 2
Algoritmi (continuare)
03.03.2013 Curs - Programarea calculatoarelor 2
-
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 iniial 2.4. Algoritmi cu structura repetitiv cu test final 2.5. Algoritmi cu structura repetitiv cu numr
cunoscut de pai
03.03.2013 Curs - Programarea calculatoarelor 3
-
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 ieire.
n cazul problemei date, avem: Date de intrare: l i L numere reale ce reprezint laturile
dreptunghiului. Date de ieire: p i A numere reale ce reprezint
perimetrul, respectiv aria dreptunghiului. 03.03.2013 Curs - Programarea calculatoarelor 4
-
2.1. Algoritmi elementari
Pas 2: Analiza problemei Stabilim condiiile 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, cunoatem formulele pentru calculul perimetrului, respectiv ariei unui dreptunghi dac se stiu laturile sale:
Perimetru = 2*( latime + Lungime ) Aria = latime * Lungime
03.03.2013 Curs - Programarea calculatoarelor 5
-
2.1. Algoritmi elementari
Pas 3: Scrierea
algoritmului n pseudocod:
03.03.2013 Curs - Programarea calculatoarelor 6
real l, L, p, A
citete l, L
p
-
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 ieire.
n cazul problemei date, avem: Date de intrare: x1, x2, y1 i y2 numere reale ce reprezint
coordonatele celor doua puncte. Date de ieire: d = distanta intre cele doua puncte 03.03.2013 Curs - Programarea calculatoarelor 7
-
2.1. Algoritmi elementari
Pas 2: Analiza problemei Stabilim condiiile 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, cunoatem formula de calcul pentru aflarea distantei dintre doua puncte in plan:
03.03.2013 Curs - Programarea calculatoarelor 8
)()()()( 21212121 yyyyxxxxd
-
2.1. Algoritmi elementari
Pas 3: Scrierea
algoritmului n pseudocod:
03.03.2013 Curs - Programarea calculatoarelor 9
real x1, x2, y1, y2, d
citete x1, y1, x2, y2
scrie Distanta dintre cele doua puncte este , d
stop
)21
()21
()21
()21
( yyyyxxxxd
-
2.1. Algoritmi elementari
PROBLEMA 3 Se dau dou numere reale x i y. S se calculeze
urmtoarele 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 ieire. n cazul problemei date, avem: Date de intrare: x i y numere reale Date de ieire: A, B i C numere reale
03.03.2013 Curs - Programarea calculatoarelor 10
-
2.1. Algoritmi elementari
Pas 2: Analiza problemei Stabilim condiiile 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, cunoatem formulele pentru fiecare expresie:
A = 2 + x - y B = x * A + y C = A 2 * B + x
03.03.2013 Curs - Programarea calculatoarelor 11
-
2.1. Algoritmi elementari
Pas 3: Scrierea
algoritmului n pseudocod:
03.03.2013 Curs - Programarea calculatoarelor 12
real x, y, A, B, C
citete x, y
A
-
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 iniial 2.4. Algoritmi cu structura repetitiv cu test final 2.5. Algoritmi cu structura repetitiv cu numr
cunoscut de pai
03.03.2013 Curs - Programarea calculatoarelor 13
-
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 ieire.
n cazul problemei date, avem: Date de intrare: a, b i c numere ntregi Date de ieire: min, respectiv max 03.03.2013 Curs - Programarea calculatoarelor 14
-
2.2. Algoritmi cu structura de decizie
Pas 2: Analiza problemei Stabilim condiiile pe care trebuie s le
ndeplineasc datele de intrare pentru a fi prelucrate n cadrul algoritmului.
i) Comparm primele dou numere (a i b). n funcie de
care este mai mic sau mai mare am determinat minimul i maximul celor dou valori.
ii) Comparm valorile de minim, respectiv de maxim cu cel de-al treilea numr si astfel vom determina cea mai mic, respectiv cea mai mare valoare dintre cele trei date.
03.03.2013 Curs - Programarea calculatoarelor 15
-
2.2. Algoritmi cu structura de decizie
Pas 3: Scrierea
algoritmului n pseudocod:
03.03.2013 Curs - Programarea calculatoarelor 16
intreg a, b, c, min, max
citete a, b, c
dac a < b atunci
min
-
2.2. Algoritmi cu structura de decizie
PROBLEMA 5 S se calculeze valoarea funciei f(x), tiind c x este un numr 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 ieire.
n cazul problemei date, avem: Date de intrare: x numr real Date de iesire: f numr real, reprezentnd valoarea funciei date
03.03.2013 Curs - Programarea calculatoarelor 17
0,2
]0,7(,30
]7,(,206
)(
xdacax
xdacax
xdacax
xf
-
2.2. Algoritmi cu structura de decizie
Pas 2: Analiza problemei
Stabilim condiiile pe care trebuie s le
ndeplineasc datele de intrare pentru a fi prelucrate n
cadrul algoritmului. Cutm cazurile particulare.
n cadrul problemei pe care o avem de rezolvat,
verificm condiiile date n expresia funciei:
1) Dac x -7 si x 0, atunci funcia are valoarea: sqrt(x) + 2
03.03.2013 Curs - Programarea calculatoarelor 18
-
2.2. Algoritmi cu structura de decizie
Pas 3: Scrierea
algoritmului n pseudocod:
03.03.2013 Curs - Programarea calculatoarelor 19
real x, f
citete x
dac x
-
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 condiiile:
03.03.2013 Curs - Programarea calculatoarelor 20
222
222
222
bac
cab
cba
-
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 ieire.
n cazul problemei date, avem: Date de intrare: a, b i c numere naturale Date de ieire: mesaj corespunztor
03.03.2013 Curs - Programarea calculatoarelor 21
-
2.2. Algoritmi cu structura de decizie
Pas 2: Analiza problemei Stabilim condiiile 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, verificm condiiile 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. 03.03.2013 Curs - Programarea calculatoarelor 22
-
2.2. Algoritmi cu structura de decizie
Pas 3: Scrierea
algoritmului n pseudocod:
03.03.2013 Curs - Programarea calculatoarelor 23
natural a,b,c citete 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 sfrit dac sfarit dac sfarit dac stop
-
2.2. Algoritmi cu structura de decizie
Varianta II-a Pas 3: Scrierea
algoritmului n pseudocod:
03.03.2013 Curs - Programarea calculatoarelor 24
natural a,b,c citete 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 sfarit dac stop
-
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 iniial 2.4. Algoritmi cu structura repetitiv cu test final 2.5. Algoritmi cu structura repetitiv cu numr
cunoscut de pai
03.03.2013 Curs - Programarea calculatoarelor 25
-
2.3. Algoritmi cu structura repetitiv cu test iniial
PROBLEMA 7 S se citeasc un numr natural n. S se scrie un
algoritm care afieaz toi divizorii numrului dat. Exemplu: Pentru n = 12, mulimea divizorilor este format
din valorile 1, 2, 3, 4, 6, 12. Pas 1: Stabilim care sunt datele de intrare, adic cele care
vor fi prelucrate cu ajutorul algoritmului, mpreun cu datele de ieire.
n cazul problemei date, avem: Date de intrare: n numr natural Date de ieire: divizorii numrului n
03.03.2013 Curs - Programarea calculatoarelor 26
-
2.3. Algoritmi cu structura repetitiv cu test iniial
Pas 2: Analiza problemei n cadrul problemei pe care o avem de rezolvat,
verificm condiia ca un numr s fie divizor al altui numr i anume:
i este divizor al numrului n dac se mparte exact la el, adic dac este adevrat expresia n % i = 0.
Pentru a gsi toi divizorii numrului n dat, vom da valori lui i, pornind de la valoarea 1 pn la valoarea n.
Deci vom utiliza o structur repetitiv.
03.03.2013 Curs - Programarea calculatoarelor 27
-
2.3. Algoritmi cu structura repetitiv cu test iniial
03.03.2013 Curs - Programarea calculatoarelor 28
Pas 3:
Scrierea algoritmului n pseudocod:
natural n, i citete n i
-
2.3. Algoritmi cu structura repetitiv cu test iniial
PROBLEMA 8 S se citeasc un numr natural n. S se scrie un algoritm care
verific dac numrul dat este sau nu numr prim. Un numr n este prim dac are ca divizori doar valorile 1 i n. Exemplu: Pentru n = 7, se va afia mesajul numrul este prim, iar pentru n = 22, se va afia mesajul numrul NU este prim.
Pas 1: Stabilim care sunt datele de intrare, adic cele care vor fi
prelucrate cu ajutorul algoritmului, mpreun cu datele de ieire. n cazul problemei date, avem: Date de intrare: n numr natural Date de ieire: numr prim sau nu
03.03.2013 Curs - Programarea calculatoarelor 29
-
2.3. Algoritmi cu structura repetitiv cu test iniial
Pas 2: Analiza problemei: 1) Vom presupune, la nceputul problemei, c numrul n dat
este prim, i vom specifica acest lucru cu ajutorul unei variabile de tip logic, creia i vom da valoarea adevrat.
2) Apoi vom evalua, pe rnd, toate valorile ncepnd cu valoarea 2 i pn la n-1, ca s determinm dac sunt divizori ai numrului n dat.
3) Dac gsim un singur divizor printre aceste numere, atunci vom acorda valoarea fals variabilei de tip logic de la nceputul algoritmului.
4) La sfrit vom verifica care este valoarea variabilei de tip logic i vom afia un mesaj corespunztor.
03.03.2013 Curs - Programarea calculatoarelor 30
-
2.3. Algoritmi cu structura repetitiv cu test iniial
03.03.2013 Curs - Programarea calculatoarelor 31
Pas 3:
Scrierea algoritmului n pseudocod:
natural n, i logic p citete n p
-
2.3. Algoritmi cu structura repetitiv cu test iniial
PROBLEMA 9
S se calculeze suma i produsul primelor n numere
naturale, n fiind introdus de la tastatur.
Exemplu: Pentru n = 5, se vor afia valorile
s = 1 + 2 + 3 + 4 + 5 = 15
p = 1 * 2 * 3 * 4 * 5 = 120
Pas 1: Stabilim care sunt datele de intrare, adic cele care vor fi
prelucrate cu ajutorul algoritmului, mpreun cu datele de
ieire. n cazul problemei date, avem:
Date de intrare: n numr natural
Date de ieire: s i p 03.03.2013 Curs - Programarea calculatoarelor 32
-
2.3. Algoritmi cu structura repetitiv cu test iniial
Pas 2: Analiza problemei La nceputul problemei, vom iniializa dou
valori, s pentru sum cu 0 i p pentru produs cu 1.
Apoi vom verifica, pe rnd, toate valorile naturale de la 1 la n i le vom nsuma, respectiv nmuli.
Soluiile obinute le vom afia.
03.03.2013 Curs - Programarea calculatoarelor 33
-
2.3. Algoritmi cu structura repetitiv cu test iniial
03.03.2013 Curs - Programarea calculatoarelor 34
Pas 3:
Scrierea algoritmului n pseudocod:
natural n, i, s, p citete n s
-
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 iniial 2.4. Algoritmi cu structura repetitiv cu test final 2.5. Algoritmi cu structura repetitiv cu numr
cunoscut de pai
03.03.2013 Curs - Programarea calculatoarelor 35
-
2.4. Algoritmi cu structura repetitiv cu test final
PROBLEMA 10 S se scrie un program care verific dac un numr n
este perfect sau nu. Un numr perfect este egal cu suma divizorilor lui,
inclusiv 1 (exemplu: 6 = 1 + 2 + 3). Exemplu: Pentru n = 28, se va afia mesajul Numar perfect
(divizorii lui 28 sunt 1,2,4,7,14) Pas 1: Stabilim care sunt datele de intrare, adic cele care vor fi
prelucrate cu ajutorul algoritmului, mpreun cu datele de ieire.
n cazul problemei date, avem: Date de intrare: n numr natural Date de ieire: mesaj corepunztor
03.03.2013 Curs - Programarea calculatoarelor 36
-
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.
03.03.2013 Curs - Programarea calculatoarelor 37
-
2.4. Algoritmi cu structura repetitiv cu test final
03.03.2013 Curs - Programarea calculatoarelor 38
Pas 3:
Scrierea algoritmului n pseudocod:
natural n, i, s citete n i
-
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: Pentru n = 7, se vor afia valorile 1, 1, 2, 3, 5, 8, 13.
03.03.2013 Curs - Programarea calculatoarelor 39
-
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 ieire.
n cazul problemei date, avem: Date de intrare: n numr natural Date de ieire: numerele din irul lui Fibonacci
03.03.2013 Curs - Programarea calculatoarelor 40
-
2.4. Algoritmi cu structura repetitiv cu test final
Pas 2: Analiza problemei La nceputul problemei, vom iniializa 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 urmtoarele valori variabilelor a i b.
03.03.2013 Curs - Programarea calculatoarelor 41
-
2.4. Algoritmi cu structura repetitiv cu test final
03.03.2013 Curs - Programarea calculatoarelor 42
Pas 3:
Scrierea algoritmului n pseudocod:
natural n, i, a, b, c citete n i
-
2.4. Algoritmi cu structura repetitiv cu test final
PROBLEMA 12 Fie un numr natural n de cinci cifre. S se scrie un
algoritm care s calculeze suma cifrelor numrului dat. Exemplu: Pentru n = 2178, se va afia valoarea s = 2+1+7+8=18. Pas 1: Stabilim care sunt datele de intrare, adic cele care
vor fi prelucrate cu ajutorul algoritmului, mpreun cu datele de ieire.
n cazul problemei date, avem: Date de intrare: n numr natural Date de ieire: s = suma cifrelor
03.03.2013 Curs - Programarea calculatoarelor 43
-
2.4. Algoritmi cu structura repetitiv cu test final
Pas 2: Analiza problemei La nceputul problemei, vom iniializa
valoarea sumei cifrelor numrului n dat cu 0. Apoi, ntr-un ciclu repetitiv vom calcula
suma cifrelor numrului, tiind c o cifr a unui numr scris n baza 10 este dat de n%10, iar ctul este dat de n/10.
03.03.2013 Curs - Programarea calculatoarelor 44
-
2.4. Algoritmi cu structura repetitiv cu test final
03.03.2013 Curs - Programarea calculatoarelor 45
Pas 3:
Scrierea algoritmului n pseudocod:
natural n, s citete n s
-
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 iniial 2.4. Algoritmi cu structura repetitiv cu test final 2.5. Algoritmi cu structura repetitiv cu numr
cunoscut de pai
03.03.2013 Curs - Programarea calculatoarelor 46
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
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 numr este egal cu celalalt i invers.
Exemplu: Pentru n = 220, si m = 284 se vor afia 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
03.03.2013 Curs - Programarea calculatoarelor 47
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
Pas 1: Stabilim care sunt datele de intrare, adic cele care vor fi prelucrate cu ajutorul algoritmului, mpreun cu datele de ieire.
n cazul problemei date, avem: Date de intrare: n si m numere naturale Date de ieire: numerele sunt sau nu prietene
03.03.2013 Curs - Programarea calculatoarelor 48
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
Pas 2: Analiza problemei La nceputul problemei, vom iniializa 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 doua valori sunt egale.
03.03.2013 Curs - Programarea calculatoarelor 49
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
03.03.2013 Curs - Programarea calculatoarelor 50
Pas 3:
Scrierea algoritmului n pseudocod:
natural n, m, i, j, suma_n, suma_m citete n suma_n
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
03.03.2013 Curs - Programarea calculatoarelor 51
Pas 3:
Scrierea algoritmului n pseudocod:
suma_m
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
PROBLEMA 14 Se citesc pe rnd, n numere naturale. S se
realizeze, n pseudocod, un algoritm care s determine cel mai mare numr dintre cele n date.
Exemplu: Pentru n = 10, si valorile urmtoare: -2, 12, 56, -123, 34, 7, -45, 90, 23, 6 Valoarea maxim este 90
03.03.2013 Curs - Programarea calculatoarelor 52
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
Pas 1: Stabilim care sunt datele de intrare, adic cele care vor fi prelucrate cu ajutorul algoritmului, mpreun cu datele de ieire.
n cazul problemei date, avem: Date de intrare: n numr natural, n numere
naturale Date de ieire: valoarea maxim
03.03.2013 Curs - Programarea calculatoarelor 53
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
Pas 2: Analiza problemei La nceputul problemei, vom iniializa o variabil, n
care vom reine valoarea maxim, cu o valoare foarte mic.
Apoi, ntr-un ciclu repetitiv avnd n pai vom compara, pe rnd cele n valori citite de la tastatur i vom reine de fiecare valoare mai mare dect cea din variabila max.
La sfrit vom avea valoarea cea mai mare n variabila max.
03.03.2013 Curs - Programarea calculatoarelor 54
-
2.5. Algoritmi cu structura repetitiv cu numr cunoscut de pai
03.03.2013 Curs - Programarea calculatoarelor 55
Pas 3:
Scrierea algoritmului n pseudocod:
natural n, i, max, x citete n max max atunci max
-
ntrebri?
03.03.2013 Curs - Programarea calculatoarelor 56