0% au considerat acest document util (0 voturi)
3 vizualizări7 pagini

5.6. ESTRUCTURA Desde/para ("For") : Deci para Pentru de La de La Paragraf

Acest document descrie structura de control "for" pentru bucle repetitive. Explică că "for" este folosit atunci când se cunoaște dinainte numărul de iterații al buclei. Detaliază părțile unei declarații "for" și arată diferite moduri de a reprezenta bucle "for" cu pseudocod, diagrame de flux și alte simboluri. De asemenea, discută despre cum să convertești o structură "for" într-o structură "while".

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
3 vizualizări7 pagini

5.6. ESTRUCTURA Desde/para ("For") : Deci para Pentru de La de La Paragraf

Acest document descrie structura de control "for" pentru bucle repetitive. Explică că "for" este folosit atunci când se cunoaște dinainte numărul de iterații al buclei. Detaliază părțile unei declarații "for" și arată diferite moduri de a reprezenta bucle "for" cu pseudocod, diagrame de flux și alte simboluri. De asemenea, discută despre cum să convertești o structură "for" într-o structură "while".

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Flux de control II: Structuri repetitive 171

5.6. ESTRUCTURA desde/para("for")

În multe ocazii se cunoaș te dinainte numărul de ori în care se doresc executarea acț iunilor unui bucle.
În aceste cazuri, în care numărul de iteraț ii este fix, trebuie folosită structuradeciopara(pentru, în engleză).
Structurade laexecută acț iunile corpului buclei de un număr specificat de ori ș i în mod automat
tico controlează numărul de iteraț ii sau paș i prin corpul buclei. Instrumentele de programare ale
structurăde laoparagrafse arată pe pagina următoare lângă Figura 5.5.

5.6.1. Alte reprezentări ale structurilor repetitive din/pentru (for)


Un buclede la(pentru)se reprezintă cu simboluri de proces ș i de decizie prin intermediul unui contor. Astfel, de exemplu-
plo, în cazul unui bucle de citire a cincizeci de numere pentru a încerca să calculeze suma lor:

iniț ializare
Eu← 1 Eu← 1
al contorului

nu proces sau acț iuni


I <= 50 del bucle

da

Eu← Eu + 1
Proces

no
Eu← I + 1 I > 50

da
172 Fundamentele programării

Structura pseudocoduluide atunci

desdev← vihastavf [incrementoincr]a face


<acciones>
.
.
.
fin_desde
v: indice variabil
vi, vf: valores inicial y final de la variable
a) Modelul 1

para v← vi până la vf [incrementoincr] face


<acciones>
.
.
.
fin_para
b) Modelul 2

Diagrama N-S, structură de la

desdev = vihastavf [incrementoincr]hacer


<acciones>
fin_desde

b) Modelul 3

Diagrama de flux, structură,de la

a calcula
valoare iniț ială
ș i valoarea finală

a fixa la
variabil indice
al valor iniț ial

variabilă adevărat
indice > valoare
final
fals

acț iuni corpul buclei

creș te
variabilă indice

c) Model 4

Figura 5.5. Structurade la(pentru):a) pseudocódigo,b) diagrama N-S,c) diagrama de flujo.


Flux de control II: Structuri repetitive 173

Este posibil să reprezentăm bucla cu simboluri proprii

eu← vi eu← vi
da da
i > vf i > vf
eu← vi + X eu← vi + X
nu nu

acț iuni acț iuni

sau prin acest alt simbol

a repeta
variabilă =
m1, m2, m3

m1=contador inicial
proces m2=contador final
m3=increment de pas

Ca aplicaț ie, calculaț i suma primelor N întregi.

eu← vi
i > vf
da
eu← vi + X

nu a scrie
'Suma =', S

S← S + 1

sfârș it

echivalează cu

algoritmosuma
var
entero:I, N, S
început
S← 0 ,
leer (N)
de la← 1hastaNhacer
S← S + I
fin_desde
scrie('Sumă =', S)
sfârș it
174 Fundamentele programării

