Informatica 3. LEZIONE 4: Semantica operazionale. Modulo 1: Strutture a blocchi Modulo 2: Comportamenti dinamici

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Informatica 3. LEZIONE 4: Semantica operazionale. Modulo 1: Strutture a blocchi Modulo 2: Comportamenti dinamici"

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 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

Dettagli

4. Semantica Operazionale

4. 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

Dettagli

Strutture dati nel supporto a run time

Strutture 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

Dettagli

La gestione della memoria. Gestione della memoria. Uso della Memoria RAM

La 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

Dettagli

Informatica 3. Informatica 3. LEZIONE 4: Semantica operazionale. Lezione 4 - Modulo 1. C4: Blocchi annidati. Allocazione statica

Informatica 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.

Dettagli

Linguaggi 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 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

Dettagli

Gestione della memoria

Gestione 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

Dettagli

Corso di Linguaggi di Programmazione. Organizzazione di un processo in memoria (1)

Corso 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

Dettagli

Record di Attivazione

Record 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

Dettagli

Corso di Linguaggi di Programmazione

Corso 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:

Dettagli

Informatica 3. LEZIONE 2: Sintassi e semantica

Informatica 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

Dettagli

Informatica 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. 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:

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, 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,

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, 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

Dettagli

Programmazione II. Lezione 9. Daniele Sgandurra 16/11/2010.

Programmazione 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

Dettagli

Gestione della Memoria

Gestione 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

Dettagli

Il linguaggio C. Istruzioni, funzioni, dati strutturati

Il 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

Dettagli

INFORMATICA 3 Prof.ssa Sara Comai

INFORMATICA 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:

Dettagli

PROGRAMMAZIONE Funzioni e procedure

PROGRAMMAZIONE 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

Dettagli

Fondamenti di Informatica T. Linguaggio C: Stack e Ricorsione

Fondamenti 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

Dettagli

PROGRAMMAZIONE Nomi, binding, regole di visibilità (scope)

PROGRAMMAZIONE 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

Dettagli

Gestione della memoria

Gestione 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

Dettagli

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in

passaggio 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

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi

LABORATORIO 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

Dettagli

Esercitazioni di Informatica 3

Esercitazioni 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

Dettagli

Spazio di indirizzamento virtuale

Spazio 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 (){

Dettagli

Lezione 3 Esercitazione

Lezione 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;

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo 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

Dettagli

Ingegneria del software

Ingegneria 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

Dettagli

Nomi 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 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

Dettagli

Nomi. Nomi e ambiente. Nomi e oggetti denotabili. Sintassi

Nomi. 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

Dettagli

Funzioni e procedure

Funzioni 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

Dettagli

Scope, Memoria e Tabella dei Simboli

Scope, 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

Dettagli

CONFRONTO TRA I SUPPORTI A RUN TIME DI VARI LINGUAGGI

CONFRONTO 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

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo 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

Dettagli

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Scope 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

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione 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)

Dettagli

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Linguaggio 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

Dettagli

Programmazione II. Lezione 6. Daniele Sgandurra 5/11/2010.

Programmazione 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

Dettagli

FUNZIONI: IL MODELLO A RUN-TIME!

FUNZIONI: 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

Dettagli

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Tipi 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

Dettagli

Corso di Linguaggi di Programmazione

Corso 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.

Dettagli

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti

INFORMATICA 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

Dettagli

FUNZIONI: IL MODELLO A RUN-TIME

FUNZIONI: 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

Dettagli

Linguaggi di Programmazione I Lezione 1

Linguaggi 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..............................................................

Dettagli

Allocazione Dinamica della Memoria

Allocazione 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

Dettagli

Nomi. Nomi e ambiente. Nomi e oggetti denotabili. Esempio

Nomi. 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

Dettagli

Programmazione C. Funzioni e procedure: Activation record. passaggio per indirizzo

Programmazione 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,

Dettagli

Pr ogramming Languages. Sottoprogrammi

Pr ogramming Languages. Sottoprogrammi Pr ogramming Languages Sottoprogrammi 1 ISottoprogrammi Qualche nozione introduttiva DVAL:dominiodeivaloridenotabili,ovverooggettiai quali èpossibiledareunnome:dataobject(variabili), indirizzi, sottoprogrammi,

Dettagli

Programmazione II. Lezione 12. Daniele Sgandurra 26/11/2010.

Programmazione 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

Dettagli

FUNZIONI: IL MODELLO A RUN-TIME

FUNZIONI: 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

Dettagli

Allocazione dinamica della memoria

Allocazione 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

Dettagli

Gestione dinamica della memoria

Gestione 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.

Dettagli

Il C nel C++: Funzioni

Il 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

Dettagli

Funzioni (1) Il C nel C++: Funzioni. Funzione (2) Vantaggi delle Funzioni. Localizzazione della funzionalità correggibilità manutenibilità

Funzioni (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

Dettagli

Allocazione dinamica della memoria

Allocazione 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

Dettagli

3. Il Binding. 3.1 Le variabili

3. 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

Dettagli

La gestione della memoria dinamica Heap

La 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

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione 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

Dettagli

Astrarre sul controllo

Astrarre 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

Dettagli

20. Gestione della memoria. Andrea Marongiu Paolo Valente

20. 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,

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti 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

Dettagli

Il linguaggio C. Puntatori e dintorni

Il 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;

Dettagli

Introduzione al C. Unità 5 Funzioni

Introduzione 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

Dettagli

Strutture Dati Dinamiche

Strutture 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

Dettagli

Linguaggi di Programmazione

Linguaggi 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

Dettagli

Record di Attivazione Cenni sulla ricorsione

Record 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

Dettagli

Ottenere una modifica del parametro attuale

Ottenere 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)

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione 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

Dettagli

Gestione della memoria

Gestione 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

Dettagli

Corso di Linguaggi di Programmazione

Corso 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

Dettagli

Assembly (3): le procedure

Assembly (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:

Dettagli

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.

Titolo 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

Dettagli

INGEGNERIA DEL SOFTWARE

INGEGNERIA 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

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine 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

Dettagli

Nomi, binding e regole di scope

Nomi, 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

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine 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

Dettagli

L'allocazione statica: L'allocazione automatica L'allocazione dinamica:

L'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

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine 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

Dettagli

Fondamenti di Informatica T. Linguaggio C: Stack e Ricorsione

Fondamenti 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

Dettagli

Assembly (3): le procedure

Assembly (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

Dettagli

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica

10/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

Dettagli

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice

FUNZIONI. 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

Dettagli

L'Allocazione Dinamica della Memoria nel linguaggio C

L'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

Dettagli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori 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

Dettagli

Parametri Formali di una Funzione e Record di Attivazione

Parametri 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

Dettagli

Assembly IV Le procedure

Assembly 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:

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - 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

Dettagli

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio

15 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

Dettagli

Convenzioni di chiamata a procedure

Convenzioni 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

Dettagli

Perché il linguaggio C?

Perché 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

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione 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

Dettagli

Allocazione dinamica della memoria

Allocazione 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

Dettagli

Laboratorio di Informatica I

Laboratorio 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

Dettagli

Architetture dei Calcolatori

Architetture 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

Dettagli

Informatica (A-K) 12. Linguaggio C -3

Informatica (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