Le funzioni a tempo di esecuzione

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Puntatori Linguaggio C.
IL MODELLO CLIENTE / SERVITORE. Servitore: un qualunque ente computazionale capace di nascondere la propria organizzazione interna presentando ai clienti.
Puntatori in C e C++.
Costruttori e Distruttori
Procedure In assembler.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di un’espressione La maggior.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
1 Semantica Operazionale di un frammento di Java: lo stato.
Semantica Operazionale di un frammento di Java: lo stato
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Dispatch.
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Allocazione dinamica della memoria
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione VIII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
eliana minicozzi linguaggi1a.a lezione2
Heap allocation e garbage collector di Oberon Algoritmo Quick Fit e garbage collector mark and sweep.
Approfondimento delle classi
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Le funzioni.
AN FI Metodologie1 Metodologie di progetto Metodologie top-down e bottom-up.
AN FI Iterazione&Invarianti Il ragionamento iterativo Gli invarianti di ciclo.
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
AN FI Array Array in Java. AN FI Array Dichiarazione di array in Java [ ]; //oppure u [] ; int a[]; int[] a; u La dimensione non è specificata.
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
DEFINIZIONE DI NUOVE FUNZIONI & STRATEGIE DI COMPOSIZIONE La capacità di definire nuove funzioni permette: di definire nuove operazioni di introdurre variabili.
AN FI Un denominatoe comune Linguaggi di programmazione Un denominatore comune.
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Ereditarietà e Polimorfismo
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Unità Didattica 3 Linguaggio C
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Lo sviluppo top down Le funzioni
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Complessità di un algoritmo
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1. 2 Variabili statiche e dinamiche Un programma è un processo in esecuzione a cui il sistema operativo assegna una certa zona di memoria. Tale zona può.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
estensione (con piccole varianti) di quella in
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
Lo stato  I domini della semantica restano invariati: Ide, Val (Int  { ,  }) Loc (locazioni di memoria), FunctDecl. ma definiamo 2 funzioni: Loc :
Metodologie di Programmazione Esercizi sulla semantica di Java.
1 Semantica Operazionale di un frammento di Java: lo stato estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini, Elementi di Semantica.
FUNZIONI: IL MODELLO A RUN-TIME 1) creazione di una nuova attivazione (istanza) del servitore 2) allocazione di memoria per i parametri e per le variabili.
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.
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.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Introduzione alle Classi e agli Oggetti in Java 1.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Transcript della presentazione:

Le funzioni a tempo di esecuzione Record di attivazione AN FI 98-99 Funzioni Run Time

Invocazione di una funzione P(<args>) creazione di una nuova attivazione (istanza) del servitore P allocazione di memoria per gli argomenti e le variabili locali trasferimento degli argomenti trasferimento del controllo esecuzione del codice della funzione AN FI 98-99 Funzioni Run Time

Il modello di valutazione applicativo valutazione del nome della funzione (determinazione del codice da applicare); determinazione degli argomenti da sostituire ai parametri formali; avviene valutando le espressioni specificate al momento della invocazione applicazione del codice agli argomenti. AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Esempio public double try(double a, double b){ return ( a==0 ) ? 1 : b; } Cliente: double x =1.0; double y = 2.0; try( x,y ) AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Valutazione Lega a al valore 1 Lega b al valore 2 return (a == 0) ? 1 : b; //con a=1, b=2 ________________________ Risultato: 2 AN FI 98-99 Funzioni Run Time

Valutazione: un nuovo caso double x = 0.0; try( x,1/x ) Il corpo della funzione non viene eseguito in quanto la valutazione di 1/x porta ad overflow. _______________________ Risultato: Run-Time Error AN FI 98-99 Funzioni Run Time

Meccanismi di trasferimento degli argomenti Data la chiamata f(X), X viene trasferito a f per valore o copia (by value): si trasferisce il valore di X Oppure (in altri linguaggi) per indirizzo (by reference): si trasferisce l’indirizzo di X per valore-risultato (by value-result): si copia il valore di X alla chiamata e alla terminazione della funzione AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time L’environment La definizione di una funzione introduce un nuovo binding nell’environment di definizione della funzione (in C il global environment). Al momento dell’invocazione, si crea un nuovo environment composto da un frame che contiene i binding dei parametri e degli identificatori dichiarati localmente alla funzione AN FI 98-99 Funzioni Run Time

