Informatica 3. LEZIONE 4: Semantica operazionale. Modulo 1: Strutture a blocchi Modulo 2: Comportamenti dinamici
|
|
- Paolo Morandi
- 4 anni fa
- Visualizzazioni
Transcript
1 Informatica 3 LEZIONE 4: Semantica operazionale Modulo 1: Strutture a blocchi Modulo 2: Comportamenti dinamici
2 Informatica 3 Lezione 4 - Modulo 1 Strutture a blocchi
3 C4: Blocchi annidati int f( ); { int x, y,w; //blocco 1 while (...) { int x, z; // blocco 2 while () {inty; // blocco 3 if () {intx, w; // blocco 4 if () { int a, b, c, d; // blocco 5 Implementazioni possibili: Allocazione statica di un record di attivazione per la routine con blocchi annidati semplice, efficiente in termini di tempo Allocazione dinamica per i dati locali quando si esegue il blocco efficiente in termini di spazio
4 Allocazione statica record di attivazione con overlay puntatore di ritorno link dinamico x in //1 y in //1 w in //1 x in //2 - a in //5 z in //2 - b in // 5 y in //3 - x in //4 - c in //5 w in //4 - d in //5 blocco 3 albero statico degli annidamenti blocco 2 blocco 1 blocco 4 blocco 5
5 Routine annidate int x, y, z; f1 ( ) { //blocco 1 int t, u; f2 ( ) { //blocco 2 int x, w; f3 ( ) { //blocco 3 int y, w, t; //fine blocco 3 x = y + t + w + z; //fine blocco 2 //fine blocco 1 main ( ); { //blocco 4 int z, t; //fine blocco 4 blocco 1 blocco 2 blocco 3 blocco 0 blocco 4 OSSERVAZIONE: Non supportato in C++ Supportato in Pascal, Modula- 2 e Ada
6 Accesso a variabili non locali var globale main f1 f2 f3 f2 CURRENT x,y,z z,t t,u x,w y,w,t x,w x=y+t+w+z link dinamici
7 Accesso a variabili non locali var globale main f1 f2 f3 f2 LINK TATICI x,y,z z,t t,u x,w y,w,t x,w x=y+t+w+z offset RdA 0 punt. di ritorno 1 link dinamico 2 link statico 3 var locali link dinamici CURRENT
8 Accesso a variabili non locali Seguire le catene statiche richiede un sovraccarico a run-time Soluzione: per ogni variabile memorizzare la distanza dal record di attivazione dell unità variabile locale: distanza = 0 variabile nell unità esterna: distanza = 1 variabile nell unità ancora più esterna: distanza = 2... Per ogni variabile si può calcolare staticamente: (distanza, offset) Funzione per calcolare l indirizzo: fp(d)=if d=0 then D[0] else D[fp(d-1)+2] Indirizzo di una variabile: D[fp(distanza) + offset]
9 Semantica della chiamata Chiamata della routine set 1, D[1]+1 set D[1], ip+5 set D[1]+1, D[0] set D[1]+2, fp(d) set 0, D[1] set 1, D[1]+RA jump ind_inizio alloca spazio sullo stack per valore di ritorno imposta il valore del puntatore di ritorno imposta il link dinamico imposta il link statico imposta CURRENT imposta FREE (RA=dimensione record attivaz.) indirizzo prima istruzione del codice invocato
10 Informatica 3 Lezione 4 - Modulo 2 Comportamenti dinamici
11 C5: Allocazione dati dinamica struct nodo{ int num; nodo* succ; ; nodo* n = new nodo; stack heap La vita di una variabile allocata dinamicamente non dipende dall unità in cui la variabile viene dichiarata I dati vengono allocati nello HEAP
12 RdA con dimensione nota a tempo di Es. array dinamici in Ada esecuzione type VECTOR is array (INTEGER range<>); A: VECTOR (1..N); B: VECTOR (1..M); // N e M valori interi noti a tempo di esecuzione Modello semantico: Si riserva un puntatore nel descrittore di ogni array dinamico Gli array vengono allocati (sopra l ultimo RdA) L accesso agli array viene effettuato indirettamente tramite puntatore
13 Typing dinamico Typing dinamico Se il linguaggio utilizza il typing dinamico il tipo della variabile non può essere determinato a tempo di compilazione Il descrittore della variabile deve contenere anche il tipo della variabile Se il tipo può cambiare a tempo di esecuzione la dimensione ed il contenuto del descrittore possono variare il descrittore viene mantenuto nello heap e il RdA conterrà il puntatore al descrittore o all oggetto stesso nello heap
14 Scoping dinamico Scoping dinamico lo scope di un nome dipende dalla catena di chiamate a tempo di esecuzione (catena dinamica) sub2 ( ) { declare x; x ; y ; sub1 ( ) { declare y; x ; y ; sub2 ( ); main ( ) { declare x, y, z; z = 0; x = 5; y = 7; sub1; sub2;
15 Scoping dinamico Scoping dinamico lo scope di un nome dipende dalla catena di chiamate a tempo di esecuzione (catena dinamica) sub2 ( ) { declare x; x ; y ; sub1 ( ) { declare y; x ; y ; sub2 ( ); main ( ) { declare x, y, z; z = 0; x = 5; y = 7; sub1; sub2;
16 Scoping dinamico Scoping dinamico lo scope di un nome dipende dalla catena di chiamate a tempo di esecuzione (catena dinamica) sub2 ( ) { declare x; x ; y ; sub1 ( ) { declare y; x ; y ; sub2 ( ); main ( ) { declare x, y, z; z = 0; x = 5; y = 7; sub1; sub2;
17 Scoping dinamico Scoping dinamico lo scope di un nome dipende dalla catena di chiamate a tempo di esecuzione (catena dinamica) sub2 ( ) { declare x; x ; y ; sub1 ( ) { declare y; x ; y ; sub2 ( ); main ( ) { declare x, y, z; z = 0; x = 5; y = 7; sub1; sub2;
18 Passaggio dei parametri Parametri Dati per riferimento: il chiamante passa all unità chiamata l indirizzo del parametro attuale per copia: i parametri vengono trattati come variabili locali per nome: i nomi dei parametri attuali vengono sostituiti con i nomi dei parametri formali Routine
19 Passaggio per riferimento ambiente unità chiamante chiamata routine parametro attuale ambiente unità chiamata Semantica: azione dell unità chiamante: parametro formale set D[0] + off, fp(d) + o se il param. attuale non è per riferimento set D[0] + off, D[ fp(d) + o ] se il param. attuale è per riferimento accesso al parametro da parte dell unità chiamata: avviene tramite indirizzamento indiretto: D[D[0] + off]
20 Passaggio per copia Passaggio per valore l unità chiamante valuta il parametro attuale --> il suo valore viene utilizzato per inizializzare il parametro formale corrispondente non c è flusso di informazione di ritorno verso l unità chiamante parametro attuale parametro formal Passaggio per risultato flusso di informazioni dal chiamante all unità chiamata al termine del sottoprogramma il valore dei parametri formali viene copiato nei corrispondenti parametri attuali del chiamante Passaggio per valore-risultato flusso di informazione in entrambe le direzioni i parametri formali vengono inizializzati alla chiamata del sottoprogramma e copiati nei parametri attuali al termine del sottoprogramma parametro attuale parametro formal parametro attuale parametro formale
21 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a;
22 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a[i] = a[j] 10 x y chiamata per riferimento
23 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a[i] = a[j] 0 x y chiamata per riferimento
24 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a[i] = a[j] 1 x y chiamata per riferimento
25 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a[i] = a[j] x y chiamata per copia valore-risultat
26 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a[i] = a[j] x y chiamata per copia valore-risultat
27 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a[i] = a[j] x y chiamata per copia valore-risultat
28 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a[i] = a[j] x y chiamata per copia valore-risultat
29 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a 10 x chiamata per riferimento
30 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a 1 x chiamata per riferimento
31 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a 2 x chiamata per riferimento
32 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a x chiamata per copia valore-risultat
33 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a 1 10 x chiamata per copia valore-risultat
34 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a 1 11 x chiamata per copia valore-risultat
35 Passaggio per riferimento vs. per valore-risultato Differiscono quando: due parametri formali diventano alias un parametro formale e una variabile non locale sono alias i = j; a [i] = 10; foo (a[i], a[j]); a = 10; goo (a); foo (x, y) { x = 0; y ++; goo (x) { a = 1; //a non locale e visibile x = x + a; a x chiamata per copia valore-risultat
36 Passaggio per nome Sostituzione testuale di tutte le occorrenze dei parametri formali con i parametri attuali swap (int a,b); int temp; { temp = a; a = b; b = temp; ;
37 Passaggio per nome Sostituzione testuale di tutte le occorrenze dei parametri formali con i parametri attuali swap (int a,b); int temp; { temp = a; a = b; b = temp; ; swap(i, a[i]) swap (int i,a[i]); int temp; { temp = i; i = a[i]; a[i] = temp; ;
38 Passaggio per nome Sostituzione testuale di tutte le occorrenze dei parametri formali con i parametri attuali swap (int a,b); int temp; { temp = a; a = b; b = temp; ; swap(i, a[i]), con i=3 e a[3]=4 swap (int i,a[i]); int temp; { temp = i; i = a[i]; a[i] = temp; ; i=4 e a[4]=3 Costoso da implementare
39 Linguaggi e passaggi parametri Per riferimento Per valore Per nome Fortran X Algol 60 X X Simula 67 X X X Pascal, C++ X X C con puntatori X
40 Routine come parametro 1 int u, v; 2 a ( ) 3 { 4 int y; 5 6 ; 7 b (routine x) 8 { 9 int u, v, y; 10 c ( ) 11 { 12 y = ; ; 15 x ( ); 16 b (c); main ( ) 20 { 21 b(a); 22 ;
41 Routine come parametro 1 int u, v; 2 a ( ) 3 { 4 int y; 5 6 ; 7 b (routine x) 8 { 9 int u, v, y; 10 c ( ) 11 { 12 y = ; ; 15 x ( ); 16 b (c); main ( ) 20 { 21 b(a); 22 ;
42 Routine come parametro 1 int u, v; 2 a ( ) 3 { 4 int y; 5 6 ; 7 b (routine x) 8 { 9 int u, v, y; 10 c ( ) 11 { 12 y = ; ; 15 x ( ); 16 b (c); main ( ) 20 { 21 b(a); 22 ; ambiente globale (u,v) a() (y) b(x) (u,v,y) c() main()
43 Implementazione RdA globale u v a ambiente globale (u,v) a() (y) b() (u,v,y) main() c()
44 Implementazione link statici RdA globale u v a RdA main link dinamici ambiente globale (u,v) a() (y) b() (u,v,y) main() c()
45 Implementazione nk statici RdA globale u v a RdA main RdA b[1] x=a u[b,1] v[b,1] y[b,1] c link dinamici ambiente globale (u,v) a() (y) b() (u,v,y) c() main()
46 Implementazione link statici RdA globale u v a RdA main RdA b[1] x=a u[b,1] v[b,1] y[b,1] c RdA a y[a] link dinamici ambiente globale (u,v) a() (y) b() (u,v,y) c() main()
47 Implementazione nk statici RdA globale u v a RdA main RdA b[1] x=a u[b,1] v[b,1] y[b,1] c link dinamici ambiente globale (u,v) a() (y) b() (u,v,y) c() main()
48 Implementazione (2) nk statici RdA globale u v a RdA main RdA b[1] x=a u[b,1] v[b,1] y[b,1] c RdA b[2] x=c u[b,2] v[b,2] y[b,2] c link dinamici ambiente globale (u,v) a() (y) b() (u,v,y) c() main()
49 Implementazione (2) nk statici RdA globale u v a RdA main RdA b[1] x=a u[b,1] v[b,1] y[b,1] c RdA b[2] x=c u[b,2] v[b,2] y[b,2] c RdA c link dinamici ambiente globale (u,v) a() (y) b() (u,v,y) c() main()
Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010.
Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010
Dettagli4. Semantica Operazionale
4. Semantica Operazionale 4.1 La macchina astratta SIMPLESEM La semantica operazionale di un linguaggio di programmazione si definisce sulla base delle modifiche che l esecuzione delle varie istruzioni
DettagliStrutture dati nel supporto a run time
Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle
DettagliLa gestione della memoria. Gestione della memoria. Uso della Memoria RAM
La gestione della memoria Gestione della memoria Stack di attivazione, Heap Come il compilatore-interprete, organizza i dati necessari all esecuzione del programma. Alcuni aspetti organizzativi già visti
DettagliInformatica 3. Informatica 3. LEZIONE 4: Semantica operazionale. Lezione 4 - Modulo 1. C4: Blocchi annidati. Allocazione statica
Informti 3 Informti 3 LEZIONE 4: Semnti operzionle Lezione 4 - Modlo 1 Modlo 1: Strttre blohi Modlo 2: Comportmenti dinmii Strttre blohi Politenio di Milno - Prof. Sr Comi 1 Politenio di Milno - Prof.
DettagliLinguaggi di Programmazione Corso C. Parte n.10 Gestione della Memoria. Nicola Fanizzi
Linguaggi di Programmazione Corso C Parte n.10 Gestione della Memoria Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Gestione della Memoria I moderni linguaggi
DettagliGestione della memoria
Gestione della memoria Stack di attivazione, Heap Stack di attivazione, Heap Gestione della memoria 1 / 52 La gestione della memoria Come il compilatore-interprete, organizza i dati necessari all esecuzione
DettagliCorso di Linguaggi di Programmazione. Organizzazione di un processo in memoria (1)
Corso di Linguaggi di Programmazione Lezione 14 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 04 Maggio 2009 Organizzazione di un
DettagliRecord di Attivazione
Record di Attivazione La macchina virtuale Record di attivazione di funzioni e procedure Record di attivazione 1 LA MACCHINA VIRTUALE DEL C MODELLO A TEMPO DI ESECUZIONE Aree di memoria: Area del codice
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 15 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Informatica Università degli Studi di Milano 30 Aprile 2013 Classificazione di un Type System Riassumendo:
DettagliInformatica 3. LEZIONE 2: Sintassi e semantica
Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica
DettagliInformatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione
Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliProgrammazione II. Lezione 9. Daniele Sgandurra 16/11/2010.
Programmazione II Lezione 9 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 16/11/2010 1/31 Programmazione II Lezione 9 16/11/2010 Sommario 1 Gestione della Memoria 2/31 Programmazione II Lezione 9 16/11/2010
DettagliGestione della Memoria
Gestione della Memoria Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 27 apr, 2016 Sommario 1 Tecniche di gestione Progetto della gestione
DettagliIl linguaggio C. Istruzioni, funzioni, dati strutturati
Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects
DettagliINFORMATICA 3 Prof.ssa Sara Comai
INFORMATICA 3 Prof.ssa Sara Comai ESERCIZI SESSIONE LIVE 1 Sintassi e semantica operazionale Ing. Paola Spoletini 1. Sintassi Utilizzando il linguaggio descritto dalla seguente EBNF: REGOLE SINTATTICHE:
DettagliPROGRAMMAZIONE Funzioni e procedure
PROGRAMMAZIONE 2 20. Funzioni e procedure PR2 2017-2018 1 Breve storia dei sotto-programmi Astrazione di una sequenza di istruzioni o un frammento di programma (sequenza di istruzioni) risulta utile in
DettagliFondamenti di Informatica T. Linguaggio C: Stack e Ricorsione
Linguaggio C: Stack e Ricorsione FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione: si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri
DettagliPROGRAMMAZIONE Nomi, binding, regole di visibilità (scope)
PROGRAMMAZIONE 2 19. Nomi, binding, regole di visibilità (scope) PR2 2017-2018 1 Nomi Un nome in un linguaggio di programmazione è esattamente quello che immaginate o la maggior parte dei nomi sono definiti
DettagliGestione della memoria
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
Dettaglipassaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in
I Parametri di tipo vettore I Il meccanismo del passaggio per valore di un indirizzo consente il passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad
DettagliLABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi
LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna Partiamo da un
DettagliEsercitazioni di Informatica 3
Esercitazioni di Informatica 3 Part I: Programming Languages Syntax and semantics Laurea in Ingegneria Informatica Politecnico di Milano Polo di Milano Leonardo Esercizio 1: EBNF Utilizzando il linguaggio
DettagliSpazio di indirizzamento virtuale
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){
DettagliLezione 3 Esercitazione
Lezione 3 Esercitazione prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org Esercizio 1 Si consideri il codice seguente: program esercizio1 (input, output); var a,b,c,d: integer;
DettagliPaolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09
Introduzione ai sottoprogrammi Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Introduzione al corso, Paolo Bison, FI08, 2008-12-09 p.1 Struttura programma
DettagliIngegneria del software
Ingegneria del software Modulo 3 Analisi statica del software Analisi statica automatica L analisi statica è una tecnica che consente di analizzare dei semilavorati software senza eseguirli (donde l appellativo
DettagliNomi e ambiente. Blocchi e regole di scoping. Blocchi e regole di scoping Nomi e ambiente 1 / 39
Nomi e ambiente Blocchi e regole di scoping Blocchi e regole di scoping Nomi e ambiente 1 / 39 Nomi Meccanismi di astrazione fondamentale per gestire la complessità del software. Uso dei nomi: un meccanismo
DettagliNomi. Nomi e ambiente. Nomi e oggetti denotabili. Sintassi
Nomi Nomi e ambiente Blocchi e regole di scoping Meccanismi di astrazione fondamentale per gestire la complessità del software. Uso dei nomi: un meccanismo di astrazione. Nome: sequenza di caratteri usata
DettagliFunzioni e procedure
Funzioni e procedure 1 1 Breve storia dei sottoprogrammi Astrazione di una sequenza di istruzioni o un frammento di programma (sequenza di istruzioni) risulta utile in diversi punti del programma o riduce
DettagliScope, Memoria e Tabella dei Simboli
Scope, Memoria e Tabella dei Simboli La tabella dei simboli è uno strumento fondamentale attraverso il quale interpreti e compilatori implementano la traduzione da un programma scritto in un linguaggio
DettagliCONFRONTO TRA I SUPPORTI A RUN TIME DI VARI LINGUAGGI
CONFRONTO TRA I SUPPORTI A RUN TIME DI VARI LINGUAGGI 1 En#tà presen# quando un programma va in esecuzione! Programmi d utente (compila#)! Rou#nes del supporto o interprete o I/O, librerie, rou#nes per
DettagliPaolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova
Introduzione ai sottoprogrammi Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Introduzione al corso, Paolo Bison, FI06, 2007-02-06 p.1 Struttura programma formato da vari elementi
DettagliScope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano
Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliLinguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
DettagliProgrammazione II. Lezione 6. Daniele Sgandurra 5/11/2010.
Programmazione II Lezione 6 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 5/11/2010 1/54 Programmazione II Lezione 6 5/11/2010 Sommario 1 Nomi e Ambiente Ambiente 2 Esercizi 3 Esercitazione: Eclipse Eclipse
DettagliFUNZIONI: IL MODELLO A RUN-TIME!
FUNZIONI: IL MODELLO A RUN-TIME! Ogni volta che viene invocata una funzione si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri e per le variabili locali
DettagliTipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 9 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 01 Aprile 2008 ADT param. in C ADT param.
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti
INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti Ricorsione La ricorsione è un approccio per la risoluzione
DettagliFUNZIONI: IL MODELLO A RUN-TIME
FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri e per le variabili locali si
DettagliLinguaggi di Programmazione I Lezione 1
Linguaggi di Programmazione I Lezione 1 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 4 marzo 2008 Introduzione al corso 3 Obbiettivi..............................................................
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliNomi. Nomi e ambiente. Nomi e oggetti denotabili. Esempio
Nomi e ambiente Blocchi e regole di scoping Nomi Meccanismi di astrazione fondamentale per gestire la complessità del software. Uso dei nomi: un meccanismo di astrazione. Nome: sequenza di caratteri usata
DettagliProgrammazione C. Funzioni e procedure: Activation record. passaggio per indirizzo
Programmazione C Funzioni e procedure: passaggio per indirizzo Activation record 2. PASSAGGIO PER INDIRIZZO Dire alla funzione l indirizzo di memoria cui accedere Se occorre passare un array ad una funzione,
DettagliPr ogramming Languages. Sottoprogrammi
Pr ogramming Languages Sottoprogrammi 1 ISottoprogrammi Qualche nozione introduttiva DVAL:dominiodeivaloridenotabili,ovverooggettiai quali èpossibiledareunnome:dataobject(variabili), indirizzi, sottoprogrammi,
DettagliProgrammazione II. Lezione 12. Daniele Sgandurra 26/11/2010.
Programmazione II Lezione 12 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 26/11/2010 1/17 Programmazione II Lezione 12 26/11/2010 Sommario 1 2/17 Programmazione II Lezione 12 26/11/2010 Parte I 3/17
DettagliFUNZIONI: IL MODELLO A RUN-TIME
FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri e per le variabili locali si
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliFunzioni (1) Il C nel C++: Funzioni. Funzione (2) Vantaggi delle Funzioni. Localizzazione della funzionalità correggibilità manutenibilità
Funzioni (1) Il C nel C++: Funzioni il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
Dettagli3. Il Binding. 3.1 Le variabili
3. Il Binding I programmi sono composti di entità come variabili, routines e istruzioni. Ogni entità possiede certe proprietà chiamate attributi. Per esempio, una variabile ha un nome, un tipo, un area
DettagliLa gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 8 Dettagli e Approfondimenti versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
DettagliAstrarre sul controllo
Astrarre sul controllo Procedure, passaggio dei parametri, eccezioni Procedure, passaggio dei parametri, eccezioni Astrarre sul controllo 1 / 53 Argomenti Procedure e funzioni: astrazione sul controllo
Dettagli20. Gestione della memoria. Andrea Marongiu Paolo Valente
20. Gestione della memoria Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Classi di memorizzazione Stiamo per vedere la classificazione di un oggetto in funzione del suo tempo di vita In particolare,
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliIntroduzione al C. Unità 5 Funzioni
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 5 Funzioni D. Bloisi, A. Pennisi, S. Peluso, S. Salza Sommario Unità 5 Definizione
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione Corso di Laurea in ITPS I nomi e l ambiente Valeria Carofiglio (Questo materiale è una rivisitazione del materiale prodotto da Nicola Fanizzi) 1 Argomenti Introduzione Nomi
DettagliRecord di Attivazione Cenni sulla ricorsione
MASTER Information Technology Excellence Road (I.T.E.R.) Cenni sulla ricorsione Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il modello a RUN-TIME
DettagliOttenere una modifica del parametro attuale
Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
DettagliGestione della memoria
Garbage collection Gestione della memoria Static area dimensione fissa, contenuti determinati e allocati a compilazione Run-time stack dimensione variabile (record attivazione) gestione sottoprogrammi
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 14 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Informatica Università degli Studi di Milano 23 Aprile 2013 Cosa servono i tipi durante l analisi
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
DettagliTitolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.
Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
DettagliINGEGNERIA DEL SOFTWARE
INGEGNERIA DEL SOFTWARE LINGUAGGI Avvertenza: gli appunti si basano sul corso di Ingegneria del Software tenuto dal prof. Picco della facoltà di Ingegneria del Politecnico di Milano (che ringrazio per
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliNomi, binding e regole di scope
Nomi, binding e regole di scope 1 Nomi Un nome in un linguaggio di programmazione è esattamente quello che immaginate o la maggior parte dei nomi sono definiti dal programma (gli identificatori) o ma anche
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliL'allocazione statica: L'allocazione automatica L'allocazione dinamica:
Allocazione L'allocazione statica: e' quella con cui sono memorizzate le variabili globali e le variabili statiche, queste vengono allocate all'avvio nel segmento dati da exec, con le distizioni che abbiamo
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliFondamenti di Informatica T. Linguaggio C: Stack e Ricorsione
Linguaggio C: Stack e Ricorsione FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione: si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata
Dettagli10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica
Caratteristiche degli array Principali caratteristiche degli array: LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
DettagliL'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
DettagliCalcolatori Elettronici Lezione A4 Programmazione a Moduli
Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo
DettagliParametri Formali di una Funzione e Record di Attivazione
Parametri Formali di una Funzione e Attivazione Un record di attivazione rappresenta il mondo di una funzione, e contiene tutto ciò che ne caratterizza l esistenza, tra cui ad esempio: le variabili locali
DettagliAssembly IV Le procedure
rchitettura degli Elaboratori e delle Reti Lezione 14 ssembly IV Le procedure Proff.. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
Dettagli15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio
15 April 2011 05 LABORATORIO 04 PROCEDURE STACK CHIAMATA A PROCEDURE I. Frosio 1 SOMMARIO Procedure Stack Chiamata a procedure 2 PERCHÈ LE PROCEDURE? 15 April 2011 Main Proc3 Proc2 Proc1 Programmazione
DettagliConvenzioni di chiamata a procedure
Università degli Studi di Milano Laboratorio di Architettura degli Elaboratori II Corso di Laurea in Informatica, A.A. 2016-2017 Convenzioni di chiamata a procedure Nicola Basilico Dipartimento di Informatica
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci
DettagliArchitetture dei Calcolatori
Architetture dei Calcolatori Lezione 8 -- 01/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Create da: F. Lo Presti Modificate da: E.Casalicchio Le procedure q In ogni linguaggio
DettagliInformatica (A-K) 12. Linguaggio C -3
Introduzione alle funzioni in C Informatica (A-K) 12. Linguaggio C -3 int main() int i,n, fattoriale=1; printf( Inserire Numero: ); scanf( %d, &n); for (i =2; i
Dettagli