-
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)