Organizzazione della memoria Area codice e Area dati. L’area dati e' a sua volta differenziata in tre parti: un' area dati globali, uno stack uno heap. AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Heap Lo heap e’ l’area di memoria destinata alle variabili dinamiche. AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Stack Lo stack (pila) contiene la rappresentazione a frame dell'environment corrente di esecuzione. Il frame relativo all’attivazione di una funzione e’ rappresentati da una struttura di dati detta record di attivazione. AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Record di attivazione Viene creato al momento della invocazione di una funzione e distrutto (deallocato) al temine della esecuzione della funzione stessa. Poiche' le funzioni terminano in modo LIFO la zona di memoria riservata ai RA puo' essere gestita in modo efficiente attraverso una struttura a pila AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Record di attivazione AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Esempio: fattoriale Impostazione sintatticamente ricorsiva che da’ luogo a un processo computazionale ricorsivo int fact( int n ){ return(n==0) ? 1 : n*fact(n-1); } Cliente: fact( 3 ) AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Record di attivazione DL fact(3) 3 RA n n*fact(n-1); 2 fact(2) n*fact(n-1); n 1 fact(1) n*fact(n-1); n -> 1 fact(0) n AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time fact(3) fact(3) 3 * fact(2) fact(2) 2 * fact(1) fact(1) 1 * fact(0) fact(0) =1 AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Fact1 int fact1( int n, int v, int k ){ return (n==k)?V:fact1(n,v*(k+1),k+1); } v k DL RA n v k AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time fact1(3,1,0) fact(3,1,0) fact(3,1*1,1) fact(3,1,1) fact(3,1*2,2) fact(3,2,2) fact(3,2*3,3) fact(3,6,3) =6 SL | RTA | DL 3 1 SL | RTA | DL 3 1 SL | RTA | DL 3 2 SL | RTA | DL 3 6 AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Definizioni AN FI 98-99 Funzioni Run Time

Ambiente lessicale e dinamico L'ambiente lessicale e' l'ambiente in cui compare la definizione della funzione. L'ambiente dinamico e' l'ambiente presente al momento di una particolare attivazione della funzione. AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Chiusura lessicale L’oggetto computazionale che correla una espressione con l’environment da usare nella sua valutazione prende il nome di chiusura e in particolare di chiusura lessicale nel caso in cui l’ambiente sia quello di definizione della espressione AN FI 98-99 Funzioni Run Time

Tempo di vita delle variabili e' il periodo di tempo per cui un'area di memoria e' allocata ad una variabile. In caso di allocazione statica, il tempo di vita e' di norma quello del programma. In caso di allocazione dinamica, il tempo di vita della variabile puo' dipendere dal tempo di vita dell'unita' di programma (blocco) in cui e' avvenuta la allocazione. AN FI 98-99 Funzioni Run Time

Categorie di variabili variabili statiche: create prima della esecuzione che vivono per tutto il tempo di vita del programma; variabili semistatiche: e' nota staticamente l'occupazione complessiva di memoria. Verranno create dinamicamente; variabili semidinamiche: create all'atto della attivazione del blocco in cui sono dichiarate e la cui occupazione di memoria e' nota solo al momento della creazione; variabili dinamiche: l’ occupazione complessiva di memoria cambia durante la esecuzione del programma. AN FI 98-99 Funzioni Run Time

Modello di valutazione normale la determinazione degli argomenti avviene con sostituzioni testuali dei valori attuali ai parametri AN FI 98-99 Funzioni Run Time

AN FI 98-99 Funzioni Run Time Valutazione int x = 0; try( x,1/x ) lega a alla chiusura x/envCaller lega b alla chiusura y/envCaller essendo envCaller l’ambiente al momento della chiamata return (eval(x,envCaller) == 0) ? 1 : eval(y, envCaller) ________________________ Risultato: 1 AN FI 98-99 Funzioni Run Time