21
1 Reprezentarea algoritmilor prin scheme logice. 1. Algoritm Algoritmul este o „reţetă” pentru rezolvarea unei anumite probleme. Urmarea pas cu pas a indicaţiilor din „reţetă” permite transformarea informaţiilor iniţiale (cele pe care le avem la dispoziţie în momentul începerii rezolvării problemei – altfel spus a „ingredientelor”) în rezultate („produse finite”). Informaţiile iniţiale le mai numim şi date (informaţii) de intrare. Rezultatele obţinute în urma urmării paşilor dintr-o „reţetă” le numim date (informaţii) de ieşire. Indicaţiile din „reţetă” sunt paşii algoritmului. Un program poate fi format din unul sau mai mulţi algoritmi. Şi pentru program avem date de intrare (sunt informaţiile de care dispunem la începutul programului) şi date de ieşire (sunt informaţiile obţinute în urma rulării programului pe calculator). Rezolvarea unei probleme presupune parcurgerea a două etape: 1. etapa de analiză a problemei (înţelegerea problemei, stabilirea datelor de intrare şi a datelor de ieşire, elaborarea şi descrierea algoritmului sau a algoritmilor necesari pentru rezolvarea problemei); 2. etapa de implementare a algoritmilor descrişi în etapa de analiză. Informaţiile iniţiale (datele de intrare) sunt introduse în program prin citire. Dacă, în urma analizei problemei, rezultă că, pentru rezolvarea problemei, avem nevoie de anumite informaţii, acestea trebuie citite (în această etapă) de la dispozitivul de intrare standard care este tastatura. Datele de intrare pot fi valori numerice (întregi sau reale), caractere sau şiruri de caractere. Informaţiile care rezultă dintr-un program (datele de ieşire) trebuie comunicate utilizatorului prin scriere pe dispozitivul standard de ieşire care este monitorul. Afişarea rezultatelor pe monitor se face, de obicei, prin intermediul unor mesaje care înglobează datele de ieşire. Informaţiile iniţiale ale programului (cele pe care le citim de la tastatură) sunt stocate (sau memorate) în memoria sistemului de calcul în anumite zone. Aceste zone de memorie în care vor fi memorate, mai întâi informaţiile iniţiale ale programului şi

Scheme Logice

Embed Size (px)

DESCRIPTION

Scheme Logice, Teorie si Explicatii

