Introduzione. Semantica operazionale dei linguaggi di Programmazione. Semantica di un linguaggio formale. Come attribuire la semantica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione. Semantica operazionale dei linguaggi di Programmazione. Semantica di un linguaggio formale. Come attribuire la semantica"

Transcript

1 Introduzione Semantica operazionale dei linguaggi di Programmazione Sistemi di transizioni Rosario Culmone, Luca Tesei Presenteremo una tecnica per definire in maniera formale la semantica di un linguaggio di programmazione Formalismo: sistemi di transizione basati sugli alberi di derivazione dei programmi Linguaggio di riferimento: una versione semplificata di Java Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 1/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 2/78 Semantica di un linguaggio formale È il significato attribuito ad ogni stringa Le stringhe di un linguaggio di per sé non hanno un particolare significato L attribuzione del significato è un passo successivo e indipendente dalla definizione del linguaggio Ad uno stesso linguaggio possono essere attribuite più semantiche Come attribuire la semantica La scelta del metodo è fondamentale: A parole, con una prosa, informalmente Semiformalmente utilizzando la prosa con l aiuto di alcuni strumenti formali In maniera rigorosa e formale, basandosi su una caratterizzazione formale della sintassi Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 3/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 4/78

2 Linguaggi di programmazione Attualmente la caratterizzazione sintattica dei linguaggi di programmazione è quasi sempre formale (Grammatica) Su questa base si poggerebbe in maniera naturale una definizione rigorosa della semantica Nei manuali invece la semantica risulta sempre definita in maniera informale Ciò a scapito della chiarezza, della precisione della definizione e della possibilità di ragionare matematicamente sulla correttezza dei programmi Strumenti In questa parte descriveremo un modo per caratterizzare formalmente la semantica di un certo linguaggio Lo strumento che useremo sono i Sistemi di Transizioni Obiettivo finale: dare un sistema di transizioni in grado di legare ogni programma ben formato di un linguaggio Java semplificato ad un significato preciso Il significato sarà un certo elemento di un dominio semantico definito formalmente Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 5/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 6/78 Sistemi di transizione Sono oggetti matematici molto versatili Possono modellare il concetto di calcolo Possono rappresentare sistemi di dimostrazione Possono modellare processi, ambienti, sistemi complessi Permettono di dare la semantica operazionale di un linguaggio di programmazione... Sistemi di transizioni Possiamo per il momento considerarli come automi evoluti Esprimono una sequenza di azioni che portano ad un risultato Le azioni sono chiamate transizioni Ogni passo ha una configurazione (stato) di partenza e una di arrivo Le configurazioni (stati) possono essere infinite Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 7/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 8/78

3 Un primo approccio Vediamo un semplice sistema di transizioni che modella il calcolo di una somma semplice Il sistema, date due cifre e un riporto, deve calcolare la loro somma come cifra risultato e relativo riporto Ad esempio: 3 + 5, 0 = 8, 0 (si legge con riporto di 0 è uguale a 8 con riporto di 0 ) Ad esempio: 8 + 7, 1 = 6, 1 (si legge con riporto di 1 è uguale a 6 con riporto di 1 ) Modello del calcolo Possiamo pensare a questo calcolo come a una transizione da una configurazione ad un altra Ad esempio 3 + 5, 0 è una configurazione da cui possiamo fare un passo di calcolo e arrivare nella configurazione 8, 0 Nella configurazione 8, 0 non possiamo fare nessun ulteriore calcolo Una configurazione del genere è detta terminale Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 9/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 10/78 Modello del calcolo Rappresentiamo le configurazioni in questo modo: 3, 5, 0 sta per 3 + 5, 0 8, 0 sta per 8, 0 Configurazioni del tipo 10, 0 o 3, 5, 2 non sono contemplate perché non è possibile nel calcolo che stiamo modellando Da una configurazione contemplata che non è terminale è possibile fare, in generale, zero o più passi di calcolo (il sistema può essere non deterministico) Passi di transizione Un passo di calcolo è modellato come un associazione tra una configurazione e un altra Si scrive così: 3, 7, 1 1, 1 Non tutte le configurazioni sono associate! Ad esempio: 3, 7, 1 2, 1 Se lo fosse il sistema potrebbe fare dei calcoli sbagliati Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 11/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 12/78

4 Passi di transizione La logica del sistema di transizione, il suo modo di funzionare, è data da tutte le associazioni Ogni associazione modella un possibile passo di transizione Le associazioni, in generale, possono essere infinite Nel nostro esempio sono un numero finito Formalizziamo Un sistema di transizioni S è una tripla Γ, T, Γ è l insieme delle configurazioni T Γ è un sottoinsieme di Γ contenente le configurazioni terminali è un insieme di coppie γ, γ di configurazioni e viene detta relazione di transizione L appartenenza della coppia γ, γ alla relazione si indica così: γ γ Tali coppie sono chiamate transizioni Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 13/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 14/78 Definizione delle configurazioni In genere le configurazioni sono tuple (sequenze di elementi delimitate da e ) Ogni elemento della tupla è un oggetto definito matematicamente Ad esempio: insieme, funzione, relazione, elemento di un insieme, stringa, simbolo di alfabeto,... Nei sistemi che definiremo per dare la semantica operazionale dei linguaggi di programmazione gli elementi saranno spesso alberi di derivazione o alberi sintattici Convenzione In questa prima parte sui sistemi di transizioni adotteremo la seguente convenzione: Se S è un simbolo non terminale di una certa grammatica data allora l espressione x S indica che x è una stringa associata ad un albero di derivazione la cui radice è S Nel seguito vedremo invece che x sarà spesso un albero sintattico astratto la cui radice è S Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 15/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 16/78

5 Nell esempio Consideriamo questa semplice grammatica: Cif ::= Definiamo formalmente il sistema dell esempio Diamo un nome al sistema e alle sue componenti: S cr = Γ cr, T cr, cr Γ cr è l insieme di tutte le configurazioni possibili T cr è l insieme delle configurazioni terminali cr è l insieme delle associazioni (transizioni) che esprimono i calcoli possibili Configurazioni Γ cr = { c, c, r r {0, 1} e c, c Cif} { c, r r {0, 1} e c Cif} T cr = { c, r r {0, 1} e c Cif}. Per esprimere tutte le associazioni tra le configurazioni che modellano il calcolo in questo caso semplice possiamo elencarle: Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 17/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 18/78 Transizioni 0, 0, 0 cr 0, 0 0, 0, 1 cr 1, 0 0, 1, 0 cr 1, 0 0, 1, 1 cr 2, 0 0, 2, 0 cr 2, 0 0, 2, 1 cr 3, , 8, 0 cr 7, 1 9, 8, 1 cr 8, 1 9, 9, 0 cr 8, 1 9, 9, 1 cr 9, 1 Un sistema più complesso Consideriamo la seguente grammatica Num ::= Cif Num Cif Cif ::= Una qualsiasi stringa n Num è la rappresentazione di un numero naturale in base dieci Definiamo un sistema di transizioni che prese due stringhe n e n calcoli una stringa m che rappresenta il numero ottenuto sommando n e n Diamo un nome al sistema: S n+ = Γ n+, T n+, n+ Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 19/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 20/78

