+ All Categories
Home > Documents > curs2-PC

curs2-PC

Date post: 17-Jan-2016
Category:
Upload: iancu-adina-floricica
View: 213 times
Download: 0 times
Share this document with a friend
Description:
Programare curs1
61
Programarea calculatoarelor Universitatea Constantin Brâncuşi” din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Lect.dr . Adrian Runceanu
Transcript
Page 1: curs2-PC

Programareacalculatoarelor

Universitatea “Constantin Brâncuşi” din Târgu-JiuFacultatea de Inginerie

Departamentul de Automatică, Energie şi Mediu

Lect.dr. Adrian Runceanu

Page 2: curs2-PC

[email protected]

Curs 2

Algoritmi(continuare)

24.10.2014 Curs - Programarea calculatoarelor 2

Page 3: curs2-PC

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari (numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

24.10.2014 Curs - Programarea calculatoarelor 3

Page 4: curs2-PC

[email protected]

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 carevor fi prelucrate cu ajutorul algoritmului, împreună cudatele 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.24.10.2014 Curs - Programarea calculatoarelor 4

Page 5: curs2-PC

[email protected]

2.1. Algoritmi elementari

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fi prelucrate încadrul algoritmului.

În cadrul problemei pe care o avem de rezolvat,cunoaştem formulele pentru calculul perimetrului,respectiv ariei unui dreptunghi dacă se stiu laturilesale:

Perimetru = 2*( latime + Lungime )Aria = latime * Lungime

24.10.2014 Curs - Programarea calculatoarelor 5

Page 6: curs2-PC

2.1. Algoritmi elementari

Pas 3:Scriereaalgoritmului în pseudocod:

24.10.2014 Curs - Programarea calculatoarelor 6

real l, L, p, A

citeşte l, L

p <- 2 * ( l + L )

scrie ‘Perimetrul dreptunghiului este ‘, p

A <- l * L

scrie ‘Aria dreptunghiului este’, A

stop

Page 7: curs2-PC

[email protected]

2.1. Algoritmi elementariPROBLEMA 2

Sa se calculeze si sa se afiseze valoarea distanteiintre 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 puncte24.10.2014 Curs - Programarea calculatoarelor 7

Page 8: curs2-PC

[email protected]

2.1. Algoritmi elementari

Pas 2: Analiza problemeiStabilim 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 aflareadistantei dintre doua puncte in plan:

24.10.2014 Curs - Programarea calculatoarelor 8

)()()()( 21212121 yyyyxxxxd

Page 9: curs2-PC

2.1. Algoritmi elementari

Pas 3:Scriereaalgoritmului în pseudocod:

24.10.2014 Curs - Programarea calculatoarelor 9

real x1, x2, y1, y2, d

citeşte x1, y1, x2, y2

scrie ‘Distanta dintre cele doua puncteeste ’, d

stop

)21

()21

()21

()21

( yyyyxxxxd

Page 10: curs2-PC

[email protected]

2.1. Algoritmi elementari

PROBLEMA 3 Se dau două numere reale x şi y. Să se calculeze

următoarele expresii:A = 2 + x - yB = x * A + yC = A - 2 * B + x

Pas 1: Stabilim care sunt datele de intrare, şi ce tip de datereprezintă, împreună cu datele de ieşire.

În cazul problemei date, avem:Date de intrare: x şi y numere realeDate de ieşire: A, B şi C numere reale

24.10.2014 Curs - Programarea calculatoarelor 10

Page 11: curs2-PC

[email protected]

2.1. Algoritmi elementari

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fiprelucrate î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 + yC = A - 2 * B + x

24.10.2014 Curs - Programarea calculatoarelor 11

Page 12: curs2-PC

2.1. Algoritmi elementari

Pas 3:Scriereaalgoritmului în pseudocod:

24.10.2014 Curs - Programarea calculatoarelor 12

real x, y, A, B, C

citeşte x, y

A <- 2 + x - y

B <- x * A + y

C <- A - 2 * B + x

scrie ‘Valoarea expresiei A este ‘, A

scrie ‘Valoarea expresiei B este ‘, B

scrie ‘Valoarea expresiei C este ‘, C

stop

Page 13: curs2-PC

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

24.10.2014 Curs - Programarea calculatoarelor 13

Page 14: curs2-PC

[email protected]

2.2. Algoritmi cu structura de decizie

PROBLEMA 4 Se dau trei numere întregi a, b si c. Să se scrie unalgoritm care să se determine maximul și minimulacestor valori.

Pas 1: Stabilim care sunt datele de intrare, adică cele carevor fi prelucrate cu ajutorul algoritmului, împreună cudatele de ieşire.

În cazul problemei date, avem:Date de intrare: a, b și c numere întregiDate de ieșire: min, respectiv max24.10.2014 Curs - Programarea calculatoarelor 14

Page 15: curs2-PC

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fi prelucrate încadrul algoritmului.

i) Comparăm primele două numere (a și b). În funcție decare este mai mic sau mai mare am determinat minimulși maximul celor două valori.

