La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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.

Presentazioni simili


Presentazione sul tema: "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."— Transcript della presentazione:

1

2 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 = 10; double totale = bott_vol * bott_num + latt_vol * latt_num; System.out.print(“volume totale ” + totale + “ litri” ); } Linguaggi: Semantica Programma in Java Cosa significa? cosa calcola ? a cosa serve ? è corretto?

3 La correttezza sintattica è data dalla grammatica di Java Programma::= Modulo Moduli Modulo::= Imports Classe Classi Moduli ::= Modulo Moduli |  Importazioni::= Importa ; Imports |  Importa:= import java.Ide.(Ide | * ) Classe::= Descrittori class Ide Def Classi ::= Classe Classi |  Descrittori::= public | private | static | final | ...

4 6/19/20153 Sintassi e semantica La sintassi di un linguaggo di programmazione è in genere descritta in modo molto rigoroso. La semantica viceversa è descritta in modo non formale e quindi poco rigoroso. I vantaggi di una descrizione formale della semantica sono: –aiutano nella definizione di programmi per la soluzione dei problemi, –permette di ragionare sulla correttezza dei programmi, –aiuta a far sì che implementazioni diverse del linguaggio diano gli stessi risultati. –Infine studiare la semantica fa comprendere i problemi che bisogna affrontare nell’implementazione del linguaggio

5 Semantica Operazionale: Sistemi di Transizioni Sistema di transizioni: S  Sistema di transizioni: S   configurazioni (Stati)  configurazioni (Stati) T   finali T   finali    x  relazione di transizione    x  relazione di transizione Derivazione D: Derivazione D:  *  chiusura antisimmetrica, riflessiva, transitiva di   *  chiusura antisimmetrica, riflessiva, transitiva di   i  *  k   i  …   k  D  i  *  k   i  …   k  D

6 6/19/20155 Un esempio Data la grammatica G= definiamo un sistema di transizione nel modo seguente:  ={  |  ({a,b}  {S})*} T ={  |   {a,b}*}  S   ({a,b}  {S})}  ab     S   ({a,b}  {S})}  aSb   

7 Regole (R) condizionali per   1  2     n    ’ Le  i sono premesse e sono relazioni tra espressioni che contengono costanti, variabili e operatori del tipo (=, ≠, ). Le variabili sono quelle che permettono di istanziare la regola. Le indichiamo con Vars(R). La copertura delle variabili serve a garantire la fondatezza della regola.

8 Copertura delle variabili  1  2     n    ’ Sia x  Vars(R), x è coperta in R se e solo se vale una delle seguenti condizioni: 1)x occorre  ; 2)esiste in R una premessa  i del tipo y=t tale che y è coperta in R e x  Vars(t) 3)esiste in R una premessa  i del tipo x=t tale che tutte le variabili in Vars(t) sono coperte. 4)esiste in R una premessa  i del tipo  ’  ’ tale che tutte le variabili in  sono coperte in R e x  Vars(  ’) Sia R la seguente regola condizionale

9 6/19/20158 Sostituzioni e istanziazioni Sia V= {x 1,...x k } è un insieme di variabili, si dice sostituzione l’insieme di associazioni ={c 1 /x 1,... c k /x k } dove c 1,... c k sono costanti. Dato un termine o espressione E questo può essere istanziato su una sostituzione (E). L’istanza è l’espressione che si ottiene rimpiazzando in E tutte le variabili che occorrono in con i rispettivi valori. –es. V= {x,y} e sia E = x

10 6/19/20159 Derivazione    ’ Sia un sistema di transizioni con (r  )...(r n ) regole condizionali, abbiamo che    ’ se e solo se esiste una regola condizionale r i per cui esiste una sostituzione per le variabili in r i  tale che: tutte le premesse di (r i )  sono soddisfatte; la conclusione di (r i )  è proprio    ’ Le variabili (spesso di seguito denotate con , , ,  ) rappresentano generici elementi del dominio del discorso, e si riconoscono perchè, nelle premesse, ne viene definito l’intervallo di variabilità.

11 6/19/ Grammatiche LC come sistemi di transizioni Data una G= si può definire un sistema di transizioni nel seguente modo: le configurazioni sono sequenze di simboli in  V le configurazioni terminali sono sequenze di simboli in  la relazione di transizione è definita in base alle produzioni, nel seguente modo: Per ogni produzione A::=  P è definita una regola condizionale.   (  V )*   A   precondizioni/premesse/prerequisiti

12 6/19/ Un esempio Data la grammatica G= definiamo un sistema di transizione nel modo seguente:  ={  |  ({a,b}  {S})*} T ={  |   {a,b}*}   ({a,b}  {S})}  S   ab    ({a,b}  {S})}  S   aSb 