Structurade laîncepe cu o valoare iniț ială a variabilei index ș i acț iunile specificate se execută,
cu excepț ia cazului în care valoarea iniț ială este mai mare decât valoarea finală. Variabila index se incrementează cu unu ș i dacă această nouă valoare
nu depăș eș te la final, acț iunile sunt executate din nou. Prin urmare, acț iunile specifice din buclă sunt executate
para cada valor de la variable índice desde el valor inicial hasta el valor final con el incremento de uno en uno.
Creș terea variabilei indice este întotdeauna 1 dacă nu se indică expres contrariul. În funcț ie de tipul
de limbaj, este posibil ca incrementul să fie diferit de unu, pozitiv sau negativ. Astfel, de exemplu, FORTRAN ad-
mite diferite valori pozitive sau negative ale creș terii, iar Pascal acceptă doar creș teri ale cărei dimensiune este
unitate: bine pozitive, bine negative. Variabila indice sau de control va fi în mod normal de tip întreg ș i este normală
a folosi literele ca numeEu, J, K.
Formatul structuriide lavariază dacă se doreș te o creș tere diferită de 1, fie pozitivă, fie negativă (de-
cremento).

desdev← vihastavf incpasohacer {inc, incremento}


dec {dec, decremento}
<acciones>
.
.
.
fin_desde

Ș i dacă valoarea iniț ială a variabilei indice este mai mică decât valoarea finală, creș terile trebuie să fie pozitive, deoarece
en caso contrario la secuencia de acciones no se ejecutaría. De igual modo, si el valor inicial es mayor que el valor
în final, creș terea trebuie să fie în acest caz negativă, adică un decrement. Creș terea este adesea denumită de asemenea
pasul("step", în engleză). Adică,

desdei← 20 până la 10 face


<acciones>
fin_desde

nu s-ar executa, deoarece valoarea iniț ială este20ș i valoarea finală10, ș i cum se presupune o creș tere pozitivă, de valoare 1,
se produciría un error. El pseudocódigo correcto debería ser

deci← 20până la10decrementare1face


<acciones>
fin_desde

5.6.2. Realizarea unei structuri de la o structură în timp ce


Este posibil, aș a cum s-a menț ionat în secț iunile anterioare, să se înlocuiească o structură dinpentru oîn timp ce;
În liniile următoare sunt indicate două forme pentru aceasta:

[Link]ăde lacu creș teri ale variabilei indice pozitive.


v← vi
în timp ce v <= vfh
<acciones>
v← v + incrementare
sfârș it_cât_timp

[Link]ăde lacu creș teri ale variabilei indice negative.


v← vi
mentre v >= vfhacere
<acciones>
v← v - decremente
sfârș it_în_timp_ce
Flux de control II: Structuri repetitive 175

Structuradinpoate fi realizat cu algoritmi bazaț i pe structurăîntimpceya repeta, de aceea


pot fi interschimbabile atunci când doresc. Structurile echivalente cudinsunt următoarele:

a)început b)început
eu← n eu← 1
mientrasi > 0face mientrasi <= nhacer
<acciones> <acciones>
eu← i – 1 eu← i + 1
fin_cât timp fin_cât timp
sfârș it sfârș it

c)începere d)început
eu← 0 eu← 1
repeta repeta
<acciones> <acciones>
eu← i+1 eu← i+1
hasta_quei = n până_la_care > n
fin fin

e)început f ) începere
eu← n + 1 eu← n
a repeta a repeta
<acciones> <acciones>
eu← i - 1 eu← i - 1
hasta_quei = 1 până_cândi < 1
fin sfârș it

5.7. IESIRILE INTERNE ALE BUCLELOR

Deș i nu este inclusă în structurile de bază ale programării structurate, uneori este necesar
a dispune de o structură repetitivă care să permită ieș irea într-un punct intermediar al bucla atunci când se îndeplineș te o
condiț ie. Această nouă structură este disponibilă doar în anumite limbaje de programare specifice; denomi-
naremositerapentru a-l diferenț ia de repetă_până_ladeja cunoscută. Ieș irile din bucle sunt de obicei valabile în
structuriîn timp ce, a repetayde la.
Formatul structurii este

itera
<acciones>
si<condiț ie>atunci
ieș i_din_bucle
fin_si
<acciones>
fin_iterar