6 Configurazioni Sicuramente dobbiamo mettere nel sistema delle configurazioni n, n Rappresentano lo stato in cui il sistema si appresta a calcolare la somma tra n e n Potremmo chiamarle configurazioni iniziali Le configurazioni terminali che ci aspettiamo sono i risultati, cioè rappresentazioni (m) di un numero naturale che sarà la somma Sono sufficienti? Strategia Prima di poter rispondere a questa domanda dobbiamo decidere in quale modo fare operare il sistema per ottenere quello che vogliamo Nel sistema precedente il calcolo poteva essere fatto con un solo passo di transizione Un sistema di transizioni in generale può operare facendo diversi passi di transizione in sequenza Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 21/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 22/78 Funzionamento di un sistema È elementare: In ogni momento il sistema si trova o viene posto in una delle sue possibili configurazioni, diciamo γ Il suo compito consiste nel fare un passo di derivazione, se possibile Il sistema determina se c è una configurazione γ associata con γ: cioè vale γ γ Se esiste una (o più) γ di questo tipo allora il sistema compie il passo di derivazione e si porta in γ (una qualsiasi delle possibili, se più di una) Funzionamento del sistema La configurazione γ diventa la configurazione corrente e il sistema si ritrova nella situazione iniziale in cui deve cercare di fare un altro passo di derivazione Continuando questo processo si possono verificare tre situazioni: Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 23/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 24/78

7 Funzionamento del sistema 1. Il sistema raggiunge una configurazione terminale (dalle quali in genere non è possibile nessun passo di derivazione) e conclude quindi il suo compito 2. Il sistema raggiunge una configurazione non terminale dalla quale non è possibile nessun passo di derivazione. In questo caso la configurazione si dice bloccata. Il sistema ha fallito nel portare a termine il suo compito 3. Il sistema continua a fare passi di derivazione all infinito. Anche in questo caso consideriamo il compito fallito Formalizziamo Dato un sistema di transizioni S = Γ, T, Una derivazione in S è una sequenza (eventualmente infinita) di configurazioni γ 0, γ 1,..., γ i 1, γ i,... tale che per ogni k 1 γ k 1 γ k Una derivazione in S è indicata con γ 0 γ 1... γ i Indicheremo con γ γ l esistenza di una derivazione γ 0 γ 1... γ i in cui γ 0 = γ e γ i = γ Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 25/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 26/78 Strategia Una strategia per risovere il problema della somma di numeri naturali si basa sul concetto di derivazione L idea è di svolgere il calcolo per fasi successive seguendo il semplice algoritmo delle addizioni in colonna che abbiamo imparato alle scuole elementari Facciamo un esempio. Supponiamo di voler sommare 54 e 38. Lo stadio iniziale del calcolo lo possiamo rappresentare così: Strategia Il calcolo procede effettuando una somma semplice tra due cifre e calcolando un riporto: poiché 4+8=2 con riporto 1 Il calcolo ha prodotto un risultato parziale, 2, ed un riporto, 1 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 27/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 28/78

8 Modelliamo Possiamo pensare di rappresentare lo stadio iniziale del calcolo, nel sistema di transizioni, con la configurazione 54, 38 Il primo passo di calcolo che abbiamo fatto può essere modellato con una transizione da 54, 38 ad una configurazione intermedia di questo tipo: 5, 3, 2, 1 5 e 3 rappresentano i numeri ancora da sommare, 2 il risultato intermedio e 1 il riporto A questo punto il sistema si trova in questa configurazione e deve continuare con un altro passo di derivazione Strategia Procedendo nell algoritmo di somma in colonna si ottiene: poiché 5+3+1=9 con riporto 0 A questa situazione corrisponde, nel sistema, la transizione da 5, 3, 2, 1 a 0, 0, 92, 0 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 29/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 30/78 Strategia Non essendoci più cifre da sommare, il risultato è 92 A questa situazione corrisponde, nel sistema, la transizione da 0, 0, 92, 0 a 92 Il sistema, in questo caso, ha quindi eseguito la seguente derivazione: 54, 38 n+ 5, 3, 2, 1 n+ 0, 0, 92, 0 n+ 92 Configurazioni Γ n+ T n+ Se vogliamo che il sistema usi questa strategia per calcolare il risultato dobbiamo definire le relative configurazioni possibili: = { n, n n, n Num} { n, n, m, r r {0, 1} e n, n, m Num} {n n Num} = {n n Num} Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 31/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 32/78

9 Attenzione In questo sistema abbiamo un numero infinito di configurazioni possibili In questo sistema abbiamo un numero infinito di associazioni fra configurazioni da definire affinché il calcolo che abbiamo visto possa avvenire fra due numeri qualsiasi Come fare per definire n+, che è infinita, usando una descrizione finita? Ci vengono in aiuto le regole condizionali Regole condizionali Sono regole scritte in questa forma: π 1 π 2... π n γ γ π 1, π 2... π n sono formule dette precondizioni o premesse della regola γ γ è la conclusione della regola La transizione indicata nella conclusione può essere fatta solo se tutte le premesse π i sono verificate Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 33/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 34/78 Regole condizionali In generale una regola contiene, sia nelle premesse che nella conclusione, variabili che possono assumere valori in un certo dominio del discorso definito a priori In realtà quindi una regola rappresenta un insieme, spesso infinito, di regole che si ottengono sostituendo opportunamente le variabili della regola Formalmente dovremmo quindi parlare di schemi di regole Che tipo di formule possono essere le premesse? Premesse Nel seguito saranno di un tipo tra questi: un uguaglianza del tipo x = t, dove x è una variabile e t è una espressione (termine) costruita a partire da costanti, variabili e operatori elementari un predicato del tipo t r el t, dove t, t sono termini e r el è un operatore di relazione elementare una transizione del tipo δ δ, dove δ, δ sono configurazioni e è la relazione di transizione di un sistema di transizioni (può anche essere il sistema che si sta definendo, che sarà quindi ricorsivo) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 35/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 36/78

