Semantica operazionale dei linguaggi di Programmazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Semantica operazionale dei linguaggi di Programmazione"

Transcript

1 Semantica operazionale dei linguaggi di Programmazione Stato Rosario Culmone, Luca Tesei 19/12/2007 UNICAM - p. 1/??

2 Espressioni con variabili Espandiamo il sistema exp in modo da trattare il nuovo caso sintattico: Exp ::= Num Ide (Exp) Exp Op Exp Op ::= + - * / % Num ::=... Ide ::=... Con questa grammatica possiamo scrivere espressioni che contengono variabili indicate con i nomi generabili da Ide Es: x +2, 3 pippo +45 % y, tmp,... 19/12/2007 UNICAM - p. 2/??

3 Espressioni con variabili Quale può essere il significato da associare a questi oggetti sintattici? Quello che ci aspettiamo è che le variabili presenti nell espressione abbiano un certo valore associato Se questo è vero possiamo di nuovo associare all espressione un valore seguendo la logica del sistema nella versione precedente Per far questo introduciamo il concetto di stato 19/12/2007 UNICAM - p. 3/??

4 Lo stato: forma semplice Nella sua forma più semplice, uno stato non è altro che un insieme di associazioni del tipo nome, val dove val è un valore Indichiamo genericamente con Val l insieme dei valori: per quanto visto sino ad ora Val è il dominio semantico IN Uno stato ϕ può essere visto come una funzione ϕ : Ide Val Dato un nome x viene prodotto il valore associato ad x in ϕ Questa forma semplice di stato la chiameremo frame 19/12/2007 UNICAM - p. 4/??

5 Lo stato: forma semplice In generale un frame ϕ è una funzione parziale sul dominio Ide Utilizziamo ϕ, ϕ 0, ϕ, ϕ,... come metavariabili per denotare generici frame. Usiamo Φ per indicare l insieme di tutti i possibili frame Adottiamo l usuale notazione funzionale ϕ(x) per denotare il valore associato ad x nel frame ϕ Dato un frame ϕ che non contiene alcuna associazione per l identificatore x scriviamo ϕ(x) = Indichiamo con ω un frame vuoto, ovvero tale che ϕ(x) = qualunque sia x 19/12/2007 UNICAM - p. 5/??

6 Rappresentazione funzionale Una possibile rappresentazione di un frame, in forma funzionale, è la seguente Siano x 1,x 2,...,x k tali identificatori e siano v 1,v 2,...,v k i valori ad essi associati nello stato ϕ Definiamo ϕ come la seguente funzione: v 1 se x = x 1 v 2 se x = x 2 ϕ(x) =... v k se x = x k altrimenti 19/12/2007 UNICAM - p. 6/??

7 Rappresentazione estensiva Un modo alternativo di rappresentare il frame consiste nell elencare le associazioni presenti in ϕ come segue: ϕ = {x 1 v 1,x 2 v 2,...,x k v k } In questa notazione è essenziale che gli identificatori x 1,x 2,...,x k siano tutti distinti tra loro Non è importante l ordine in cui vengono elencate le associazioni x i v i all interno delle parentesi graffe 19/12/2007 UNICAM - p. 7/??

8 Rappresentazione grafica Graficamente indicheremo un frame in questo modo: x 1 v 1 ϕ = x 2 v 2... x k v k 19/12/2007 UNICAM - p. 8/??

9 Miglioriamo il sistema exp Per poter calcolare la semantica delle espressioni formate con la nuova grammatica dotiamo le configurazioni non terminali del sistema di transizioni di uno stato nella sua forma semplice: Γ exp = { E, ϕ E Exp, ϕ Φ} {n n IN} T exp = {n n IN} 19/12/2007 UNICAM - p. 9/??

10 Regole Rispetto alla versione precedente del sistema c è una sola regola in più La nuova regola gestisce il caso sintattico di base Ide Un qualsiasi albero sintattico di Exp può avere quindi come foglie delle stringhe di Num o dei nomi di variabili Ide Dato un certo stato ϕ e una espressione E, quest ultima deve essere valutata tenendo presente i valori associati da ϕ ai nomi Quindi ϕ deve essere disponibile in tutte le chiamate ricorsive del sistema S exp 19/12/2007 UNICAM - p. 10/??

