Sunteți pe pagina 1din 14

Partea I

Tema de casă
Să se editeze şi proceseze un document conform modelului prezentat în continuare.
Documentul conţine text formatat şi procesat (cu ajutorul stilurilor, inclusiv cu cele
speciale de tip Heading pentru titluri de capitole/subcapitole, la care se aplică numerotarea
automată ierarhizată) respectiv obiecte de tip ecuaţie, obiecte grafice (desene), tabele şi o
diagrama (grafic propriu-zis). Documentul are 14 pagini (la fel ca şi modelul) şi este
împarţit în “subdocumente” cu ajutorul secţiunilor astfel încât să se poată plasa, (dupa cum
se va observa în continuare), texte diferite în antete (header-e) şi respectiv paginaţie
diferenţiată în subsoluri (footer-e). Cuprinsul documentului – cu paginaţia aferentă afişată
– este prezentat în continuare fiind creat automat, pe baza stilurilor Heading. Documentul
este o prelucrare a capitolulul III.2 din [Luc05].
Toate elementele necesare alcătuirii documentului sunt prezentate în fişierul
“Indicatii-tema.*”. Sunt specificate deasemenea şi elementele de punctaj.
Evident că tema rezolvată nu trebuie să conţină preambulul cu aceste 3 paragrafe
explicative de la început, ci va debuta cu titlul afişat mai sus, fiind urmat de Cuprinsul
automat!

Cuprinsul

III.2 Algoritmii şi descrierea lor .................................................................................... 2


III.2.1 Noţiunea de algoritm ..................................................................................... 2
III.2.2 Modalităţi logice de avans şi exemple tipice................................................. 3
III.2.2.1 Structuri fundamentale liniare ............................................................... 3
III.2.2.2 Structuri fundamentale alternative......................................................... 4
III.2.2.3 Structuri fundamentale repetitive .......................................................... 5
III.2.3 Definirea completă a conceptului de algoritm............................................... 6
III.2.4 Descrierea algoritmilor .............................................................................. 101
III.2.4.1 Introducere......................................................................................... 101
III.2.4.2 Limbajul simbolic ( = schemele logice). Definire şi blocuri constitutive
101
III.2.4.3 Forma generală a unei scheme logice................................................ 103
III.2.4.4 Structuri fundamentale logice în limbaj simbolic.............................. 104
III.2.4.4.1 Structurile fundamentale liniare (secvenţiale)............................... 104
III.2.4.4.2 Structurile fundamentale alternative (de decizie).......................... 105
III.2.4.4.3 Structurile fundamentale repetitive (de ciclare) ............................ 106
III.2.4.5 Alte aplicaţii ...................................................................................... 108
III.2.4.5.1 Gruparea de operaţii în proceduri; exemplu cu structuri alternative
imbricate 108
III.2.4.5.2 Variabilele indexate şi tratarea lor cu structuri repetitive.............. 108

1
Partea I

III.2 Algoritmii şi descrierea lor

III.2.1 Noţiunea de algoritm


are o vechime de mai mult de 2 milenii (apare încă de la Euclid) deşi forma actuală a
cuvântului provine de la numele matematicianului arab care l-a introdus în circuitul
european în evul mediu.
Scopul textului de faţă este prezentarea cât mai clară a noţiunii şi
respectiv a conceptului mai ales prin prisma posibilităţilor de
aplicabilitate de către un utilizator de formaţie tehnică generală.

Algoritmul este definit în [DEX98] drept un “ansamblu de simboluri folosite în


matematică şi în logică, permiţând găsirea în mod mecanic (prin calcul) a unor rezultate. ♦
P. gener. Succesiune de operaţii necesare în rezolvarea unei probleme oarecare.”

2
Partea I

III.2.2 Modalităţi logice de avans şi exemple tipice

Pentru a explica mai clar aspectul esenţial, de “urmărire” a etapelor de rezolvare a


unei probleme, mai adecvată pare utilizarea în context a sintagmei “modalitate logică de
avans”! Aceasta defineşte de fapt un algoritm.

III.2.2.1 Structuri fundamentale liniare


Concluzie A. Cea mai simplă abordare logică de avans a unui algoritm este: succesiune
necondiţionată, secvenţială a etapelor, fără salt!
Denumirea consacrată este structură fundamentală logică liniară (“secvenţială”) de
algoritm.

3
Partea I

III.2.2.2 Structuri fundamentale alternative