10 Lettura delle regole Le regole possono essere lette in maniera logica o dichiarativa: la conclusione è vera se e solo se tutte le premesse sono vere Esiste però anche un tipo di lettura operazionale Noi scriveremo sempre regole che possono avere una corretta lettura operazionale Illustriamo questo modo di procedere scrivendo le regole per il sistema S n+ Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 37/78 Scrittura di una regola In generale dobbiamo scrivere un insieme di regole in modo da coprire tutte le possibili configurazioni non terminali In questo modo definiamo cosa fa il sistema in ogni possibile configurazione in cui si può trovare Naturalmente alcune configurazioni potranno essere comunque bloccate se non soddisfano le premesse delle regole Ogni regola gestirà un insieme di configurazioni, mediante l uso di variabili La configurazione γ prima della freccia nella conclusione della regola è il punto di inizio della scrittura Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 38/78 Partiamo con il considerare le configurazioni iniziali { n, n n, n Num} Ci aiuteremo sempre con la definizione della relativa grammatica se nelle configurazioni ci sono stringhe Questo modo di scrivere le regole si chiama guidato dalla sintassi Il caso più semplice di un Num è il caso base della grammatica Cif Consideriamo quindi il caso più semplice di una coppia di Num: { c, c c, c Cif} c Cif, c Cif,? c, c n+? Per evitare di inserire sempre le premesse del tipo c Cif fissiamo delle metavariabili: c, c, c,... stanno per generiche cifre decimali, ovvero elementi della categoria sintattica Cif r, r, r,... stanno per elementi dell insieme {0,1}, i riporti derivanti dalla somma tra due cifre n, n, m,... stanno per generici numeri decimali, ovvero elementi della categoria sintattica Num Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 39/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 40/78

11 π i? c, c n+ γ? Chiamiamo questa regola (i). A questo stadio la lettura operazionale è la seguente: se il sistema S n+ si trova in una configurazione che fa match con c, c allora se si possono rendere vere tutte le premesse π i allora il sistema può effettuare un passo di transizione verso la configurazione γ Lettura operazionale: copertura Le variabili c e c possono essere viste come dei parametri di input Attraverso il pattern matching con la configurazione attuale del sistema, quando la regola verrà usata, esse assumeranno un certo valore Questi valori, tramite il nome delle variabili, possono essere usati nelle premesse per effettuare calcoli e trovare dei valori intermedi legati a nuove variabili Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 41/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 42/78 Lettura operazionale: copertura La struttura della configurazione di arrivo γ (l output ) potrà essere specificata solamente tramite: costanti le variabili di input in γ le variabili inserite nelle premesse per il calcolo dei valori intermedi combinazione di queste con operatori noti c, c n+ γ? Ad esempio rappresenta il seguente calcolo intermedio: > con c = 5, c = 5, c = 1, r = 1 Siccome siamo all inizio del calcolo poniamo il riporto iniziale uguale a 0 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 43/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 44/78

12 c, c n+ γ? La premessa è una transizione del sistema S cr La configurazione di partenza della transizione è costruita con i valori delle variabili di input, che avranno un valore definito quando la regola verrà applicata La configurazione di arrivo contiene le nuove variabili c e r Il loro valore dipende dal comportamento di S cr Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 45/78 Transizioni nelle premesse Se una premessa è una transizione di un sistema di transizioni (anche lo stesso): La configurazione di partenza deve essere completamente specificata con costantim variabili di input, o comunque variabili coperte, e applicazioni di operatori noti a queste La premessa è soddisfatta se il sistema richiamato (si individua dal nome della freccia), posto nella configurazione specificata può effettuare una transizione Nella lettura operazionale il processo può essere visto come una chiamata di funzione/procedura dell altro sistema (ricorsiva se è lo stesso) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 46/78 Transizioni nelle premesse Se il sistema interpellato può effettuare la transizione allora le nuove variabili nella configurazione di arrivo assumeranno un valore e risulteranno coperte Le variabili coperte possono giocare lo stesso ruolo delle variabili di input Nel caso non ricorsivo c è una relazione gerarchica fra il sistema chiamante e quello chiamato Il sistema chiamato nelle premesse viene detto sottosistema c, c n+ 0, 0, c, r Costruiamo la configurazione di arrivo del sistema S n+ : nei casi corrispondenti alla configurazione di partenza che fa match con c, c in base ai valori calcolati dal sistema S cr in corrispondenza della relativa configurazione c, c, 0 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 47/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 48/78

13 Abbiamo trattato, con la scrittura di questa regola, 100 possibili configurazioni (2 cifre da 0 a 9) iniziali del sistema S n+ Le possibili configurazioni sono infinite! La prossima regola che scriviamo tratta infiniti casi Seguendo sempre l approccio guidato dalla sintassi dobbiamo trattare ora il caso in cui il primo numero della configurazione di S n+ è del tipo nc, cioè sia una stringa composta da più di una cifra Corrisponde al caso sintattico Num ::= Num Cif π i? nc, c n+ γ? Chiamiamo questa regola (ii). Deve trattare, ad esempio, questo caso: > Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 49/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 50/78 Basta di nuovo chiamare il sistema S cr per fare un passo di calcolo elementare e scrivere la configurazione di arrivo di S n+ di conseguenza: nc, c n+ n, 0, c, r Manca il caso sintattico simmetrico al precedente e quello in cui entrambi i numeri di partenza sono formati da più di una cifra: c, c, 0 cr c, r c, nc n+ 0, n, c, r nc, n c n+ n, n, c, r Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 51/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 52/78

14 Mettendo tutto insieme: c, c n+ 0, 0, c, r nc, c n+ n, 0, c, r c, c, 0 cr c, r c, nc n+ 0, n, c, r nc, n c n+ n, n, c, r (i) (ii) (iii) (iv) Abbiamo trattato tutte le possibili configurazioni iniziali di S n+ La prova sta nel fatto che abbiamo trattato tutti i casi sintattici della grammatica Le stringhe nelle configurazioni sono tutte e sole quelle generate dalla grammatica Dobbiamo ora occuparci delle configurazioni intermedie del tipo n, n, m, r Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 53/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 54/78 Configurazioni intermedie Nelle configurazioni intermedie ci troviamo nella stessa situazione di quelle iniziali Abbiamo due stringhe n e n di Num, una terza stringa m e una cifra di riporto Le variabili che guidano il calcolo sono sempre n e n, mentre m e il resto sono accumulatori di comodo per i valori intermedi c, c, r cr c, r c, c, m, r n+ 0, 0, c m, r Gestisce il calcolo intermedio in cui sono rimaste due cifre da sommare: r r 0c ---> 0 0c m c m Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 55/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 56/78

