| Decidere quale eseguire tra tante sequenze alternative di istruzioni
Dopo aver eseguito istruzione 0 decide quale blocco eseguire in funzione del valore assunto dall’espressione E.
Se E = E1 esegue istruzione 11
istruzione 12 altrimenti se E = E2 esegue istruzione 21
istruzione 22 … altrimenti esegue istruzione n1
istruzione n2 e poi continua eseguendo istruzione n+1. |
![]() |
| Non è necessario introdurre un costrutto di controllo a più uscite perché il diagramma di flusso si può trasformare nel successivo (esempio con 3 scelte…) dove cambia l’interpretazione ma non il comportamento dell’algoritmo.Dopo aver eseguito istruzione 0 decide se eseguire
istruzione 11
istruzione 12 oppure continua e quindi decide se eseguire istruzione 21
istruzione 21 oppure istruzione 31
istruzione 32 e quindi continua eseguendo istruzione 4. |
![]() |
Top…
If E = E1 Then
Begin
Istr11;
Istr12;
End
Else
Begin
(* ... da sviluppare ... *)
End;
…down
If E = E1 Then
Begin
Istr11;
Istr12;
End
Else
Begin
If E = E2 Then
Begin
Istr21;
Istr22;
End
Else
Begin
Istr31;
Istr32;
End
End;
Si può semplificare il codice, e rimanere più aderenti al primo diagramma di flusso, cambiando l’indentazione delle istruzioni ed eliminando le etichette di blocco superflue
If E = E1 Then
Begin
Istr11;
Istr12;
End
Else If E = E2 Then
Begin
Istr21;
Istr22;
End
Else
Begin
Istrn1;
Istrn2;
End;
Istruzioni singole…
If E = E1 Then Istr1 Else If E = E2 Then Istr2 Else Istrn;
Note
- Il valore assunto dell’unica espressione E decide quale blocco verrà eseguito
- Un solo blocco sarà eseguito in esclusiva
- Prima dell’Else finale possono essere inseriti ulteriori blocchi di tipo Else If (con E3, E4, …)
- L’ultimo blocco Else è facoltativo (quindi si può prevedere che nessuna sequenza di istruzioni venga eseguita).

