Semantica Denotazionale

Slides:



Advertisements
Presentazioni simili
Punti Fissi.
Advertisements

if (condizione.) { blocco_istruzioni } else
Linguaggi di programmazione
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
Type Checking (1° parte)
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di un’espressione La maggior.
Generazione di Codice Intermedio
Linguaggi a memoria condivisa Lidea è di aggiungere ad un linguaggio imperativo dei costrutti per rappresentare lesecuzione parallela di statements. Supponiamo.
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di unespressione La maggior parte.
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Semantica operazionale
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Ordini Parziali - Reticoli
Dataflow Analysis. Tino CortesiTecniche di Analisi di Programmi 2 Dataflow Analysis Il punto di partenza per una dataflow analysis è una rappresentazione.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Interpretazione Astratta
Model Checking.
Tino CortesiTecniche di Analisi di Programmi 1 Ricorsione Aggiungiamo funzioni ricorsive (in una sola variabile, per semplicità). La funzione semantica.
Semantiche dei linguaggi di programmazione
Tino CortesiTecniche di Analisi di Programmi 1 Astrazione e Concretizzazione In una Interpretazione Astratta ci aspettiamo che il seguente diagramma commuti:
Semantica Denotazionale
Ordini Parziali - Reticoli
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
Linguaggio di programmazione C (Introduzione alla programmazione)
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
-calcolo Vogliamo studiare le problematiche relative al meccanismo di chiamata di funzione (eg differenze fra binding statico e dinamico) in isolamento.
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
Semantica Operazionale Strutturata
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
mosaic manipola oggetti primitivi (ruota e unisci) regole:
Istruzioni Decisionali
Il Linguaggio C.
Espressioni condizionali
Analisi di Immagini e Dati Biologici
Java base II: Strutture di Controllo
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
LINGUAGGI DI PROGRAMMAZIONE
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
Programmazione in Java Claudia Raibulet
CODIFICA Da flow-chart a C++.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Anno accademico Le istruzioni di controllo in C.
1 Un esempio con iteratore: le liste ordinate di interi.
Il linguaggio C Puntatori e dintorni.
4/5/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella.
Introduzione a Javascript
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
1 Il linguaggio C Puntatori e dintorni. 2 Puntatori : idea di base In C è possibile conoscere e denotare l’indirizzo della cella di memoria in cui è memorizzata.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
1 Un po’ di ripasso di algebra §necessaria per discutere la semantica denotazionale l e da riprendere quando parleremo di interpretazione astratta §reticoli.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Nucleo di Java: Struttura e Semantica Espressioni Assegnamento Controllo di sequenza Dichiarazioni.
public class volume { public static void main (String[] args) { final double bott_vol =2.0; final double latt_vol = 0.355; int bott_num = 4; int latt_num.
Elementi di semantica denotazionale ed operazionale
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

Semantica Denotazionale

Semantica Denotazionale Ad ogni costrutto sintattico (parte del programma) P viene associata la sua denotazione [| P |], un oggetto matematico che rappresenta il contributo di P al significato di un qualsiasi programma che contenga P. Composizionalità: la denotazione di un costrutto linguistico (parte del programma) dipende unicamente dalla denotazione delle sue sotto-componenti Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Il linguaggio while Elementi sintattici Notazione BNF Tino Cortesi Tecniche di Analisi di Programmi

Semantica dei numerali La funzione semantica associa ad ogni numerale (in forma binaria) il suo significato (un elemento dell’insieme dei numeri interi Z) Ad esempio, Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Stato ed Espressioni Il significato dei una espressione aritmetica dipende dallo stato delle variabili che vi appaiono. Uno stato è una funzione che associa ad un insieme di variabili un corrispondente insieme di valori Data un’espressione aritmetica ed uno stato possiamo determinare il valore di questa espressione Tino Cortesi Tecniche di Analisi di Programmi

Semantica delle Espressioni Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Esempio Consideriamo l’espressione aritmetica (x+1), valutata in uno stato s tale che s x = 3 Tino Cortesi Tecniche di Analisi di Programmi

Semantica delle espressioni booleane Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Semantica dei comandi Un comando è un costrutto che può modificare lo stato della memoria: è quindi una funzione parziale tra stati La semantica dell’assegnamento assicura che se allora Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Comando sequenziale La semantica del comando sequenziale considera il caso In cui una ddelle due funzioni non sia definita riespetto agli argomenti: Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Comando condizionale Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Comando while La semantica del comando deve essere la stessa di Quindi la semantica di deve essere il punto fisso del funzionale F definito da Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Comando while La semantica del comando while è quindi: dove l’operatore di punto fisso FIX è del tipo: ma cosa ci assicura che il punto fisso esista? Tino Cortesi Tecniche di Analisi di Programmi

C’è un minimo punto fisso? Operazionalmente possono verificarsi tre casi nell’esecuzione del comando while b do S a partire da uno stato s0 : Il comando termina C’è un loop interno (c’e’ un comando all’interno di S che non termina) E’ il loop while che non termina Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Esempio Se è lo stato in cui x vale 5, ecco un esempio per ognuno dei tre casi precedenti: while x>0 do x:=x-1 while x>0 do if (x=1) then (while true do skip) else x:= x-1 While true do skip Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Problema… Per garantire l’esistenza di soluzioni a questa equazione di punto fisso sono necessarie condizioni: Sul dominio: un ordine parziale? un CPO? un reticolo completo? Sul funzionale: monotono? continuo? Tino Cortesi Tecniche di Analisi di Programmi