15 Gli altri casi sintattici si ripetono in maniera analoga: c, c, r cr c, r nc, c, m, r n+ n, 0, c m, r c, c, r cr c, r c, nc, m, r n+ 0, n, c m, r c, c, r cr c, r nc, n c, m, r n+ n, n, c m, r Terminazione A questo punto abbiamo trattato tutte le possibili configurazioni, ma... In nessun caso il sistema va a finire in una configurazione terminale! Con le regole attuali il sistema continua a fare passi intermedi all infinito aggiungendo delle cifre 0 alla sinistra del risultato: > 0 ---> 0 ---> m 0m 00m Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 57/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 58/78 Terminazione Dobbiamo fare in modo che quando il sistema ha concluso il calcolo faccia una transizione verso la configurazione che contiene solo la stringa risultato Tutte le configurazioni in cui questo deve accadere sono della forma 0, 0, m, 0 Aggiungiamo quindi questa regola, che non ha premesse: 0, 0, m, 0 n+ m Terminazione Con questa nuova regola il sistema può decidere, in una configurazione 0, 0, m, 0, di fermarsi Tuttavia, nella stessa configurazione è ancora applicabile la regola: c, c, r cr c, r c, c, m, r n+ 0, 0, c m, r Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 59/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 60/78

16 Non determinismo Quando ci sono più regole applicabili il sistema può sceglierne una qualsiasi In altre parole i sistemi di transizioni possono essere non deterministici Per i nostri scopi cercheremo sempre di definire sistemi deterministici Se le grammatiche che usiamo non sono ambigue e se trattiamo ogni configurazione in un unica regola il sistema sarà deterministico In casi come questo ci può essere la necessità di porre delle condizioni per ottenere il determinismo Condizioni di applicazione Vogliamo escludere la possibilità che il sistema applichi la regola che fa un passo intermedio nella configurazione 0, 0, m, 0 Per far questo basta aggiungere una condizione logica o nelle premesse o a destra della regola In questo caso poniamola a destra per mettere in evidenza che si tratta di una condizione di applicabilità sulla configurazione: c, c, r cr c, r c, c, m, r n+ 0, 0, c m, r se c, c, r 0, 0, 0 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 61/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 62/78 S n+ completato S n+ completato c, c n+ 0, 0, c, r nc, c n+ n, 0, c, r c, c, 0 cr c, r c, nc n+ 0, n, c, r nc, n c n+ n, n, c, r (i) (ii) (iii) (iv) 0, 0, m, 0 n+ m (v) c, c, r cr c, r se c, c, r 0, 0, 0 (vi) c, c, m, r n+ 0, 0, c m, r c, c, r cr c, r (vii) nc, c, m, r n+ n, 0, c m, r c, c, r cr c, r (viii) c, nc, m, r n+ 0, n, c m, r Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 63/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 64/78

17 S n+ completato Derivazioni c, c, r cr c, r nc, n c, m, r n+ n, n, c m, r (ix) Proviamo adesso a porre il sistema in una certa configurazione e ad applicare le regole Eseguiamo tutte le transizioni passo dopo passo costruendo una derivazione Alla fine il sistema si troverà in una configurazione terminale Per operare dobbiamo istanziare le regole che abbiamo scritto e fare delle sostituzioni Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 65/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 66/78 Esempio di derivazione Supponiamo di porre il sistema S n+ nella configurazione 927, 346 e facciamo il primo passo di transizione: 927, 346 n+ {(iv), 7, 6, 0 cr 3, 1 } 92, 34, 3, 1 È stata applicata la regola (iv) Il matching con la configurazione implica: n = 92, c = 7, n = 34, c = 6 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 67/78 Sostituzione Sostituendo i valori nella configurazione della premessa otteniamo: 7, 6, 0 cr c, r Il sistema S cr associa a quella configurazione di partenza la configurazione di arrivo 3, 1 Quindi, per rendere vera la premessa della regola (iv), dobbiamo porre c = 3 e r = 1 In questo modo c e r divengono coperte, cioè vengono associate a valori intermedi del calcolo Otteniamo quindi la configurazione risultato sostituendo i valori alle variabili nella configurazione di arrivo della regola (iv) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 68/78

18 Istanza della regola La regola che abbiamo applicato è la (iv): nc, n c n+ n, n, c, r La sua istanza effettivamente applicata si ottiene sostituendo alle variabili tutti i valori che abbiamo loro associato: 7, 6, 0 cr 3, , 34 6 n+ 92, 7, 3, 1 Derivazione La configurazione in cui siamo arrivati non è terminale, continuiamo con altri passi: 92, 34, 3, 1 n+ {(ix), 2, 4, 1 cr 7, 0 } 9, 3, 73, 0 n+ {(vi), 9, 3, 0 cr 2, 1 } 0, 0, 273, 1 n+ {(vi), 0, 0, 1 cr 1, 0 } 0, 0, 1273, 0 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 69/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 70/78 Derivazione Siamo nella configurazione immediatamente precedente a quella terminale: n+ 0, 0, 1273, {(v)} Il sistema, dopo la derivazione, si trova nella configurazione terminale 1273 Copertura: definizione formale Data una configurazione γ di un sistema di transizioni o un termine t costruito usando costanti, variabili e operatori: V a r s (γ) (risp. V a r s (t)) indica l insieme di tutte e sole le variabili che compaiono γ (risp. t) Data una regola condizionale R: V a r s (R) è l insieme di tutte e sole le variabili che compaiono in R Data una R: π 1 π 2...π n γ γ Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 71/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 72/78

