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).