Ripetizione con controllo in testa

Ripetere più volte l’esecuzione di una sequenza (con decisione in testa alla sequenza)

Decide se eseguire

  • istruzione 1
  • istruzione 2
  • e poi ritornare in alto

oppure proseguire direttamente con le istruzioni successive.

C’è la possibilità che la sequenza controllata non venga eseguita neanche una volta.
A differenza della ripetizione con controllo in coda

 image
C…
while(A > 0)
{
    istr1;
    istr2;
}
Pascal
While A > 0 Do
    Begin
        Istr1;
        Istr2;
    End;
Python
while A > 0:
    Istr1
    Istr2
SMALL
BASIC
While A > 0
    Istr1
    Istr2
EndWhile
VISUAL
BASIC
While A > 0
    Istr1
    Istr2
Wend

oppure

Do While A > 0
    Istr1
    Istr2
Loop
Do Until A <= 0
    Istr1
    Istr2
Loop

In Visual Basic c’è l’imbarazzo della scelta…




Approfondimento…

imageSi potrebbe risolvere lo stesso problema aggiungendo alla ripetizione con controllo in coda una decisione ulteriore in testa.

Decide (selezione singola) se eseguire o meno il blocco costituito da una ripetizione (con decisione in coda).

Si può fare ma… è troppo complicato, meglio utilizzare la possibilità di controllo in testa dell’esecuzione.

BASIC
If A > 0 Then
    Do
        Istr1
        Istr2
    Loop While A > 0
End If
If A > 0 Then
    Do
        Istr1
        Istr2
    Loop Until A <= 0
End If
C…
if A > 0
    do
    {
        istr1;
        istr2;
    }
    while(A > 0);
Pascal
If A > 0 Then
    Repeat
        Istr1;
        Istr2;
    Until A <= 0;