Sunteți pe pagina 1din 60

Curs 2*

Algoritmi
(continuare)

* Referință curs Adrian Runceanu

Curs - Programarea calculatoarelor 1


2. ALGORITMI

1.Algoritmi elementari (numai cu operatia de


atribuire)
2. Algoritmi cu structura de decizie
3. Algoritmi cu structura repetitivă cu test iniţial
4. Algoritmi cu structura repetitivă cu test final
5.Algoritmi cu structura repetitivă cu număr
cunoscut de pași

Curs - Programarea calculatoarelor 2


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.
Curs - Programarea calculatoarelor 3
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
Curs - Programarea calculatoarelor 4
2.1. Algoritmi elementari

Pas 3: real l, L, p, A
citeşte l, L
Scrierea
p <- 2 * ( l + L )
algoritmului în scrie ‘Perimetrul dreptunghiului este ‘, p
pseudocod: A <- l * L
scrie ‘Aria dreptunghiului este’, A
stop

Curs - Programarea calculatoarelor 6


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
Curs - Programarea calculatoarelor 7
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:
d = (x1 − x2 ) ∗(x 1 − x2 ) + ( y1 − y2 ) ∗( y1 − y2 )

Curs - Programarea calculatoarelor 7


2.1. Algoritmi elementari

real x1, x2, y1, y2, d


citeşte x1, y1, x2, y2
Pas 3:
d ← (x1 − x2 ) ∗ (x1 − x2 ) + ( y1 − y2 ) ∗ ( y1 − y2 )
Scrierea
algoritmului în scrie ‘Distanta dintre cele doua puncte
este ’, d
pseudocod:
stop

Curs - Programarea calculatoarelor 8


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

Curs - Programarea calculatoarelor 9


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
Curs - Programarea calculatoarelor 10
2.1. Algoritmi elementari

real x, y, A, B, C
Pas 3: citeşte x, y
Scrierea A <- 2 + x - y
algoritmului în B <- x * A + y
pseudocod: C <- A - 2 * B + x
scrie ‘Valoarea expresiei A este ‘, A
scrie ‘Valoarea expresiei B este ‘, B
scrie ‘Valoarea expresiei C este ‘, C
stop

Curs - Programarea calculatoarelor 12


2. ALGORITMI

1.Algoritmi elementari numai cu operatia de


atribuire)
2. Algoritmi cu structura de decizie
3. Algoritmi cu structura repetitivă cu test iniţial
4. Algoritmi cu structura repetitivă cu test final
5.Algoritmi cu structura repetitivă cu număr
cunoscut de pași

Curs - Programarea calculatoarelor 12


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
Curs - Programarea calculatoarelor 13
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.
Curs - Programarea calculatoarelor 14
2.2. Algoritmi cu structura de decizie
intreg a, b, c, min, max
citeşte a, b, c
dacă a < b atunci
min <- a
Pas 3: max <- b
Scrierea altfel
min <- b
algoritmului max <- a
în pseudocod: sfârşit dacă
dacă c < min atunci
min <- c
sfarşit dacă
dacă c > max atunci
max <- c
sfarşit dacă
scrieCumrs-iPnro,gmramaarxeacalculatoarelor
16
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ă:

− 6x + 20, daca x ∈(−∞,−7]


f (x) =  x + 30, daca x ∈(−7,0]
 x + 2, daca x > 0

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

Curs - Programarea calculatoarelor 17


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
Curs - Programarea calculatoarelor 18
2.2. Algoritmi cu structura de decizie
real x, f
citeşte x
dacă x <= -7 atunci
Pas 3: f <- -6 * x + 20
altfel
Scrierea dacă x > -7 şi x <= 0 atunci
algoritmului în f <- x + 30
altfel
pseudocod: f <- sqrt(x) + 2
sfârşit dacă
sfarşit dacă
scrie f
stop

Curs - Programarea calculatoarelor 19


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: a2 2
=b +c
2

b2 = a 2 + c 2
c2 = a 2 + b2
Curs - Programarea calculatoarelor 19
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