ii) Comparăm valorile de minim, respectiv de maxim cu celde-al treilea număr si astfel vom determina cea maimică, respectiv cea mai mare valoare dintre cele treidate.

24.10.2014 Curs - Programarea calculatoarelor 15

Page 16: curs2-PC

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 3:Scriereaalgoritmuluiîn pseudocod:

24.10.2014 Curs - Programarea calculatoarelor 16

intreg a, b, c, min, max

citeşte a, b, c

dacă a < b atunci

min <- a

max <- b

altfel

min <- b

max <- a

sfârşit dacă

dacă c < min atunci

min <- c

sfarşit dacă

dacă c > max atunci

max <- c

sfarşit dacă

scrie min, max

stop

Page 17: curs2-PC

2.2. Algoritmi cu structura de decizie

PROBLEMA 5Să se calculeze valoarea funcţiei f(x), ştiind că x este un număr real

introdus de la tastatură:

Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucratecu ajutorul algoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:Date de intrare: x număr realDate de iesire: f număr real, reprezentând valoarea funcţiei date

24.10.2014 Curs - Programarea calculatoarelor 17

0,2

]0,7(,30

]7,(,206

)(

xdacax

xdacax

xdacax

xf

Page 18: curs2-PC

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fiprelucrate în cadrul algoritmului. Căutăm cazurileparticulare.

Î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 + 202) Daca x > -7 si x <= 0, atunci funcţia are valoarea:

x+303) Daca x > 0, atunci funcţia are valoarea: sqrt(x) + 2

24.10.2014 Curs - Programarea calculatoarelor 18

Page 19: curs2-PC

2.2. Algoritmi cu structura de decizie

Pas 3:Scriereaalgoritmului în pseudocod:

24.10.2014 Curs - Programarea calculatoarelor 19

real x, f

citeşte 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

sfârşit dacă

sfarşit dacă

scrie f

stop

Page 20: curs2-PC

[email protected]

2.2. Algoritmi cu structura de decizie

PROBLEMA 6Să 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:

24.10.2014 Curs - Programarea calculatoarelor 20

222

222

222

bac

cab

cba

Page 21: curs2-PC

[email protected]

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

24.10.2014 Curs - Programarea calculatoarelor 21

Page 22: curs2-PC

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le îndeplinească

datele de intrare pentru a fi prelucrate în cadrulalgoritmului.

În cadrul problemei pe care o avem de rezolvat,verificăm condiţiile care trebuie îndeplinite de cele treivalori:

1) Dacă 𝒂𝟐 = 𝒃𝟐 + 𝒄𝟐, atunci sunt numere pitagorice.Sau2) Daca 𝒃𝟐 = 𝒂𝟐 + 𝒄𝟐, atunci sunt numere pitagorice.Sau3) Daca 𝒄𝟐 = 𝒂𝟐 + 𝒃𝟐, atunci sunt numere pitagorice.24.10.2014 Curs - Programarea calculatoarelor 22

Page 23: curs2-PC

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 3:Scriereaalgoritmuluiîn pseudocod:

24.10.2014 Curs - Programarea calculatoarelor 23

natural a,b,cciteşte a,b,cdacă 𝑎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’sfârşit dacă

sfarşit dacăsfarşit dacăstop

Page 24: curs2-PC