Pentru exemplificare se va analiza o problemă matematică simplă (abordată de
obicei în cărţile consacrate subiectului) : rezolvarea unei ecuaţii de gradul al II-lea:
a‚x2+b‚x+c = 0, pentru care se cunoaşte relaţia de calcul a soluţiilor.
În Tabelul nr. III.4 se descrie algoritmul complet de rezolvare a ecuaţiei de gradul
2, în cel mai general caz.
În tabel apar relaţii
Tabelul nr. III.4 cu operatorul de atribuire
Pas Etapele algoritmului A-Ec2 ( : = explicat detaliat la
1 se introduce (valoarea coeficientului) a , iar subcapitolul nr.III.4, lecţia
2 dacă a=0 rezultă: …. L.0.5.2). Toate celelalte
3,4 se introduc (valorile coeficienţilor) b şi c, apoi, reprezintă condiţii (în care
5 se calculează discriminantul: poate figura operatorul = cu
d := b2 - 4‚ a‚ c (şi) rol relaţional) pentru salt.
Etc, etc …. În figura nr.III.23
… acelaşi algoritm este descris
… cu ajutorul limbajului
… simbolic, printr-o
ordinogramă.
Concluzie B. A doua modalitate de abordare logică a unui algoritm este: avans cu salt
(înainte!, sens corect în descrierea utilizată, tabelară) la o etapă care – dependent de o
condiţie – iniţiază o singură ramificaţie (din cele existente) a algoritmului, sau constituie
finalul ramificaţiilor!
Denumirea consacrată este structură fundamentală logică alternativă ( “decizie”) de
algoritm.

4
Partea I

III.2.2.3 Structuri fundamentale repetitive


Algoritmul A_CP0_1 conţine referiri la lecţia L.0. - prin CP(0) - şi se continuă cu
referiri la competenţa CP(1). În figura nr. III.5 est prezentată descrierea completă în limbaj
simbolic a acestuia.

Concluzie C. A treia abordare logică a “metodei” de avans în cadrul algoritmului este


reluarea prin salt (înapoi!, sens corect în descrierea utilizată, tabelară) – dependent de o
condiţie - a unei secvenţe de paşi de la o etapă anterioară. Se repetă succesiv cele care
urmează.
Denumirea consacrată este structură fundamentală logică repetitivă (de “ciclare”) de
algoritm.
Atenţie însă: instrucţiunile din ciclu trebuie să împiedice “perpetuarea” acestuia prin
posibilitatea de modificare a condiţiei cu noile valori actualizate ale variabilelor acesteia;
este interzisă “ciclarea infinită”!

5
Partea I

III.2.3 Definirea completă a conceptului de algoritm


În subcapitolul anterior au fost evidenţiate aspectele esenţiale care privesc
conceptul de algoritm pe baza unor exemple simple. Concluziile (editate încadrat) au
relevanţă pentru realizarea unei definiri mai riguroase, cu scopul de clarificare, aşa cum
este prezentată spre exemplu în [Zah92].

Definiţie
Prin algoritm se înţelege o mulţime finită de operaţii cunoscute, care se
execută într-o ordine bine stabilită, astfel încât, pornind de la un
set de date (datele iniţiale ale problemei) care îndeplinesc anumite
condiţii, se obţine, într-un interval de timp finit, un set de valori:
rezultatul, reprezentând soluţiile problemei.

Dacă se asociază definiţiei şi modalităţile de avans logic în succesiunea etapelor


existente (posibile), prin cele 3 tipuri de structuri logice fundamentale: secvenţiale,
alternative şi repetitive, se poate spune că s-a definit complet conceptul de algoritm. Cele
trei structuri sunt asociate ades ([Don99]) cu cele trei cuvinte-cheie utilizate în referinţele
axate pe limbaje de programare: secvenţa, decizia şi ciclul.
….

6
Partea a II-a

III.2.4 Descrierea algoritmilor

III.2.4.1 Introducere
….
Există mai multe posibilităţi de descriere a algoritmilor: în limbaj natural, apoi prin
scheme logice (ordinograme), prin scheme structurale (“structurograme”), prin diagrame,
prin tabele de decizie, cu pseudocod, cu limbaje speciale de descriere, etc.

III.2.4.2 Limbajul simbolic ( = schemele logice). Definire şi blocuri