Citation preview

  • 1

    Reprezentarea algoritmilor prin scheme logice.

    1. Algoritm

    Algoritmul este o reet pentru rezolvarea unei anumite probleme. Urmarea

    pas cu pas a indicaiilor din reet permite transformarea informaiilor iniiale (cele

    pe care le avem la dispoziie n momentul nceperii rezolvrii problemei altfel spus a

    ingredientelor) n rezultate (produse finite). Informaiile iniiale le mai numim i

    date (informaii) de intrare. Rezultatele obinute n urma urmrii pailor dintr-o

    reet le numim date (informaii) de ieire. Indicaiile din reet sunt paii

    algoritmului.

    Un program poate fi format din unul sau mai muli algoritmi. i pentru program

    avem date de intrare (sunt informaiile de care dispunem la nceputul programului)

    i date de ieire (sunt informaiile obinute n urma rulrii programului pe

    calculator).

    Rezolvarea unei probleme presupune parcurgerea a dou etape:

    1. etapa de analiz a problemei (nelegerea problemei, stabilirea datelor de

    intrare i a datelor de ieire, elaborarea i descrierea algoritmului sau a algoritmilor

    necesari pentru rezolvarea problemei);

    2. etapa de implementare a algoritmilor descrii n etapa de analiz.

    Informaiile iniiale (datele de intrare) sunt introduse n program prin citire.

    Dac, n urma analizei problemei, rezult c, pentru rezolvarea problemei, avem

    nevoie de anumite informaii, acestea trebuie citite (n aceast etap) de la

    dispozitivul de intrare standard care este tastatura. Datele de intrare pot fi valori

    numerice (ntregi sau reale), caractere sau iruri de caractere.

    Informaiile care rezult dintr-un program (datele de ieire) trebuie comunicate

    utilizatorului prin scriere pe dispozitivul standard de ieire care este monitorul.

    Afiarea rezultatelor pe monitor se face, de obicei, prin intermediul unor mesaje care

    nglobeaz datele de ieire.

    Informaiile iniiale ale programului (cele pe care le citim de la tastatur) sunt

    stocate (sau memorate) n memoria sistemului de calcul n anumite zone. Aceste zone

    de memorie n care vor fi memorate, mai nti informaiile iniiale ale programului i

  • 2

    apoi toate rezultatele intermediare au ataate etichete cu numele dat informaiei

    respective. De exemplu, dac hotrm ca o anumit dat de intrare s aib numele

    medie_aritmetica, atunci n memorie se va gsi o zon n care se vor stoca valorile

    numerice ale acestei informaii i care va avea aceast etichet. Zonele de memorie

    care au ataat (prin program) un nume sugestiv i n care sunt stocate informaiile

    asociate numelui respectiv se numesc variabile. Valorile stocate n aceste zone de

    memorie se pot modifica pe parcursul programului.

    ntr-un program, pe lng variabile, mai exist i informaii ale cror valori nu se

    pot modifica pe parcursul unui program. Aceste informaii pot avea de asemenea

    asociat un nume. i n alte domenii (matematic, fizic, chimie) avem astfel de

    informaii pe care le numim constante. De exemplu, n matematic avem constanta

    notat cu i care este egal cu 3.14159...

    Observaie: n programare pentru exprimarea numerelor reale nu vom

    folosi ca separator ntre partea ntreag i cea fracionar virgula (nu vom

    mai scrie 3,14158), ci vom folosi ca separator punctul (vom scrie 3.14159).

    Pentru obinerea rezultatelor finale (datele de ieire), precum i a unor rezultate

    intermediare, variabilele i constantele care apar ntr-un algoritm pot fi incluse n

    expresii aritmetice, logica sau relaionale.

    Expresiile aritmetice sunt formate cu ajutorul operatorilor aritmetici: +, -, *, /

    i %. Operatorul % l mai numim i operatorul modulo, se aplic numai numerelor

    ntregi pozitive, iar expresia a%b are ca rezultat restul mpririi lui a la b.

    Expresiile logice sunt formate cu ajutorul operatorilor logici: non (notat ),

    I (notat ) i SAU (notat ). Expresiile logice au ca operanzi propoziii (elementare

    sau compuse) i ca rezultat valoarea de adevr a propoziiei formate cu ajutorul lor

    (deci rezultatul poate avea dou valori posibile: ADEVRAT (TRUE) sau FALS)).

    Expresiile relaionale sunt formate cu ajutorul operatorilor relaionale: ,

    , = i . Expresiile relaionale sunt, de fapt, propoziii, deci au ca rezultat valoarea

    de adevr a propoziiilor respective.

    O alt operaie important ntr-un program este atribuirea. Simbolul prin care

    vom nota aceast operaie este . Forma general pentru aceast operaie este

    urmtoarea:

    ev

  • 3

    n care v este o variabil, iar e este o variabil, o constant sau o expresie.

    Cum se execut aceast operaie? Se evalueaz e (adic se calculeaz rezultatul

    expresiei specificate), iar rezultatul va fi stocat (memorat) n zona de memorie

    asociat variabilei v.

    De multe ori ntr-un program pot apare atribuiri de forma:

    1+ vv

    n acest caz modul de execuie este urmtorul: se aduce din zona de memorie

    corespunztoare variabilei v valoarea gsit acolo; la aceast valoare se adun

    valoarea 1, iar rezultatul se trimite din nou n zona de memorie asociat variabile v.

    Dup execuia acestei atribuiri, n zona de memorie asociat variabilei v se va afla o

    valoare mai mare cu o unitate fa de valoarea iniial a variabilei v.

    Iniializarea unei variabile nseamn prima umplere a zonei de memorie

    asociate variabilei considerate cu o valoare. Aceast iniializare se poate face prin

    citire (cnd zona de memorie asociat variabilei se umple cu valoarea citit de la

    dispozitivul de intrare) sau prin atribuire (cnd zona de memorie asociat variabilei

    se umple cu rezultatul expresiei din dreapta operatorului de atribuire).

    2. Reprezentarea algoritmilor prin intermediul schemelor logice

    Un algoritm poate fi reprezentat sub forma unei diagrame formate din figuri

    geometrice. Fiecare figur geometric din diagram corespunde unui pas (unei etape)

    din algoritm. Figurile geometrice din diagram sunt legate prin linii terminate cu

    sgei care arat ordinea de execuie a pailor algoritmului. Aceast ordine de

    execuie a pailor algoritmului (sau a programului) se numete structura de control a

    programului.

    Reprezentarea grafic bidimensional a unui algoritm cu ajutorul unor simboluri

    speciale se numete schem logic program sau schem logic (organigram).

    2.1.2.1. Simboluri folosite n schemele logiceSimboluri folosite n schemele logice

    Pentru reprezentarea schemelor logice au fost stabilite anumite simboluri

    geometrice care sugereaz prin forma lor diferitele operaii care trebuie executate i

    ordinea de execuie. Ea reprezint n acelai timp i o imagine a fluxului de informaii

    care exist atunci cnd calculatorul execut programul bazat pe algoritmul descris.

    Schemele logice au fost inventate de Herman Goldstine (S.U.A.) n 1946.

  • 4

    Alctuirea schemei logice permite ca programatorul s neleag logica

    programului, s realizeze modularizarea programului (prin mprirea programului n

    pri mai mici i mai detaliate), s verifice ndeplinirea tuturor condiiilor posibile din

    program, s traduc algoritmul ntr-un limbaj de programare (de exemplu n

    limbajul C).

    Simbolurile folosite la construirea schemelor logice se pot mpri n mai multe

    categorii:

    a. Simbolul linie i vrf de sgeat. Este prezentat n Figura 1.

    Figura nr. 1. Simboluri pentru direcia fluxului de informaie,

    Acesta simbolizeaz direcia fluxului de informaie n calculator i succesiunea

    diferitelor operaii. Liniile de flux se pot ncrucia. Liniile care se ncrucieaz nu

    nseamn c sunt conectate. Dac ele sunt conectate trebuie s apar vrfuri de

    sgei lng punctul de jonciune pentru a marca conexiunea. Se reprezint printr-un

    segment de dreapt de orice lungime care trebuie s lege alte dou simboluri. Direcia

    normal a fluxului este de la stnga la dreapta i de sus n jos. Cnd direcia fluxului

    este de sens opus direciei normale se folosesc vrfuri de sgeat. Pentru mai mult

    claritate muli programatori folosesc vrfurile de sgeat n toate cazurile.

    b. Simbolul proces (Figura nr. 2) reprezint execuia unei (sau mai multor)

    operaii de prelucrare a uneia sau mai multor informaii n urma creia se schimb

    valoarea, forma sau localizarea informaiei. Operaiile de prelucrare includ operaii

    aritmetice, operaii logice sau mutarea datelor dintr-o zon a memoriei n alta. Forma

    acestui simbol este un dreptunghi cu raportul de form 2/3. Operaia care este

    prezent ntr-o astfel de figur geometric este cea de atribuire (indicat prin simbolul

    ).

    Figura nr. 2. Simbolul proces (sau operaie)

    B A i i + 1 r m % n

  • 5

    A

    A

    c. Simboluri de intrare ieire reprezint operaiile generale de intrare ieire,

    adic de introducere a informaiei n calculator pentru prelucrare (intrare) i de

    extragere a informaiei prelucrate (ieire). Arat punctele de intrare a datelor i de

    ieire a rezultatelor. Mediul suport de intrare sau de ieire nu este specificat.

    Figura nr. 3. Simboluri de intrare-ieire

    Exemple:

    d. Simboluri terminal (Figura nr. 4) care marcheaz nceputul (a) i sfritul (b)

    programului. Orice schem logic trebuie s nceap cu un simbol terminal START i

    s se termine cu un simbol terminal STOP.

    (a) (b)

    Figura 4. Simboluri pentru nceput i sfrit program

    e. Simbolul conector se folosete pentru a reprezenta o linie continu cnd

    folosirea liniei continue este limitat de dimensiunea hrtiei sau din considerente de

    estetic ale schemei logice. Pentru a identifica conectorii de intrare i de ieire se

    folosesc simboluri de identificare litere sau cifre. Astfel conectorii reprezint un

    mijloc elegant de a lega dou puncte ale schemei logice fr a folosi liniile. O alt

    funcie a conectorilor este aceea c permit reprezentarea unei scheme logice pe mai

    multe pagini.

    (a) Conector pe pagin (b) Conectori pentru scheme logice reprezentate pe mai multe pagini

    Figura nr. 5 Conectori

    Scrie x Scrie "x=", x

    START

    STOP

    1 1

    Citete a, b, c Scrie "n nu poate fi 0"

  • 6

    2.2.2.2. Structuri de programStructuri de program

    2.2.1. Secvena

    Este o structur format din unul sau mai muli pai (operaii) care se execut

    secvenial (n ordinea n care apar n program).

    Reprezentare prin schem logic a secvenei este de forma dat n Figura nr. 6

    Operaie 1

    Operaie 2

    Operaie n-1

    Operaie n

    Operaie 3

    Aici schema continu ct este necesar

    Figura nr. 6. O secven cu n operaii de prelucrare a informaiei iniiale

    Exemplul nr. 1.

    S se fac schema logic pentru un program care citete dou valori, calculeaz

    media lor aritmetic i afieaz rezultatul.

    nainte de a desena schema logic se face o analiz a problemei enunate

    stabilindu-se datele de intrare n program (care vor fi citite de la tastatur) i

    rezultatele (datele de ieire) care trebuie calculate.

    n acest caz ca date de intrare avem cele dou valori pe care trebuie s le citim

    de la tastatur (i pe care le vom nota cu a, respectiv b). Data de ieire (rezultatul)

    este n acest caz media aritmetic (pe care o vom nota mediaAritmetica).

    Tot n acest punct stabilim cum vom calcula rezultatul (elaborm algoritmul de

    calcul). Formula pentru calculul mediei aritmetice a dou numere este:

    2baeticamediaAritm += (1)

  • 7

    n acest caz algoritmul folosit este descris printr-o formul matematic.

    Schema logic este reprezentat n Figura nr. 7.

    Figura nr. 7. Schema logic pentru problema din Exemplul nr. 1

    Dup cum se observ, n schema logic nu exist nici o ramificaie, operaiile

    indicate executndu-se exact n ordinea n care au fost specificate. Un astfel de

    program are o structur secvenial.

    Tot structur secvenial va avea i programul din Exemplul nr. 2.

    Exemplul nr. 2

    S se fac schema logic pentru un program care citete dou valori, calculeaz

    media lor aritmetic i media lor geometric i afieaz rezultatele.

    Procednd ca n Exemplul nr. 1 se face mai nti o analiz a problemei stabilindu-

    se datele de intrare, datele de ieire i algoritmul (sau algoritmii) folosii pentru

    rezolvarea problemei.

    Datele de intrare sunt cele dou numere care vor fi citite de la tastatur (notate

    i de aceast dat cu a i b). Ca date de ieire avem n acest caz dou rezultate:

    media aritmetic (pe care o vom numi mediaAritmetica) i media geometric (pe

    care o vom numi mediaGeometrica).

    Formulele de calcul (respectiv algoritmii folosii pentru rezolvarea problemei)

    sunt:

    batricamediaGeome

    baeticamediaAritm

    =

    +=2 (2)

  • 8

    Schema logic este reprezentat n Figura nr. 8.

    Figura nr. 8. Schema logic pentru problema din Exemplul nr. 2.

    Not: schemele logice care trebuie s apar n documentarea programelor pot fi desenate cu diverse programe specializate. Microsoft pune la dispoziie pentru desenarea diagramelor necesare n diverse proiecte programul Microsoft Office Visio (cu varianta 2007). Acest program are o seciune dedicat construirii schemelor logice (flowcharts) i este disponibil prin MSDN Academic Alliance.

    Cu toate c structura secvenial permite rezolvarea unor clase de probleme,

    exist cazuri n care este necesar o ramificare a programului sau reluarea unor

    anumitor operaii. De exemplu, n cazul n care citim dou numere de la tastatur i

    trebuie s mprim primul numr la cel de al doilea (primul fiind demprit, iar al

    doilea mpritor) putem face acest lucru numai dac ce de-al doilea numr este diferit

    de zero. n acest caz trebui s facem un test (testm dac al doilea numr este diferit

    de zero) i n funcie de rezultatul acestui test facem calculul cerut sau nu. Avem de

    luat n acest caz o decizie sau avem de fcut o selecie. Pentru astfel de probleme

    folosim n programare (regsindu-se i n schemele logice) structura numit decizie

    sau selecie. Aceast structur este prezentat n paragraful urmtor.

  • PROGRAMAREA CALCULATOARELOR __________________________ Laborator Nr. 1

    9

    2.2.2. Selecia (decizia)

    Este o structur care permite ramificarea programului i continuarea prelucrrii

    datelor pe una sau alta din ramuri n funcie de rezultatul unui test logic. Testul logic

    este o expresie a crei evaluare conduce la un rezultat logic (din punctul de vedere al

    logicii matematice), adic rezultatul poate fi adevrat sau fals.

    2.2.2.1. Selecia cu dou alternative

    Reprezentare prin schem logic este n Figura 9.

    Figura 9. Selecia cu dou alternative

    Execuia se face astfel:

    se evalueaz Test ;

    dac rezultatul este Adevrat atunci se executa ;

    dac rezultatul este Fals atunci se execut .

    Dup execuia uneia din cele dou secvene (A sau B), prelucrarea informaiilor

    continu cu urmtoarea operaie indicat n schema logic.

    Exemplul nr. 3.

    S se deseneze schema logic pentru un program care citete dou numere de la

    tastatur. Dac primul numr este mai mare dect cel de-al doilea, atunci se va

    calcula suma celor dou numere. n caz contrar se va calcula produsul celor dou

    numere. n ambele cazuri se va afia rezultatul calculul realizat.

    Analiza problemei: datele de intrare sunt dou numere (pe care le vom nota de

    data aceasta cu x i y). La ieire vom avea un singur rezultat care depinde de valorile

    lui x i y. Pentru a ti ce operaie trebuie s facem cu cele dou numere trebuie s

    facem mai nti un test i n funcie de rezultatul testului prelucrarea va continua pe o

  • PROGRAMAREA CALCULATOARELOR __________________________ Laborator Nr. 1

    10

    ramur sau alta a programului. Pentru aceasta n program trebuie s existe att

    operaia de adunare a celor dou numere ct i cea de nmulire.

    Rezultatul operaiei l vom nota cu rez.

    Schema logic este reprezentat n Figura nr. 10.

    Figura nr. 10. Schema logic pentru Exemplul nr. 3

    Exemplul nr. 4.

    Fie funcia f:RR definit astfel:

    ( ) ( )

    >+

    +=

    12ln11

    3

    2

    xxxxxf (3)

    S se deseneze schema logic a unui program care citete de la tastatur

    valoarea lui x i afieaz rezultatul expresiei:

    ( ) 1++ xxf (4)

    Analiza problemei: singura dat de intrare (informaia care trebuie citit de la

    tastatur) este valoarea lui x. Data de ieire este rezultatul expresiei din relaia (4).

    Vom nota acest rezultat cu r.

    Funcia f fiind dat pe intervale (expresia (3)) trebuie s testm valoarea pe care

    am citit-o de la tastatur i dac, aceast valoare este mai mic sau egal cu 1 vom

    folosi prima relaie pentru calculul funciei f, altfel vom folosi a doua relaie din

    definiia funciei. Valoarea calculat a funciei f am notat-o cu y.

    n ambele cazuri rezultatul r se calculeaz folosind relaia (4).

  • PROGRAMAREA CALCULATOARELOR __________________________ Laborator Nr. 1

    11

    La final vom afia rezultatul obinut.

    Schema logic este reprezentat n Figura nr. 11.

    Figura nr. 11. Schema logic pentru Exemplul nr. 4

    2.2.2.2. Selecia cu o alternativ vid

    n cazul n care la evaluarea unui test nu avem dou alternative de prelucrare, ci

    numai una singur, se folosete o structur de selecie derivat din cea prezentat n

    paragraful precedent numit selecia cu o alternativ vid. Testul va fi construit astfel

    nct alternativa vid (ramura pe care nu se execut nici o operaie) s corespund

    cazului n care rezultatul testului este Fals.

    Reprezentare prin schema logic a acestui tip de selecie este dat n Figura nr.

    12.

    Figura nr. 12. Selecia cu o alternativ.

  • PROGRAMAREA CALCULATOARELOR __________________________ Laborator Nr. 1

    12

    Este echivalent cu structura anterioar numai c lipsete . Modul

    de execuie:

    se evalueaz ;

    dac rezultatul este Adevrat atunci se executa ;

    dac rezultatul este Fals nu se realizeaz nici o operaie

    se trece apoi la urmtoarea operaie de prelucrare din program.

    Exemplul nr. 5.

    S se deseneze schema logic pentru un program care citete de la tastatur un

    numr i afieaz modulul numrului respectiv.

    Analiza problemei: programul are ca singur dat de intrare valoarea citit de la

    tastatur. Ca ieire programul are de asemenea o singur informaie i anume

    modulul numrului citit.

    Algoritmul: dac numrul citit este pozitiv, atunci modulul coincide cu numrul

    (deci n acest caz nu avem de fcut nimic). Dac numrul citit este negativ atunci,

    pentru modulul este numrul cu semn schimbat. Modulul l vom nota cu modul.

    n ambele cazuri, vom afia rezultatul.

    Schema logic este reprezentat n Figura nr. 13.

    Figura nr. 13. Schema logic pentru Exemplul nr. 5.

  • 13

    2.2.2.3. Selecia multipl

    n cazul n care pe ramurile unei selecii avem nu operaii simple, ci avem alte

    selecii avem de a face cu selecia multipl.

    Tem

    Desenai schema logic pentru cazul n care pe fiecare din ramurile unei selecii

    cu dou alternative avem cte o selecie cu o alternativ,

    Un caz particular al seleciei multiple este acela n care trebuie s evalum o

    expresie i n funcie de rezultatul expresiei trebuie s se execute o anumit secven

    de instruciuni. Expresia care trebuie evaluat nu trebuie s fie o expresie logic sau

    de relaie astfel nct rezultatul ei poate fi un numr oarecare (de obicei ntreg).

    Reprezentarea prin schem logic

    Secventa 1 Secventa 2Secventa

    n+1

    Expresie ?

    Secventa 3 Secventa n

    Val2Val1 Val3 Valn Rest

    Figura nr. 14. Selecie multipl (cazul II)

    2.2.3. Repetiia (iteraia)

    Exist situaii n care pentru a rezolva problema dat trebuie s parcurgem

    aceeai pai de mai multe ori. De exemplu n cazul n care trebuie s calculm suma

    unui ir de numere procedm n felul urmtor: adunm primele dou numere, la suma

    obinut adunm cel de-al treilea numr, la noua sum adunm cel de-al patrulea

    numr s.a.m.d.

    Un alt exemplu: trebuie s citim de la tastatur un ir de numere. Citirea se face

    att timp ct nu am citit un numr negativ. La primul numr negativ citit, operaia de

    citire se termin i trecem mai departe s prelucrm datele citite.

  • 14

    Pentru astfel de situaii avem la dispoziie structuri repetitive sau iterative. Paii

    care se repet constituie partea iterat (repetat).

    ntotdeauna, pe lng partea iterat trebuie s existe i un test (ca n structurile

    de selecie) funcie de rezultatul cruia se reia execuia prii iterate sau nu.

    Partea iterat mpreun cu testul (care i el se repet) formeaz bucla structurii

    repetitive.

    Repetiia (iteraia) este o structur compus care conine o parte iterat care

    se execut de zero sau mai multe ori n funcie de rezultatul unui test logic. Partea

    iterat poate fi o instruciune simpl, o secven, o selecie sau o alt iteraie.

    Acest tip de structur compus poate fi ntlnit n una din formele

    2.2.3.1. Repetiie (iteraie) cu test iniial

    Schema logic este dat n Figura nr. 15:

    conditie

    Secventa

    AdevaratFals

    Figura nr. 15. Iteraia cu test iniial

    Modul de execuie al unei iteraii este urmtorul:

    se evalueaz ;

    dac rezultatul este Adevrat se execut ;

    se calculeaz din nou valoarea ;

    dac rezultatul este Adevrat se execut din nou ;

    secvena se execut n acest fel pn cnd capt valoarea fals;

    atunci nu se mai execut i iteraia ia sfrit.

  • 15

    Pentru ca iteraia s se termine ntr-un numr finit de pai (i aa trebuie pentru

    c un program are un numr finit de pai, ntotdeauna) este necesar ca partea iterat

    () s modifice valoarea unei variabile sau a mai multor variabile ce apar i

    n expresia logic reprezentnd condiia de verificat, astfel nct dup un numr de

    pai aceast expresie s capete valoare fals. Condiia se verific ntotdeauna nainte

    de execuia prii iterate, de aceea se numete iteraie cu test iniial. Se poate

    ntmpla ca, n funcie de rezultatul evalurii condiiei, partea iterat s nu se execute

    niciodat (se execut de zero ori).

    2.2.3.2. Repetiie (iteraie) cu test final

    Schema logic este dat n Figura nr. 16.

    Secventa

    conditieAdevaratFals

    Figura nr. 16. Iteraia cu test final

    Modul de execuie este urmtorul:

    se execut partea iterat ;

    se evalueaz ;

    dac rezultatul este adevarat se execut din nou partea iterat ;

    se evalueaz ;

    procedeul se repet pn cnd condiia devine fals; atunci partea iterat nu

    se mai execut.

    Trebuie s observm c iteraia cu test iniial (1) este complet diferit de

    iteraia cu test final (2). n cel de-al doilea caz, execuia prii iterate nu este

    precedat de evaluarea condiiei ca n primul caz. Datorit acestui fapt n cazul

  • 16

    iteraiei cu test final, partea iterat se execut ntotdeauna de cel puin o dat, n timp

    ce n iteraia cu test iniial partea iterat se poate executa de zero ori.

    2.2.3.3. Repetiie (iteraie) cu contor

    Reprezentarea prin schema logic este dat n Figura nr. 17, forma general fiind

    dat n Figura nr. 18.

    Secventa

    Fals

    v iva r

    v f

    SI

    v i

    var

    varAdevarat

    pas+ varvar

    Figura nr. 17. Iteraia cu contor

    Ei

    Et

    Secventa

    Em

    AdevaratFals

    Figura nr. 18. Iteraia cu contor (forma general)

  • 17

    n acest caz iteraia este controlat de variabila ntreag , numit variabil

    de contor a buclei. Valorile sale succesive constituie lista buclei. Acest tip de structur

    de control se compune din:

    o expresie de iniializare a variabilei de bucl Ei: vi;

    testarea unei condiii pe care trebuie s o ndeplineasc variabila de bucl prin

    expresia de test Et, de exemplu: valoarea variabilei ntregi trebuie s [vi, vf];

    o expresie de modificare (Em) a variabilei de bucl, care permite acestei

    variabile s ia toate valorile din lista buclei; de obicei este o instruciune de atribuire,

    de exemplu n acest caz +pas. pas reprezint valoarea cu care se

    modific variabila de bucl i poate lua att valori pozitive, ct i valori negative,

    ntregi sau reale.

    Testarea unei condiii prin evaluarea expresiei Et se face nainte de execuia

    secvenei care reprezint corpul iteraiei (a prii iterate) astfel nct se poate construi

    o echivalen ntre acest tip de iteraie i iteraia cu test iniial.

    Acest tip de iteraie se folosete n cazurile n care cunoatem numrul de pai

    care trebuie executai pentru rezolvarea problemei, avem la dispoziie o relaie de

    recuren sau putem evidenia cele trei tipuri de expresii (Ei, Et, Em) referitoare la o

    anumit variabil folosit n descrierea algoritmului.

    3. TEMA

    S se fac analiza i apoi s se deseneze schema logic pentru rezolvarea

    problemelor date mai jos. Pentru fiecare problem se vor specifica (pe foaia de

    hrtie) datele de intrare, datele de ieire i descrierea algoritmului (prin

    formule sau prin limbaj natural).

    3.1.3.1. SeleciaSelecia

    Problema nr. A1

    Se citesc de pe dispozitivul de intrare 3 numere care reprezint lungimile laturilor

    unui triunghi. S se calculeze aria triunghiului folosind formula lui Heron.

    ( )( )( )cpbpappA =

    unde p este semiperimetrul triunghiului.

  • 18

    Problema nr. A2

    Se citesc dou numere naturale de pe dispozitivul de intrare. S se afieze ctul

    mpririi numrului mai mare la cel mai mic.

    Problema nr. A3

    Se citesc de pe dispozitivul de intrare 3 numere reale care reprezint coeficienii

    unei ecuaii de gradul 2. S se determine rdcinile acestei ecuaii. n cazul n care

    ecuaia nu poate fi rezolvat se vor afia mesaje corespunztoare.

    Problema nr. A4

    Un punct din plan este dat prin coordonatele sale (x, y). S se stabileasc poziia

    punctului prin indicarea cadranului (1, 2, 3, 4) n care este plasat. Pentru un punct

    situat pe una din semiaxe se vor preciza cadranele separate de semiaxa respectiv

    (de exemplu 2-3).

    Problema nr. A5

    S se calculeze durata unei conexiuni Internet cunoscndu-se momentul

    conectrii (dat prin or, minut i secund) i momentul deconectrii (de asemenea dat

    prin or, minut i secund). Trebuie s se ia n consideraie cazul n care o conexiune

    ncepe ntr-o zi i se ncheie n ziua urmtoare. Atenie: rezultatul trebuie afiat sub

    forma ore, minute, secunde, deci pentru calcul NU se va transforma totul n secunde.

    Problema nr. A6

    S se calculeze momentul ntreruperii unei conexiuni Internet dac se cunoate

    momentul de conectare (dat prin or, minut i secund) i durata total a conexiunii

    (dat prin ore, minute i secunde). Se ia n consideraie i cazul n care o conexiune

    nceput ntr-o anumit i se poate ncheia n ziua urmtoare. Atenie: rezultatul

    trebuie afiat sub forma ore, minute, secunde, deci pentru calcul NU se va transforma

    totul n secunde.

    Problema nr. A7

    Se citesc trei numere naturale de pe dispozitivul de intrare (tastatura). S se

    fac schema logic prin care se verific dac cele trei numere pot reprezenta laturile

    unui triunghi. n caz afirmativ se va afia pe dispozitivul de ieire (monitorul) un

  • 19

    mesaj care indic tipul triunghiului (echilateral, isoscel, dreptunghic) ale crui laturi

    pot avea valorile citite de la tastatur. (Nu se pune problema ca triunghiul ar putea fi

    dreptunghic isoscel de ce?).

    Problema nr. A8

    Fie urmtoarea funcie:

    ( )( ]( )[ )

    +

    ++

    =

    ,8,28,2,32,,532

    xexxxxx

    xfx

    S se calculeze valoarea funciei f pentru un x citit de pe dispozitivul de

    intrare.

    3.2.3.2. IteraiaIteraia

    Problema nr. B1

    a) S se deseneze schema logic pentru un program care afieaz un tabel care

    pe prima coloan are temperaturi Fahrenheit i pe cea de-a doua coloan

    echivalenele lor n grade Celsius, folosind formula

    ( )3295

    = FC

    unde C reprezint valoarea temperaturii dat n grade Celsius, iar F reprezint

    valoarea temperaturii n grade Fahrenheit. Tabelul este generat pentru temperaturi

    Fahrenheit cuprinse ntre 0 i 300, cu un pas egal cu 10oF.

    b) S se deseneze schema logic pentru tabelul corespunztor de tranformare

    din grade Celsius n grade Fahrenheit. De aceast dat pasul va fi citit de pe

    dispozitivul de intrare.

    Problema nr. B2

    De pe dispozitivul de intrare se citete un numr real b i un ir de valori reale

    pozitive terminate printr-o valoare negativ (care nu face parte din ir). S se

    stabileasc elementul din ir cel mai apropiat de b . Se va preciza i poziia acestuia

    (al ctelea element din ir este). Termenii irului vor fi pstrai n aceeai variabil a .

  • 20

    Problema nr. B3

    De pe dispozitivul de intrare se citete un ir de numere ntregi pozitive, ir

    terminat cu valoarea 0 care nu face parte din ir. Pentru fiecare element citit s se

    indice cel mai mare ptrat perfect mai mic sau egal cu el.

    Problema nr. B4

    irul { }nx generat cu relaia de recuren ( ) ( )

    +=

    11

    111

    pn

    nn xaxp

    px , cu Ra i

    Np , i pax =0 este convergent i are ca limit

    p a (n cazul n care p este par

    trebuie ca a s fie un numr pozitiv). Pentru un a oarecare dat s construiasc

    schema logic a unui program care calculeaz p a ca limit a acestui ir cu precizia

    de asemenea dat.

    Precizia este dat de relaia 1= nn xx .

    S se completeze schema logic astfel nct s se poat calcula rezultatul pentru

    mai multe valori ale lui p . Continuarea programului se va stabili n urma unui dialog

    cu utilizatorul (dup exemplul dat la curs).

    Problema nr. B5

    S se determine valoarea n pentru care =

    =n

    kn

    knS

    1242 satisface condiia

  • 21

    Problema nr. B7

    Fie x un numr real i n un numr ntreg. S se calculeze nx folosind un numr

    ct mai mic de nmuliri de numere reale.

    Indicaie. Se observ c nx poate fi descompus ntr-un produs de factori n care

    pot apare 842 ,,, xxxx Un factor apare n produs dac n reprezentarea binar a lui n

    cifra corespunztoare este 1.

    Vom forma deci pe rnd cifrele din reprezentarea binar a lui n , ncepnd cu cea

    mai puin semnificativ i puterile lui x : 842 ,,, xxxx O putere a lui x apare n produs

    dac cifra corespunztoare din reprezentarea binar este 1. De exemplu: xxxx 4813 = pentru c reprezentarea n baza 2 a lui 13 este 1101.

    Cifrele reprezentrii binare a lui n se obin ca resturi ale mpririi succesive a lui

    n la 2.

    Problema nr. B8

    Se consider ecuaia 03 =++ cbxax . Notnd cu 321 ,, xxx rdcinile ecuaiei, s se

    calculeze nnn xxx 321 ++ , fr a rezolva ecuaia. Se dau cba ,, i n .

    Indicaie. nmulim ecuaia cu 3nx : 032 =++ nnn cxbxax i innd cont de faptul c fiecare rdcin satisface ecuaia dat, rezult:

    0312

    11 =++ nnn cxbxax

    0322

    22 =++ nnn cxbxax

    0332

    33 =++ nnn cxbxax

    Adunm cele trei relaii i obinem:

    ( ) ( ) ( ) 0333231232221321 =++++++++ nnnnnnnnn xxxcxxxbxxxa

    Notnd nnnn xxxs 321 ++= , obinem relaia de recuren:

    032 =++ nnn scsbsa

    cu urmtoarele valori iniiale:

    30302

    010 =++= xxxs

    03211 =++= xxxs (relaiile Viete)

    abxxxs /22322

    212 =++= (relaiile Viete)