Semantica dei linguaggi di programmazione
|
|
- Matteo Pisani
- 5 anni fa
- Visualizzazioni
Transcript
1 Corso di Informatica Generale II u.d. Semantica dei linguaggi di programmazione Mauro Brunato 17 maggio 2006
2 Indice 1 Definizioni Proposizioni Regole di deduzione Sostituzioni lessicali Programmi La semantica Cosa significa che un programma è corretto? Stato di un calcolatore Trasformazione di stati Asserzioni sugli stati Un esempio: calcolo del MCD Scomposizione di un programma in strutture annidate Gli assiomi Correttezza delle istruzioni e dei costrutti fondamentali L istruzione vuota L istruzione di assegnazione Il costrutto sequenziale Il costrutto condizionale Il costrutto iterativo Composizione dei costrutti di base Esempi Divisione intera Calcolo del MCD
3 Sommario Questa dispensa prsenta una traccia delle lezioni relative alla correttezza e alla semantica dei linguaggi di programmazione. Non è necessariamente comprensibile da chi non ha seguito le lezioni. Il documento è soggetto a variazioni e aggiustamenti durante il corso del semestre di insegnamento; l ultima versione piò sempre essere recuperata dalla sezione risorse della pagina del corso di Informatica Generale II u.d. per Matematica sul sito brunato/info2/ Per distinguere le versioni è sufficiente confrontare la data riportata sotto il titolo con quella scritta nell elenco delle risorse (non è dunque necessario scaricare il file tutte le volte).
4 Capitolo 1 Definizioni 1.1 Proposizioni Salvo indicazione contraria, le lettere P, Q, R indicheranno proposizioni, ovvero asserzioni 1 sui valori delle variabili in un dato punto del programma. Alcune proposizioni, dall ovvio significato, sono le seguenti: x = 3 x = 3 y = 5 xy < 0 a b c 0 x = 2 1 < c 3 3x 2 2x + 1 > n 1 = 1 VERO FALSO Si presti attenzione alle proposizioni nell ultima riga. VERO è la proposizione sempre vera, così pure 1 = 1, che quindi va considerata equivalente. Ovviamente, FALSO è la proposizione sempre falsa. A seconda del contesto, le proposizioni potranno essere scritte in stile matematico standard, oppure (ad esempio se appaiono come condizioni di un costrutto) in notazione C. Le asserzioni sui valori delle variabili saranno riportate all interno del codice, protette dai simboli di commento. Per esempio, le righe /* a 0 */ b = 2 * a; /* b a */ contengono un istruzione C preceduta e seguita da un asserzione. Per risparmiare spazio, è possibile scrivere il tutto in una sola riga: /*a 0*/ b=2*a; /*b a*/ Si noti che normalmente le istruzioni C vengono scritte in caratteri equispaziati, mentre le proposizioni sono in stile matematico 2. 1 Una proposizione è un oggetto sintattico costruito a partire da espressioni, connettivi logici e quantificatori; il termine asserzione implica l uso della proposizione all interno del modello che associa i valori delle variabili C corrispondenti per nome alle variabili libere della proposizione. Nel seguito tralasceremo questa definizione, che è volutamente oscura... 2 Lasciamo ai corsi di logica superiore la discussione se la variabile a del programma e la variabile a della proposizione nell esempio sopra vadano considerate uno stesso oggetto o no (si veda anche la nota precedente). 2
5 1.2 Regole di deduzione La regola Pippo Pluto Paperino significa Se Pippo e Pluto sono vere, allora anche Paperino è vera (dove Pippo, Pluto e Paperino sono tre proposizioni). Nel seguito, considereremo valide tutti gli assiomi della logica e dell aritmetica, ad esempio: P P Q Q 1.3 Sostituzioni lessicali P Q P Q Data la proposizione P, la proposizione Px y è ottenuta da P sostituendo a ogni occorrenza della variabile x in P come variabile libera (cioè non quantificata) l espressione y. Ad esempio, ( ) y a < 7 y a x 2 = z equivale a y < 7 y y x 2 = z. a Si noti come la variabile a sia stata sostituita da y in tutte le sue occorrenze. Viceversa, ( ) y a < 7 ( a y a) x 2 = z equivale a y < 7 ( a y a) x 2 = z. a Infatti, a compare quantificata nella seconda clausola (in sostanza si tratta di un altra a). Per evitare equivoci, converrà sempre dare nomi diversi alle variabili, libere o quantificate, di una proposizione. 1.4 Programmi Nel seguito chiameremo programma una sequenza di istruzioni e strutture di controllo sprovvista di operazioni di ingresso/uscita e di dichiarazioni di variabili. Supporremo cioè che le variabili siano già state dichiarate e inizializzate con i valori opportuni e concentreremo la nostra attenzione solamente sulle istruzioni che eseguono i calcoli. 3
6 Capitolo 2 La semantica Un tipico esercizio da esame consiste nello scrivere un programma che svolga un determinato compito, in genere il calcolo di una funzione intera o reale. La speranza di ottenere un voto pieno allo scritto è legata alla correttezza del programma scritto. La valutazione della correttezza viene effettuata dai docenti in modo euristico (basato cioè sull esperienza). Supponiamo invece di scrivere il programma che controlla alcune funzioni vitali di un installazione potenzialmente pericolosa, oppure l esito di un esperimento estremamente dispendioso come una missione spaziale: il committente gradirà non soltanto una verifica euristica di correttezza del programma, ma un assicurazione il più formale possibile che il programma non può fallire Cosa significa che un programma è corretto? È possibile dimostrare la correttezza di un programma? Per farlo, abbiamo bisogno di due strumenti: un modo per dichiarare formalmente che un programma è corretto, ovvero una notazione formale che ci permetta di presentare l affermazione di correttezza di un programma come enunciato di un teorema; delle regole (anzi, degli assiomi) che permettano di dimostrare questo teorema Stato di un calcolatore L esecuzione di un programma consiste nella lettura e nella scrittura di valori all interno delle variabili. Definiamo stato del calcolatore l associazione di un particolare valore a ciascuna variabile del programma. In altre parole, lo stato di un calcolatore in un particolare momento dell esecuzione del suo programma è descritto dai valori contenuti in tutte le variabili del programma. In particolare, considereremo diversi due stati che differiscono almeno per il valore assegnato ad una variabile. 1 Si è mai sentito che una centrale nucleare avesse problemi nelle sue procedure di sicurezza, oppure che una missione spaziale fallisse per un problema software? (OK, meglio cambiare discorso...) 4
7 2.1.2 Trasformazione di stati Un istruzione, ad esempio di assegnazione, può essere vista come una funzione che mappa stati in stati. Per esempio, l istruzione x = 2; trasforma lo stato precedente, in cui la variabile x poteva avere un qualsiasi valore, in uno stato in cui tutte le altre variabili restano immutate, ma x vale 2 indipendentemente dal valore avuto in precedenza. Un programma, in quanto sequenza di istruzioni, esegue una sequenza di trasformazioni sullo stato iniziale. Quando diciamo che un programma risolve un certo problema, intendiamo dire: Se lo stato iniziale della macchina contiene una descrizione del problema, allora lo stato finale (quello successivo all ultima istruzione del programma) ne descrive la soluzione corrispondente Asserzioni sugli stati Supponiamo che un programma A esegua delle operazioni atte a calcolare una funzione dello stato iniziale. Allora con la scrittura /* P */ A /* Q */ intendiamo, in modo del tutto equivalente, una di queste affermazioni. Se lo stato iniziale del programma A soddisfa l asserzione P, allora lo stato finale soddisfa l asserzione Q. L asserzione P afferma che lo stato iniziale è una descrizione dei dati del problema che A risolve, e Q afferma che lo stato finale è una descrizione della soluzione. Le asserzioni P e Q sono dette rispettivamente precondizione e postcondizione del programma. La coppia formata dalle due asserzioni è detta la specifica del programma. Questa definizione corrisponde all idea intuitiva che abbiamo delle specifiche di un programma, che generalmente comprendono una descrizione delle ipotesi a priori nella quali il programma dovrà operare (la precondizione) e una descrizione dei risultati che il programma dovrà fornire (postcondizione) a patto che le condizioni iniziali siano verificate (quest ultimo corsivo è il punto focale: nessuno può garantire risultati corretti in presenza di dati errati). La scrittura /*P */ A /*Q*/ è detta tripla di Hoare, dal nome del matematico che ha proposto questo tipo di formalizzazione nei primi anni Un esempio: calcolo del MCD Consideriamo la seguente tripla di Hoare: 5
8 /* a = A b = B a > 0 b 0 */ while ( b!= 0 ) { c = a % b; a = b; b = c; } /* a = MCD(A, B) */ Possiamo considerarla l enunciato di un teorema, con il seguente significato approssimativo: Siano A e B i valori iniziali delle variabili a e b, rispettivamente. Si supponga che questi valori siano positivi. Allora, dopo l esecuzione del codice, la variabile a conterrà il MCD dei valori iniziali. Si noti che nulla impedisce di far comparire nelle proposizioni delle variabili che non esistono nel programma. Le ipotesi della formulazione verbale coincidono con la precondizione del programma, mentre la tesi è una riformulazione della conclusione. 2.2 Scomposizione di un programma in strutture annidate Ora che sappiamo come formulare un asserzione di correttezza di un determinato programma, dobbiamo dedicarci alla sua dimostrazione. Il primo passo è la constatazione che un programma C può essere definito induttivamente come una combinazione dei seguenti elementi: 1. L istruzione vuota (che non fa nulla e che non modifica lo stato del calcolatore); pur non avendo alcuna utilità pratica, sarà comoda per il seguito, e corrisponde alla funzione identità nello spazio delle trasformazioni degli stati; 2. Istruzioni semplici di assegnazione, nella forma x = E; 3. Composizione sequenziale di due istruzioni semplici: {I 1 I 2 } 4. Costrutto condizionale: if ( C ) I 1 else I 2 5. Costrutto iterativo: while ( C ) I dove E e C sono espressioni, mentre I, I 1 e I 2 sono istruzioni. È facile rendersi contro come questi costrutti permettano di scrivere qualunque programma. In particolare: La composizione sequenziale di più di due istruzioni può essere scomposta come composizione di composizioni: {I 1 I 2 I 3 } equivale a {{I 1 I 2 } I 3 } La condizione if mancante del ramo else equivale a mettere dopo else un istruzione vuota; Il ciclo for è semplicemente una riformulazione del ciclo while ; Il ciclo do... while è esprimibile come combinazione di un if e un while. 6
9 Capitolo 3 Gli assiomi Vogliamo dimostrare teoremi che riguardano un nuovo tipo di oggetti. Abbiamo dunque bisogno di una serie di assiomi. 3.1 Correttezza delle istruzioni e dei costrutti fondamentali Definiamo ora gli assiomi che riguardano i blocchi costitutivi individuati in L istruzione vuota Quando possiamo asserire che un istruzione vuota è corretta rispetto a una precondizione P e a una postcondizione Q? Visto che l istruzione vuota non modifica lo stato della macchina, basta che Q sia vera negli stati in cui è vera P, ovvero se e soltanto se P implica Q: P Q /*P */ /*Q*/ L istruzione di assegnazione Supponiamo di voler dimostrare la seguente tripla di Hoare: /* P */ x = E; /* Q */ Chiaramente, la tripla è di qualche interesse se Q parla anche di x. Quali asserzioni sul valore di x sono vere nello stato finale? Visto che nello stato finale x vale E, Q è vera soltanto se quello che asserisce a proposito di x era vero, nello stato precedente l assegnazione, a proposito di E. Altrimenti detto, l asserzione Q è vera dopo l assegnazione se l asserzione Q E x (che dice le stesse cose di Q, ma che parla di E al posto di x) era vera prima: P Q E x /*P */ x=e; /*Q*/ 7
10 Esempi La seguente tripla è corretta: /* a > 0 */ b = 2 * a; /* b > a */ Notiamo che (b > a) 2a b equivale a 2a > a, quindi per dimostrare la correttezza è sufficiente dimostrare che a > 0 2a > a, il che è senz altro vero sommando a da entrambi i lati della premessa. Viceversa, la tripla non è corretta. Infatti, l implicazione è falsificata per valori negativi di b Il costrutto sequenziale /* a > 0 */ a = 2 * b; /* a > b */ a > 0 2b > b Data la tripla di Hoare /*P */ {I 1 I 2 } /*Q*/, individuiamo un asserzione R che descriva lo stato successivo all esecuzione della sola I 1. Tale asserzione dovrà fungere da postcondizione per I 1 (con precondizione P ) e da precondizione per I 2 (con postcondizione Q). Ne deriva la seguente regola: Esempi La seguente tripla è corretta: /*P */ I1 /*R*/ /*R*/ I 2 /*Q*/ /*P */ {I 1 I 2 } /*Q*/ /* b > 0 c < 0 */ { a = b; b = c; } /* a > 0 b < 0 */ Infatti, è sufficiente dimostrare separatamente: /*b > 0 c < 0*/ a=b; /*a > 0 c < 0*/, /*a > 0 c < 0*/ b=c; /*a > 0 b < 0*/ Il costrutto condizionale Data la tripla di Hoare /*P */ if (C) I 1 else I 2 /*Q*/, ricordiamo che l istruzione I 1 viene eseguita solo se la condizione C è verificata, mentre l istruzione I 2 viene eseguita soltanto se è vera la condizione C. Dunque, se P è precondizione al costrutto (cioè è vera per ipotesi) segue che lo stato che precede l esecuzione di I 1 verifica la condizione P C; lo stato che precede l esecuzione di I 2 verifica la precondizione P C. In entrambi i casi, lo stato finale deve verificare la postcondizione Q. La regola è dunque: 8
11 /*P C*/ I 1 /*Q*/ /*P C*/ I 2 /*Q*/ /*P */ if (C) I 1 else I 2 /*Q*/ Il costrutto iterativo Si tratta del caso più complesso: mentre il costrutto condizionale prevede una sola possibile diramazione, il costrutto iterativo deve considerare una sequenza di passaggi attorno a una stessa istruzione. Data la tripla di Hoare /*P */ while (C) I /*Q*/, possiamo subito dire quanto segue: se per caso la condizione C è immediatamente falsa, allora il ciclo while viene saltato e dev essere immediatamente vera la postcondizione Q: P C Q. Se invece C è vera, la precondizione all istruzione I è P C (P è vera a priori, C è vera perché siamo entrati nel ciclo). Chiamiamo R una possibile postcondizione di I, avremo la seguente tripla di Hoare: /*P C*/ I /*R*/. Se R è vera nello stato finale di I, e la condizione C è ancora verificata, allora I verrà rieseguita, e lo stato precedente la riesecuzione soddisfa la precondizione R C. Supponiamo di scegliere la proposizione R in modo che sia vera al termine di ogni iterazione: /*R C*/ I /*R*/. Il ciclo termina quando, dopo un esecuzione di I, la condizione C non è più verificata. Dunque, se R è vera e C non lo è, dev essere verificata la postcondizione Q: R C Q. Abbiamo tenuto conto di tutte le possibili diramazioni del ciclo. Riassumendo, ecco la regola complessiva. P C Q /*P C*/ I /*R*/ /*R C*/ I /*R*/ R C Q /*P */ while (C) I /*Q*/ 3.2 Composizione dei costrutti di base /* a = A b = B a > 0 b 0 */ while ( b!= 0 ) { c = a % b; /* (c = 0 b = MCD(A, B)) (c 0 MCD(b, c) = MCD(A, B)) */ a = b; /* (c = 0 a = MCD(A, B)) (c 0 MCD(a, c) = MCD(A, B)) */ b = c; /* (b = 0 a = MCD(A, B)) (b 0 MCD(a, b) = MCD(A, B)) */ } /* a = MCD(A, B) */ 9
12 Capitolo 4 Esempi 4.1 Divisione intera Siano a, b > 0 due numeri naturali. Il quoziente q e il resto r della divisione intera di a per b sono univocamente definiti dalle seguenti proprietà: a = qb + r, 0 r < b. Un metodo del tutto lecito, ancorché noioso e inutilmente lungo, per calcolare il quoziente e il resto consiste nel sottrarre ripetutamente b da a, finché quello che resta di a non è minore di b. Ecco il codice, già contornato dalle condizioni: 4.2 Calcolo del MCD /* a > 0 b > 0 */ q = 0; r = a; while ( r >= b ) { r = r - b; q = q + 1; } /* a = qb + r 0 r < b */ 10
Verifica di programmi
Verifica di programmi Informalmente, un programma è corretto se l output prodotto è quello atteso rispetto all input. La correttezza dei programmi può essere espressa mediante formule per la correttezza
Dettagli02 - Logica delle dimostrazioni
Università degli Studi di Palermo Facoltà di Economia Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 0 - Logica delle dimostrazioni Anno Accademico 015/016
Dettagli04 - Logica delle dimostrazioni
Università degli Studi di Palermo Facoltà di Economia CdS Sviluppo Economico e Cooperazione Internazionale Appunti del corso di Matematica 04 - Logica delle dimostrazioni Anno Accademico 013/014 D. Provenzano,
DettagliRagionamento formalei. Ragionamento formale
Ragionamento formale La necessità e l importanza di comprendere le basi del ragionamento formale, utilizzato in matematica per dimostrare teoremi all interno di teorie, è in generale un argomento piuttosto
DettagliINTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14
INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2013/14 INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco:
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 13 Comando Iterativo Sequenze (array) ed Aggiornamento Selettivo pag. 1 Regole di Inferenza per Triple di Hoare: Comando Iterativo Semantica informale del Comando Iterativo
DettagliLo sviluppo di un semplice programma e la dimostrazione della sua correttezza
Il principio di induzione Consideriamo inizialmente solo il principio di induzione per i numeri non-negativi, detti anche numeri naturali. Sia P una proprietà (espressa da una frase o una formula che contiene
Dettagli9 Calcolo dei sequenti LC p
9 Calcolo dei sequenti LC p In questa sezione mostriamo un metodo più elegante, semplice e soprattutto AUTOMATICO per mostrare se una proposizione è valida o meno e soddisfacibile o meno. Tale metodo è
DettagliProblemi, algoritmi, calcolatore
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione
DettagliIl concetto di calcolatore e di algoritmo
Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica
DettagliRagionamenti e metodi di dimostrazione. Liceo Scientifico Statale S. Cannizzaro Prof.re E. Modica
Ragionamenti e metodi di dimostrazione Liceo Scientifico Statale S. Cannizzaro Prof.re E. Modica Proposizioni Si definisce proposizione una frase alla quale è possibile attribuire uno e un solo valore
DettagliAlgoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile
Algoritmi Andrea Passerini passerini@dsi.unifi.it Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Elaboratore Un elaboratore o computer è una macchina digitale, elettronica,
DettagliIntroduzione alla Matematica per le Scienze Sociali - parte II
Introduzione alla Matematica per le Scienze Sociali - parte II Lucrezia Fanti Istituto Nazionale per l Analisi delle Politiche Pubbliche (INAPP) lucrezia.fanti@uniroma1.it Lucrezia Fanti Intro Matematica
DettagliIndice. NUMERI REALI Mauro Saita Versione provvisoria. Ottobre 2017.
NUMERI REALI Mauro Saita e-mail: maurosaita@tiscalinet.it Versione provvisoria. Ottobre 2017. Indice 1 Numeri reali 2 1.1 Il lato e la diagonale del quadrato sono incommensurabili: la scoperta dei numeri
DettagliLogica proposizionale
Fondamenti di Informatica per la Sicurezza a.a. 2008/09 Logica proposizionale Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università degli
DettagliPROGRAMMAZIONE: La selezione
PROGRAMMAZIONE: La selezione Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l altra, riga per
DettagliLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella
LA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico
DettagliLogica per la Programmazione
Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 8 Modelli, Formule Valide, Conseguenza Logica Proof Systems Regole di inferenza per Calcolo Proposizionale
DettagliLinguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl
Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare
DettagliRiassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.
Capitolo 2 Campi 2.1 Introduzione Studiamo ora i campi. Essi sono una generalizzazione dell insieme R dei numeri reali con le operazioni di addizione e di moltiplicazione. Nel secondo paragrafo ricordiamo
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 13 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data una Tripla
DettagliLezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione
Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione
Dettaglimarina/did/mdis03/ marina/did/mdis03/ marina/did/mdis03/
Matematica Discreta (elementi) E-O CdL Informatica Elementi di logica formale 8 ottobre 2003 Marina Cazzola (marina@matapp.unimib.it) Dipartimento di Matematica e Applicazioni Università di Milano Bicocca
DettagliCalcolare x n = x x x (n volte)
Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile
DettagliSTRUTTURE DI CONTROLLO DEL C++
STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto
DettagliPROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
DettagliSistemi Deduttivi. Marco Piastra. Intelligenza Artificiale I. Intelligenza Artificiale I - A.A Sistemi Deduttivi[1]
Intelligenza Artificiale I Sistemi Deduttivi Marco Piastra Intelligenza Artificiale I - A.A. 2010- Sistemi Deduttivi[1] Calcolo simbolico? Una fbf è conseguenza logica di un insieme di fbf sse qualsiasi
DettagliNOZIONI DI LOGICA PROPOSIZIONI.
NOZIONI DI LOGICA PROPOSIZIONI. Una proposizione è un affermazione che è vera o falsa, ma non può essere contemporaneamente vera e falsa. ESEMPI Sono proposizioni : 7 è maggiore di 2 Londra è la capitale
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 12 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data la tripla di
DettagliLinguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale
LOGICA DI HOARE INTRODUZIONE Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: es. grammatica in BNF Semantica spesso data in modo informale di stile operazionale
DettagliPROGRAMMAZIONE: Le strutture di controllo
PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l
DettagliSemantiche dei linguaggi di programmazione
Semantiche dei linguaggi di programmazione By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents La semantica del linguaggio... 1 Tipi di semantica... 1 Esempio di semantica operazionale...
DettagliLogica per la Programmazione
Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 7 Formule Valide, Conseguenza Logica Proof System per la Logica del Primo Ordine Leggi per i Quantificatori
DettagliVerità, tautologia e implicazione logica
Condizioni di verità delle frasi di LP erità, tautologia e implicazione logica Sandro Zucchi Passiamo ora alla terza parte del compito di descrivere il linguaggio LP: Come vengono calcolate le condizioni
DettagliCosa si intende con stato
Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando
DettagliSe con e indichiamo l elemento neutro di in G, e deve appartenere ad H.
Abbiamo visto a lezione che una sottoalgebra B di un algebra A è identificabile con l immagine di un omomorfismo iniettivo a valori in A. Una sottoalgebra B di A è in particolare un sottoinsieme non vuoto
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 12 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione
DettagliIstruzioni Condizionali
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 10 Istruzioni Condizionali Carla Limongelli Novembre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Istruzioni condizionali 1 Contenuti
DettagliCAPITOLO 1. I numeri naturali 0, 1, 2, 3,...
CAPITOLO 1 I numeri naturali I numeri naturali sono quelli che usiamo per contare: 0, 1,, 3,... e dei quali conosciamo alcune proprietà. Ad esempio sappiamo sommare e moltiplicare due numeri naturali;
DettagliIntelligenza Artificiale. Logica proposizionale: calcolo simbolico
Intelligenza Artificiale Logica proposizionale: calcolo simbolico Marco Piastra Logica formale (Parte 2) - 1 Parte 2 Calcolo logico Assiomi Derivazioni Derivazioni e conseguenza logica Completezza Logica
DettagliUn po di logica. Christian Ferrari. Laboratorio di matematica
Un po di logica Christian Ferrari Laboratorio di matematica 1 Introduzione La logica è la disciplina che studia le condizioni di correttezza del ragionamento. Il suo scopo è quindi quello di elaborare
DettagliLogica: materiale didattico
Logica: materiale didattico M. Cialdea Mayer. Logica (dispense): http://cialdea.dia.uniroma3.it/teaching/logica/materiale/dispense-logica.pdf Logica dei Predicati (Logica per l Informatica) 01: Logica
DettagliLogica proposizionale
Logica proposizionale Proposizione: frase compiuta che è sempre o vera o falsa. Connettivi Posti in ordine di precedenza: not, and, or, implica, doppia implicazione Sintassi Le proposizioni sono costituite
DettagliIntroduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software
Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 6 Logica del Primo Ordine Motivazioni Sintassi Interpretazioni Formalizzazione pag. 1 Limiti del Calcolo Proposizionale Nella formalizzazione di enunciati dichiarativi,
DettagliLe strutture di controllo
INFORMATICA B Ingegneria Elettrica Le strutture di controllo Selezione un esempio introduttivo Si disegni il diagramma di flusso di un algoritmo che chiede all utente un valore intero e visualizza il suo
DettagliLOGICA DEL PRIMO ORDINE: PROOF SYSTEM. Corso di Logica per la Programmazione A.A. 2013/14 Andrea Corradini
LOGICA DEL PRIMO ORDINE: PROOF SYSTEM Corso di Logica per la Programmazione A.A. 2013/14 Andrea Corradini LOGICA DEL PRIMO ORDINE: RIASSUNTO Sintassi: grammatica libera da contesto (BNF), parametrica rispetto
DettagliLinguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
DettagliPaolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova
Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi
DettagliPaolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09
Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe
DettagliLOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)
LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) DISPENSA N. 4 Sommario. Dimostriamo il Teorema di Completezza per il Calcolo dei Predicati del I ordine. 1. Teorema di Completezza Dimostriamo il Teorema
DettagliMETODI MATEMATICI PER L INFORMATICA
METODI MATEMATICI PER L INFORMATICA ANNO ACCADEMICO 2011/2012 Sommario. Sintassi e semantica della Logica dei predicati. Proprietà fondamentali dei quantificatori. Strutture, soddisfacibilità e verità
DettagliBREVE CENNO DI LOGICA CLASSICA La logica può essere definita come la scienza che studia le condizioni in base alle quali un ragionamento risulta
BREVE CENNO DI LOGICA CLASSICA La logica può essere definita come la scienza che studia le condizioni in base alle quali un ragionamento risulta corretto e vero. Un ragionamento è corretto se segue uno
DettagliLogica proposizionale
Definire un linguaggio formale Logica proposizionale Sandro Zucchi 2013-14 Definiamo un linguaggio formale LP (che appartiene a una classe di linguaggi detti linguaggi della logica proposizionale) Per
DettagliIndice. Aritmetica modulare. Mauro Saita. Versione provvisoria. Febbraio
modulare e-mail: maurosaita@tiscalinetit Versione provvisoria Febbraio 2018 1 Indice 1 modulare Classe di resti 2 11 Le proprietà delle congruenze 4 12 Le operazioni in Z n : l addizione e la moltiplicazione
DettagliElementi di Informatica A. A. 2016/2017
Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Algebra di Boole Elementi di
DettagliRiassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.
Capitolo 2 Campi 2.1 Introduzione Studiamo ora i campi. Essi sono una generalizzazione dell insieme R dei numeri reali con le operazioni di addizione e di moltiplicazione. Nel secondo paragrafo ricordiamo
DettagliProf. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI
Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI IF Ogni linguaggio di programmazione presenta almeno una struttura di controllo decisionale. La sintassi del linguaggio C è la seguente. if ()
Dettaglinota 1. Aritmetica sui numeri interi.
nota 1. Aritmetica sui numeri interi. Numeri interi. Numeri primi. L algoritmo di Euclide per il calcolo del mcd. Equazioni diofantee di primo grado. Congruenze. Il Teorema Cinese del Resto. 1 0. Numeri
DettagliIstruzioni di controllo: SEQUENZA
Istruzioni di controllo: SEQUENZA Negli esempi visti in precedenza gli algoritmi sono stati descritti come sequenze di passi elementari del tipo Passo 1. azione 1 Passo 2. azione 2... Abbiamo utilizzato
DettagliEsercizio 2. Spiegare perché è falsa la seguente affermazione: Se n è un numero negativo, allora anche n + 3 è negativo.
Sapienza Università di Roma - Facoltà I3S Corso di Laurea in Statistica Economia Finanza e Assicurazioni Corso di Laurea in Statistica Economia e Società Corso di Laurea in Statistica gestionale Matematica
DettagliFondamenti di Informatica A. A. 2018/19
Fondamenti di Informatica Prof. Marco Lombardi A. A. 2018/19 AlgoBuild: Strutture Iterative e Selettive OUTLINE Blocco condizionale (Struttura selettiva IF - IF/ELSE) Esempi Cicli a condizione iniziale
Dettagli1 Cenni di logica matematica
1 Cenni di logica matematica 1 1 Cenni di logica matematica Una delle discipline chiave della matematica (e non solo, visto che è fondamentale anche per comprendere la lingua parlata) è la logica matematica,
DettagliAnalisi strutturata 1
Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata
DettagliAltrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)
Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica
DettagliMATEMATICA DI BASE 1
MATEMATICA DI BASE 1 Francesco Oliveri Dipartimento di Matematica, Università di Messina 30 Agosto 2010 MATEMATICA DI BASE MODULO 1 Insiemi Logica Numeri Insiemi Intuitivamente, con il termine insieme
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 6 Logica del Primo Ordine Motivazioni Sintassi Interpretazioni Formalizzazione A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a. 2015/16 pag.
DettagliCaratteristiche di un calcolatore elettronico
Prof. Emanuele Papotto Caratteristiche di un calcolatore elettronico È una macchina, costituita da circuiti elettronici digitali e da componenti elettromeccaniche, ottiche e magnetiche. È velocissimo,
DettagliMaiuscole e minuscole
Maiuscole e minuscole Abilità interessate Distinguere tra processi induttivi e processi deduttivi. Comprendere il ruolo e le caratteristiche di un sistema assiomatico. Riconoscere aspetti sintattici e
DettagliTRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13
TRIPLE DI HOARE: ESEMPI ED ESERCIZI Corso di Logica per la Programmazione A.A. 2012/13 RICORDIAMO LA REGOLA PER IL COMANDO ITERATIVO P Inv def(e) Inv E Q Inv t 0 {Inv E} C {Inv def(e)} {P} while E do C
DettagliLinguaggio C Strutture di controllo
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Strutture di controllo 2001 Pier Luca Montessoro - Davide
Dettagli4 La Logica come base di ogni scienza. 5 Alla ricerca della forma logica. logica
4 La Logica come base di ogni scienza La Logica è alla base di ogni scienza (o teoria) in quanto è fondamento di ogni scienza non tanto per i contenuti specifici ma per la loro articolazione deduttiva.
DettagliScopo del progetto è la costruzione di un compilatore per il linguaggio descritto qui di seguito.
Corso di Linguaggi e Traduttori Anno Accademico 2017 2018 Prof. Giovanni Pighizzini Progetto d esame Scopo del progetto è la costruzione di un compilatore per il linguaggio descritto qui di seguito. Variabili
DettagliProva scritta di Matematica Discreta e Logica del giorno 3 luglio 2017 Soluzione degli esercizi FILA D
ˆ ˆ ƒˆ ˆ ƒ ˆ ˆ Œ ˆ.. 2016-2017 Prova scritta di Matematica Discreta e Logica del giorno 3 luglio 2017 Soluzione degli esercizi FILA D Esercizio 1 Nell insieme delle coppie ordinate di numeri naturali,
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 2 Dimostrazione di tautologie Proof System pag. 1 Un Problema di Deduzione Logica [da un test di ingresso] Tre amici, Antonio, Bruno e Corrado, sono incerti se andare
DettagliIstruzioni di Controllo in C. Emilio Di Giacomo
Istruzioni di Controllo in C Emilio Di Giacomo Limite delle istruzioni viste L insieme delle istruzioni che abbiamo visto fino ad ora consiste per lo più di: dichiarazioni e assegnazioni di variabili espressioni
DettagliLOGICA PER LA PROGRAMMAZIONE (A,B) - a.a SOLUZIONI PROPOSTE SECONDO APPELLO - 7/02/2012
LOGICA PER LA PROGRAMMAZIONE (A,B) - a.a. 2011-2012 SOLUZIONI PROPOSE SECONDO APPELLO - 7/02/2012 ESERCIZIO 1 Si provi che la seguente proposizione è una tautologia: (P S Q R) (S R) (Q P ) 1 (P S Q R)
DettagliRagionamento Automatico Richiami di tableaux proposizionali
Richiami di logica e deduzione proposizionale Ragionamento Automatico Richiami di tableaux proposizionali (L. Carlucci Aiello & F. Pirri: SLL, Cap. 5) La logica proposizionale I tableau proposizionali
DettagliTesting, correttezza e invarianti
Testing, correttezza e invarianti Capitolo 3.2 dispensa Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Harvard Mark II
DettagliLogica per la Programmazione
Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 1 Calcolo Proposizionale: sintassi e semantica Tautologie Esempi di Formalizzazione di Enunciati pag.
Dettagli1 IL LINGUAGGIO MATEMATICO
1 IL LINGUAGGIO MATEMATICO Il linguaggio matematico moderno è basato su due concetti fondamentali: la teoria degli insiemi e la logica delle proposizioni. La teoria degli insiemi ci assicura che gli oggetti
DettagliLOGICA MATEMATICA PER INFORMATICA
LOGICA MATEMATICA PER INFORMATICA A.A. 10/11, DISPENSA N. 2 Sommario. Assiomi dell identità, modelli normali. Forma normale negativa, forma normale prenessa, forma normale di Skolem. 1. L identità Esistono
DettagliELEMENTI DI LOGICA MATEMATICA LEZIONE VII
ELEMENTI DI LOGICA MATEMATICA LEZIONE VII MAURO DI NASSO In questa lezione introdurremo i numeri naturali, che sono forse gli oggetti matematici più importanti della matematica. Poiché stiamo lavorando
DettagliLinguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»
Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite
DettagliAlgoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo
1 Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione dell informazione Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo
Dettagli1. equivalenze e implicazioni logiche. Esercizio 1.2. Trovare le implicazioni che legano i seguenti enunciati (x, y R):
. equivalenze e implicazioni logiche Esercizio.. Trovare le implicazioni che legano i seguenti enunciati (x, y R): () x < y, () x = y, () x y, () x y, () (x y) > 0. Osserviamo subito che (x y) > 0 equivale
DettagliProgrammazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso
Programmazione I Fondamenti di programmazione ( Lezione I ) Problemi, Algoritmi, Diagrammi di flusso Fabrizio Messina messina@dmi.unict.it www.dmi.unict.it/~messina Algoritmo Dato un problema, un algoritmo
DettagliFondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio
Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi
DettagliLa matematica non è un opinione, lo è oppure...?
La matematica non è un opinione, lo è oppure...? Giulio Giusteri Dipartimento di Matematica e Fisica Università Cattolica del Sacro Cuore Brescia 26 Febbraio 2010 Vecchie conoscenze Dedurre... dedurre...
DettagliISTRUZIONI ISTRUZIONI SEMPLICI
ISTRUZIONI istruzioni azioni modifica permanente dello stato interno strutture di controllo ::= ::= ::=
DettagliIntroduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
DettagliALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI
ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI 1. GLI ASSIOMI DI PEANO Come puro esercizio di stile voglio offrire una derivazione delle proprietà elementari dei numeri naturali e delle operazioni
DettagliCorrettezza (prima parte)
Fondamenti di informatica Oggetti e Java (prima parte) Capitolo 16 ottobre 2015 1 Contenuti Introduzione alla correttezza dei programmi specifica di un programma correttezza di un programma verifica di
Dettagli