constitutive
În manual se va utiliza descrierea de tip grafic cu ajutorul limbajului simbolic.
Reprezentările mai poartă denumirea de scheme logice, sau ordinograme.
Definiţie
Prin schemă logică se denumeşte o reprezentare de tip grafic a
algoritmilor cu ajutorul unor figuri geometrice (denumite şi
simboluri) a căror formă indică tipul acţiunii care se execută în
etapa pe care o simbolizează. Figurile poartă denumirea de
blocuri. Blocurile sunt legate unul după altul, în ordinea execuţiei
lor, prin segmente orientate. În interiorul lor se înscriu operaţiile
concrete din cadrul acţiunii care urmează a fi executată.

….

101
Partea a II-a

Este vorba de cel mai des utilizate simboluri, care pot fi regăsite drept obiecte
grafice “prefabricate”, la procesoarele de texte. În cazul procesorului Word/Microsoft
Office, acestea se generează din submeniul Flowchart al butonului AutoShapes, de pe bara
Draw. Tabelul nr. III.6 conţine simbolurile uzuale, iar Tabelul nr. III.7 conţine simboluri
particulare pentru elementele de ieşire.
În blocurile-simbol se pot înscrie:
9 paşii (etapele de parcurs ale) algoritmului sau
9 operaţiile aferente fiecărei etape.
Un algoritm este descris - de la pornire la final – printr-un traseu reprezentat de
segmente orientate care leagă blocuri (simboluri) de diverese categorii. Traseul poate avea
una sau mai multe ramificaţii, respectiv poate descrie grafic structurile logice
fundamentale.
….

102
Partea a II-a

III.2.4.3 Forma generală a unei scheme logice

Regula de construcţie a schemelor logice impune alcătuirea lor dintr-o


înlănţuire secvenţială de module care au proprietatea
fundamentală de a avea o singură intrare şi o singură ieşire. În
interiorul modulelor se pot plasa structuri fundamentale logice
(construite cu ajutorul blocurilor) de tip secvenţă, decizie sau
ciclu, după caz (prezentate descriptiv în exemplele anterioare)
astfel încât să menţină proprietatea “o intrare - o ieşire”!

Observaţie
Modulele pot fi constituite deasemenea din proceduri a căror execuţie
este gestionată prin mijlocirea unui nucleu care apelează grupuri
de instrucţiuni în funcţie de necesităţi. Dar modalitatea logică de
funcţionare a grupurilor este determinată in ultimă instanţă tot de
cele trei tipuri de structuri!

….

103
Partea a II-a

III.2.4.4 Structuri fundamentale logice în limbaj simbolic

III.2.4.4.1 Structurile fundamentale liniare (secvenţiale)


sunt oglindite prin activităţile din prima parte a algoritmului A_Ec2.
….

104
Partea a II-a

III.2.4.4.2 Structurile fundamentale alternative (de decizie)


sunt oglindite spre exemplu prin activităţile paşilor 6 - 9 a algoritmului A_Ec2.

Se va desena – la alegere - una din ordinogramele (conform [Luc05]) din figurile:


nr. III.1b), III.13 a), sau III.13b), III.19b), III.24 (stânga), III,32b) sau oricare alta de aceeşi structură
din alte surse bibliografice. . Se pot utiliza obiectele grafice din bara Draw/AutoShapes/FlowChart
(cu adăugare de text prin clic-dreapta mouse).
Pt. Gr.16, studenţii pot desena (la alegere) oricare structurogramă alternativă din orice sursă
bibliografică.

Figura_temă nr. 1 (Studentul nr. 1 din echipă)

Se observă în figura nr. III.13 că în blocul de decizie a unei astfel de structuri se


înscrie o condiţie, a cărei interpretare conduce algoritmul – prin răspunsul la întrebarea
“este adevărată condiţia?” – spre una (şi numai una!) din ramificaţiile posibile ale
traseului de execuţie.

105
Partea a II-a

III.2.4.4.3 Structurile fundamentale repetitive (de ciclare)


sunt oglindite prin activităţile paşilor 16 - 18 a algoritmului A_Ec2. Sunt cunoscute şi sub
numele de “bucle” (în engleză “loop”).
A. Tipuri funcţionale caracteristice
Structura conţine o secvenţă (sau mai multe) de operaţii care trebuie repetate
dependent de îndeplinirea unei condiţii C determinate. Locul de dispunere a acesteia
determină modul în care funcţionează structura, deasemenea şi denumirea standard a
acesteia! Există 2 posibilităţi funcţional diferite (indiferent de numărul de paşi de
executat):