11 Regole Vediamo quindi la regola (exp ide ) per gestire il nuovo caso sintattico ϕ(x) = n x, ϕ exp n La premessa ϕ(x) = n esprime il fatto che ϕ deve associare al nome x un valore naturale e quindi diverso da 19/12/2007 UNICAM - p. 11/??

12 Regole Tutte le altre regole restano invariate tranne che adesso nelle configurazioni c è anche lo stato Ogni regola diversa da (exp ide ) non usa direttamente lo stato Le regole ricorsive si limitano a passarlo tale e quale alle istanze ricorsive del sistema che costruiscono sottoderivazioni La regola (exp n ) non lo usa: n, ϕ exp n 19/12/2007 UNICAM - p. 12/??

13 Regole Vediamo alcuni esempi delle altre regole E, ϕ exp n E, ϕ exp n m = n +n E+E, ϕ exp m (exp + ) E, ϕ exp n E, ϕ exp n m = n n E*E, ϕ exp m (exp ) E, ϕ exp n E, ϕ exp n n n m = n n E-E, ϕ exp m (exp ) 19/12/2007 UNICAM - p. 13/??

14 Derivazione Facciamo una derivazione usando questo sistema Prendiamo ϕ = {x 5,y 2} (x+8) / y, ϕ exp { (exp div ), (d1): (x+8), ϕ exp 13, (exp ide ): y, ϕ exp 2 2 0, 13 div 2 = 6 } 6 19/12/2007 UNICAM - p. 14/??

15 Sottoderivazioni (d1): (x+8), ϕ exp { (exp () ), (d2): x+8, ϕ exp 13 } (d2): 13 x+8, ϕ exp { (exp + ), ((exp ide )): x, ϕ exp 5, ((exp n )): 8, ϕ exp 8, 13 = } 13 19/12/2007 UNICAM - p. 15/??

16 Funzione di valutazione semantica Alla luce di questo nuovo sistema e dell introduzione dello stato cambia anche la funzione di valutazione semantica Il significato di una espressione aritmetica contentente dei nomi di variabili dipende anche dallo stato Formalmente la funzione di valutazione semantica E ha questo nuovo tipo: E:Exp (Φ IN) Ciò significa che ad ogni espressione E viene associata una funzione La semantica di una espressione che contiene Ide è una funzione 19/12/2007 UNICAM - p. 16/??

17 Funzione di valutazione semantica La funzione associata all espressione E, dato un certo stato ϕ, restituisce un numero naturale n che rappresenta il valore dell espressione nello stato ϕ Formalmente lo scriviamo utilizzando questa notazione: E [E] ϕ = n Possiamo, al solito, definire questa funzione utilizzando l ultima versione del sistema di transizioni S exp : E [E] ϕ = n se e solo se E, ϕ exp n 19/12/2007 UNICAM - p. 17/??

18 Strutturazione dello stato Modellare lo stato come un semplice frame non basta Il linguaggio Java ha dei meccanismi di scope delle variabili associati ai blocchi e ai sottoblocchi annidati Per trattare correttamente questi meccanismi abbiamo bisogno di un modello di stato più complesso Il modo giusto di trattare lo stato è quello di modellarlo come pila di frame 19/12/2007 UNICAM - p. 18/??

19 Pila di frame Ogni frame della pila si comporta esattamente come abbiamo visto sopra Per rappresentare una pila di frame possiamo usare una notazione grafica: x 31 ϕ 2 y 12 σ z 8 ϕ 1 x 25 19/12/2007 UNICAM - p. 19/??

20 Il nuovo stato Nella figura precedente il frame più in basso nella pila è ϕ 1 Il frame in testa alla pila è ϕ 2 Una pila di frame verrà indicata con le metavariabili σ, σ, σ 1, σ 2,... Indichiamo con Ω lo stato vuoto (ovvero la pila vuota di frame) L insieme Σ degli stati è definito induttivamente come segue: Σ = {Ω} {ϕ.σ ϕ Φ, σ Σ} 19/12/2007 UNICAM - p. 20/??

21 Il nuovo stato Una formalizzazione dello stato σ della figura di prima è la sequenza: ϕ 2.ϕ 1.Ω dove ϕ 1 e ϕ 2 sono le funzioni: ϕ 1 (v) = ϕ 2 (v) = { 8 se v=z 25 se v=x altrimenti { 12 se v=y 31 se v=x altrimenti 19/12/2007 UNICAM - p. 21/??

22 Nomi pluridefiniti Nella definizione di stato che abbiamo dato potrebbero esserci delle variabili a cui sono associati valori diversi in frame diversi Ad esempio nella figura di prima x ha valore 8 in ϕ 1 e 31 in ϕ 2 Questa possibilità deriva da una semplificazione che facciamo nel nostro linguaggio Java didattico Nel linguaggio Java completo questo non può mai accadere poichè il compilatore vieta di dichiarare nei sottoblocchi delle variabili con dei nomi che sono già presenti nell attivazione corrente 19/12/2007 UNICAM - p. 22/??

23 Frame e blocchi Nel nostro caso risolviamo il conflitto seguendo la logica della pila di frame Ogni frame, vedremo, contiene le variabili definite in un certo blocco Il frame che è in testa alla pila rappresenta le associazioni fatte più di recente, cioè quelle dell ultimo blocco aperto Scendendo in basso nella pila di un frame troviamo le variabili dichiarate nel blocco a cui quello corrente è annidato e così via 19/12/2007 UNICAM - p. 23/??

24 Ricerca del valore di una variabile Diciamo che il valore di un identificatore, in generale, è quello dell associazione più recente Tale valore si trova ricercandolo nei frame dello stato dall alto verso il basso Nell esempio, il valore dell identificatore x è 31 Il frame ϕ 2 è stato infatti impilato sul frame ϕ 1 Sempre nell esempio, il valore dell identificatore z è 8 19/12/2007 UNICAM - p. 24/??

25 Formalizziamo Dato uno stato σ ed un identificatore x indichiamo con σ(x) il valore associato ad x in σ Diamo una definizione ricorsiva di questa operazione: σ(x) = { se σ = Ω ϕ(x) se σ = ϕ.σ e ϕ(x) σ (x) se σ = ϕ.σ e ϕ(x) = 19/12/2007 UNICAM - p. 25/??

26 Esempio Consideriamo ancora l esempio precedente, con σ = ϕ 2.ϕ 1.Ω Abbiamo: σ(x) = 31 poiché ϕ 2 (x) = 31 σ(z) = 8 poiché ϕ 2 (z) = e ϕ 1 (z) = 8 19/12/2007 UNICAM - p. 26/??

27 Regole Con la nuova definizione di stato strutturato, le regole di S exp cambiano Le configurazioni del sistema di transizione E, ϕ vanno cambiate in E, σ In ogni regola dobbiamo mettere σ al posto di ϕ Vediamo come esempio la regola (exp ide ): σ(x) = n x, σ exp n 19/12/2007 UNICAM - p. 27/??

28 Modifica dello stato Come vedremo in seguito il significato di un programma è quello di eseguire transizioni di stato Ci si aspetta che tali transizioni modifichino lo stato in accordo al significato del programma (semantica) e allo stato iniziale (input) Definiamo quindi precisamente le operazioni di modifica dello stato Per cominciare definiremo una operazione che modifica un frame, poi ci occuperemo di definire la modifica di uno stato vero e proprio, cioè una pila di frame 19/12/2007 UNICAM - p. 28/??

29 Modifica di un frame Un frame ϕ è rappresentato da una funzione parziale La modifica di un frame corrisponde quindi alla modifica di una funzione parziale Per questo tipo di operazione si usa spesso la notazione ϕ[ v / x ] La funzione denotata da questa espressione corrisponde alla funzione ϕ originale che: resta invariata per tutti gli identificatori diversi da x produce il valore v per l identificatore x 19/12/2007 UNICAM - p. 29/??

30 Modifica di un frame In notazione matematica: ϕ[ v / x ](y) = { ϕ(y) se y x v se y = x Si noti che se ϕ(x) = invece ϕ[ v / x ](x) = v Cioè l operazione di modifica, oltre a modificare il valore di un identificatore presente in un frame ϕ, può essere usata per aggiungere un nuovo identificatore nel frame, dandogli un valore iniziale 19/12/2007 UNICAM - p. 30/??

31 Modifica in parallelo La notazione può essere estesa per trattare la modifica di un frame su più identificatori in parallelo Se ϕ è un frame, x 1,...x k sono k identificatori distinti e v 1,...v k sono k elementi in Val, la notazione ϕ[ v 1 /x1,..., v k /xk ] denota il frame: ϕ[ v 1 /x1,..., v k /xk ](y) = v 1 se y = x 1 v 2 se y = x 2... v k ϕ(y) se y = x k altrimenti 19/12/2007 UNICAM - p. 31/??

32 Modifica in parallelo Ad esempio: dato il frame ϕ = {x 5,y 2} detto ϕ 1 il frame ϕ[ 4 / x, 3 / y ] avremo che ϕ 1 (x) = 4, ϕ 1 (y) = 3 ϕ 1 (z) = per ogni altro identificatore z Da rimarcare ancora il fatto che gli identificatori modificati in parallelo devono essere tutti distinti Se così non fosse il risultato della modifica non sarebbe più una funzione (ci sarebbero più valori possibili per lo stesso identificatore) 19/12/2007 UNICAM - p. 32/??

33 Modifiche multiple Se fosse necessario rappresentare modifiche successive per lo stesso identificatore, non potremo utilizzare la notazione appena introdotta per modifiche multiple Ad esempio, saremo autorizzati a scrivere ϕ = (ϕ[ 10 / x ])[ 20 / x ] Sarebbe sbagliato invece scrivere ϕ = ϕ[ 10 / x, 20 / x ] Dalla definizione è chiaro che ϕ è una funzione e che ϕ (x) = 20 Invece ϕ non è una funzione da Ide in Val 19/12/2007 UNICAM - p. 33/??

34 Modifiche multiple: esempio Sia ϕ = {x 5,y 2} Il frame ϕ[ 4 / x, 3 / z ] è uguale a ϕ = {x 4,y 2,z 3} Verificarlo per esercizio 19/12/2007 UNICAM - p. 34/??

35 Modifica dello stato Passiamo ora a modificare lo stato vero e proprio, cioè una pila di frame σ Utilizzeremo la stessa notazione per indicare l operazione di modifica Tuttavia chiariamo subito che l operazione sarà di natura diversa da quella definita sui frame Sappiamo che il valore associato ad un identificatore x in uno stato è quello che si determina trovando una associazione per x a partire dal frame più recente Definiamo la modifica σ[ v / x ] in modo che riguardi l associazione più recente per x 19/12/2007 UNICAM - p. 35/??

36 Modifica dello stato Detto altrimenti, nello stato σ[ v / x ] viene modificato il frame più recente che contiene una associazione per x Consideriamo ad esempio uno stato σ del tipo ϕ 1.ϕ 2...ϕ i...ϕ k.ω Se ϕ i è il primo frame nella sequenza che contiene una associazione per x cioè ϕ 1 (x) = ϕ 2 (x) =... = ϕ i 1 (x) = e ϕ i (x) ) e i k Allora lo stato σ[ v / x ] non è altro che la sequenza modificata ϕ 1.ϕ 2...ϕ i [ v / x ]...ϕ k.ω 19/12/2007 UNICAM - p. 36/??

37 Modifica dello stato Si noti che, se nessun frame nello stato contiene una associazione per x, la modifica non ha alcun effetto Nell esempio, se ϕ 1 (x) = ϕ 2 (x) =... = ϕ k (x) =, allora σ[ v / x ] = σ In questo sta la maggiore differenza tra la modifica di un frame e la modifica di uno stato L operazione di modifica di un frame può essere usata per introdurre nuovi identificatori nel frame (dichiarazione) Invece l operazione di modifica di una pila di frame non può introdurre nuovi identificatori nello stato 19/12/2007 UNICAM - p. 37/??

38 Modifica dello stato L operazione così definita non segnala nessun eventuale errore nel caso di modifica di un identificatore non esistente L operazione si limita ad avere effetto nullo sullo stato Questo tipo di definizione di modifica è sufficiente per essere usata nel nostro sistema di transizioni che definisce la semantica Esso infatti non prevede una gestione degli errori di questo tipo Questo comportamento può essere cambiato qualora si volesse espandere il sistema e introdurre una gestione degli errori 19/12/2007 UNICAM - p. 38/??

39 Modifica dello stato Diamo una definizione formale della modifica di una pila di frame Utilizziamo la struttura ricorsiva della pila per definire ricorsivamente la modifica nel modo che abbiamo precedentemente illustrato informalmente { ϕ[ v / x ].σ se σ = ϕ.σ e ϕ(x) σ[ v / x ] = ϕ.σ [ v / x ] se σ = ϕ.σ e ϕ(x) = Ω se σ = Ω La notazione può essere estesa facilmente per trattare la modifica di una sequenza di identificatori distinti, che indicheremo con σ[ v 1 /x1,..., v k /xk ]. 19/12/2007 UNICAM - p. 39/??

40 Modifica dello stato: esempio Consideriamo come esempio lo stato σ = ϕ 2.ϕ 1.Ω, dove ϕ 1 e ϕ 2 sono i frame seguenti: ϕ 1 (v) = { 8 se v=z 25 se v=x ϕ 2 (v) = { 12 se v=y 31 se v=x altrimenti altrimenti Lo stato σ[ 50 / z, 40 / x ] è la sequenza ϕ 2.ϕ 1.Ω, con ϕ 1 = ϕ 1 [ 50 / z ] e ϕ 2 = ϕ 2 [ 40 / x ] D altra parte, lo stato σ[ 10 / w ] = σ dal momento che ϕ 2 e ϕ 1 non contengono una associazione per w 19/12/2007 UNICAM - p. 40/??

41 Notazioni riguardanti lo stato Nelle premesse delle regole e nella discussione sulla semantica dei comandi utilizzeremo spesso delle equazioni che hanno come componenti parti di uno stato o di un frame Analizziamone alcune e chiariamo da subito il loro significato 19/12/2007 UNICAM - p. 41/??

42 Notazioni riguardanti lo stato 1. ϕ(x) = v (risp. σ(x) = v) stabilisce semplicemente che il valore associato ad x nel frame ϕ (risp. nello stato σ) è v, mentre è ignoto (e non necessariamente indefinito) il valore associato ad ogni altro identificatore che non sia x 2. ϕ(x) = v non equivale a dire che il frame ϕ contiene una sola associazione (quella per l identificatore x): non corrisponde cioè a stabilire che ϕ = {x v} 3. La scrittura {x v} indica un frame in cui il valore associato ad x è v, mentre è indefinito ( ) il valore associato ad ogni altro identificatore 19/12/2007 UNICAM - p. 42/??

43 Notazioni riguardanti lo stato 4. Entrambe le scritture precedenti non equivalgono a ϕ[ v / x ], in quanto quest ultima sta ad indicare un frame che associa ad x il valore v e si comporta come ϕ, qualunque esso sia, in corrispondenza di ogni altro identificatore 5. Infine, mentre ϕ[ v / x ] rappresenta comunque un frame diverso da ϕ (con la particolarissima eccezione in cui ϕ(x) = v), σ[ v / x ] può essere una pila di frame identica a σ 19/12/2007 UNICAM - p. 43/??

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

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

Semantica operazionale dei Linguaggi di Programmazione Imperativi. Espressioni. Sistema di transizioni per la semantica

Semantica 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

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

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

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

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

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if Scelte Costrutto condizionale Scelte, blocchi Fino ad ora il corpo dei metodi che abbiamo scritto aveva solo un modo di essere eseguito: in sequenza dalla prima istruzione all ultima In applicazioni non

Dettagli

7 Procedure. Estensioni sintattiche Dec ::= void Ide (Ptype Ide) Block Com ::= Ide(Exp);

7 Procedure. Estensioni sintattiche Dec ::= void Ide (Ptype Ide) Block Com ::= Ide(Exp); 7 Procedure Nei linguaggi di programmazione è di fondamentale importanza riuscire a scrivere dei programmi che siano facili da leggere e da modificare. Lo scopo di funzioni e procedure è quello di permettere

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

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

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14

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

Dettagli

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

Introduzione. Semantica operazionale dei linguaggi di Programmazione. Semantica di un linguaggio formale. Come attribuire la semantica 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

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

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

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

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

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

Precorsi di matematica

Precorsi di matematica Precorsi di matematica Francesco Dinuzzo 12 settembre 2005 1 Insiemi Il concetto di base nella matematica moderna è l insieme. Un insieme è una collezione di elementi. Gli elementi di un insieme vengono

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

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi Codice BCD Prima di passare alla rappresentazione dei numeri relativi in binario vediamo un tipo di codifica che ha una certa rilevanza in alcune applicazioni: il codice BCD (Binary Coded Decimal). È un

Dettagli

1 Il Paradigma ad Oggetti

1 Il Paradigma ad Oggetti 1 Il Paradigma ad Oggetti 1.1 Mini-Java In questa sezione introduciamo un sottoinsieme molto elementare del linguaggio ad oggetti Java, che chiamiamo Mini-Java. Nel linguaggio Mini-Java abbiamo incluso

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

Operazioni numeriche - Input

Operazioni numeriche - Input Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input 11/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Operazioni fra interi e decimali In Java

Dettagli

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale LOGICA DI HOARE INTRODUZIONE Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: es. grammatica in BNF Semantica spesso data in modo informale di stile operazionale

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

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

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

Programmazione II. Lezione 3. Daniele Sgandurra 26/10/2010.

Programmazione II. Lezione 3. Daniele Sgandurra 26/10/2010. Programmazione II Lezione 3 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 26/10/2010 1/35 Programmazione II Lezione 3 26/10/2010 Sommario 1 2 Semantica 2/35 Programmazione II Lezione 3 26/10/2010 Parte

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

Il primo programma C++

Il primo programma C++ Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Assegnazione di una variabile

Assegnazione di una variabile Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile

Dettagli

Semantiche dei linguaggi di programmazione

Semantiche dei linguaggi di programmazione Semantiche dei linguaggi di programmazione By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents La semantica del linguaggio... 1 Tipi di semantica... 1 Esempio di semantica operazionale...

Dettagli

Scheme: struttura del programma e campo di azione

Scheme: struttura del programma e campo di azione «a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Scheme: struttura del programma e campo di azione Definizione e campo di azione...........................

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

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione

Dettagli

PROGRAMMAZIONE III Appello del 7/03/2003

PROGRAMMAZIONE 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

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data la tripla di

Dettagli

Semantica operazionale e denotazionale

Semantica operazionale e denotazionale Semantica operazionale e denotazionale Abbiamo definito la semantica di tre linguaggi di programmazione in termini operazionali, cioé in termini di sequenze di computazione Abbiamo assegnato un algoritmo

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

Fondamenti dell Informatica. Esercizi di preparazione al secondo compitino

Fondamenti 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:

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 15 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale A. Corradini e F. Bonchi Dip.to Informatica Logica per la Programmazione

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Integrale indefinito

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

Dettagli

9 Calcolo dei sequenti LC p

9 Calcolo dei sequenti LC p 9 Calcolo dei sequenti LC p In questa sezione mostriamo un metodo più elegante, semplice e soprattutto AUTOMATICO per mostrare se una proposizione è valida o meno e soddisfacibile o meno. Tale metodo è

Dettagli

Variabili e assegnazione

Variabili e assegnazione Corso di Laurea Ingegneria Civile Fondamenti di Informatica Variabili e assegnazione Carla Limongelli Marzo 2009 Variabili e assegnazione 1 Contenuti Variabili a ab e assegnazionea e Variabili e aree di

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

Contenuti. Elementi di semantica denotazionale ed operazionale. Sintassi astratta. Sintassi e semantica. ! sintassi astratta e domini sintattici

Contenuti. Elementi di semantica denotazionale ed operazionale. Sintassi astratta. Sintassi e semantica. ! sintassi astratta e domini sintattici Elementi di semantica denotazionale ed operazionale Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

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

Matematica per l Economia, a.a Integrazione al libro di testo

Matematica per l Economia, a.a Integrazione al libro di testo Matematica per l Economia, a.a. 2016 2017 Integrazione al libro di testo Gianluca Amato 20 dicembre 2016 1 Note ed errata corrige Sezione 2.3, definizione di dominio. La definizione di dominio data dal

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 13 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data una Tripla

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

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

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

1 Prodotto cartesiano di due insiemi 1. 5 Soluzioni degli esercizi 6

1 Prodotto cartesiano di due insiemi 1. 5 Soluzioni degli esercizi 6 1 PRODOTTO CARTESIANO DI DUE INSIEMI 1 I-4 R 2 ed R 3 Piano e spazio cartesiani Indice 1 Prodotto cartesiano di due insiemi 1 2 Rappresentazione di R 2 sul piano cartesiano 2 3 Sottoinsiemi di R 2 e regioni

Dettagli

Logica proposizionale

Logica 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

Dettagli

Scope, Memoria e Tabella dei Simboli

Scope, Memoria e Tabella dei Simboli Scope, Memoria e Tabella dei Simboli La tabella dei simboli è uno strumento fondamentale attraverso il quale interpreti e compilatori implementano la traduzione da un programma scritto in un linguaggio

Dettagli

Tipi di dato, variabili, istruzioni

Tipi di dato, variabili, istruzioni Tipi di dato, variabili, istruzioni Esercizio 1 Implementare un servizio che estrae due numeri random tra 1 e 100, stampa a video i due numeri ed esegue le seguenti operazioni: se almeno uno dei due numeri

Dettagli

1 Prodotto cartesiano di due insiemi 1. 5 Soluzioni degli esercizi 6

1 Prodotto cartesiano di due insiemi 1. 5 Soluzioni degli esercizi 6 1 PRODOTTO CARTESIANO DI DUE INSIEMI 1 R 2 ed R 3 Piano e spazio cartesiani Indice 1 Prodotto cartesiano di due insiemi 1 2 Rappresentazione di R 2 sul piano cartesiano 2 3 Sottoinsiemi di R 2 e regioni

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

Linguaggi formali e compilazione

Linguaggi 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

Dettagli

Quick calculus Capitolo 1 Il problema della tangente

Quick calculus Capitolo 1 Il problema della tangente Quick calculus Capitolo 1 Il problema della tangente Introduzione Ricavare una retta tangente ad una curva di secondo grado come un circonferenza o una parabola, è un problema che si risolve facilmente.

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

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr. Programmazione A.A. 2002-03 I Costrutti di base ( Lezione XII, parte I ) Gestione dell input Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella LA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico

Dettagli

Espressioni e Comandi

Espressioni e Comandi Espressioni e Comandi March 24, 2017 Elementi di Base dei Programmi Ricordate? Macchina Astratta: Insieme di algoritmi e strutture dati che permettono di memorizzare ed eseguire programmi Abbiamo parlato

Dettagli

4 La Logica come base di ogni scienza. 5 Alla ricerca della forma logica. logica

4 La Logica come base di ogni scienza. 5 Alla ricerca della forma logica. logica 4 La Logica come base di ogni scienza La Logica è alla base di ogni scienza (o teoria) in quanto è fondamento di ogni scienza non tanto per i contenuti specifici ma per la loro articolazione deduttiva.

Dettagli

Due osservazioni sulle variabili

Due osservazioni sulle variabili Due osservazioni sulle variabili Dichiarazione: cosa succede se non dichiaro una variabile e la uso? provare... Le costanti: sono utilizzate nei linguaggi di programmazione rendere simbolici dei valori

Dettagli

15. Nozione di modello e verità di un predicato

15. Nozione di modello e verità di un predicato 15. Nozione di modello e verità di un predicato Def. 0.1 (modello di un linguaggio predicativo) Dato linguaggio predicativo L con costanti c j e predicati atomici P k (x 1,..., x n ) un modello per L è

Dettagli

Programmazione ricorsiva.

Programmazione ricorsiva. In quasi tutti i linguaggi di programmazione evoluti è ammessa la possibilità di definire funzioni/procedure ricorsive: durante l esecuzione di una funzione F è possibile chiamare la funzione F stessa.

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 per il passaggio dei parametri

Tecniche per il passaggio dei parametri Tecniche per il passaggio dei parametri 1 Contenuti la tecnica base (nei vari paradigmi) passaggio per costante, per riferimento, di funzioni, procedure e oggetti altre tecniche passaggio per nome nuovi

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 8 Formalizzazione di Enunciati Semantica della Logica del Primo Ordine pag. 1 pag. 2 Fconnettivi Formalizzazione di Enunciati: Linee Guida (1) Anche se abbiamo associato

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 2-Iterazione 1 Prerequisiti Salto condizionato Salto incondizionato Espressione logica 2 1 Introduzione In alcuni casi si presenta la necessità di eseguire un ciclo, ossia

Dettagli

5.4 Istruzione di input L istruzione di input ha la forma:

5.4 Istruzione di input L istruzione di input ha la forma: 5.2 Istruzione di output L istruzione di output ha la forma: cout

Dettagli

REGOLE DI INFERENZA PER TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2012/13

REGOLE DI INFERENZA PER TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2012/13 REGOLE DI INFERENZA PER TRIPLE DI HOARE Corso di Logica per la Programmazione A.A. 2012/13 RIASSUNTO Una tripla {P} C {R} è costituita da precondizionecomando-postcondizione La tripla {P} C {R} è soddisfatta

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

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in I Parametri di tipo vettore I Il meccanismo del passaggio per valore di un indirizzo consente il passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad

Dettagli

Espressività e limitazioni delle grammatiche regolari

Espressività 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

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

Dispensa di Informatica Teorica (Elementi) - Teorema di Cook

Dispensa di Informatica Teorica (Elementi) - Teorema di Cook Teorema di ook (Idea generale) Dato L NP, costruire una trasformazione polinomiale f da L a L (sodd, e), cioè il linguaggio composto dalle stringhe che corrispondono ad istanze del problema sodd. La trasformazione

Dettagli

Che cos è l Informatica?

Che 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

Dettagli

1 IL LINGUAGGIO MATEMATICO

1 IL LINGUAGGIO MATEMATICO 1 IL LINGUAGGIO MATEMATICO Il linguaggio matematico moderno è basato su due concetti fondamentali: la teoria degli insiemi e la logica delle proposizioni. La teoria degli insiemi ci assicura che gli oggetti

Dettagli

Programmazione II. Lezione 12. Daniele Sgandurra 26/11/2010.

Programmazione II. Lezione 12. Daniele Sgandurra 26/11/2010. Programmazione II Lezione 12 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 26/11/2010 1/17 Programmazione II Lezione 12 26/11/2010 Sommario 1 2/17 Programmazione II Lezione 12 26/11/2010 Parte I 3/17

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

Matematica I. Modulo: Analisi Matematica. Corso 3 (matricole dal n al n 40167) Docente: R. Argiolas

Matematica I. Modulo: Analisi Matematica. Corso 3 (matricole dal n al n 40167) Docente: R. Argiolas Matematica I Modulo: Analisi Matematica orso 3 (matricole dal n 39905 al n 40167) Docente: R. Argiolas Facoltà di Ingegneria - Università degli Studi di agliari Anno Accademico: 2008/2009 Brevi richiami

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

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 1 Costanti, variabili ed espressioni 1 Prerequisiti Concetto matematico di variabile, costante ed espressione Valutazione di espressioni Sintassi e regole di precedenza nelle

Dettagli

Corso di Informatica

Corso 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

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 15 Sistema di Dimostrazioni per le Triple di Hoare Sequenze (Array) e Aggiornamento Selettivo A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli