Semantica operazionale

Slides:



Advertisements
Presentazioni simili
Introduzione alla statistica
Advertisements

Introduzione al linguaggio C++
LINGUAGGIO DI PROGRAMMAZIONE C
Punti Fissi.
Dati, istruzione e pseudocodice
Evoluzione dei linguaggi di programmazione
Universita di Camerino
Linguaggi di programmazione
Specifiche Algebriche
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di un’espressione La maggior.
Generazione di Codice Intermedio
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di unespressione La maggior parte.
Algoritmi e Programmazione
1 Semantica Operazionale di un frammento di Java: lo stato.
Metodologie di Programmazione = decomposizione basata su astrazioni
Semantica Operazionale di un frammento di Java: lo stato
Generalità Linguaggio e Macchina Astratta
Anno accademico Array e puntatori in C.
INFORMATICA typedef.
Programmazione Procedurale in Linguaggio C++
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.
Interpretazione Astratta
Semantica Denotazionale
Semantiche dei linguaggi di programmazione
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Approfondimento delle classi
Unità Didattica 2 I Linguaggi di Programmazione
2) Trattamento dell'informazione. Lab.Calc. I AA 2002/03 - cap.22 Esempio Supponiamo di volere calcolare X, per uno o più possibili valori di Y, in base.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Il Linguaggio C.
Espressioni condizionali
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
Dall’algoritmo al programma.
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Lo sviluppo del software e i linguaggi di programmazione
La comunicazione uomo … macchina
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Script 1 Marco D. Santambrogio – Ver. aggiornata al 2 Dicembre 2013.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
ECDL Patente europea del computer
XLS ESERCIZIO BASE EXCEL – ESERCIZIO BASE
Il linguaggio Fortran 90: 3. Procedure e Funzioni
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
Lezione 3 Struttura lessicale del linguaggio
1 Tecniche per il passaggio dei parametri. 2 Contenuti ¥la tecnica base (nei vari paradigmi) ¥ passaggio per costante, per riferimento, di funzioni, procedure.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 3 Aprile 2015.
Rappresentazione degli algoritmi
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Nucleo di Java: Struttura e Semantica Espressioni Assegnamento Controllo di sequenza Dichiarazioni.
Lo stato  I domini della semantica restano invariati: Ide, Val (Int  { ,  }) Loc (locazioni di memoria), FunctDecl. ma definiamo 2 funzioni: Loc :
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
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Problemi, algoritmi e programmazione
Informazione ?. Informazione è Quale è il centravanti del Napoli?  La soluzione è ….. Scelta di un centravanti fra quelli di serie A! è Che giorno è.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2016.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Semantica operazionale:
Transcript della presentazione:

Semantica operazionale La semantica ha lo scopo di definire il significato di un programma, la semantica operazionale raggiunge tale scopo definendo il comportamento del sistema (calcolatore) mentre esegue il programma. Il comportamento del programma viene definito utilizzando un sistema di transizioni in cui le configurazioni devono permettere di definire lo stato del sistema, le configurazioni terminali rappresentano i risultati, le transizioni descrivono l’evoluzione del sistema durante la computazione delle istruzioni del programma. 3/27/2017

Un sistema di transizioni per espressioni semplici Il sistema di transizioni che descrive la semantica di un linguaggio di programmazione (anche se non completo),è piuttosto complesso, per cui verrà introdotto per passi; Inizieremo con semplice linguaggio di espressioni che può essere descritto da un sistema di transizione molto semplice via via estenderemo il linguaggio, con nuovi meccanismi e di conseguenza il sistema di transizioni verrà anch’esso esteso. Exp::= Exp Op Exp | Num | ‘(‘Exp’)’ Op::= + | - | * | / Num::= ... Espresioni semplici 3/27/2017

Il sistema di transizioni per le espressioni semplici Semantica di Exp: Sexp  < exp, Texp, exp> exp  {E | E Exp}  {n | n} T exp  {n | n} exp Eexp n E’exp n’ n [op] n’ = m E op E’exp m Eexp n (E)exp n n exp n (Expop) (Exp()) (ExpNum)

Esempio: calcolo di 25-3*7 25 - 3 * 7 exp{ (expop), 25 expnum 25, 3 [*] 7 = 21 } 21 25 > 21 , 25 [-] 21 = 4 } 4

Semantica Operazionale: Espressioni con identificatori di costanti Riferire una quantità mediante un nome è utile ed è prassi comune in molti formalismi. Le variabili in matematica sono dei nomi (identificatori) ai quali è associato un valore. Nei linguaggi funzionali i valori legati agli identificatori sono costanti. Nei linguaggi di programmazione di tipo imperativo gli identificatori con associato il valore sono un meccanismo fondamentale per la definizione dei programmi. Esistono identificatori costanti e modificabili = 138,16 allorche’ Pigreco=3,14 = 138,226 allorche’ Pigreco=3,1415 2 * Pigrego * 22

Identificatori In ogni linguaggio è necessario definire dei nomi, nei L.P. i nomi vengono chiamati identificatori ed hanno una particolare sintassi, generalmente: Ide::=Lettera Carattere* Lettera::=A|B|C|…|Z|a|b|…|z, Carattere::=Lettera|Cifra|Simbolo, Cifra::=0|1|2|…|9, Simbolo::=-|$|%|:|<|…, Alcuni simboli non sono ammessi 3/27/2017

Un linguaggio d’espressioni con identificatori di costanti Una grammatica G Exp::= Exp Op Exp | Num | ‘(‘ Exp ‘)’ | Ide Op::= + | - |* | / Num::= … Ide::= ... I domini per questa semantica: Ide: gli identificatori validi del C Val: Int Float 3/27/2017

Frame I frame (i) sono rappresentazioni estensionali di funzioni parziali. Un frame è un insieme di coppie {(d,c) |d Dom, c  Cod} Per tutti gli elementi d del dominio per cui non esiste (d,c)   la funzione è indefinita (cioe vale ). applicazione (d) = c dDom, cCod w è il frame sempre indefinito (cioè  x Dom w(x)=  3/27/2017

Frame In questa semantica i frame sono funzioni Ide ->Val Esempi: 1={<Pigreco,3.14>, <Euro,1936>} e 2={<Pigreco,3.1415>} Esempi di applicazione delle funzioni 1, 2: 1(Pigreco)=3.14 j2(Pigreco)=3.1415 j1(Euro)= 1936 j2(Euro)=  3/27/2017 9

Semantica di espressioni con identificatori di costanti In questo caso lo stato è semplicemente un frame Semantica di Exp: Sexp  < exp, Texp, exp> exp  {<E,j> | E Exp, j{Ide Val}  {n | n} T exp  {n | n} exp <E,j>exp n <E’,j> exp n’ n [op1] n’ = m <E op1 E’,j> exp m <E,j> exp n <(E),j> exp n <n,j> exp n j(x)= n <x,j> exp n (Exp+|-) (Exp()) (ExpNum) (ExpIde)

Esempio:calcolo di 2*Pigreco*22 <2 * Pigreco * 22, j{Pigreco=3}> exp{ (exp*|/), 2 expnum 2 , Pigreco * 22 exp { (exp*|/), Pigreco exp { (expIde), j(Pigreco)=3 } 3 22 expnum 22 3 [*] 22 = 66 } 66 2 [*] 66 = 132 } 132