|
Decidere quale sequenza di istruzioni eseguire tra tante sequenze alternative Diagramma di flussoDopo 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. MACTraduciamo in MACL 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 ...... ' Linguaggi di alto livello
Tra l'ultimo Else If e l'Else finale possono essere inseriti ulteriori blocchi di tipo Else If. L'ultimo blocco Else è facoltativo (quindi si può prevedere che nessun blocco venga eseguito). Alcuni preferiscono tradurre in linguaggio di alto livello seguendo fedelmente lo schema del secondo diagramma di flusso
Osserviamo che la versione VB ha una sintassi diversa mentre le altre sono identiche tranne che per l'allineamento. Se le espressioni E, E1, E2, ... sono di tipo semplice si può tradurre il tutto in una forma più immediata che corrisponde logicamente al primo diagramma di flusso
(con grandi differenze tra i linguaggi nella sintassi e potenzialità d'uso...) |
|