Sunteți pe pagina 1din 38

Universitatea “Constatin Brâncuşi” Târgu-Jiu

Facultatea de Inginerie
Catedra de Automatică şi Ştiinţe Aplicate

Programarea
calculatoarelor
Curs 2
Algoritmi
(continuare)

27.04.2011 Programarea calculatoarelor 2


2. ALGORITMI

2.1. Algoritmi elementari


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

27.04.2011 Programarea calculatoarelor 3


2.1. Algoritmi elementari
PROBLEMA 1
Enunţ:
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.

27.04.2011 Programarea calculatoarelor 4


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 cunosc laturile sale:
P = 2*( l + L )
A=l*L
27.04.2011 Programarea calculatoarelor 5
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

27.04.2011 Programarea calculatoarelor 6


2.1. Algoritmi elementari
PROBLEMA 2
Enunţ:
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.
27.04.2011 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 formulele pentru fiecărei
expresii:
A=2+x-y
B=x*A+y
C=A–2*B+x
27.04.2011 Programarea calculatoarelor 8
2.1. Algoritmi elementari

Pas 3: real x, y, A, B, C
citeşte x, y
Scrierea A 2 + x - y
algoritmului în Scrie „Valoarea expresiei A este „, A
pseudocod: B x*A+y
Scrie „Valoarea expresiei B este „, B
C A – 2 * B + x
Scrie „Valoarea expresiei C este „, C
stop

27.04.2011 Programarea calculatoarelor 9


2. ALGORITMI

2.1. Algoritmi elementari


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

27.04.2011 Programarea calculatoarelor 10


2.2. Algoritmi cu structura de
decizie
PROBLEMA 3
Enunţ:
Să se calculeze valoarea funcţiei f(x), ştiind că x este un
număr real introdus de la tastatură:
 6 x  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.
27.04.2011 Programarea calculatoarelor 11
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

27.04.2011 Programarea calculatoarelor 12


2.2. Algoritmi cu structura de
decizie
real x, f
citeşte x

Pas 3: dacă x <= -7 atunci


f  -6 * x + 20
Scrierea altfel
dacă x > -7 şi x < 0 atunci
algoritmului în f  x + 30
pseudocod: altfel
f  sqrt(x) + 2
sfârşit dacă
sfarşit dacă
scrie f
stop
27.04.2011 Programarea calculatoarelor 13
2.2. Algoritmi cu structura de
decizie
PROBLEMA 4
Enunţ:
Se citesc de la tastatura trei valori a, b, c. Sa se afiseze, in
ordine crescatoare, valorile variabilelor, fara modificarea
continutului acestora.
In functie de valorile citite se va afisa una din situatiile:
a,b,c
a,c,b
c,a,b
b,a,c
b,c,a
c,b,a
27.04.2011 Programarea calculatoarelor 14
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,c numere naturale
Date de ieşire: ordinea de afisare in functie de
valorile initiale

27.04.2011 Programarea calculatoarelor 15


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:
Dacă a < b, atunci atunci verificam si
Dacă b < c, atunci afisam a,b,c
Altfel verificam Dacă a < c atunci afisam a,c,b
Altfel afisam c,a,b
Altfel verificam Dacă a < c atunci afisam b,a,c
Altfel verificam Dacă b < c atunci afisam b,c,a
Altfel afisam c,b,a

27.04.2011 Programarea calculatoarelor 16


2.2. Algoritmi cu structura de decizie
natural a,b,c
citeşte a,b,c
dacă a < b atunci
daca b < c atunci
scrie a,b,c
altfel
daca a < c atunci
Pas 3: scrie a,c,b
altfel
Scrierea scrie c,a,b
sfarşit dacă
algoritmului altfel
sfarşit dacă

în daca a < c atunci


scrie b,a,c
pseudocod: altfel
daca b < c atunci
scrie b,c,a
altfel
scrie c,b,a
sfarşit dacă
sfarşit dacă
27.04.2011 sfarşitProgramarea
dacă calculatoarelor 17
2. ALGORITMI

2.1. Algoritmi elementari


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

27.04.2011 Programarea calculatoarelor 18


