next up previous contents
Next: Perspectiva neutra Up: Perspectiva dinamica Previous: Perspectiva dinamica   Cuprins

Fluxul

Fluxul programului este o succesiune de stari ale automatului analizor gramatical si ale stivei de blocuri. Fiecare bloc al programului poate avea mai multe instante pe stiva in timpul rularii. Modul in care se sare dintr-un bloc in altul este dat de o regula simpla: - in blocurile normale se intra neconditionat - procedurile de pe acelasi nivel sau mai mare se pot apela prin numele lor

Din blocuri se poate iesi fortat prin folosirea instructiunii de control ``break n'' sau ``continue n'' si se poate bucla prin instructiunea ``continue loop''.

Fiecare bloc are o variabila implicita, numita ``_'' care poate fi folosita cand nu e nevoie de sa se declare neaparat o noua variabila. Variabila blocului de pe un nivel mai inalt, fara a trecec peste procedura curenta, se poate referi precedand simbolul ``_'' cu diferenta de nivel corespunzatoare, maxim 9. Astfel, ``0_'' e echivalent cu ``_'', ``1_'' cu ``_'' din blocul care gazduieste direct blocul curent etc. Exemplu:
\begin{lstlisting}[language=plint]
loop (1)
{
loop (2)
{
loop (3)
{
loop ...
...' ',6_,' ',7_,' ',8_,' ',9_,;
}
}
}
}
}
}
}
}
}
}
\par\end{lstlisting}
Rezultatul va afisa 1*2*3*4*5*6*7*8*9*10 linii in modul urmator: 10 9 8 7 6 5 4 3 2 1 9 9 8 7 6 5 4 3 2 1 ... 1 1 1 1 1 1 1 1 1 1

Exista instructiuni de control pentru iesirea din procedura curenta; acestea sunt ``exit'', ``return n'' si ``escape n''. Prima iese din program; a doua permite iesirea din a n-a instanta a procedurii curente pe stiva; a treia permite iesirea din toate instantele pe stiva ale procedurilor care sunt imbricate pana la un anumit nivel in tinta instructiunii ``escape'', calculata ca procedura la un nivel mai maare cu n fata de cea curenta. Valorile implicite pentru n sunt 1 pentru ``return'' si 0 pentru ``escape''.


next up previous contents
Next: Perspectiva neutra Up: Perspectiva dinamica Previous: Perspectiva dinamica   Cuprins
Sebastian Glita 2002-06-19