19 Copertura: definizione formale Sia x V ars(r). Diciamo allora che x è coperta in R se e solo se vale una delle seguenti condizioni: (1) x occorre in γ (2) esiste in R una premessa π i del tipo y = t tale che y è coperta in R e x V ars(t) (3) esiste in R una premessa π i del tipo x = t tale che tutte le variabili in V ars(t) sono coperte (4) esiste in R una premessa π i del tipo δ δ tale che tutte le variabili in δ sono coperte in R e x V ars(δ ) Copertura Se in una regola ci sono variabili non coperte allora la regola può essere priva di significato operazionale:, p, k > 0, p = k + 1 nc, n c n+ n, n, c, r Le variabili p e k non sono coperte e difatti non sono logicamente legate al significato della regola Noi considereremo solo regole in cui le variabili che appaiono sono tutte coperte Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 73/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 74/78 Sostituzione: definizione formale Sia V = {x 1,..., x n } un insieme di variabili distinte e sia c 1,..., c n una sequenza di costanti L insieme di associazioni ϑ = {c 1 /x 1,..., c n /x n } è detta sostituzione per le variabili in V Esempio: ϑ 1 = {92/n, 7/c, 34/n, 6/c, 3/c, 1/r} Applicazione di sostituzione Sia X un termine o una configurazione e sia V = V ars(x) l insieme delle variabili che vi compaiono Sia inoltre ϑ una sostituzione per le variabili in V L applicazione di ϑ a X, denotata da (X)ϑ, è il termine o la configurazione che si ottiene rimpiazzando in X ogni variabile x con la costante c tale che c/x ϑ Il termine o configurazione (X)ϑ verrà detto istanza di X via ϑ Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 75/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 76/78

20 Applicazione di sostituzione Sia R una regola condizionale, sia V = V ars(r) l insieme di tutte e sole le variabili che occorrono in R e sia ϑ una sostituzione per le variabili in V L istanza di R via ϑ è la regola condizionale che si ottiene applicando ϑ a tutti i termini e a tutte le configurazioni che occorrono in R Esempio: applicando alla regola (iv) la sostituzione ϑ 1 si ottiene 7, 6, 0 cr 3, , 34 6 n+ 92, 7, 3, 1 Regole e relazione di transizione Sia S = Γ, T, un sistema di transizioni la cui relazione di transizione è definita mediante un insieme finito di regole condizionali (r 1 ),..., (r n ) Date due configurazioni γ, γ Γ, la coppia (γ, γ ) appartiene alla relazione se e soltanto se esiste una sostituzione ϑ per le variabili in V ars(r i ), con 1 i n, tale che: tutte le premesse di (r i )ϑ sono soddisfatte la conclusione di (r i )ϑ è γ γ Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 77/78 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni p. 78/78

Semantica di un linguaggio formale. Semantica operazionale dei linguaggi di Programmazione. Come attribuire la semantica.

Semantica di un linguaggio formale. Semantica operazionale dei linguaggi di Programmazione. Come attribuire la semantica. Semantica di un linguaggio formale È il significato attribuito ad ogni stringa Le stringhe di un linguaggio di per sé non hanno un particolare significato L attribuzione del significato è un passo successivo

Dettagli

Oggetti sintattici. Semantica operazionale dei linguaggi di Programmazione. Oggetti sintattici. Funzioni di valutazione semantica

Oggetti sintattici. Semantica operazionale dei linguaggi di Programmazione. Oggetti sintattici. Funzioni di valutazione semantica Oggetti sintattici Abbiamo più volte sottolineato il fatto che le stringhe di un linguaggio sono di base oggetti simbolici puri Non hanno un significato particolare associato, a parte quello di essere

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Sistemi di transizioni (2) Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P. Mancarella e

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Stato Rosario Culmone, Luca Tesei 19/12/2007 UNICAM - p. 1/?? Espressioni con variabili Espandiamo il sistema exp in modo da trattare il nuovo caso

Dettagli

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi 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

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Analisi Sintattica. Maria Rita Di Berardini. Universitá di Camerino Ruolo del parser

Analisi Sintattica. Maria Rita Di Berardini. Universitá di Camerino Ruolo del parser Ruolo del parser Analisi 1 1 Dipartimento di Matematica e Informatica Universitá di Camerino mariarita.diberardini@unicam.it Ruolo del parser Ruolo dell analisi sintattica Ruolo del parser Metodologie

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Potenza espressiva degli automi Potenza espressiva delle grammatiche 9/11/2004 Programmazione - Luca Tesei 1 Linguaggi Regolari Tutti i linguaggi che possono essere

Dettagli

Elementi di Semantica Operazionale. Appunti per gli studenti di Fondamenti di Programmazione (corsi A-B-C)

Elementi di Semantica Operazionale. Appunti per gli studenti di Fondamenti di Programmazione (corsi A-B-C) Elementi di Semantica Operazionale Appunti per gli studenti di Fondamenti di Programmazione (corsi A-B-C) Corso di Laurea in Informatica Università di Pisa A.A. 2004/05 R. Barbuti, P. Mancarella e F. Turini

Dettagli

Elementi di teoria degli insiemi

Elementi di teoria degli insiemi ppendice Elementi di teoria degli insiemi.1 Introduzione Comincia qui l esposizione di alcuni concetti primitivi, molto semplici da un punto di vista intuitivo, ma a volte difficili da definire con grande

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle grammatiche 1

Dettagli

Linguaggi Regolari e Linguaggi Liberi. Linguaggi Regolari. Determinismo vs Non determinismo. Potere espressivo

Linguaggi Regolari e Linguaggi Liberi. Linguaggi Regolari. Determinismo vs Non determinismo. Potere espressivo e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle Tutti i linguaggi che possono essere

Dettagli

Automi deterministici e non

Automi deterministici e non Automi deterministici e non Negli esempi visti fin ora gli automi avevano sempre relazioni di transizione per cui per un dato elemento del dominio coppia (s, v), dove s è uno stato (sorgente) e v un simbolo,

Dettagli

Fondamenti teorici e programmazione

Fondamenti teorici e programmazione Fondamenti teorici e programmazione FTP(A) - modb Lezione 16 Grammatiche Libere da Contesto Alberi di derivazione sintattica Linguaggio generato F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione

Dettagli

Grammatiche e Linguaggi Liberi da Contesto

Grammatiche e Linguaggi Liberi da Contesto Grammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora classi più grandi di linguaggi. I Linguaggi Liberi da Contesto (CFL) sono stati usati

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Tripla di Hoare soddisfatta A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a.

Dettagli

ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA

ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA AUTOMI PUSHDOWN input u t w $ v x y z $ pila tabella controllo 2 ARGOMENTI Il compito dell'analisi sintattica Generazione automatica Trattamento

Dettagli

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine RISOLUZIONE IN LOGICA PROPOSIZIONALE Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine 1. Risoluzione Definitione 1.1. Un letterale l è una variabile proposizionale (letterale

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

04 - Numeri Complessi

04 - Numeri Complessi Università degli Studi di Palermo Facoltà di Economia CdS Statistica per l Analisi dei Dati Appunti del corso di Matematica 04 - Numeri Complessi Anno Accademico 2013/2014 M. Tumminello, V. Lacagnina e

Dettagli

Esercitazioni Informatica A. M. M. Bersani

Esercitazioni Informatica A. M. M. Bersani Esercitazioni Informatica A M. M. Bersani A.A. 2012/2013 Codifiche Scriviamo n b per intendere il numero n rappresentato in base 2, se b = 2, in base 10, se b = 10, e C2 se b = C2. L operatore mod è un

Dettagli

Note sui Sistemi di Transizione. Appunti per gli studenti di Programmazione

Note sui Sistemi di Transizione. Appunti per gli studenti di Programmazione Note sui Sistemi di Transizione Appunti per gli studenti di Programmazione Corso di Laurea in Informatica Applicata Polo Universitario G. Marconi - La Spezia Università di Pisa A.A. 2008/09 R. Barbuti,

Dettagli

Cosa si intende con stato

Cosa 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

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello AN - 1995 Linguaggi di alto livello AN - 1995 Evoluzione dei

Dettagli

Supplemento alle dispense di Sintassi

Supplemento alle dispense di Sintassi Supplemento alle dispense di Sintassi Luca Tesei 20 ottobre 2002 1 Formalizzazione Lo scopo di questa sezione è quello di presentare in maniera formale e precisa le nozioni di Automa e di Grammatica Libera

Dettagli

Sintassi. Linguaggi. 4: Sintassi. Claudio Sacerdoti Coen. Universitá di Bologna 24/02/2011. Claudio Sacerdoti Coen

Sintassi. Linguaggi. 4: Sintassi. Claudio Sacerdoti Coen. Universitá di Bologna 24/02/2011. Claudio Sacerdoti Coen Linguaggi 4: Universitá di Bologna 24/02/2011 Outline 1 Wikipedia: La sintassi è la branca della linguistica che studia i diversi modi in cui le parole si uniscono tra loro per formare

Dettagli

Algoritmi e Complessità

Algoritmi e Complessità Algoritmi e Complessità Università di Camerino Corso di Laurea in Informatica (tecnologie informatiche) III periodo didattico Docente: Emanuela Merelli Email:emanuela.merelli@unicam.it a.a. 2002-03 e.merelli

Dettagli

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29 Macchine di Turing Francesco Paoli Istituzioni di logica, 2016-17 Francesco Paoli (Istituzioni di logica, 2016-17) Macchine di Turing 1 / 29 Alan M. Turing (1912-1954) Francesco Paoli (Istituzioni di logica,

Dettagli

Introduzione alla Matematica per le Scienze Sociali - parte II

Introduzione 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

Dettagli

Correttezza (prima parte)

Correttezza (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

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora una classe piu ampia di linguaggi, i Linguaggi Liberi da Contesto (CFL) i CFL sono stati

Dettagli

Concetti di base sugli automi e sui linguaggi formali

Concetti di base sugli automi e sui linguaggi formali Concetti di base sugli automi e sui linguaggi formali Andrea Burattin 18 marzo 2005 Sommario Piccolo insieme di concetti sul funzionamento degli automi (a stati finiti, a pila,...), delle grammatiche libere

Dettagli

Tecniche di prova per induzione

Tecniche di prova per induzione Aniello Murano Tecniche di prova per induzione 3 Lezione n. Parole chiave: Induzione Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Riassunto delle lezioni precedenti

Dettagli

Esercitazioni per il corso di Logica Matematica

Esercitazioni per il corso di Logica Matematica Esercitazioni per il corso di Logica Matematica Luca Motto Ros 02 marzo 2005 Nota importante. Queste pagine contengono appunti personali dell esercitatore e sono messe a disposizione nel caso possano risultare

Dettagli

Grammatiche Parse trees Lezione del 17/10/2012

Grammatiche Parse trees Lezione del 17/10/2012 Fondamenti di Programmazione A.A. 2012-2013 Grammatiche Parse trees Lezione del 17/10/2012 AUTILI MARCO http://www.di.univaq.it/marco.autili/ Riassunto lezione precedente Sintassi vs Semantica Stringhe,

Dettagli

Fondamenti dell informatica

Fondamenti dell informatica Fondamenti dell informatica Funzioni ricorsive e linguaggi funzionali Rosario Culmone rosario.culmone@unicam.it 16/4/2008 UNICAM - p. 1/21 Funzioni ricorsive Metodo di definizione di algoritmi introdotto

Dettagli

Introduzione alla logica proposizionale

Introduzione alla logica proposizionale Introduzione alla logica proposizionale Mauro Bianco Questa frase è falsa Contents 1 Proposizioni 1 2 Altri operatori 4 Nota : Le parti delimitate da *** sono da considerarsi facoltative. 1 Proposizioni

Dettagli

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco: connettivi

Dettagli

Sistemi di numerazione

Sistemi di numerazione Sistemi di numerazione Introduzione Un sistema di numerazione è un sistema utilizzato per esprimere i numeri e possibilmente alcune operazioni che si possono effettuare su di essi. Storicamente i sistemi

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Cristina Turrini UNIMI - 2016/2017 Cristina Turrini (UNIMI - 2016/2017) Elementi di Algebra e di Matematica

Dettagli

Semantica operazionale dei linguaggi di Programmazione1

Semantica operazionale dei linguaggi di Programmazione1 Semantica operazionale dei linguaggi di Programmazione1 Semantica operazionale del nucleo di Java Rosario Culmone, Luca Tesei 21/1/2007 UNICAM - p. 1/82 Costrutti che alterano lo stato La valutazione di

Dettagli

AUTOMA A STATI FINITI

AUTOMA A STATI FINITI Gli Automi Un Automa è un dispositivo, o un suo modello in forma di macchina sequenziale, creato per eseguire un particolare compito, che può trovarsi in diverse configurazioni più o meno complesse caratterizzate

Dettagli

Logica per la Programmazione

Logica 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

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo Sviluppo di programmi Per la costruzione di un programma

Dettagli

LE EQUAZIONI LINEARI LE IDENTITA ( )( ) 5. a Cosa hanno in comune le seguenti uguaglianze? Uguaglianza (1) a

LE EQUAZIONI LINEARI LE IDENTITA ( )( ) 5. a Cosa hanno in comune le seguenti uguaglianze? Uguaglianza (1) a LE EQUAZIONI LINEARI 1 LE IDENTITA a b = ( a + b)( a b) () 1 a = a + a ( ) ( a + b) = a + ab + b () 3 Cosa hanno in comune le seguenti uguaglianze? Uguaglianza (1) a b = ( a+ b)( a b) È sempre vera qualunque

Dettagli

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso Laboratorio di Informatica Esercitazione su algoritmi e diagrammi di flusso Algoritmi, programmi e dati Algoritmo = insieme di istruzioni che indicano come svolgere operazioni complesse su dei dati attraverso

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Basic Pascal

Dettagli

LA CODIFICA DELL INFORMAZIONE

LA CODIFICA DELL INFORMAZIONE LA CODIFICA DELL INFORMAZIONE Prof. Enrico Terrone A. S: 20/2 Lo schema di Tanenbaum Il livello al quale ci interessiamo in questa lezione è il linguaggio macchina, l unico dove le informazioni e istruzioni

Dettagli

Elementi di Semantica Operazionale. Appunti per gli studenti di Fondamenti di Programmazione (corsi A-B-C)

Elementi di Semantica Operazionale. Appunti per gli studenti di Fondamenti di Programmazione (corsi A-B-C) Elementi di Semantica Operazionale Appunti per gli studenti di Fondamenti di Programmazione (corsi A-B-C) Corso di Laurea in Informatica Università di Pisa A.A. 2004/05 R. Barbuti, P. Mancarella e F. Turini

Dettagli

Interpreti, compilatori e semantica operazionale

Interpreti, compilatori e semantica operazionale Interpreti, compilatori e semantica operazionale 1 Linguaggi di programmazione Come si comprendono le caratteristiche di un linguaggio di programmazione? Molte risposte diverse manuali, documentazione

Dettagli

Ragionamento formalei. Ragionamento formale

Ragionamento 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

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic

Dettagli

Logica proposizionale

Logica 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

Dettagli

Sviluppi e derivate delle funzioni elementari

Sviluppi e derivate delle funzioni elementari Sviluppi e derivate delle funzioni elementari In queste pagine dimostriamo gli sviluppi del prim ordine e le formule di derivazioni delle principali funzioni elementari. Utilizzeremo le uguaglianze lim

Dettagli

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara Sistemi lineari Lorenzo Pareschi Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara http://utenti.unife.it/lorenzo.pareschi/ lorenzo.pareschi@unife.it Lorenzo Pareschi (Univ. Ferrara)

Dettagli

Modellazione di sistemi software

Modellazione di sistemi software Modellazione di sistemi software Modellare un sistema: rappresentarlo in termini di oggetti matematici che ne riflettono le proprietà Modellare implica astrarre: semplificare la descrizione del sistema,

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Esercitazioni per il corso di Logica Matematica

Esercitazioni per il corso di Logica Matematica Esercitazioni per il corso di Logica Matematica Luca Motto Ros 27 febbraio 2005 Nota importante. Queste pagine contengono appunti personali dell esercitatore e sono messe a disposizione nel caso possano

Dettagli

Espressioni letterali e valori numerici

Espressioni letterali e valori numerici Espressioni letterali e valori numerici 8 8.1 Lettere 8.1.1 Lettere per esprimere formule Esempio 8.1. In tutte le villette a schiera di recente costruzione del nuovo quartiere Stella, vi è un terreno

Dettagli

Rango di una matrice e teorema di Rouché-Capelli

Rango di una matrice e teorema di Rouché-Capelli Rango di una matrice e teorema di Rouché-Capelli Sappiamo che a una matrice m n, A, è associata l applicazione lineare L A : R n R m, L A (X) = AX, X R n. Definizione 1. Lo spazio nullo di A, N (A), è

Dettagli

Problemi, algoritmi, calcolatore

Problemi, 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

Dettagli

Grammatiche libere da contesto. Grammatiche libere da contesto

Grammatiche libere da contesto. Grammatiche libere da contesto rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora classi piu grandi di linguaggi Linguaggi Liberi da Contesto (CFL) sono stati usati nello

Dettagli

Logica per la Programmazione

Logica 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,

Dettagli

ESAME di LOGICA PER INFORMATICA 24 giugno 2003

ESAME di LOGICA PER INFORMATICA 24 giugno 2003 ESAME di LOGICA PER INFORMATICA 24 giugno 2003 Compito 1 Esercizio 1. Siano Φ e Ψ due insiemi consistenti di formule. Dire, giustificando la risposta, se Φ Ψ e Φ Ψ sono consistenti. Soluzione. Se fosse

Dettagli

1 PRELIMINARI 1.1 NOTAZIONI. denota l insieme vuoto. a A si legge a appartiene a A oppure a è elemento di A.

1 PRELIMINARI 1.1 NOTAZIONI. denota l insieme vuoto. a A si legge a appartiene a A oppure a è elemento di A. 1 PRELIMINARI 1.1 NOTAZIONI denota l insieme vuoto. a A si legge a appartiene a A oppure a è elemento di A. B A si legge B è un sottoinsieme di A e significa che ogni elemento di B è anche elemento di

Dettagli

Algoritmi e Complessità

Algoritmi e Complessità Algoritmi e Complessità Università di Camerino Corso di Laurea in Informatica (tecnologie informatiche) III periodo didattico Docente: Emanuela Merelli Email:emanuela.merelli@unicam.it Lezione 1 Teoria

Dettagli

Ragionamento Automatico Richiami di tableaux proposizionali

Ragionamento 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

Dettagli

Introduzione alla programmazione

Introduzione 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

Dettagli

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

Riassumiamo 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

Dettagli

Fondamenti d Informatica: Grammatiche. Barbara Re, Phd

Fondamenti d Informatica: Grammatiche. Barbara Re, Phd Fondamenti d Informatica: Grammatiche Barbara Re, Phd Grammatiche } Con il termine grammatica s intende } Un formalismo che permette di definire un insieme di stringhe mediante l imposizione di un particolare

Dettagli

Fondamenti di Informatica. per la Sicurezza. a.a. 2003/04. Grammatiche. Stefano Ferrari

Fondamenti di Informatica. per la Sicurezza. a.a. 2003/04. Grammatiche. Stefano Ferrari Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Grammatiche Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università degli Studi

Dettagli

Equazioni di primo grado

Equazioni di primo grado Equazioni di primo grado 15 15.1 Identità ed equazioni Analizziamo le seguenti proposizioni: a ) cinque è uguale alla differenza tra sette e due ; b ) la somma di quattro e due è uguale a otto ; c ) il

