65
Programarea calculatoarelor Universitatea Constantin Brâncuşi” din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Lect.dr . Adrian Runceanu

Programarea · 2007. 9. 5. · Programarea calculatoarelor Universitatea “Constantin Brâncuşi” din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

  • Programareacalculatoarelor

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

    Departamentul de Automatică, Energie şi Mediu

    Lect.dr. Adrian Runceanu

  • [email protected]@www.adrian.runceanu.ro

    Curs 2

    Algoritmi(continuare)

    23.03.2014 Curs - Programarea calculatoarelor 2

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 3

  • [email protected]@www.adrian.runceanu.ro

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 5

  • [email protected]

    2.1. Algoritmi elementari

    Pas 3:Scriereaalgoritmului în pseudocod:

    23.03.2014 Curs - Programarea calculatoarelor 6

    real l, L, p, A

    citeşte l, L

    p

  • [email protected]@www.adrian.runceanu.ro

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

  • [email protected]@www.adrian.runceanu.ro

    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:

    23.03.2014 Curs - Programarea calculatoarelor 8

    )()()()( 21212121 yyyyxxxxd

  • [email protected]

    2.1. Algoritmi elementari

    Pas 3:Scriereaalgoritmului în pseudocod:

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 10

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 11

  • [email protected]

    2.1. Algoritmi elementari

    Pas 3:Scriereaalgoritmului în pseudocod:

    23.03.2014 Curs - Programarea calculatoarelor 12

    real x, y, A, B, C

    citeşte x, y

    A

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 13

  • [email protected]@www.adrian.runceanu.ro

    2.2. Algoritmi cu structura de decizie

    PROBLEMA 4 Se dau două numere întregi a, şi b. 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, și b numere întregiDate de ieșire: min, respectiv max23.03.2014 Curs - Programarea calculatoarelor 14

  • [email protected]@www.adrian.runceanu.ro

    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 cele două numere (a și b). În funcție de careeste mai mic am determinat minimul celor două valori.

    ii) Comparăm cele două numere (a și b). În funcție de careeste mai mare am determinat maximul celor douăvalori.

    23.03.2014 Curs - Programarea calculatoarelor 15

  • [email protected]@www.adrian.runceanu.ro

    2.2. Algoritmi cu structura de decizie

    Pas 3:Scriereaalgoritmuluiîn pseudocod:

    23.03.2014 Curs - Programarea calculatoarelor 16

    intreg a, b, min, max

    citeşte a, b

    dacă a < b atunci

    min

  • [email protected]

    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

    23.03.2014 Curs - Programarea calculatoarelor 17

    0,2

    ]0,7(,30

    ]7,(,206

    )(

    xdacax

    xdacax

    xdacax

    xf

  • [email protected]@www.adrian.runceanu.ro

    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 si x 0, atunci funcţia are valoarea: sqrt(x) + 2

    23.03.2014 Curs - Programarea calculatoarelor 18

  • [email protected]

    2.2. Algoritmi cu structura de decizie

    Pas 3:Scriereaalgoritmului în pseudocod:

    23.03.2014 Curs - Programarea calculatoarelor 19

    real x, f

    citeşte x

    dacă x

  • [email protected]@www.adrian.runceanu.ro

    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:

    23.03.2014 Curs - Programarea calculatoarelor 20

    222

    222

    222

    bac

    cab

    cba

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 21

  • [email protected]@www.adrian.runceanu.ro

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

  • [email protected]@www.adrian.runceanu.ro

    2.2. Algoritmi cu structura de decizie

    Pas 3:Scriereaalgoritmuluiîn pseudocod:

    23.03.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 atunciscrie ‘Numere pitagorice’

    altfeldacă 𝑐2 = 𝑎2 + 𝑏2 atunci

    scrie ‘Numere pitagorice’altfel

    scrie ‘NU SUNT nr. pitagorice’sfârşit dacă

    sfarşit dacăsfarşit dacăstop

  • [email protected]@www.adrian.runceanu.ro

    2.2. Algoritmi cu structura de decizie

    Varianta II-aPas 3:

    Scriereaalgoritmuluiîn pseudocod:

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 25

  • [email protected]@www.adrian.runceanu.ro

    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:

    23.03.2014 Curs - Programarea calculatoarelor 26

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 27

  • [email protected]@www.adrian.runceanu.ro

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

    23.03.2014 Curs - Programarea calculatoarelor 28

  • [email protected]

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

    23.03.2014 Curs - Programarea calculatoarelor 29

    Pas 3:

    Scriereaalgoritmului în pseudocod:

    natural n, iciteşte ni

  • [email protected]@www.adrian.runceanu.ro

    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:

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 31

  • [email protected]@www.adrian.runceanu.ro

    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.

    23.03.2014 Curs - Programarea calculatoarelor 32

  • [email protected]

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

    23.03.2014 Curs - Programarea calculatoarelor 33

    Pas 3:

    Scriereaalgoritmului în pseudocod:

    natural n, ilogic pciteşte np

  • [email protected]@www.adrian.runceanu.ro

    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:

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 35

  • [email protected]@www.adrian.runceanu.ro

    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.

    23.03.2014 Curs - Programarea calculatoarelor 36

  • [email protected]

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

    23.03.2014 Curs - Programarea calculatoarelor 37

    Pas 3:

    Scriereaalgoritmului în pseudocod:

    natural n, i, s, pciteşte ns

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 38

  • [email protected]@www.adrian.runceanu.ro

    2.4. Algoritmi cu structura repetitivă cu test final

    PROBLEMA 10Să 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).Exemplu:

    23.03.2014 Curs - Programarea calculatoarelor 39

    Pentru n = 28, se va afişa mesajulNumar perfect (divizorii lui 28 sunt 1,2,4,7,14)

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 40

  • [email protected]@www.adrian.runceanu.ro

    2.4. Algoritmi cu structura repetitivă cu test final

    Pas 2: Analiza problemei1) La începutul problemei, vom 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’.

    23.03.2014 Curs - Programarea calculatoarelor 41

  • [email protected]

    2.4. Algoritmi cu structura repetitivă cu test final

    23.03.2014 Curs - Programarea calculatoarelor 42

    Pas 3:

    Scriereaalgoritmuluiîn pseudocod:

    natural n, i, sciteşte ni

  • [email protected]@www.adrian.runceanu.ro

    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:

    23.03.2014 Curs - Programarea calculatoarelor 43

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 44

  • [email protected]@www.adrian.runceanu.ro

    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,iar apoi vom da:

    valoarea b varibilei aşi valoarea c variabilei b

    23.03.2014 Curs - Programarea calculatoarelor 45

  • [email protected]

    2.4. Algoritmi cu structura repetitivă cu test final

    23.03.2014 Curs - Programarea calculatoarelor 46

    Pas 3:

    Scriereaalgoritmului în pseudocod:

    natural n, i, a, b, cciteşte ni

  • [email protected]@www.adrian.runceanu.ro

    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:

    23.03.2014 Curs - Programarea calculatoarelor 47

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 48

  • [email protected]@www.adrian.runceanu.ro

    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.

    23.03.2014 Curs - Programarea calculatoarelor 49

  • [email protected]

    2.4. Algoritmi cu structura repetitivă cu test final

    23.03.2014 Curs - Programarea calculatoarelor 50

    Pas 3:

    Scriereaalgoritmului în pseudocod:

    natural n, sciteşte ns

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 51

  • [email protected]@www.adrian.runceanu.ro

    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:

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

  • [email protected]@www.adrian.runceanu.ro

    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

    23.03.2014 Curs - Programarea calculatoarelor 53

  • [email protected]@www.adrian.runceanu.ro

    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 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 suma divizorilor primuluinumar este egala cu cel de-al doilea numar, iar sumadivizorilor celui de-al doilea numar este egala cu primulnumar.

    23.03.2014 Curs - Programarea calculatoarelor 54

  • [email protected]

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

    23.03.2014 Curs - Programarea calculatoarelor 55

    Pas 3:

    Scriereaalgoritmuluiîn pseudocod:

    natural n, m, i, j, suma_n, suma_mciteşte nsuma_n

  • [email protected]

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

    23.03.2014 Curs - Programarea calculatoarelor 56

    Pas 3:

    Scriereaalgoritmuluiîn pseudocod:

    suma_m

  • [email protected]@www.adrian.runceanu.ro

    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:

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

  • [email protected]@www.adrian.runceanu.ro

    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ă

    23.03.2014 Curs - Programarea calculatoarelor 58

  • [email protected]@www.adrian.runceanu.ro

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

    Apoi, într-un ciclu repetitiv având n pași vomcompara, pe rând cele n valori citite de la tastaturăși vom reține de fiecare data valoarea mai maredecât cea din variabila max.

    La sfârșit vom avea valoarea cea mai mare învariabila max.

    23.03.2014 Curs - Programarea calculatoarelor 59

  • [email protected]

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

    23.03.2014 Curs - Programarea calculatoarelor 60

    Pas 3:

    Scriereaalgoritmuluiîn pseudocod:

    natural n, i, max, xciteşte nmax max atunci

    max

  • [email protected]@www.adrian.runceanu.ro

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

    PROBLEMA 15Să se calculeze suma numerelor naturale

    cuprinse intre două numere date (dintr-uninterval).

    Exemplu:

    23.03.2014 Curs - Programarea calculatoarelor 61

    Pentru 3 si 6 reprezentand capeteleintervalului, se va afisa valoarea 9reprezentand suma.

  • [email protected]@www.adrian.runceanu.ro

    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: a si b numere naturaleDate de ieşire: suma numerelor aflate in intervalul

    (a,b)

    23.03.2014 Curs - Programarea calculatoarelor 62

  • [email protected]@www.adrian.runceanu.ro

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

    Pas 2: Analiza problemei

    La începutul problemei, vom iniţializa cu 0 o

    variabilă, în care vom reține valoarea suma

    numerelor din intervalul (a,b).

    Apoi, într-un ciclu repetitiv pornind de la a+1 si

    mergand pana la b-1 vom aduna la suma toate

    valorile din intervalul dat.

    La sfârșit vom avea valoarea suma.23.03.2014 Curs - Programarea calculatoarelor 63

  • [email protected]

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

    23.03.2014 Curs - Programarea calculatoarelor 64

    Pas 3:

    Scriereaalgoritmuluiîn pseudocod:

    natural a, b, i, sumaciteşte a,bsuma

  • [email protected]@www.adrian.runceanu.ro

    Întrebări?

    23.03.2014 Curs - Programarea calculatoarelor 65