Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Ripetizione (in testa)

Precedente
SUPERIORE
Successiva

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

Diagramma di flusso

Rispetto alla ripetizione con decisione in coda si prevede la possibilità che la sequenza non venga eseguita per nulla. Allora è necessaria una decisione ulteriore in testa

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

Il diagramma può essere semplificato riorganizzando i collegamenti

Decide se eseguire le istruzioni 1 e 2 o proseguire con le successive; in caso di risposta affermativa ritornerà a ripetere il test.

MAC

Adattiamo il diagramma di flusso alla logica di basso livello (salta se non esegue la sequenza): decide se saltare le istruzioni 1 e 2; in caso di risposta negativa ritornerà in alto a ripetere il test ...

      ... ...... '
SU    LDA A      '
      JLE DOPO   ' SE(A <= 0): PC <-- DOPO
      I1  ...... '
      I2  ...... '
      JMP SU     '
DOPO  ... ...... '

Linguaggi di alto livello

VBasicTPascalC...
While A > 0
  Istr1
  Istr2
Wend
While A > 0 Do
  Begin
    Istr1;
    Istr2;
  End;
while(A > 0)
{
  istr1;
  istr2;
}
Do While A > 0
  Istr1
  Istr2
Loop
Do Until A <= 0
  Istr1
  Istr2
Loop

In VB c'è l'imbarazzo della scelta...

Il ciclo con controllo in testa assume spesso una forma "standardizzata"

bulletuna variabile intera è utilizzata come contatore o indice all'interno della sequenza
bulletil valore iniziale della variabile è assegnato prima del ciclo
bulletil valore della variabile è modificato (incrementato...) a ogni passo
bulletla ripetizione termina se la variabile supera un certo valore fissato

Si ottiene la struttura

VBasicTPascalC...
I=1
While I <= N
  Istr1
  ...
  I=I+1
Wend
I:=1;
While I <= N Do
  Begin
    Istr1;
    ...
    I:=I+1;
End;
i=1;
while(i <= N)
{
  istr1;
  ...
  i=i+1;
}

In questi casi tutta la scrittura è convenientemente riassunta nella struttura di controllo for

VBasicTPascal C...
For I=1 to N
  Istr1
  ...
Next I
For I:=1 To N Do
  Begin
    Istr1;
    ...
  End;
for(i=1; i <= N; i++)
{
  istr1;
  ...
}
For I=N to 1 Step -1
  Istr1
  ...
Next I
for I:=N DownTo 1 Do
  Begin
    Istr1;
    ...
  End;
for(i=N; i >= 1; i--)
{
  istr1;
  ...
}
For I=... to ... Step ...
  Istr1
  ...
Next I
 
for(...; ...; ...)
{
  istr1;
  ...
}
bulletIn VB il passo può essere scelto positivo/negativo e intero/decimale tramite lo step.
bulletIn TP il passo è +1/-1.
bulletI linguaggi C... offrono invece una grande flessibilità, all'interno delle parentesi tonde, che viene spesso utilizzata a sproposito...

Ripetizione (in testa) - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva