Semantica operazionale dei linguaggi di Programmazione
|
|
- Benedetta Corona
- 5 anni fa
- Visualizzazioni
Transcript
1 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 F. Turini Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.1/25
2 Esempio Consideriamo un linguaggio L costituito dalle stringhe non vuote formate dai simboli a e b,ovvero L = {a,b} + La grammatica di riferimento è la seguente: A ::= aa ba a b Vogliamo definire la seguente semantica: il significato di una stringa α L è il numero naturale dato dal numero di occorrenze del simbolo a in α Ad esempio: aabab e aaa hanno come semantica il numero naturale 3 Ad esempio: ogni stringa formata da sole b rappresenta il numero naturale 0 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.2/25
3 Sistema di transizioni Per esprimere tale semantica mediante un sistema di transizioni S 1 = Γ 1,T 1, 1 possiamo procedere come segue: Γ 1 dovrà contenere, tra le altre, configurazioni che corrispondono a stringhe del linguaggio, ovvero l insieme {α α L} T 1 dovrà essere costituito dall insieme dei numeri naturali IN la relazione di transizione dovrà consentire derivazioni del tipo α 1 n se e soltanto se il simbolo a occorre esattamente n volte in α Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.3/25
4 Configurazioni intermedie Definiamo una relazione di transizione che descrive i singoli passi di calcolo A partire da una stringa iniziale α, i passi devono portare alla determinazione dell opportuna configurazione finale Gli stadi intermedi di tale calcolo vengono descritti tramite un ulteriore tipo di configurazioni, definite dal seguente insieme: { β,m β L,m IN} Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.4/25
5 Configurazioni intermedie Il significato di una configurazione β, m è il seguente: β rappresenta la porzione della stringa iniziale che deve essere ancora analizzata m rappresenta il numero di occorrenze di a nella porzione della stringa iniziale già analizzata Più precisamente, la relazione di transizione dovrà consentire derivazioni del tipo: α 1 β,k se e soltanto se α = β β e il numero di occorrenze di a in β è k Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.5/25
6 Regole Utilizziamo α, β,... come metavariabili per denotare stringhe del linguaggio. Regola per passare da una configurazione iniziale alla prima configurazione intermedia: α 1 α,0 (r1) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.6/25
7 Regole Regole per i passi intermedi: α = aβ m = k +1 α,k 1 β,m α = bβ α,k 1 β,k (r2) (r3) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.7/25
8 Regole Regole per passare da una configurazione intermedia che ha concluso il calcolo a una configurazione terminale: α = a m = k +1 α,k 1 m α = b α,k 1 k (r4) (r5) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.8/25
9 Derivazione aba 1 {(r1), (sostituzione: α = aba) } aba, 0 1 {(r2), (sost: α = aba,k = 0,β = ba,m = 1) } ba, 1 1 {(r3), (sost: α = ba,k = 1,β = a,m = 1) } a,1 1 {(r5), (sost: α = a,k = 1,m = 2) } 2 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.9/25
10 Small step Il sistema è stato definito nel cosiddetto stile small step Significa che ci sono: delle configurazioni iniziali che rappresentano una istanza del problema delle configurazioni intermedie che rappresentano stadi intermedi del calcolo Il comportamento del sistema rappresenta una soluzione iterativa del problema Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.10/25
11 Small step Le regole si dividono in tre gruppi: 1. per passare dalle configurazioni iniziali a quelle intermedie: allocano risorse come contatori o variabili intermedie 2. per eseguire i calcoli tra configurazioni intermedie: rappresentano un ciclo che effettua il calcolo 3. per passare da configurazioni intermedie che hanno terminato il calcolo a configurazioni terminali: deallocano le risorse e danno solo il risultato finale Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.11/25
12 Big step Nello stile big step il sistema di transizioni è ricorsivo Ci sono solo configurazioni iniziali e configurazioni terminali Ogni istanza del problema (configurazione iniziale) viene risolta in un solo passo di transizione Tutto il lavoro viene fatto da sottoderivazioni ricorsive Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.12/25
13 Esempio Risolviamo il problema precedente con un sistema ricorsivo Γ 1 = {α α L} {n n IN} T 1 = {n n IN} Nelle regole usiamo un ragionamento induttivo Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.13/25
14 Regole ricorsive Casi base: il numero di occorrenze di a nella stringa a (risp. b) è 1 (risp. 0) Casi induttivi: il numero di occorrenze di a nella stringa aα (risp. bα) è n +1 (risp. n) se il numero di occorrenze di a in α è n Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.14/25
15 Regole ricorsive Casi base: a 1 1 (r1 ) b 1 0 (r2 ) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.15/25
16 Regole ricorsive Casi induttivi: α 1 k n = k +1 aα 1 n (r3 ) α 1 k bα 1 k (r4 ) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.16/25
17 Derivazioni Proviamo a fare una derivazione: aba 1 {(r3 ), (sostituzione: α = ba,?) }? Dobbiamo soddisfare la premessa ba 1 k Otterremo così un valore per k e di conseguenza per m, potendo concludere Ma come ottenere il valore di k? Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.17/25
18 Sottoderivazioni È il sistema stesso che ce lo dice! La premessa può essere soddisfatta solo da una derivazione dello stesso sistema Dobbiamo agire come in tutti i casi in cui c è una chiamata ricorsiva... Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.18/25
19 Sottoderivazioni 1. Creiamo una nuova istanza del sistema di transizioni 2. Lo mettiamo nella configurazione che ci serve (α) 3. Sospendiamo l esecuzione attuale e facciamo partire la nuova istanza del sistema (sottoderivazione) 4. Quando la sottoderivazione sarà conclusa (la stringa su cui opera è più piccola e quindi l ipotesi induttiva ci garantisce che terminerà e darà il risultato esatto) avremo ottenuto come risultato un valore per k Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.19/25
20 Derivazione aba 1 { (r3 ), (sostituzione: α = ba,?) (d1): ba 1?}? Chiamiamo d1 la sottoderivazione e ci mettiamo in attesa che l istanza del sistema risponda con un valore Costruiamo d1 in maniera completamente indipendente a questa derivazione, solamente il suo risultato ci interessa: sarà il valore da sostituire a k Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.20/25
21 Sottoderivazione d1 ba 1 { (r4 ), (sostituzione: α = a,?) (d2): a 1?}? Anche qui dobbiamo soddisfare una premessa che è una derivazione dello stesso sistema Facciamo quindi partire una sottoderivazione d2 e ci mettiamo in attesa che l istanza del sistema risponda con un valore per il k della regola (r4 ) applicata in questa istanza del sistema Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.21/25
22 Sottoderivazione d2 a 1 {(r1 ) } 1 Questa derivazione applica la regola (r1 ) del sistema, che non ha premesse Pertanto la configurazione di arrivo di questa derivazione è 1, che è una configurazione terminale Questa istanza del sistema termina e il valore 1 viene passato all istanza che l aveva attivata, cioè la derivazione d1 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.22/25
23 Sottoderivazione d1 ba 1 { (r4 ), (sostituzione: α = a,k = 1 ) (d2): a 1 1 } 1 Sostituiamo quindi 1 alla variabile k della regola (r4 ) applicata in questa istanza del sistema La regola (r4 ) ci dice di concludere con il valore di k, cioè 1 Questa istanza del sistema termina e il valore 1 viene passato all istanza chiamante, cioè quella principale Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.23/25
24 Derivazione aba 1 { (r3 ), (sostituzione: α = ba,k = 1) (d1): ba 1 1 (sost: m = k +1 = 1 +1 = 2 )} 2 Sostituiamo quindi a k il valore 1 e procediamo La seconda premessa della regola (r3 ) è una equazione. Per soddisfarla dobbiamo semplicemente applicare la sostituzione di k e fare un calcolo Poniamo quindi m uguale a 2 e concludiamo la derivazione Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.24/25
25 Big Step La definizione in stile big step ha diversi vantaggi rispetto a quella small step: 1. Non c è bisogno di configurazioni intermedie 2. Il problema può essere risolto ricorsivamente 3. L approccio guidato dalla sintassi permette in maniera naturale di prendere la struttura ricorsiva indotta dalla grammatica come base su cui fare il ragionamento induttivo che risolve il problema Per definire la semantica del nostro linguaggio Java semplificato useremo un sistema definito con lo stile big step Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Sistemi di Transizioni (2) p.25/25
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
DettagliSemantica 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
DettagliLinguaggi 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
DettagliNote 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,
DettagliGrammatiche 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
DettagliLinguaggi 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
DettagliElementi 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
DettagliSemantica operazionale dei Linguaggi di Programmazione Imperativi. Espressioni. Sistema di transizioni per la semantica
Sistema di transizioni per la semantica Il nostro sistema non prevede la gestione degli errori di tipo o la gestione degli errori di scope delle veriabili Esso si bloccherà solo in caso di espressioni
DettagliBackus Naur Form. Paolo Bison. Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova. BNF, Paolo Bison, A.A ,
p.1/19 Backus Naur Form Paolo Bison Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova Linguaggio di programmazione p.2/19 strumento linguistico per scrivere una sequenza di istruzioni (programma)
DettagliLinguaggi 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
DettagliLinguaggi 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
DettagliEspressività e limitazioni delle grammatiche regolari
Espressività e limitazioni delle grammatiche regolari Vantaggi: Le grammatiche regolari consentono di esprimere una significativa classe di linguaggi: linguaggi con un numero di sequenze infinito grazie
DettagliEquivalenza di PDA e CFG. Equivalenza di PDA e CFG
quivalenza di PDA e CFG Un linguaggio e generato da una CFG se e solo se e accettato da un PDA per pila vuota se e solo se e accettato da un PDA per stato finale Grammar PDA by empty stack PDA by final
DettagliInterpreti, 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
DettagliCorso di Informatica
Corso di Informatica Modulo T3 3 Ricorsione Prerequisiti Programmazione elementare Tecnica top-down Struttura e funzionamento dei sottoprogrammi Pila di attivazione Metodo di Euclide per il calcolo del
DettagliPROLOG E ANALISI SINTATTICA DEI LINGUAGGI PROLOG E ANALISI SINTATTICA DEI LINGUAGGI PROLOG E ANALISI SINTATTICA DEI LINGUAGGI ESEMPIO
PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica Una grammatica permette di stabilire se una sequenza di simboli
DettagliGrammatiche 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
DettagliPrecorso di Matematica
UNIVERSITÀ DEGLI STUDI ROMA TRE FACOLTA DI ARCHITETTURA Precorso di Matematica Anna Scaramuzza Anno Accademico 2005-2006 4-10 Ottobre 2005 INDICE 1. ALGEBRA................................. 3 1.1 Equazioni
DettagliAlgoritmi e Strutture Dati
Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli
DettagliPROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica G=(V n,v t
PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica Una grammatica permette di stabilire se una sequenza di simboli
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
DettagliLinguaggi di Programmazione Corso C. Parte n.2 Introduzione ai Linguaggi Formali. Nicola Fanizzi
Linguaggi di Programmazione Corso C Parte n.2 Introduzione ai Linguaggi Formali Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Definizioni Preliminari Un
DettagliGrammatiche 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
DettagliAlgoritmi e Strutture Dati
Algoritmi Ricorsivi e Ricorrenze Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno
DettagliElementi 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
DettagliProprietà dei linguaggi non contestuali
Proprietà dei linguaggi non contestuali Argomenti della lezione Pumping lemma per i linguaggi non contestuali Proprietà di chiusura Argomenti della lezione Grammatiche non contestuali in forma ridotta
Dettagliacuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1
acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 richiami teorici sulle grammatiche di Chomsky esercizivari esercizi su grammatiche ed espressioni regolari
DettagliCenni di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B)
Cenni di programmazione ricorsiva Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Corso di Laurea in Informatica Università di Pisa A.A. 2009/10 R. Barbuti, P. Mancarella Indice
DettagliLinguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice
l linguaggio universale Il linguaggio universale L u e l insieme delle stringhe binarie che codificano una coppia (M,w) dove w L(M). Esiste una TM U, detta TM universale, tale che L u = L(U). U ha tre
Dettaglia cura di Luca Cabibbo e Walter Didimo
a cura di Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 automi a pila automi a pila e grammatiche non contestuali notazioni sul livello degli esercizi: (*)
DettagliSintassi. 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
DettagliAnalisi sintattica. Analisi sintattica
uolo dell analisi sintattica Un compilatore deve produrre codice oggetto e deve anche controllare che il programma in input sia scritto secondo le regole della sua sintassi L analisi lessicale controlla
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
DettagliPrecisiamo il problema di SLR. Tabelle LR. Soluzione. Esempio. Item LR(1) Item LR(1) validi. Costruzione delle tabelle di parsing LR canoniche
Precisiamo il problema di SLR Tabelle LR Costruzione delle tabelle di parsing LR canoniche In uno stato i la tabella indica una riduzione con una produzione A αse l insieme di item Ii contiene l item A
DettagliFondamenti di Informatica 2
Fondamenti di Informatica 2 Linguaggi e Complessità : Lezione 1 Corso Fondamenti di Informatica 2 Marco Schaerf, 2009-2010 Linguaggi e Complessità : Lezione 1 1 Logica proposizionale Linguaggio matematico
DettagliGrammatiche 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,
DettagliAutomi e Linguaggi Formali Automi a stack (Pushdown automata)
Automi e Linguaggi Formali Automi a stack (Pushdown automata) A.A. 2014-2015 Enrico Mezzetti emezzett@math.unipd.it Automi a stack Un Pushdown Automata (PDA) o Automa a stack Essenzialmente un ɛ-nfa con
DettagliLinguaggi. Che cos è un linguaggio di programmazione? Aspetti da studiare e comprendere per poter scrivere programmi:
Linguaggi Che cos è un linguaggio di programmazione? Aspetti da studiare e comprendere per poter scrivere programmi: Sintassi: forma delle frasi, correttezza sintattica Semantica: significato delle frasi,
DettagliEsercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari
Esercizi di Fondamenti di Informatica per la sicurezza tefano Ferrari 23 dicembre 2003 2 Argomento 1 Grammatiche e linguaggi Esercizi Es. 1.1 Definiti i linguaggi: L 1 = {aa, ab, bc, c} L 2 = {1, 22, 31}
DettagliAlgoritmi e Strutture Dati
Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino I conigli di Fibonacci Ricerca Binaria L isola dei conigli Leonardo da
DettagliMa il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione
Problemi che i calcolatori non possono risolvere E importante sapere se un programma e corretto, cioe fa uello che ci aspettiamo. E facile vedere che il programma Ma il programma in Fig. 8.2 del libro?
DettagliTecniche 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
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
DettagliFondamenti 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
DettagliGrammatiche. Rosario Culmone, Luca Tesei. 20/11/2006 UNICAM - p. 1/49
Grammatiche Rosario Culmone, Luca Tesei 20/11/2006 UNICAM - p. 1/49 Grammatiche libere dal contesto Ogni linguaggio di programmazione ha delle regole che prescrivono la struttura sintattica dei programmi
DettagliSemantica Operazionale del linguaggio imperativo IMP
Aniello Murano Semantica Operazionale del linguaggio imperativo IMP 2 Lezione n. Parole chiave: Sem. Operazionale Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Introduzione
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à
DettagliESERCITAZIONE II. Linguaggi Context Free
ESERCITAZIONE II Linguaggi Context Free 2 INTRODUZIONE LINGUAGGI CF I linguaggi di tipo 2 sono detti context free (CF) o non contestuali. Sono GENERATI da grammatiche di tipo 2. Dati: VN insieme dei simboli
DettagliLINGUAGGI 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
DettagliLinguaggi formali e compilazione
Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2014/2015 Linguaggi formali e compilazione Generalità delle ǫ-transizioni Gli automi non deterministici, come abbiamo visto, possono
DettagliEsercizi sul Principio d Induzione
AM110 - ESERCITAZIONI I - II - 4 OTTOBRE 01 Esercizi sul Principio d Induzione Esercizio svolto 1. Dimostrare che per ogni n 1, il numero α(n) := n 3 + 5n è divisibile per 6. Soluzione. Dimostriamolo usando
DettagliCorso: Fondamenti di Linguaggi di Programmazione
Corso: Fondamenti di Linguaggi di Programmazione Paola Giannini Chiusure e Binding statico e dinamico Paola Giannini, a.a. 2017/2018 FONDAMENTI LINGUAGGI Binding statico e dinamico 1 / 8 Stack e Sostituzione
DettagliCENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3
CENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3 MATTEO PRADELLA 1. Introduzione e concetti base La programmazione funzionale è uno stile di programmzione che enfatizza la valutazione di espressioni,
DettagliLinguaggio Formale 2
Linguaggio Formale 2 Ex: Per generare il linguaggio L(G 1 ) = {a n b n c n } si può usare la grammatica G 1 = < {A,B,C}, {a,b,c}, P, A > Con regole di produzione P: 1. A abc 2. A abbc 3. Bb bb 4. Bc Cbcc
DettagliFunzioni Esponenziale e Logaritmica. Prof. Simone Sbaraglia
Funzioni Esponenziale e Logaritmica Prof. Simone Sbaraglia Funzione Esponenziale Vogliamo definire propriamente le funzioni esponenziali e logaritmiche che abbiamo introdotto in precedenza. Qual e` il
DettagliAutomi a Pila e Grammatiche Libere dal Contesto. Automi a Pila e Grammatiche Libere dal Contesto
utomi a Pila Un automa a pila (PDA) e una estensione degli automi a stati finiti, che ha una memoria (una pila) Vedremo due modi equivalenti per definire il linguaggio accettato da un PDA Vedremo che la
DettagliLinguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi
Linguaggi di Programmazione Corso C Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Grammatiche
DettagliLOGICA 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à
DettagliProgrammazione Teoria dei linguaggi formali
Programmazione Teoria dei linguaggi formali Rosario Culmone rosario.culmone@unicam.it 18/11/2009 UNICAM - p. 1/42 Linguaggi Definizione di grammatica di Chomsky Derivazione di stringhe e generazione di
DettagliAlgoritmi 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
DettagliInformatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza
Macchine di Turing Argomenti della lezione Definizione della macchina di Turing Riconoscimento e accettazione di linguaggi Macchine a più nastri La macchina di Turing èun è automa che può leggere e scrivere
Dettaglia cura di Luca Cabibbo e Walter Didimo
a cura di Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 proprietà delle grammatiche non contestuali pumping lemma forme normali notazioni sul livello degli
DettagliLinguaggi formali e compilazione
Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2014/2015 Linguaggi formali e compilazione quivalenza di grammatiche In Informatica (e non solo, naturalmente) esistono sempre molti
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 19 Ricorsione A. Miola Marzo 2010 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti Funzioni e domini definiti induttivamente
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E02 Grammatiche Esercizi Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Grammatiche - Esercizi 1 Grammatica
DettagliBottom-up Parsing. Viable Prefixes, conflitti e formato delle tabelle per il parsing LR
Bottom-up Parsing Viable Prefixes, conflitti e formato delle tabelle per il parsing LR Viable Prefixes Prima di continuare finiamo il discorso sul parsing shift-reduce in generale C è una ragione importante
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
DettagliEspressioni Regolari
Espressioni Regolari Le espressioni regolari sono costituite dalle stringhe sull alfabeto Σ = Σ {+,,*,(,),φ} ottenute secondo le seguenti regole: 1. φ e ciascun membro di Σ sono Epressioni Regolari 2.
DettagliParser Bottom UP. Giuseppe Morelli
Parser Bottom UP Giuseppe Morelli Parser Bottom UP Un parser Bottom Up lavora costruendo il corrispondente albero di parsing per una data stringa di input partendo dalle foglie (bottom) e risalendo via
Dettagli4.5 Equazioni differenziali lineari del secondo ordine non omogenee 159
4.5 Equazioni differenziali lineari del secondo ordine non omogenee 159 Una volta stabilito che per ogni funzione continua f l equazione (4.23) è risolubile, ci interessa determinarne l integrale generale.
DettagliSupplemento 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
DettagliSommario. Espressioni regolari. Equivalenza tra espressioni regolari e DFA. Esercizi problemi di decisione
Sommario Espressioni regolari Equivalenza tra espressioni regolari e DFA Esercizi problemi di decisione ESPRESSIONI REGOLARI Le espressioni regolari sono una notazione per rappresentare insiemi di stringhe
DettagliUna Breve Introduzione alla Logica
Una Breve Introduzione alla Logica LOGICA La LOGICA è la disciplina che studia le condizioni di correttezza del ragionamento Occorre dire, anzitutto, quale oggetto riguardi ed a quale disciplina spetti
Dettaglix 2 + (x+4) 2 = 20 Alle equazioni di secondo grado si possono applicare i PRINCIPI di EQUIVALENZA utilizzati per le EQUAZIONI di PRIMO GRADO.
EQUAZIONI DI SECONDO GRADO Un'equazione del tipo x 2 + (x+4) 2 = 20 è un'equazione DI SECONDO GRADO IN UNA INCOGNITA. Alle equazioni di secondo grado si possono applicare i PRINCIPI di EQUIVALENZA utilizzati
DettagliFondamenti 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
DettagliFondamenti dell Informatica. Esercizi di preparazione al secondo compitino
Fondamenti dell Informatica (III anno Laurea Triennale) Esercizi di preparazione al secondo compitino a.a. 2016/17 Funzioni primitive ricorsive Si definiscano come primitive ricorsive le seguenti funzioni:
DettagliLinguaggi di Programmazione Corso C. Parte n.6 Linguaggi Regolari ed Espressioni Regolari. Nicola Fanizzi
Linguaggi di Programmazione Corso C Parte n.6 Linguaggi Regolari ed Espressioni Regolari Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Linguaggi Regolari
DettagliPROGRAMMAZIONE III Appello del 7/03/2003
PROGRAMMAZIONE III Appello del 7/03/2003 Scrivere in stampatello COGNOME, NOME e NUMERO DI MATRICOLA (se conosciuto) su ogni foglio consegnato e sul testo, che va consegnato insieme al compito. ESERCIZIO
DettagliESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)
ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09) DISPENSA N. 4 1. Ricerca Binaria Ricorsiva L algoritmo Ricerca Binaria risolve il problema della ricerca di una chiave in un vettore. È un esempio
DettagliChe cos è l Informatica?
Che cos è l Informatica? Che cos è l Informatica? Non è facile da definire! Alcune affermazioni vere: L informatica è parente stretta della matematica Ha a che fare con il modo in cui risolviamo i problemi
DettagliMODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI
MODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI Un linguaggio di programmazione è uno strumento per esprimere algoritmi in una forma adatta allo loro esecuzione da parte di un elaboratore La formulazione
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
DettagliFondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A
Fondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A Cognome: Nome: Corso di Laurea N. Matricola: Giorno non preferito per l orale (Matematici) Giorno non preferito per l orale
DettagliLe equazioni e i sistemi di primo grado
Le equazioni e i sistemi di primo grado prof. Roberto Boggiani Isiss Marco Minghetti 1 settembre 009 Sommario In questo documento verrà trattato in modo semplice e facilmente comprensibile la teoria delle
DettagliDefinizione di Grammatica
Corso di Linguaggi e Traduttori 1 AA 2004-05 GRAMMATICHE 1 Definizione di Grammatica Formalmente definiamo un grammatica G mediante una quadrupla ( VN, VT, P, S ) dove: V N e l insieme dei simboli non
DettagliConcetti 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
DettagliInformatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive
DettagliUniversità degli studi Roma Tre. linguaggio Java. A cura di A. Orlandini. Linguaggi: Sintassi e Semantica - Il. Il linguaggio Java
Università degli studi Roma Tre Linguaggi: Sintassi e Semantica Il A cura di A. Orlandini 1 Obiettivi Distinguere la sintassi dalla semantica di un linguaggio Conoscere le convenzioni del meta-linguaggio
DettagliDispensa 2. Data una grammatica context free esistono tre metodi diversi per costruirne la parsing table per un parser LR:
Dispensa 2 2.1 Costruzione Parsing Table LR: generalità Come tutti i parser tabellari predittivi, anche i parser LR possono essere applicati solo a parsing table senza conflitti (ossia entrate multiple)
DettagliUn messaggio di posta elettronica è costituito da una testata e da un corpo La testata contiene indirizzo,.
1 Grammatiche Gli automi sono un modello riconoscitivo/traduttivo/elaborativo (di linguaggi): essi ricevono una stringa nel loro ingresso e la elaborano in vari modi Passiamo ora ad esaminare un modello
DettagliIntegrale indefinito
Integrale indefinito 1 Primitive di funzioni Definizione 1.1 Se f: [a, b] R è una funzione, una sua primitiva è una funzione derivabile g: [a, b] R tale che g () = f(). Ovviamente la primitiva di una funzione,
DettagliCorso di Logica I. Modulo sul Calcolo dei Sequenti. Dispensa Lezione III.
Corso di Logica I. Modulo sul Calcolo dei Sequenti. Dispensa Lezione III. Giovanni Casini Teorema di corrispondenza fra il calcolo sui sequenti SND c e il calcolo dei sequenti SC c. In queste pagine andiamo
DettagliMonomi L insieme dei monomi
Monomi 10 10.1 L insieme dei monomi Definizione 10.1. Un espressione letterale in cui numeri e lettere sono legati dalla sola moltiplicazione si chiama monomio. Esempio 10.1. L espressione nelle due variabili
DettagliCorso di Linguaggi e Traduttori 1 AA GRAMMATICHE
Corso di Linguaggi e Traduttori 1 AA 2004-05 GRAMMATICHE 1 Definizione di Grammatica Formalmente definiamo un grammatica G mediante una quadrupla V, V, P S ( ) N T, dove: V N e l insieme dei simboli non
DettagliFondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java
Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e
Dettagli