[email protected]

2.2. Algoritmi cu structura de decizie

Varianta II-aPas 3:

Scriereaalgoritmuluiîn pseudocod:

24.10.2014 Curs - Programarea calculatoarelor 24

natural a,b,cciteşte a,b,cdacă 𝑎2 = 𝑏2 + 𝑐2 sau 𝑏2 = 𝑎2 + 𝑐2 sau 𝑐2 = 𝑎2 + 𝑏2 atunci

scrie ‘Numere pitagorice’altfel

scrie ‘NU SUNT nr. pitagorice’sfarşit dacăstop

Page 25: curs2-PC

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari (numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

24.10.2014 Curs - Programarea calculatoarelor 25

Page 26: curs2-PC

[email protected]

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:

24.10.2014 Curs - Programarea calculatoarelor 26

Pentru n = 12, mulţimea divizorilor este formată din valorile 1, 2, 3, 4, 6, 12.

Page 27: curs2-PC

[email protected]

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

24.10.2014 Curs - Programarea calculatoarelor 27

Page 28: curs2-PC

[email protected]

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

24.10.2014 Curs - Programarea calculatoarelor 28

Page 29: curs2-PC

2.3. Algoritmi cu structura repetitivă cu test iniţial

24.10.2014 Curs - Programarea calculatoarelor 29

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, iciteşte ni <- 1cât timp i <= n execută

dacă n % i = 0 atunciscrie i

sfârşit dacăi <- i + 1

sfârşit cât timpstop

Page 30: curs2-PC

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

PROBLEMA 8Să se citească un număr natural n. Să se scrie unalgoritm care verifică dacă numărul dat este sau nunumăr prim.Un număr n este prim dacă are ca divizori doarvalorile 1 şi n.

Exemplu:

24.10.2014 Curs - Programarea calculatoarelor 30

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’.

Page 31: curs2-PC

[email protected]

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

24.10.2014 Curs - Programarea calculatoarelor 31

Page 32: curs2-PC

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

Pas 2: Analiza problemei:1) Vom presupune, la începutul problemei, că numărul n dateste prim, şi vom specifica acest lucru cu ajutorul uneivariabile de tip logic, căreia îi vom da valoarea ‘adevărat’.2) Apoi vom evalua, pe rând, toate valorile începând cuvaloarea 2 şi până la n-1, ca să determinăm dacă sunt divizoriai numărului n dat.3) Dacă găsim un singur divizor printre aceste numere, atuncivom acorda valoarea ‘fals’ variabilei de tip logic de laînceputul algoritmului.4) La sfârşit vom verifica care este valoarea variabilei de tiplogic şi vom afişa un mesaj corespunzător.

24.10.2014 Curs - Programarea calculatoarelor 32

Page 33: curs2-PC

2.3. Algoritmi cu structura repetitivă cu test iniţial

24.10.2014 Curs - Programarea calculatoarelor 33

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, ilogic pciteşte np <- adevărati <- 2cât timp i <= n-1 execută

dacă n % i = 0 atuncip <- fals

sfârşit dacăi <- i + 1

sfârşit cât timpdacă p = adevărat atunci

scrie ‘Numarul este prim’altfel

scrie ‘Numarul NU este prim’sfârşit dacăstop

Page 34: curs2-PC

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

PROBLEMA 9Să se calculeze suma şi produsul primelor nnumere naturale, n fiind introdus de latastatură.

Exemplu:

24.10.2014 Curs - Programarea calculatoarelor 34

Pentru n = 5, se vor afişa valoriles = 1 + 2 + 3 + 4 + 5 = 15p = 1 * 2 * 3 * 4 * 5 = 120

Page 35: curs2-PC

[email protected]

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 ajutorulalgoritmului, împreună cu datele de ieşire. Încazul problemei date, avem:

Date de intrare: n număr natural

Date de ieşire: s şi p

24.10.2014 Curs - Programarea calculatoarelor 35

Page 36: curs2-PC

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

Pas 2: Analiza problemeiLa începutul problemei, vom iniţializa două

valori, s pentru sumă cu 0 şi p pentru produs cu1.

