SEMANTICA OPERAZIONALE SEMANTICA OPERAZIONALE Appunti di fondamenti di programmazione Primo anno del corso di laurea in informatica Università di Pisa LINGUAGGIO DI PROGRAMMAZIONE Un linguaggio di programmazione è formato da tre componenti: la SINTASSI (punto di vista formale); la SEMANTICA (significato); l'USO (tecniche di costruzione dei programmi); PROGRAMMI I programmi sono descrizioni dei metodi da seguire per risolvere un problema, cioè sono la descrizione di un ALGORITMO. ALGORITMI Un algoritmo è una sequenza di azioni che porta alla risoluzione di un problema. Le caratteristiche di un algoritmo sono: ogni azione deve essere svolgibile in tempo finito (l'esecuzione dell'intero algoritmo può però anche essere infinita; deve avere una sequenza finita di comandi COMANDI I comandi sono azioni del linguaggio e sono chiamati anche enunciati, statement o istruzioni. SINTASSI DEI COMANDI comando di assegnazione (o assegnamento): nome = espressione; esempio: x = 3+5; ok 3+5 = x; NO comando di blocco (unisce comandi diversi in un unico comando) : {C1 C2 C3 } esempio: {x= 3; y=5;} comando condizionale: if (condizione) comando else comando dove condizione è un'espressione di relazione che è vera o falsa. Esempio: if (x> 0) x=3; else {x=5; y=x+9;} comando iterativo: while (condizione) comando dove condizione è un'espressione di relazione che è vera o falsa ed è detta GUARDIA, mentre il comando è detto CORPO DEL WHILE. Se la guardia è vera si esegue il corpo del while finchè non diventa falsa. L'esecuzione può quindi anche essere infinita. È impossibile sapere se un algoritmo finirà o no: questo problema è detto “problema della terminazione” (e se qualcuno lo risolve avrà una cattedra assicurata in qualsiasi università del mondo a suo desiderio e non avrà sicuramente più problemi di soldi!!!!) Esempio: while (x> 0) {x=3; y=6;} LA SEMANTICA DEI COMANDI I comandi vengono eseguiti su uno STATO. Uno STATO è un insieme di associazioni del tipo: (nome, valore) oppure (nomevalore) I vari comandi modificano lo stato corrente sul quale si applicano. Vediamo alcuni esempi: ES 1: ASSEGNAZIONE Stato corrente : {(x, 3), (y,5)} x = 3+5; questo comando dice che bisogna modificare l'associazione di x nello stato con l'espressione indicata nell'assegnazione. Lo stato risultante è quindi : {(x,8), (y,5)} x = x+5; bisogna valutare il comando nello stato corrente, nel quale la x vale 3. Il nuovo valore da associare alla x è quindi 3+5=8. Il risultato è perciò: {(x,8),(y,5)} ES 2: BLOCCO Stato corrente: {(x,3),(y,5)} {x = x+5; y = x+2;} prima effettuiamo l'assegnazione alla x, cui dobbiamo associare 8 (3+5), portandoci così in una configurazione intermedia fatta così: {(x,8),(y,5)}. È su questo stato intermedio che va svolta la seconda assegnazione presente nel comando blocco. L'esecuzione dell'assegnamento alla y ci porta nello stato finale: {(x,8),(y, 10)}. ES 3: COMANDO CONDIZIONALE Stato corrente: {(x,5),(y,3)} if (x> 3) x = x+1; else x = x-1; la condizione va Continua »