Sunteți pe pagina 1din 25

Clasa a IX-a tiinele naturii

Ce sunt acetia ?
Algoritmii elementari ofer metode de rezolvare pentru probleme clasice

ing.Lungu Iudit

1.

Algoritmi pentru interschimbare

Varianta 1 cu variabil intermediar real a, b, x; nceput citete a, b; xa; ab; bx; scrie a, b; sfrit

ing.Lungu Iudit

Varianta 2 fr variabil intermediar


real a, b; nceput citete a, b; aa-b; ba+b; ab-a; scrie a, b; sfrit

ing.Lungu Iudit

2. Algoritm pentru determinarea maximului (minimului)


Algoritmul determin valoarea maxim (minim) dintr-un ir de numere introduse de la tastatur. Modalitate de lucru: Se atribuie primului element valoarea max (min) Apoi se compar acesta cu fiecare element din ir

ing.Lungu Iudit

Varianta 1 se tie n
ntreg a, max, n, i;
nceput citete n, a;

max a ;
pentru i 2, n execut; citete a;

dac a max
atunci maxa; sfrit_dac;

sfrit_pentru;
scrie max; sfrit
ing.Lungu Iudit

Varianta 2 pn la introducerea lui 0


ntreg a, max; nceput citete a; max a ; ct timp a0 execut; dac a max atunci maxa; sfrit_dac; sfrit_ct_timp; scrie max; sfrit
ing.Lungu Iudit

3. Algoritmi pentru prelucrarea cifrelor unui numr


a) Algoritm pentru extragerea cifrelor unui numr b) Algoritm pentru compunerea unui numr din cifrele sale c) Algoritm pentru determinarea inversului unui numr

ing.Lungu Iudit

a) Algoritm pentru extragerea cifrelor unui numr


Se determin cifrele unui numr prin extragerea pe rnd a ultimei cifre a numrului prin n mod 10 i eliminarea din numr a cifrei extrase prin n div 10 pn la epuizarea tuturor cifrelor
ntreg n, c; nceput citete n; ct timp n0 execut; cn mod 10; scrie c; nn div 10; sfrit_ct_timp; sfrit
ing.Lungu Iudit

b) Algoritm pentru compunerea unui numr din cifrele sale


Se determin numrul format din cifrele introduse de la tastatur, primul numr devenind cifra cea mai semnificativ. Algoritmul utilizeaz reprezentarea unui numr n baza 10

ing.Lungu Iudit

10

c) Algoritm pentru determinarea inversului unui numr


Algoritmul determin inversul unui numr prin extragerea pe rnd a fiecrei cifre a unui numr (ncepnd cu cifra unitilor) i compunerea unui nou numr n care aceasta devine cifra cea mai semnificativ
ntreg n, inv; nceput citete n; ct timp n0 execut; invinv*10 + n mod 10; nn div 10; sfrit_ct_timp; scrie inv; sfrit
ing.Lungu Iudit

11

Sapt.28

4. Algoritmi pentru determinarea cmmdc


Varianta 1 Algoritmul lui Euclid, care atribuie lui b, restul mpririi lui a la b, iar lui a vechea valoare a lui b (b0)
ntreg a, b, r; nceput citete a, b; ct timp b0 execut; ra mod b; a b; br; sfrit_ct_timp; Scrie cmmdc=, a; Sfrit

ing.Lungu Iudit

12

Varianta 2 algoritmul de scdere repetat

ntreg a, b; nceput citete a, b; ct timp ab execut; dac a>b atunci a a - b; altfel b b - a; sfrsit_dac; sfrit_ct_timp; Scrie cmmdc= , a; sfrit

ing.Lungu Iudit

13

5. ALGORITMI PENTRU TESTAREA UNUI NR. PRIM


Const n generarea tuturor numerelor naturale >=2 i <=sqrt(n) i verificarea dac acestea l divid pe n. Dac cel puin unul dintre ele l divid pe n nr nu este prim.

ing.Lungu Iudit

14

ntreg n,i; logic x; inceput citeste n; xT; i 2; cat timp i<=sqrt(n) and x executa daca n mod i =0 atunci x F; altfel i i+1; sfarsit_daca; sfarsit_cat_timp; daca x atunci scrie numarul este prim; altfel scrie numarul nu este prim; sfarsit_daca; sfarsit
ing.Lungu Iudit

15

Ciurul lui Eratostene

ing.Lungu Iudit

16

6. ALGORITMI PT. PRELUCRAREA DIVIZORILOR UNUI NUMAR


Algoritmul de generarea a divizorilor proprii ai unui numr n const n mprirea numrului la un ir de numere i, i[2,n/2]. Dac numrul n se mparte la numrul generat, atunci acesta este divizor al lui n.

ing.Lungu Iudit

17

Varianta 1
ntreg n,i; nceput citete n; scrie 1,n; pentru i2, n div 2 execut dac n mod i = 0 atunci scrie i; sfrit_dac; sfrit_pentru; sfrit;
Se verific dac n este divizibil cu i, dac da se scrie i. Se repeta aciunea de la i=2 la i=n div 2
ing.Lungu Iudit

18

Varianta 2
ntreg n,i; nceput citete n; scrie 1,n; pentru i2, sqrt(n) execut dac n mod i = 0 atunci scrie i, n div i; sfrit_dac; sfrit_pentru; sfrit;
Se verific dac n este divizibil cu i, dac da se scrie i. Se afieaz i n div i care este divizor al lui n Se repeta aciunea de la i=2 la i=n div 2
ing.Lungu Iudit

19

7. ALGORITMI PT. CONVERSII INTRE SISTEME DE NUMERATIE


Algoritm pentru conversia din baza 10 n baza q Conversia unui numr n din baza 10 n baza q se face prin mprirea ntreag a numrului la q pn cnd restul obinut este mai mic dect q. Resturile obinute reprezint cifrele numrului n scris n baza q, primul rest reprezentnd cifra cea mai puin semnificativ, iar ultimul rest cifra cea mai semnificativ.

ing.Lungu Iudit

20

Algoritm n pseudocod(din baza 10 n baza q)


ntreg nz,nq,p,q; nceput citete nz, q; nq 0; p 1; ct timp nz<>0 execut nq nq + p*(nz mod q); nz nz div q; p p*10; sfrit_ct_timp; scrie nq; sfrit
ing.Lungu Iudit

21

Algoritm pentru conversia din baza 10 n baza q


Conversia unui numr nq, din baza q(2 q9), ntr-un numr nz reprezentat n baza 10, se face folosind descompunerea numrului dup puterile bazei nq=an*qn+an-1*qn-1++a1*q+a0*q0 nz=(an*q+an-1)*q+an-2)*q++a1)*q+a0

ing.Lungu Iudit

22

Algoritm n pseudocod(din baza q n baza 10)


ntreg c,nz,q; nceput citete q; nz 0; citeste c; ct_timp c>=0 and c<q execut nz nz *q+c; citeste c; sfrit_ct_timp; scrie nz; sfrit
ing.Lungu Iudit

23

ing.Lungu Iudit

24

8. ALGORITMI PT. GENERAREA SIRURILOR RECURENTE


13.06

ing.Lungu Iudit

25