Dettagli

Rappresentazione dell' informazione. Cenni, necessari per capire le caratteristiche dei tipi di dato e delle limitazioni dell'aritmetica del computer

Rappresentazione dell' informazione. Cenni, necessari per capire le caratteristiche dei tipi di dato e delle limitazioni dell'aritmetica del computer Rappresentazione dell' informazione Cenni, necessari per capire le caratteristiche dei tipi di dato e delle limitazioni dell'aritmetica del computer Cos'è l'informazione? Tutto quello che viene manipolato

Dettagli

Grammatiche libere da contesto. Grammatiche libere da contesto

Grammatiche libere da contesto. Grammatiche libere da contesto rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora classi piu grandi di linguaggi. Linguaggi Liberi da Contesto (CFL) sono stati usati nello

Dettagli

Informatica. Richiami. Diagrammi di flusso. Algoritmi, programmi e dati. Algoritmi e diagrammi di flusso. per le lauree triennali

Informatica. Richiami. Diagrammi di flusso. Algoritmi, programmi e dati. Algoritmi e diagrammi di flusso. per le lauree triennali Informatica per le lauree triennali ESERCITAZIOE 10 Algoritmi e diagrammi di flusso Richiami ESERCITAZIOE 10 ALGORITMI E DIAGRAMMI DI FLUSSO 1 ESERCITAZIOE 10 ALGORITMI E DIAGRAMMI DI FLUSSO Algoritmi,