Curs - Programarea calculatoarelor 20


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.
11.10.2015 Curs - Programarea calculatoarelor 21
2.2. Algoritmi cu structura de decizie
natural a,b,c
citeşte a,b,c
dacă 𝑎𝑎2 = 𝑏𝑏2 + 𝑐𝑐 2 atunci scrie
Pas 3: ‘Numere pitagorice’
altfel
Scrierea dacă 𝑏𝑏2 = 𝑎𝑎2 + 𝑐𝑐 2 atunci
algoritmului scrie ‘Numere pitagorice’
altfel
în dacă 𝑐𝑐2 = 𝑎𝑎2 + 𝑏𝑏2 atunci
pseudocod: scrie ‘Numere pitagorice’
altfel
scrie ‘NU SUNT nr. pitagorice’
sfârşit dacă
sfarşit dacă
11.10.2015
sfarşit dacă
Curs - Programarea calculatoarelor 23
stop
2.2. Algoritmi cu structura de decizie

natural a,b,c
Varianta II-a citeşte a,b,c
Pas 3: dacă 𝑎𝑎2 = 𝑏𝑏2 + 𝑐𝑐 2 sau 𝑏𝑏2 = 𝑎𝑎2 + 𝑐𝑐 2 sau
𝑐𝑐 2 = 𝑎𝑎2 + 𝑏𝑏2 atunci
Scrierea scrie ‘Numere pitagorice’
algoritmului altfel
scrie ‘NU SUNT nr. pitagorice’
în sfarşit dacă
pseudocod: stop

Curs - Programarea calculatoarelor 23


2. ALGORITMI

1.Algoritmi elementari (numai cu operatia de


atribuire)
2. Algoritmi cu structura de decizie
3. Algoritmi cu structura repetitivă cu test iniţial
4. Algoritmi cu structura repetitivă cu test final
5.Algoritmi cu structura repetitivă cu număr
cunoscut de pași

Curs - Programarea calculatoarelor 24


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:

Pentru n = 12, mulţimea divizorilor este formată


din valorile 1, 2, 3, 4, 6, 12.

Curs - Programarea calculatoarelor 25


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

Curs - Programarea calculatoarelor 26


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ă.
Curs - Programarea calculatoarelor 27
2.3. Algoritmi cu structura repetitivă cu test
iniţial

natural n, i
citeşte n
i <- 1
Pas 3: cât timp i <= n execută
Scrierea dacă n % i = 0 atunci
scrie i
algoritmului în sfârşit dacă
pseudocod: i <- i + 1
sfârşit cât timp
stop

Curs - Programarea calculatoarelor 29


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:
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’.
Curs - Programarea calculatoarelor 29
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

Curs - Programarea calculatoarelor 30


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.
Curs - Programarea calculatoarelor 31
2.3. Algoritmi cu structura repetitivă cu test
iniţial
natural n, i
logic p
Pas 3: citeşte n
p <- adevărat

Scrierea
i <- 2
cât timp i <= n-1 execută
dacă n % i = 0 atunci
algoritmului în p <- fals
sfârşit dacă
pseudocod: 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
Curs - Programarea calculatoarelor 33
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:

Pentru n = 5, se vor afişa valorile


s = 1 + 2 + 3 + 4 + 5 = 15
p = 1 * 2 * 3 * 4 * 5 = 120

Curs - Programarea calculatoarelor 33


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

Curs - Programarea calculatoarelor 34


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.
Curs - Programarea calculatoarelor 35
2.3. Algoritmi cu structura repetitivă cu test
iniţial
natural n, i, s, p
citeşte n
s <- 0
p <- 1
Pas 3: i <- 1
cât timp i <= n execută
Scrierea s <- s + i
algoritmului în p <- p * i
i <- i + 1
pseudocod: sfârşit cât timp
scrie ‘Suma numerelor este’, s
scrie ‘Produsul numerelor este’, p
stop
Curs - Programarea calculatoarelor 37
2. ALGORITMI

1.Algoritmi elementari (numai cu operatia de


atribuire)
2. Algoritmi cu structura de decizie
3. Algoritmi cu structura repetitivă cu test iniţial
4. Algoritmi cu structura repetitivă cu test final
5.Algoritmi cu structura repetitivă cu număr
cunoscut de pași

Curs - Programarea calculatoarelor 37


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:

