Sunteți pe pagina 1din 44

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)
24.10.2012 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
24.10.2012 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.
24.10.2012 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
24.10.2012 Curs - Programarea calculatoarelor 5
2.1. Algoritmi elementari
Pas 3:
Scrierea
algoritmului n
pseudocod:


24.10.2012 Curs - Programarea calculatoarelor 6
real l, L, p, A
citete l, L
p <- 2 * ( l + L )
scrie Perimetrul dreptunghiului este , p
A <- l * L
scrie Aria dreptunghiului este, A
stop
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.
24.10.2012 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:



24.10.2012 Curs - Programarea calculatoarelor 8
) ( ) ( ) ( ) (
2 1 2 1 2 1 2 1
y y y y x x x x d - + - =
2.1. Algoritmi elementari
Pas 3:
Scrierea
algoritmului n
pseudocod:

24.10.2012 Curs - Programarea calculatoarelor 9
real x1, x2, y1, y3, d
citete x1, y1, x2, y2


scrie Distanta dintre cele doua este , d
stop
)
2 1
( )
2 1
( )
2 1
( )
2 1
( y y y y x x x x d - + -
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.
24.10.2012 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 fiecrei expresii:
A = 2 + x - y
B = x * A + y
C = A 2 * B + x
24.10.2012 Curs - Programarea calculatoarelor 11
2.1. Algoritmi elementari
Pas 3:
Scrierea
algoritmului n
pseudocod:

24.10.2012 Curs - Programarea calculatoarelor 12
real x, y, A, B, C
citete x, y
A <- 2 + x - y
scrie Valoarea expresiei A este , A
B <- x * A + y
scrie Valoarea expresiei B este , B
C <- A 2 * B + x
scrie Valoarea expresiei C este , C
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
24.10.2012 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, resp. max.
24.10.2012 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.

24.10.2012 Curs - Programarea calculatoarelor 15
2.2. Algoritmi cu structura de decizie
Pas 3:
Scrierea
algoritmului
n pseudocod:

24.10.2012 Curs - Programarea calculatoarelor 16
intreg a, b, c, min, max
citete a, b, c
dac a < b atunci
min <- a
max <- b
altfel
min <- b
max <- a
sfrit dac
dac c < min atunci
min <- c
sfarit dac
dac c > max atunci
max <- c
sfarit dac
scrie min, max
stop
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.

24.10.2012 Curs - Programarea calculatoarelor 17

> +
e +
e +
=
0 , 2
] 0 , 7 ( , 30
] 7 , ( , 20 6
) (
x daca x
x daca x
x daca x
x f
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, atunci funcia are valoarea: -6x + 20
2) Daca x > -7 si x <= 0, atunci funcia are valoarea:
x+30
3) Daca x > 0, atunci funcia are valoarea: sqrt(x) + 2

24.10.2012 Curs - Programarea calculatoarelor 18
2.2. Algoritmi cu structura de decizie
Pas 3:
Scrierea
algoritmului n
pseudocod:
24.10.2012 Curs - Programarea calculatoarelor 19
real x, f
citete 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
sfrit dac
sfarit dac
scrie f
stop
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:




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
24.10.2012 Curs - Programarea calculatoarelor 20
2 2 2
2 2 2
2 2 2
b a c
c a b
c b a
+ =
+ =
+ =
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.


24.10.2012 Curs - Programarea calculatoarelor 21
2.2. Algoritmi cu structura de decizie
Pas 3:
Scrierea
algoritmului
n
pseudocod:
24.10.2012 Curs - Programarea calculatoarelor 22
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:
24.10.2012 Curs - Programarea calculatoarelor 23
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
24.10.2012 Curs - Programarea calculatoarelor 24
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
24.10.2012 Curs - Programarea calculatoarelor 25
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 repetitiva.
24.10.2012 Curs - Programarea calculatoarelor 26
2.3. Algoritmi cu structura repetitiv cu test
iniial
24.10.2012 Curs - Programarea calculatoarelor 27
Pas 3:
Scrierea
algoritmului n
pseudocod:
natural n, i
citete n
i <- 1
ct timp i <= n execut
dac n % i = 0 atunci
scrie i
sfrit dac
i <- i + 1
sfrit ct timp
stop
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.
24.10.2012 Curs - Programarea calculatoarelor 28
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.
24.10.2012 Curs - Programarea calculatoarelor 29
2.3. Algoritmi cu structura repetitiv cu test
iniial
24.10.2012 Curs - Programarea calculatoarelor 30
Pas 3:
Scrierea
algoritmului n
pseudocod:
natural n, i
logic p
citete n
p <- adevrat
i <- 2
ct timp i <= n-1 execut
dac n % i = 0 atunci
p <- fals
sfrit dac
i <- i + 1
sfrit ct timp
dac p = adevrat atunci
scrie Numarul este prim
altfel
scrie Numarul NU este prim
sfrit dac
stop
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.

24.10.2012 Curs - Programarea calculatoarelor 31
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.
24.10.2012 Curs - Programarea calculatoarelor 32
2.3. Algoritmi cu structura repetitiv cu test
iniial
24.10.2012 Curs - Programarea calculatoarelor 33
Pas 3:
Scrierea
algoritmului n
pseudocod:
natural n, i, s, p
citete n
s <- 0
p <- 1
i <- 1
ct timp i <= n execut
s <- s + i
p <- p * i
i <- i + 1
sfrit ct timp
scrie Suma numerelor este, s
scrie Produsul numerelor este, p
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
24.10.2012 Curs - Programarea calculatoarelor 34
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
24.10.2012 Curs - Programarea calculatoarelor 35
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.
24.10.2012 Curs - Programarea calculatoarelor 36
2.4. Algoritmi cu structura repetitiv cu test
final
24.10.2012 Curs - Programarea calculatoarelor 37
Pas 3:
Scrierea
algoritmului n
pseudocod:
natural n, i, s
citete n
i <- 1
s<- 0
repet
dac n % i = 0 atunci
s <- s + i
sfrit dac
i <- i + 1
pn cnd i > n-1
dac s = n atunci
scrie Numarul este perfect
altfel
scrie Numarul NU este perfect
sfrit dac
stop
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.
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
24.10.2012 Curs - Programarea calculatoarelor 38
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.
24.10.2012 Curs - Programarea calculatoarelor 39
2.4. Algoritmi cu structura repetitiv cu test
final
24.10.2012 Curs - Programarea calculatoarelor 40
Pas 3:
Scrierea
algoritmului n
pseudocod:
natural n, i, a, b, c
citete n
i <- 1
a <- 1
b <- 1
repet
c <- a + b
scrie c
a <- b
b <- c
i <- i + 1
pn cnd i > n
stop
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
24.10.2012 Curs - Programarea calculatoarelor 41
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.
24.10.2012 Curs - Programarea calculatoarelor 42
2.4. Algoritmi cu structura repetitiv cu test
final
24.10.2012 Curs - Programarea calculatoarelor 43
Pas 3:
Scrierea
algoritmului n
pseudocod:
natural n, s
citete n
s <- 0
repet
s <- s + n%10
n <- n/10
pn cnd n = 0
scrie n
stop


Sfrit capitol!
24.10.2012 Curs - Programarea calculatoarelor 44

S-ar putea să vă placă și