Dettagli

Lezioni di Informarica. Prof. Giovanni Occhipinti

Lezioni di Informarica. Prof. Giovanni Occhipinti Lezioni di Informarica Prof. Giovanni Occhipinti 23 settembre 2010 2 Indice 1 La codifica delle Informazioni 5 1.1 Il sistema binario........................... 5 1.1.1 Conversione da binario a decimale.............

Dettagli

Nome: Corso di laurea: Matricola:

Nome: Corso di laurea: Matricola: Nome: Corso di laurea: Matricola: Università degli studi di Trieste Corso di Laurea in Informatica Esame di Fondamenti Logici dell Informatica 24 Aprile 2006, versione A Vero/Falso Dire se le seguenti

Dettagli

Il concetto di calcolatore e di algoritmo

Il 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

Dettagli

Sistemi di numerazione

Sistemi di numerazione Istituto Tecnico Lombardo Radice Sistemi di numerazione Appunti di Informatica - Roberto De Virgilio 1 1 Regole di un sistema di numerazione I sistemi di numerazioni sono linguaggi, quindi sono un insieme

Dettagli

Logica per la Programmazione

Logica 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

Dettagli

Istituzioni di Matematiche (V): Seconda Prova Parziale, 13 Gennaio 2015 (versione 1)

Istituzioni di Matematiche (V): Seconda Prova Parziale, 13 Gennaio 2015 (versione 1) Istituzioni di Matematiche (V): Seconda Prova Parziale, 13 Gennaio 015 (versione 1) Nome e Cognome: Numero di matricola: Esercizio 1 Esercizio Esercizio 3 Esercizio 4 Esercizio 5 Totale 4 6 6 8 6 Tutte

Dettagli

3. OPERAZIONI TRA CLASSI 2

3. OPERAZIONI TRA CLASSI 2 INSIEMI 1. Elementi e Classi Lo scopo di questo primo capitolo è di introdurre in maniera rigorosa le nozioni di classe e insieme, e di studiarne le principali proprietà. Nel seguito useremo il termine

Dettagli

La Rappresentazione dell Informazione

La Rappresentazione dell Informazione La Rappresentazione dell Informazione Maurizio Palesi Sommario In questo documento sarà trattato il modo in cui, in un calcolatore, vengono rappresentati i vari generi di informazione (testi, numeri interi,

Dettagli

Qualche informazione su gruppi e anelli

Qualche informazione su gruppi e anelli Qualche informazione su gruppi e anelli 1. Gruppi e sottogruppi: prime proprietà Cominciamo subito scrivendo la definizione formale di gruppo. Definizione 0.1. Un gruppo G è un insieme non vuoto dotato

Dettagli

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) DISPENSA N. 3 Sommario. Introduciamo il Calcolo dei Predicati del I ordine e ne dimostriamo le proprietà fondamentali. Discutiamo il trattamento dell identità

Dettagli

La codifica. dell informazione

La codifica. dell informazione 00010010101001110101010100010110101000011100010111 00010010101001110101010100010110101000011100010111 La codifica 00010010101001110101010100010110101000011100010111 dell informazione 00010010101001110101010100010110101000011100010111

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione 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

Dettagli

NOTE DI ALGEBRA LINEARE v = a 1 v a n v n, w = b 1 v b n v n

NOTE DI ALGEBRA LINEARE v = a 1 v a n v n, w = b 1 v b n v n NOTE DI ALGEBRA LINEARE 2- MM 9 NOVEMBRE 2 Combinazioni lineari e generatori Sia K un campo e V uno spazio vettoriale su K Siano v,, v n vettori in V Definizione Un vettore v V si dice combinazione lineare

Dettagli

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd Fondamenti d Informatica: linguaggi formali Barbara Re, Phd Agenda } Introdurremo } La nozione di linguaggio } Strumenti per definire un linguaggio } Espressioni Regolari 2 Linguaggio } Da un punto di

Dettagli

SISTEMI DI NUMERAZIONE POSIZIONALI

SISTEMI DI NUMERAZIONE POSIZIONALI SISTEMI DI NUMERAZIONE POSIZIONALI I numeri sono entità matematiche astratte e vanno distinti dalla loro rappresentazione. Definiamo con sistema di numerazione un sistema utilizzato per esprimere i numeri

Dettagli

Appunti del Corso Analisi 1

Appunti del Corso Analisi 1 Appunti del Corso Analisi 1 Anno Accademico 2011-2012 Roberto Monti Versione del 5 Ottobre 2011 1 Contents Chapter 1. Cardinalità 5 1. Insiemi e funzioni. Introduzione informale 5 2. Cardinalità 7 3.

Dettagli

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due Conversione di base Dato N>0 intero convertirlo in base b dividiamo N per b, otteniamo un quoto Q 0 ed un resto R 0 dividiamo Q 0 per b, otteniamo un quoto Q 1 ed un resto R 1 ripetiamo finché Q n < b

Dettagli

LEZIONE DI MATEMATICA SISTEMI DI NUMERAZIONE. (Prof. Daniele Baldissin)

LEZIONE DI MATEMATICA SISTEMI DI NUMERAZIONE. (Prof. Daniele Baldissin) LEZIONE DI MATEMATICA SISTEMI DI NUMERAZIONE (Prof. Daniele Baldissin) L'uomo usa normalmente il sistema di numerazione decimale, probabilmente perché ha dieci dita. Il sistema decimale è collegato direttamente

Dettagli