Se va desena – la alegere - una din ordinogramele (conform [Luc05]) din figurile:


nr. III.16a) sau III.16 b), III.18, III.24 (dreapta: ImpRest), III.27 sau oricare alta de aceeşi
structură din alte surse bibliografice. Se pot utiliza obiectele grafice din bara
Draw/AutoShapes/FlowChart (cu adăugare de text prin clic-dreapta mouse).
Pt. Gr.16, studenţii pot desena (la alegere) oricare structurogramă alternativă din orice sursă
bibliografică.

Figura_temă nr. 2 (Studentul nr. 2 din echipă)

¾ structuri repetitive condiţionate anterior, de tip While-Do (“cât timp…execută…”,


cuvinte-cheie care determină logica funcţională a cărei traducere contextuală în
limbaj natural este: “cât timp C este adevărată execută secvenţa “)
¾ structuri repetitive condiţionate posterior, de tip Do-Until (“execută…până când…”,
cuvinte-cheie care determină o logica funcţională opusă celei anterioare, a cărei
traducere contextuală în limbaj natural este: “execută secvenţa până când C este
adevărată “)
În figura nr. III.16 a) şi b) se prezintă schemele logice ale celor două tipuri de
structuri fundamentale repetitive.

106
Partea a II-a

B. Sub-tipuri caracteristice (dependent de numărul de repetiţii)


Se utilizează în context (pentru repetiţii) termenul de “număr de paşi“. Există 2
subtipuri distincte de structuri de “ciclare”:
◊ cu număr necunoscut de paşi;
◊ cu număr cunoscut de paşi.
Pentru a determina execuţia de un anumit număr de ori, n, a structurii, condiţia
din blocul de decizie este cea care trebuie legată de numărul de paşi de executat prin
intermediul unei variabile-contor, care “îi numără“. Numai astfel structura se încadrează
în cel de-al doilea subtip caracteristic.
Pentru subtipul cu număr cunoscut de paşi, se utilizează de cele mai multe ori
structura While-Do. Preluând forma ei cea mai generală din figura nr. III.17 b), în
exemplul din figura nr. III.18, se prezintă modul de implementare pentru un număr n de
paşi de executat, variabila-contor fiind j. Se observă că aceasta trebuie iniţializată înaintea
structurii şi incrementată (=se adaugă succesiv valoarea 1) în interiorul ei!
La astfel de structuri se pot observa cele trei “ingrediente” care le pot pune în
funcţie: iniţializarea, modificarea şi încheierea unui ciclu repetitiv. Referitor la repetiţii, se
mai utilizează şi termenul iteraţii.

107
Partea a II-a

III.2.4.5 Alte aplicaţii

III.2.4.5.1 Gruparea de operaţii în proceduri; exemplu cu structuri alternative imbricate


Să se creeze o schemă logică pentru algoritmul de calcul al funcţiei următoare:
⎧ b 2 − 450 pt : x < 0

⎪ sinx pt : 0 <= x < 2 ⋅ π
f =⎨
⎪ tgx pt : 2 ⋅ π <= x < 4 ⋅ π
⎪⎩a ⋅ b + b pt : x <= 4 ⋅ π
….

III.2.4.5.2 Variabilele indexate şi tratarea lor cu structuri repetitive


Un caz tipic pentru structurile repetitive este cel al lucrului cu variabilele indexate.
….

Algoritmul trebuie să faciliteze transpunerea în limbaje de programare. Pentru


valabilitate generală conform figurii nr. III.20 c), recomandate, se gestionează indexul
printr - o variabilă- contor care este argument al variabilei indexate din punct de vedere
formal. Prin aceasta se pot introduce elementele (indiferent de numărul lor) printr-o
singură structură repetitivă în care figurează doar elementul generic (prin simbolurile
variabilă + index). Se mai observă că se aplică de două ori o astfel de structură: o dată la
intrare şi o dată la ieşire, după operaţiile impuse de aplicaţia concretă la care se lucrează.
Aplicaţia complexă Situaţie_1.0 şi respectiv 1.1, de la lecţiile de programare uzează de
această modalitate de tratare.
Trebuie evidenţiat faptul că atribuirea de valoare pentru elementele variabilei
indexate poate fi efectuată şi în alte modalităţi decât prin operaţia de citire: spre exemplu
prin calcul.

108

S-ar putea să vă placă și