Documente Academic
Documente Profesional
Documente Cultură
_________________________________________________________________________________________________________________
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
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
_______________________________________________________________________________________________________________
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
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
145
Utilizarea şi programarea calculatoarelor
_________________________________________________________________________________________________________________
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!
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)
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!
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