În general, instrucț iuneaiteranu produce un program lizibil ș i uș or de înț eles aș a cum o facîn timp cey
repetiMotivul pentru această lipsă de claritate este că ieș irea dintr-un ciclu are loc în mijlocul ciclului, în timp ce
de obicei, ieș irea din buclă este la început sau la sfârș itul acesteia. Vă recomandăm să nu recurgeț i la această opț iune.
—deș i îl are în limbajul său— mai mult decât atunci când nu există o altă alternativă sau dispune de structura itera
(ciclare).

EXEMPLU5.12
O aplicaț ie a unei posibile utilizări a instrucț iuniia ieș ise poate întâmpla atunci când sunt incluse mesaje de cerere în
algoritmul pentru introducerea succesivă a informaț iilor.
176 Fundamentele programării

Algoritm 1 Algoritm 2
învăț a(informaț ie) leer(informacion)
repeta mientras_nofin_de_lectura
procesa (informaț ie) procesa (informaț ie)
citi(informatii) a citi(informaț ie)
până_la_sfârș itul_lecturii final_cât_timp

În algoritmii anteriori, fiecare intrare (citire) de informaț ie este însoț ită de procesul său corespunzător,
dar prima lectura este în afara buclei. Se pot include în interiorul buclei toate citirile de informaț ii
ș i se deț ine o structurăieș i(ieș ire). Un exemplu în acest sens este structura următoare:

itera
citi(informatii)
sifin_de_lecturaentonces
ieș i_din_bucle
fin_si
procesa (informaț ie)
fin_iterar

5.8. SENTIN ȚE DE JUMP întrerupe (break) ș i continuă (continue)


Secț iunile următoare examinează instrucț iunile de salt (jump) care sunt utilizate pentru a influenț a fluxul de execuț ie
durante executarea unei instrucț iuni de buclă.

5.8.1. Sentin ț a de întrerupere (break)


În ocazii, programatorii doresc să termine un ciclu într-un loc anume din corpul ciclu în loc de
aș teptând ca bucla să se termine natural prin intrarea sau ieș irea sa. O metodă de a realiza această acț iune
—întotdeauna folosit cu precauț ie ș i cu un control complet al buclă— este prin intermediul afirmaț iei a interzice
(pauză)ceea ce se foloseș te de obicei în sentinț ăconform_fii(comutator).
La sentinț ăa întrerupese poate folosi pentru a termina o instrucț iune de iteraț ie ș i când se execută produce
ce ceea ce fluxul de control sare imediat la următoarea instrucț iune care urmează direct după instrucț iunea de itera-
Deciziaa întrerupese poate plasa în interiorul corpului bucla pentru a implementa acest efect.

Sintaxis
a întrerupe
sentencia_interrumpir::= interrumpir

EXEMPLU5.13
a face
introduceț i un număr de identificare
leer(numId)
dacă(numId < 1000 ș i numId > 1999) atunci
Număr invalid
te rog, introdu un alt număr
si-no
a întrerupe
fin_si
în timp ce(valoarea expresiei să fie întotdeauna adevărată)
Flux de control II: Structuri repetitive 177

EXEMPLU5.14
varentero: t
desdet← 0hastat < 100incremento1hacer
scrie (t)
si(t = 1d)atunci
interupe
final_si
fin_desde

Regla
Instructia interrumpir(break) este adesea utilizată împreună cu o instrucț iune dacă(if) acț ionând ca
o condiț ie internă a buclei.

5.8.2. Sentin ț a continuare(continue)


Sentinț acontinua(continuă) face ca fluxul de execuț ie să sară peste restul unui corp al buclei pentru cu-
continua cu următorul bucle sau iteraț ie. Această caracteristică este utilă în anumite circumstanț e.

Sintaxă
continua
Sentencia_continuar::=continuar

Sentinț acontinuapoate fi utilizat doar în cadrul unei iteraț ii a unui loop. Declaraț iaa continuanu
interferează cu numărul de ori în care se repetă corpul buclei, aș a cum se întâmplă cu întreruperea, ci doar simplu-
mintea influenț ează fluxul de control în orice iteraț ie specifică.

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