Decidere quale sequenza di istruzioni eseguire tra tante sequenze alternative
 Dopo aver eseguito l'istruzione 0 decide se eseguire le istruzioni 11 e 12 (se E = E1) oppure le istruzioni 21 e 22 (se E = E2), oppure 31 e 32 (altrimenti) e poi continua eseguendo l'istruzione 4. Piuttosto che usare un selettore a tre uscite possiamo trasformare il diagramma di flusso nel successivo
 dove cambia l'interpretazione ma non il comportamento dell'algoritmo: dopo aver eseguito l'istruzione 0 decide se eseguire le istruzioni 11 e 12 (se E = E1) oppure continuare, quindi decide se eseguire le istruzioni 21 e 22 (se E = E2) oppure 31 e 32 e poi continua eseguendo l'istruzione 4. Traduciamo in
linguaggio MAC
I0 ...... '
LDA E '
SUB E1 '
JEQ ISTR1 ' Se(E = E1): PC <-- ISTR1
LDA E '
SUB E2 '
JEQ ISTR2 ' Se(E = E2): PC <-- ISTR2
JMP ISTR3 ' Altrimenti: PC <-- ISTR3
ISTR1 I11 ...... '
I12 ...... '
JMP ISTR4 '
ISTR2 I21 ...... '
I22 ...... '
JMP ISTR4 '
ISTR3 I31 ...... '
I32 ...... '
ISTR4 I4 ...... '
oppure
I0 ...... '
LDA E '
SUB E1 '
JEQ ISTR1 ' Se(E = E1): PC <-- ISTR1
LDA E '
SUB E2 '
JEQ ISTR2 ' Se(E = E2): PC <-- ISTR2
I31 ...... '
I32 ...... '
JMP ISTR4 '
ISTR1 I11 ...... '
I12 ...... '
JMP ISTR4 '
ISTR2 I21 ...... '
I22 ...... '
ISTR4 I4 ...... ' |