Ex.1 - Semantica dell’Assegnamento Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv Una soluzione parziale:

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public.
Puntatori in C e C++.
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
Esercitazione Frame. Argomento Realizzazione di un tipo di dato astratto Usare le eccezioni per segnalare situazioni particolari Invariante e funzione.
Semantica Operazionale di un frammento di Java: lo stato
Si consideri il seguente programma: class Up extends Object { public static int x; public int y; public static void metodo(Up o) {Up w=o.metodo1(x); o.y=w.y+6;}
Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public.
PRIMO ESERCIZIO (del ) Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public.
Introduzione alla Object Oriented Programming, OOP E.Mumolo. DEEI
E.Mumolo. DEEI Introduzione alla programmazione ad oggetti in C++ Object Oriented Programming, OOP E.Mumolo. DEEI
Corso di Informatica (Programmazione)
Grafico di funzione Disegna la Matematica.
1 Eventi/2 Più movimento alle classi. 2 Eventi Java Modo per intercettare il verificarsi di certe condizioni / azioni e fare in modo che venga eseguito.
Soluzione Esercizio - Classe Vettore
Selezione (=scelta) con “if-else”
Le funzioni a tempo di esecuzione
Java Contardi Carlo A.S. 2008/09.
void binario(int n); …………………
Ese 2 (del 31 Marzo 2004). Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni.
Programmazione concorrente
Conversione da base 10 a base X (Utilizzo della pila)
1 Applet ed HTML Fondamenti di Informatica Corso D.
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
1 Implementazione di (ambiente e) memoria nel linguaggio imperativo.
AlgoLab - Pile e Code Pile e code Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Eccezioni Metodi parziali Eccezioni: Usi e Metodi parziali Eccezioni: rimuovere i requires Eccezioni: rimuovere i requires Eccezioni: definizione, sollevamento,
Classi: class Foo { public int x; public int y; public void swap (boolean z) { if (z) {int temp = x; x = y; y = temp;}; }; } Ambienti per le classi: Cenv.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Gestione dei thread in Java
estensione (con piccole varianti) di quella in
Nucleo di Java: Struttura e Semantica Espressioni Assegnamento Controllo di sequenza Dichiarazioni.
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
1 Progettazione dettagliata di un Tipo di Dato Astratto: l’ambiente di metodi.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in FONDAMENTI DI PROGRAMMAZIONE.
Lo stato  I domini della semantica restano invariati: Ide, Val (Int  { ,  }) Loc (locazioni di memoria), FunctDecl. ma definiamo 2 funzioni: Loc :
Ese 1 (del 31 Marzo 2004). Il compilatore Non esegue il programma, non guarda i valori che possono assumere di volta in volta le variabili, non fa assunzioni.
1 Progettare un Tipo di Dato Astratto. 2 Scelte di Progetto (astrazione) 4 Caratteristiche degli oggetti –Modificabilità 4 Scelta delle operazioni –Realizzare.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
Metodologie di Programmazione Esercizi sulla semantica di Java.
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.
Esercizio 2. Si mostri l’evoluzione dello stato (ambiente di classi, heap, pila) durante la valutazione delle seguenti dichiarazioni di classe nei punti.
Lezione X Laboratorio di Programmazione. Struttura di un programma Definizione classe e specifica (parziale) classe.hclasse.cpp main.cpp Specifica metodi.
1 Semantica Operazionale di un frammento di Java: lo stato estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini, Elementi di Semantica.
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
1 Invocazione di metodi Com := Path Id (Expr_list) 4 path trattati come nelle variabili  path p’ 4 Risoluzione del nome: Ide * (Ide | Loc) * Cenv * Heap.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
Introduzione a Java. Java Linguaggio Object-Oriented La maggior parte dei dati manipolati dai programmi e’ contenuta in oggetti La principale forma di.
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
1 Espressioni 4 dato che non abbiamo previsto inizializzazioni per le variabili (statiche e di istanza) all’interno delle classi, le espressioni possono.
Giovanni Pace. Qual è la soluzione della disequazione seguente? a)x 1 b)5/2
ESERCITAZIONE Problema Scrivere una funzione che scambi due interi non opera su oggetti  funzione statica scritta dentro a una classe contenitore.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
Qual è la soluzione della disequazione seguente? a)x 1 b)5/2
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Esercizi.
Le basi della programmazione a oggetti - Esercizio
Ese 2 (del 31 Marzo 2004).
Esercizio 2.
UML Diagramma statico di una classe
Dalla programmazione tradizionale al paradigma OO
Scandire …...
Transcript della presentazione:

Ex.1 - Semantica dell’Assegnamento Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv Una soluzione parziale:  expr top(  ’ ) = (x,  )  = top(  ) defined( , i)  ’ =update ( , i, v)  ”=push(pop(  ’),(x,push(pop(  ),  ’) _________________________________________________  com Con 2 problemi: update: frame*ide*val non è una funzione discesa ricorsiva della struttura

Assegnamento: una soluzione Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv  path c  expr  update  update _____________________________  com Ide * Val * (Ide | Loc | met) * Cenv * Heap * Astack  update Heap * Astack * Cenv

Update: frame in  Ide * Val * (Ide | Loc | met) * Cenv * Heap * Astack  update Heap * Astack top(  ) = (x,  )  = top(  ) defined( , i)  ’ :update ( , i, v) __________________________________________________________  update top(  ) = (x,  )  = top(  ) not defined( , i)  ’ =  pop(   update _____________________________________________  update top(  ) = (x,  ) empty(  )  update _____________________________________________  update Notazione:  ’ :update ( , i, v) indica che la modifica su  provoca la modifica del componente corrente in un nuovo componente  ’

Update: frame in  Ide * Val * (Ide | Loc | met) * Cenv * Heap * Astack  update Heap * Astack  (l) = (c, , _) defined( , i)  ’  update ( , i, v) _____________________________________________  update  (l) = (c, , _) not defined( , i)  update _____________________________________________  update

Update: frame in  Ide * Val * (Ide | Loc | met) * Cenv * Heap * Astack  update Heap * Astack * Cenv  (c) = (c1, , _, _, _) defined( , i)  ’ :update ( , i, v) _____________________________________________  update  (c) = (c1, , _, _, _) not defined( , i)  update _____________________________________________  update

Ex.2 - this.this: applichiamo le regole  path p’  naming v ___________________________________________________  expr  expr top(  ) = (o, _) ____________________________  path o  path o top(  ) = (o, _) ____________________________  naming o  naming o p’=o=met Ma: o≠met

Ex.3 - Comando Return: semantica Com := return (terminazione valutazione) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv top(  ) = (x,  ) _____________________________________  com  com

Ex.4 - Return: semantica come espressione Expr := return e Expr * Cenv * Heap * Astack  expr Val * Heap (* Astack)   expr _______________________________________  expr  expr

Ex.5 - Un programma: semantica public class A{ public static int x; public int y; public void P1(int y){ this.y=y+x; x=P2(this); } public int P2(A z){ z.y = y+ A.x; return x; } public A(){ x = 7; y = x; }} class B extends A{ public static int z; public static int w; public int P2(A z){ z.x = y + w; return B.z; } public B(){ z = x+1; w = 0; }} class Princ{ public static void main(String[] args){ B o = new B(); int m = o.P2(o); }}

Parte statica: ambiente  object …. Aobjectx 0 - y 0 P1 (int y) b1 ? P2(A z) b2 ? {x=7;y=x} BAz 0 w 0 - y 0 P1 (int y) b1 ? P2(A z) b3 ? {x=7;y=x; z=x+1;w=0} Princobject - main (.. args) b4 Princ - P1 (int y) b1 ? P2(A z) b3 ? {x=7;y=x; z=x+1;w=0} b1 {this.y=y+x; x=P2(this);} b2 {z.y=y+A.x; return x;} b3 {z.x=y+w; return B.x;} b3 {B o=new B(); int m= o.P2(o);}

Parte dinamica: Astack  heap  struttura iniziale: il primo record di attivazione … graficamente valutando espressione new B() … graficamente