Sunteți pe pagina 1din 5

Utilizarea şi programarea calculatoarelor

_________________________________________________________________________________________________________________

III.2.5.4 Structuri fundamentale logice în limbaj simbolic

III.2.5.4.1 Structurile fundamentale liniare (secvenţiale)


sunt oglindite prin activităţile din prima parte a algoritmului A_Ec2.
Iată cum se prezintă – conform figurii nr. III.12 - un exemplu simplu de modul cu o
astfel de structură, de tip secvenţă. Este de remarcat că într-un bloc de calcul pot fi dispuse
una sau mai multe operaţii. De asemenea şi în blocurile de intrare/ieşire. Structurile a), b), c)
şi d) sunt echivalente între ele.

1 i
i
a a, b, c i
a, b, c
b, c Introd.
x : = a + b^2
x : = a + b^2
x : = a + b^2 y : = cos(c) + a/b
y : = cos(c) + a/b y : = cos(c) + a/b Calcul
z : = a*b*c^(1/3)
z : = a*b*c^(1/3)
o
z : = a*b*c^(1/3) o
o
1 ieşire
a) b) c) d)
Figura nr. III.12

III.2.5.4.2 Structurile fundamentale alternative (de decizie)


sunt oglindite spre exemplu prin activităţile paşilor 6 - 9 a algoritmului A_Ec2.
Se observă în figura nr. III.13 că în blocul de decizie a unei astfel de structuri se

i Structură i
Modul_decizie dublă fundamentală simplă Modul_decizie
Fals Adevărat alternativă Adevărat
Condiţie Condiţie
Fals
Secvenţă de Secvenţă de Secvenţă de
instrucţiuni b instrucţiuni a instrucţiuni a1

o o
a) b)
Figura nr. III.13

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

144
III. Programarea calculatoarelor
_______________________________________________________________________________________________________________

Există 2 subtipuri de astfel de structuri:


◊ cu 2 alternative (de decizie „pură”) conform figurii nr. III.13 prin structuri
dublu a) sau simplu ramificate, b);
◊ cu mai mult de 2 alternative, din care poate fi aleasă (de asemenea doar) una;
acestea pot fi denumite „de selecţie multiplă” şi pot fi reprezentate în două
modalităţi diferite, conform figurii nr. III.14 prin variantele echivalente de
structuri (reprezentate simplificat) a) sau b); de remarcat că la ultima, ieşirea
„ o” poate „porni” de la oricare conector.

Structuri fundamentale alternative multiple – de_selecţie , echivalente


i i
Modul_decizie Modul_decizie
Select_ k Select_ k

Xk k:=1 o
A Secvenţa s1
k:=1 … j j +1 … k:= n …
Secvenţa Procedura Secvenţa Secvenţa B
j
s1 sk sk+1 sn C Procedura sj
j +1
D Secvenţa sj+1

E
k:= n
o F Secvenţa sn

a) b)
Figura nr. III.14
Observaţie
Pentru o reprezentare formală riguroasă (nesimplificată), în figura nr. III.15, se poate
observa modalitatea corectă de modificare a schemei prin dispunerea a câte unui bloc de

Soluţie corectă (formal-riguroasă), dar nerecomandată.:


se dispune câte un bloc de decizie în punctele indicate; valorile individuale de pe fiecare ramificaţie figurează drept “val”
Bloc_decizie
În punctele individuale În punctele de
A,B,C,D,E,F
DA
k = val ramificaţie reale:
(restructurate în locul celui
NU A,B,C,D,E,F
multiplu de ramificaţie Xk )

Xk
A B C DA k < = j NU D E F Algoritmii din figura III.14 a)
şi b) devin structuri formal
echivalente
k:=1 … k:=j k : = j +1 … k:= n

Figura nr. III.15

145
Utilizarea şi programarea calculatoarelor
_________________________________________________________________________________________________________________

decizie pentru testarea valorii curente k în fiecare punct de desprindere a ramificaţiilor. La


figura nr. III.14 a) este vorba de un punct de ramificaţie multiplu, astfel că şi schema ar trebui
restructurată, aşa cum este sugerat.
Se acceptă însă convenţional că avansul la execuţie are loc în condiţiile specificate pe
ramificaţie (funcţional, se simulează blocul de decizie). Astfel schemele logice iniţial
prezentate (în figura nr. III.14) devin mult mai „aerisite” şi lizibile, motiv pentru care se
utilizează aproape în exclusivitate.

III.2.5.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, de asemenea şi denumirea standard a
acesteia! Există 2 posibilităţi funcţional diferite (indiferent de numărul de paşi de executat):
 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 logică 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.

Structuri fundamentale repetitive