Pentru n = 28, se va afişa mesajul


Numar perfect (divizorii lui 28 sunt
1,2,4,7,14)
Curs - Programarea calculatoarelor 38
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

Curs - Programarea calculatoarelor 39


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’.
Curs - Programarea calculatoarelor 40
2.4. Algoritmi cu structura repetitivă cu test
final
natural n, i, s
citeşte n
i <- 1
Pas 3: s<- 0
repetă
Scrierea dacă n % i = 0 atunci
s <- s + i
algoritmului sfârşit dacă
în i <- i + 1
până când i > n-1
pseudocod: dacă s = n atunci
scrie ‘Numarul este perfect’
altfel
scrie ‘Numarul NU este perfect’
sfârşit dacă
stop
Curs - Programarea calculatoarelor 42
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 afişa valorile


1, 1, 2, 3, 5, 8, 13.

Curs - Programarea calculatoarelor 42


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

Curs - Programarea calculatoarelor 43


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.

Curs - Programarea calculatoarelor 44


2.4. Algoritmi cu structura repetitivă cu test
final
natural n, i, a, b, c
citeşte n
i <- 1
Pas 3: a <- 1
b <- 1
Scrierea repetă
algoritmului în c <- a + b
scrie c
pseudocod: a <- b
b <- c
i <- i + 1
până când i > n-2
stop
Curs - Programarea calculatoarelor 46
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:

Pentru n = 2178, se va afişa valoarea


s = 2+1+7+8=18.

Curs - Programarea calculatoarelor 46


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
Curs - Programarea calculatoarelor 47
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.

Curs - Programarea calculatoarelor 48


2.4. Algoritmi cu structura repetitivă cu test
final

Ultima
natural n, s
citeşte n
cifra a lui n
Pas 3: s <- 0
repetă
Scrierea s <- s + n%10
algoritmului în n <- n/10
pseudocod: până când n = 0
scrie s Numarul
stop
fara ultima
cifra
Curs - Programarea calculatoarelor 50
2. ALGORITMI

1.Algoritmi elementari (numai cu operatia de


atribuire)
2. Algoritmi cu structura de decizie
3. Algoritmi cu structura repetitivă cu test iniţial
4. Algoritmi cu structura repetitivă cu test final
5.Algoritmi cu structura repetitivă cu număr
cunoscut de pași

11.10.2015 Curs - Programarea calculatoarelor 50


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.
Pentru n = 220, si m = 284 se vor afişa valorile
Exemplu: 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
Curs - Programarea calculatoarelor 51
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

Curs - Programarea calculatoarelor 52


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.
Curs - Programarea calculatoarelor 53
2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași

Pas 3: natural n, m, i, j, suma_n, suma_m


citeşte n
Scrierea suma_n <- 0
algoritmului pentru i=1,n/2 execută
daca n%i=0 atunci
în suma_n <- suma_n + i
pseudocod: sfârșit daca
sfârșit pentru

Curs - Programarea calculatoarelor 54


2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași
suma_m <- 0
pentru j=1,m/2 execută
Pas 3: dacă m%j=0 atunci
suma_m <- suma_m + j
Scrierea sfârșit dacă
algoritmului sfârșit pentru
dacă suma_n = m AND suma_m=n
în atunci
pseudocod: scrie “Numere prietene”
altfel
scrie “Numere neprietene”
sfârșit dacă
stop
Curs - Programarea calculatoarelor 55
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:
Pentru n = 10, si valorile următoare:
-2, 12, 56, -123, 34, 7, -45, 90, 23, 6
Valoarea maximă este 90

Curs - Programarea calculatoarelor 56


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ă

Curs - Programarea calculatoarelor 57


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
mică.
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.

Curs - Programarea calculatoarelor 58


2.5. Algoritmi cu structura repetitivă cu număr
cunoscut de pași

Pas 3: natural n, i, max, x


citeşte n
Scrierea max <- -10000
algoritmului pentru i=1,n execută
citește x
în daca x>max atunci
pseudocod: max <- x
sfârșit daca
sfârșit pentru
scrie max
stop
Curs - Programarea calculatoarelor 60
Întrebări?

Curs - Programarea calculatoarelor 61

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