2.3. Algoritmi cu structura
repetitivă cu test iniţial
PROBLEMA 5
Enunţ:
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.

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.
27.04.2011 Programarea calculatoarelor 19
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 structura repetitivă.

27.04.2011 Programarea calculatoarelor 20


2.3. Algoritmi cu structura
repetitivă cu test iniţial
natural n, i
citeşte n
Pas 3: i 1
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

27.04.2011 Programarea calculatoarelor 21


2.1. Algoritmi cu structura
repetitivă cu test iniţial
PROBLEMA 6
Enunţ:
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’.

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.

27.04.2011 Programarea calculatoarelor 22


2.3. Algoritmi cu structura
repetitivă cu test iniţial
Pas 2: Analiza problemei
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’.
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.
Dacă găsim un singur divizor printre aceste numere,
atunci vom acorda valoarea ‘fals’ variabilei de tip logic de
la începutul algoritmului.
La sfârşit vom verifica care este valoarea variabilei de
tip logic şi vom afişa un mesaj corespunzător.

27.04.2011 Programarea calculatoarelor 23


2.3. Algoritmi cu structura
repetitivă cu test iniţial
natural n, i
logic p
citeşte n
p  adevărat
Pas 3: i 2
cât timp i <= n-1 execută
Scrierea dacă n % i = 0 atunci
p  fals
algoritmului în sfârşit dacă
i i + 1
pseudocod: 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
27.04.2011 Programarea calculatoarelor 24
2.3. Algoritmi cu structura
repetitivă cu test iniţial
PROBLEMA 7
Enunţ:
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

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.
27.04.2011 Programarea calculatoarelor 25
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.

27.04.2011 Programarea calculatoarelor 26


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
27.04.2011 Programarea calculatoarelor 27
2. ALGORITMI

2.1. Algoritmi elementari


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

27.04.2011 Programarea calculatoarelor 28


2.4 Algoritmi cu structura
repetitivă cu test final
PROBLEMA 8
Enunţ:
Să se scrie un program care generează toate numerele
perfecte până la o valoare dată, n.
Un număr perfect este egal cu suma divizorilor lui, inclusiv
1 (exemplu: 6=1+2+3).
Exemplu: Pentru n = 1000, se vor afişa valorile 6, 28, 496

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 perfecte mai mici sau egale decât n.
27.04.2011 Programarea calculatoarelor 29
2.4 Algoritmi cu structura
repetitivă cu test final

Pas 2: Analiza problemei


La începutul problemei, vom verifica
toate valorile de la 1 la n, şi pentru fiecare
valoare i o vom verifica dacă este sau nu
număr perfect.
Numerele perfecte obţinute le vom
afişa.

27.04.2011 Programarea calculatoarelor 30


2.4 Algoritmi cu structura
repetitivă cu test
natural n, i, j, s
final
citeşte n
i 1
repetă
s 0
Pas 3: j 1
repetă

Scrierea dacă i % j = 0 atunci


s s+j

algoritmului în sfârşit dacă


jj+1

pseudocod: până când j > i-1


dacă s = i atunci
scrie i
sfârşit dacă
i i + 1
până când i > n
stop
27.04.2011 Programarea calculatoarelor 31
2.4 Algoritmi cu structura
repetitivă cu test final
PROBLEMA 9
Enunţ:
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.

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.
27.04.2011 Programarea calculatoarelor 32
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.
27.04.2011 Programarea calculatoarelor 33
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
stop
27.04.2011 Programarea calculatoarelor 34
2.4 Algoritmi cu structura
repetitivă cu test final
PROBLEMA 10
Enunţ:
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.

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: suma cifrelor - s
27.04.2011 Programarea calculatoarelor 35
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.

27.04.2011 Programarea calculatoarelor 36


2.4 Algoritmi cu structura
repetitivă cu test final

natural n, s
citeşte n
Pas 3: s 0
repetă
Scrierea s  s + n%10
algoritmului în n  n/10
până când n = 0
pseudocod: scrie n
stop

27.04.2011 Programarea calculatoarelor 37


Sfârşit capitol!

27.04.2011 Programarea calculatoarelor 38

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