13 6/19/ Rev   Rev  { |   } T Rev  { |   }  Rev  {

14 6/19/ Rev   Rev  { |   }  {  |   } T Rev  {  |   }  Rev  {

15 6/19/ Rem   Rem  { |  , x  { START,STOP }  } T Rem  { |   },  Rem  {  (1) x    * Rem   * Rem  } Esempio eliminazione di ripetuti (2) (3) (4)

16 6/19/ Eliminazione dei ripetuti: Eliminazione dei ripetuti: Esempio di applicazione  (3) 0 0 ={a/x 0,cbbb/  0, /  0 }  *  (4) 1 1 ={a/x 1,c/y 1,bbb/  1, /  1 }  *  (4) 2 2 ={c/x 2,b/y 2,bb/  2, /  2 }  *  (3) 3 3 ={b/x 3,b/  3, /  3 }  *  (3) 4 4 ={b/x 4,  /  4, /  4 }  *  (2) 5 5 ={b/x 5 }  4 = b  3 = b  2 = b  1 = cb  0 = acb  b b b cb acb

17 6/19/ Addizionatore di numeri Vediamo come esempio un addizionatore di numeri interi, che fa uso di due sistemi di transizione: –un addizionatore di cifre decimali –l’addizionatore di numeri la grammatica per definire i numeri da addizionare è la seguente: Num::= Num Cif | Cif Cif::= 0|1|2|3|4|5|6|7|8| = 513

18 6/19/ Addizione <456,57>   } <45,5,3,1> <4,0,13,1> <0,0,513,0>  513

19 6/19/ Addizionatore di cifre Addizionatore di cifre: S cr  Addizionatore di cifre: S cr   cr  { | r  {0,1}, c,c’  Cif}   cr  { | r  {0,1}, c,c’  Cif}  { | r  {0,1}, c  Cif} { | r  {0,1}, c  Cif} T cr  { | r  {0,1}, c  Cif}T cr  { | r  {0,1}, c  Cif}  cr  cr  cr  cr  cr  cr ….…..  cr  cr  cr  cr

20 6/19/ Addizionatore di numeri Addizionatore di Num: S +   +  { | n,n’  Num}  { | r  {0,1}, n,n’,m  Num}  {n | n  Num} T +  {n | n  Num}  +  cr (i)  +  cr (ii)  +  cr (iii)  +

21 6/19/ Transizioni  + (continua)  cr  +  + m  cr  + se ≠ (vi)  cr  + (v) (iv) (vii)  cr  + (viii)  cr  + (ix)

22 6/19/ Applicazione dell’addizionatore <92,512>  + {(iV),  cr } <9,51,4,0>  + {(iX),  cr } <0,5,04,1>  + {(vi),  cr } <0,0,604,0>  + {(v)} 604

23 Macchina S +             Continua 3

24 6/19/ Rappresentazione e semantica I numeri (che indichiamo qui con  sulla dispensa sono N) con le loro operazioni sono entità astratte che godono di importanti proprietà. Per utilizzarli e studiarli gli uomini hanno inventato delle rappresentazioni (concrete) di tali entità: –quella che conosciamo e usiamo normalmente sono i numeri arabi su base decimale, –i Romani ne usavano una diversa (I,II, III, IV,...X,..L...) –ne esistono molte altre, ad esempio su basi diverse (2,3,...ecc). Nel definire la semantica di un linguaggio di programmazione, dove le algebre dei numeri sono rappresentate da tipi predefiniti (int, long, real,..) e importante chiarire la differenza tra valore e rappresentazione.

25 Correttezza: Rappresentazione e Semantica dei numeri  : Num ->   (0) = 0  ….  (9) = 9   (nc) =  (n)x10 +  (c)  :  -> Num (0) = 0  Num …. (9) = 9  Num (n) = (n  10 ) (n mod 10 )  Num, n>9  + * m   (n) +  (n’) =  (m) Sia  l’insieme dei numeri naturali  ={0,1,2,3,...} con le usuali operazioni di somma, sottrazione, ecc., e gli operatori di relazione (=, ≠,>,ecc). Mentre Num sono sequenze di simboli che rappresentano i numeri naturali nella solita rappresentazione decimale. funzione di valutazione  funzione di rappresentazione

26 6/19/ Rappresentazione binaria La rappresentazione che utilizza il minimo numero di simboli è la rappresentazione binaria (quella usata dai calcolatori). Tale rappresentazione è definita dalla seguente funzione di valutazione :  (0) = 0   (1) = 1   ( yb ) = (  (y)  2) +  ( b )  Si calcoli il valore di  (1100) cioè il numero rappresentato dalla stringa binaria 1100.


Scaricare ppt "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."

Presentazioni simili


Annunci Google