Apoi vom verifica, pe rând, toate valorilenaturale de la 1 la n şi le vom însuma, respectivînmulţi.

Soluţiile obţinute le vom afişa.

24.10.2014 Curs - Programarea calculatoarelor 36

Page 37: curs2-PC

2.3. Algoritmi cu structura repetitivă cu test iniţial

24.10.2014 Curs - Programarea calculatoarelor 37

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, i, s, pciteşte ns <- 0p <- 1i <- 1cât timp i <= n execută

s <- s + ip <- p * ii <- i + 1

sfârşit cât timpscrie ‘Suma numerelor este’, sscrie ‘Produsul numerelor este’, pstop

Page 38: curs2-PC

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari (numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

24.10.2014 Curs - Programarea calculatoarelor 38

Page 39: curs2-PC

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

PROBLEMA 10

Să se scrie un program care verifică dacă unnumă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:

24.10.2014 Curs - Programarea calculatoarelor 39

Pentru n = 28, se va afişa mesajulNumar perfect (divizorii lui 28 sunt

1,2,4,7,14)

Page 40: curs2-PC

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 1: Stabilim care sunt datele de intrare, adicăcele care vor fi prelucrate cu ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n număr naturalDate de ieşire: mesaj corespunzător

24.10.2014 Curs - Programarea calculatoarelor 40

Page 41: curs2-PC

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 2: Analiza problemei1) 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. Dacaeste divizor atunci il insumam la valoarea s.

3) Verificam daca suma obtinuta este egala cunumarul n. Daca da atunci scriem mesajul‘Numarul este perfect’.

24.10.2014 Curs - Programarea calculatoarelor 41

Page 42: curs2-PC

2.4. Algoritmi cu structura repetitivă cu test final

24.10.2014 Curs - Programarea calculatoarelor 42

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

natural n, i, sciteşte ni <- 1s<- 0repetă

dacă n % i = 0 atuncis <- s + i

sfârşit dacăi <- i + 1

până când i > n-1dacă s = n atunci

scrie ‘Numarul este perfect’altfel

scrie ‘Numarul NU este perfect’sfârşit dacăstop

Page 43: curs2-PC

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

PROBLEMA 11Fie ş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:

24.10.2014 Curs - Programarea calculatoarelor 43

Pentru n = 7, se vor afişa valorile 1, 1, 2, 3, 5, 8, 13.

Page 44: curs2-PC

[email protected]

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 naturalDate de ieşire: numerele din şirul lui Fibonacci

24.10.2014 Curs - Programarea calculatoarelor 44

Page 45: curs2-PC

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 2: Analiza problemeiLa î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 cuajutorul unei a treia valori (variabila c) suma lorşi vom da următoarele valori variabilelor a şi b.

24.10.2014 Curs - Programarea calculatoarelor 45

Page 46: curs2-PC

2.4. Algoritmi cu structura repetitivă cu test final

24.10.2014 Curs - Programarea calculatoarelor 46

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, i, a, b, cciteşte ni <- 1a <- 1b <- 1repetă

c <- a + bscrie ca <- bb <- ci <- i + 1

până când i > n-2stop

Page 47: curs2-PC

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

PROBLEMA 12Fie un număr natural n de cinci cifre. Să se

scrie un algoritm care să calculeze suma cifrelornumărului dat.

Exemplu:

24.10.2014 Curs - Programarea calculatoarelor 47

Pentru n = 2178, se va afişa valoareas = 2+1+7+8=18.

Page 48: curs2-PC

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 1: Stabilim care sunt datele de intrare, adicăcele care vor fi prelucrate cu ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n număr naturalDate de ieşire: s = suma cifrelor

24.10.2014 Curs - Programarea calculatoarelor 48

Page 49: curs2-PC

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 2: Analiza problemeiLa î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 unuinumăr scris în baza 10 este dată de n%10, iarcâtul este dat de n/10.

24.10.2014 Curs - Programarea calculatoarelor 49

Page 50: curs2-PC

2.4. Algoritmi cu structura repetitivă cu test final

24.10.2014 Curs - Programarea calculatoarelor 50

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, sciteşte ns <- 0repetă

s <- s + n%10n <- n/10

până când n = 0scrie sstop

Numarulfara ultima

cifra

Ultimacifra a lui n

Page 51: curs2-PC

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari (numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

24.10.2014 Curs - Programarea calculatoarelor 51

Page 52: curs2-PC

[email protected]

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

PROBLEMA 13Se citesc două numere întregi a şi b. Să se realizeze

in pseudocod un algoritm care să verifice dacă cele douanumere sunt prietene.

Spunem ca două numere sunt prietene dacă sumadivizorilor proprii ai unui număr este egală cu celalalt şiinvers.

Exemplu:

24.10.2014 Curs - Programarea calculatoarelor 52

Pentru n = 220, si m = 284 se vor afişa valorileDivizorii lui 220, sunt 1, 2, 4, 5, 10, 11, 20, 22,44, 55 și 110Divizorii lui 284, sunt 1, 2, 4, 71 și 142

Page 53: curs2-PC

[email protected]

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 ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n si m numere naturaleDate de ieşire: numerele sunt sau nu prietene

24.10.2014 Curs - Programarea calculatoarelor 53

Page 54: curs2-PC

[email protected]

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

Pas 2: Analiza problemeiLa începutul problemei, vom iniţializa valoarea unei

variabile pentru suma divizorilor lui n cu 0, iar apoivaloarea unei variabile pentru suma divizorilor lui m cu 0.

Apoi, într-un ciclu repetitiv avand n/2 pasi vom calculasuma divizorilor lui n.

Apoi, într-un ciclu repetitiv avand m/2 pasi vom calculasuma divizorilor lui m.

La sfarsit vom verifica daca cele suma divizorilorprimului numar este egala cu cel de-al doilea numar, iarsuma divizorilor celui de-al doilea numar este egala cuprimul numar.

24.10.2014 Curs - Programarea calculatoarelor 54

Page 55: curs2-PC

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

24.10.2014 Curs - Programarea calculatoarelor 55

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

natural n, m, i, j, suma_n, suma_mciteşte nsuma_n <- 0pentru i=1,n/2 execută

daca n%i=0 atuncisuma_n <- suma_n + i

sfârșit dacasfârșit pentru

Page 56: curs2-PC

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

24.10.2014 Curs - Programarea calculatoarelor 56

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

suma_m <- 0pentru j=1,m/2 execută

dacă m%j=0 atuncisuma_m <- suma_m + j

sfârșit dacăsfârșit pentrudacă suma_n = m AND suma_m=natunci

scrie “Numere prietene”altfel

scrie “Numere neprietene”sfârșit dacăstop

Page 57: curs2-PC

[email protected]

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

PROBLEMA 14Se citesc pe rând, n numere naturale. Să se

realizeze, în pseudocod, un algoritm care sădetermine cel mai mare număr dintre cele ndate.

Exemplu:

24.10.2014 Curs - Programarea calculatoarelor 57

Pentru n = 10, si valorile următoare:-2, 12, 56, -123, 34, 7, -45, 90, 23, 6 Valoarea maximă este 90

Page 58: curs2-PC

[email protected]

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 ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n număr natural, n numerenaturale

Date de ieşire: valoarea maximă

24.10.2014 Curs - Programarea calculatoarelor 58

Page 59: curs2-PC

[email protected]

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

Pas 2: Analiza problemeiLa începutul problemei, vom iniţializa o variabilă, în

care vom reține valoarea maximă, cu o valoare foartemică.

Apoi, într-un ciclu repetitiv având n pași vomcompara, pe rând cele n valori citite de la tastatură și vomreține de fiecare valoare mai mare decât cea din variabilamax.

La sfârșit vom avea valoarea cea mai mare în variabilamax.

24.10.2014 Curs - Programarea calculatoarelor 59

Page 60: curs2-PC

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

24.10.2014 Curs - Programarea calculatoarelor 60

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

natural n, i, max, xciteşte nmax <- -10000pentru i=1,n execută

citește xdaca x>max atunci

max <- xsfârșit daca

sfârșit pentruscrie maxstop

Page 61: curs2-PC

[email protected]

Întrebări?

24.10.2014 Curs - Programarea calculatoarelor 61


Recommended