Execuţia intrărilor_ieşirilor/secvenţelor/procedurilor trebuie să modifice condiţia!
i
i Modul_ciclu
Modul_ciclu DO-UNTIL
WHILE-DO
Citeşte/Scrie1
DA
Condiţie Secvenţa Sn …
d:
!OPUSE funcţional!

NU …
Procedura Pj
Condiţionare
anterioară !!

Procedura Pj …

Secvenţa Sn
posterioară !!

Citeşte/Scrie1
Condiţionare

NU
Condiţie d:
o DA
o
a) b)
Figura nr. III.16

146
III. Programarea calculatoarelor
_______________________________________________________________________________________________________________

Important
Execuţia operaţiilor din interiorul ciclului trebuie să conducă la o modificare a
valorilor variabilelor din condiţie!! Altfel, ciclarea „se perpetuează” şi se spune că s-a intrat
în „ciclare infinită”, situaţiile de acest gen fiind prohibite!
Există două diferenţieri funcţionale fundamentale a celor 2 structuri:
 repetiţia se produce în condiţii opuse, adică:
 în primul caz pentru îndeplinirea condiţiei (valoare de adevăr =
True/Adevărat, respectiv 1/non-zero),
 în cel de-al doilea caz, pentru neîndeplinirea condiţiei (valoare de adevăr =
Fals respectiv 0(zero)).
 în primul caz, s-ar putea întâmpla ca secvenţele (structurile) prevăzute pe traseul
iniţial de repetiţie să nu se execute niciodată (depinde de condiţia dispusă înainte de
aceste operaţii)! În cel de-al doilea caz însă, se execută întotdeauna (cel puţin o dată)
secvenţa(ele) de dinaintea condiţiei determinante a structurii.
Se observă că structura Do-Until funcţionează în „logica negativă“: se repetă
secvenţele (structurile) indicate dacă condiţia NU(!) este îndeplinită.
Având în vedere faptul că suntem obişnuiţi să judecăm în „logica normală“ (pozitivă),
în majoritatea cazurilor se utilizează structuri în această logică! Din această cauză, se acordă
atenţie şi modalităţii de transformare a structurii Do-Until (de condiţie C1) într-una de tip
While-Do (de condiţie C2), cu respectarea celor stipulate anterior în paragraful Important.
Drept urmare, transformarea plasează prima execuţie a secvenţelor semnalate într-un modul
iniţial, urmând ca aceleaşi secvenţe să figureze după aceea şi în structura While-Do, aplicând
logica pozitivă. Pentru echivalenţă, condiţia trebuie obligatoriu transformată, prin negaţie!

Transformarea condiţionării : posterioară în anterioară.


Modulele de lucru sunt identice!
Execuţia lor trebuie să modifice valoarea de adevăr a condiţiei!

i
Module
(Intrări-ieşiri, secvenţe S, de lucru:
i proceduri P) M1,..,m
Modul_ciclu
DO-UNTIL
o0
ECHIVALENŢĂ

i1 i0
funcţională

Module Modul_ciclu
de lucru: WHILE-DO
M1,..,m om
om DA
posterioară !!

Module
Condiţionare

C2=NOT(C1) d :
NU de lucru:
C1 d: NU M1,..,m
DA i1
o Condiţionare
anterioară !!
o
a) b)

Figura nr. III.17

147
Utilizarea şi programarea calculatoarelor
_________________________________________________________________________________________________________________

În figura nr. III.17 a) şi b), este prezentată o astfel de transformare echivalentă pentru
cazul cel mai general, în care ciclul conţine toate categoriile de entităţi, grupate pe module. Se
observă că noua structură este mult mai laborioasă. Rămâne la latitudinea aplicantului să
decidă dacă sunt necesare astfel de soluţii în cazuri speciale.
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!

Structură fundamentală repetitivă cu număr cunoscut de paşi,


cu condiţionare anterioară.
n
i
Modul_ciclu
j:=1 WHILE-DO
(Intrări-ieşiri, secvenţe

j:=j+1
S, proceduri P)

om
DA Module
j<=n d: de lucru:
NU M1,..,m
i1
Condiţionare
anterioară !!
o
Figura nr. III.18

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.
Observaţie
De obicei, prezentarea schematică urmează ordinea firească de urmărire a
blocurilor: de sus în jos. În structurile repetitive condiţionate anterior, prezentate în manual,
traseele de execuţie, pentru economie de spaţiu, „urcă", ceea ce la algoritmi mai complicaţi
ridică probleme de lizibilitate.
Drept exerciţiu, se recomandă transformarea acestora în trasee coborâtoare,
dezvoltând schema în jos cu aceeaşi structură, sau plasând ramificaţia la colţul inferior al
blocului-romb de decizie!

148

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