Esercizi di Linguaggi di Programmazione

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

Programmazione II. Lezione 23. Daniele Sgandurra 28/1/2011.

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

Passare argomenti al programma

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

Corso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010

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

Corso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010

Introduzione alla programmazione in C

Gestione dinamica della memoria

Laboratorio di programmazione

Gestione della memoria

Allocazione Dinamica della Memoria

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

7 Procedure. Estensioni sintattiche Dec ::= void Ide (Ptype Ide) Block Com ::= Ide(Exp);

Il linguaggio C. Puntatori e dintorni

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

Gestione della Memoria

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

PUNTATORI. Ivan Lanese

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

La Gestione della Memoria. Carla Binucci e Walter Didimo

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free

C funzioni à scope di variabili

Record di Attivazione

L'allocazione dinamica della memoria

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

L'allocazione dinamica della memoria

Scope, Memoria e Tabella dei Simboli

&v restituisce l indirizzo della zona di memoria allocata per v.

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

Le Liste. Maurizio Palesi

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti

Allocazione dinamica della memoria

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Introduzione ai puntatori

Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover

Linguaggi di Programmazione Corso C. Parte n.10 Gestione della Memoria. Nicola Fanizzi

Esercizio 1.A Rispondere, in maniera concisa, alle seguenti domande (12 punti)

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()

Introduzione al C. Unità Gestione Dinamica della Memoria

Il puntatore. Il puntatore

Liste concatenate e allocazione dinamica

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

Programmazione con Java

Gestione della memoria in Java. Emilio Di Giacomo e Walter Didimo

Laurea In Ingegneria dell Informazione. Esercitazioni Guidate di Tecniche della Programmazione

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

Comunicazioni di servizio. I metodi - III. Oggi. Dove siamo. Esempio. Parametri di tipo array. Stefano Mizzaro 1. Domani non c è lezione :-(

Cifratura chiave simmetrica

Nomi e ambiente. Blocchi e regole di scoping. Blocchi e regole di scoping Nomi e ambiente 1 / 39

Introduzione al C Lez. 4

Allocazione dinamica della memoria

Esercizi Programmazione I

Programmazione ad oggetti

Introduzione al linguaggio C Funzioni

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria

Allocazione dinamica della memoria

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

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

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.

Sistemi operativi e distribuiti

Visibilità e tempo di vita delle variabili. (più sintesi di alcuni concetti della prima parte del corso)

Corso di Linguaggi di Programmazione

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Il linguaggio C. Puntatori e dintorni

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

Tempo di vita e scope delle variabili

Fondamenti di Informatica T. Linguaggio C: i puntatori

Lezione 8. Visibilità degli identifcatori e tempo di vita degli oggetti

Corso di Programmazione I

Fondamenti di Informatica

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

! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente

Sistemi lineari e matrice inversa

Architetture dei Calcolatori

Esercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Gestione della memoria

Lezione 11 programmazione in Java. Anteprima. Gestione della memoria

10. Visibilità e tempo di vita delle variabili. Andrea Marongiu Paolo Valente

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

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012

Corso di Linguaggi di Programmazione

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

PROGRAMMAZIONE: I sottoprogrammi

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Corso di Informatica A.A

PROGRAMMAZIONE Gestione della Memoria e Garbage Collection

Gestione della memoria

Fondamenti di Informatica

Allocazione dinamica della memoria: calloc() Se T è il nomed di un tipo, la chiamata calloc(n, sizeof(t)) è equivalente a malloc(n * sizeof(t))

Fondamenti di Programmazione

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 19 14/04/2014

Il linguaggio C funzioni e puntatori

Transcript:

Esercizi di Linguaggi di Programmazione Luca Bedogni March 12, 2015 1. Dato il seguente pseudocodice, dire cosa viene stampato sia nel venga usato scope dinamico, quando si chiama A(). int x = 2 void A() void 0 A() 2. Dato il seguente pseudocodice, dire cosa viene stampato sia nel venga usato scope dinamico, quando si chiama A(). void A() int x = 0 void 0 void C() C() 3. Considerare il seguente pseudocodice 1

int x =? void A() int y =? void A() int y = 2 Fornire una prima configurazione di valori per x e y di modo che il programma stampi il valore 2, usando scope statico. Fornirne poi una seconda per stampare 2 utilizzando scope dinamico. 4. Dato il seguente pseudocodice, dire cosa viene stampato sia nel venga usato scope dinamico. void F(y, z) int x = 0 y = y + 1 z = z + 1 write(x+y+z) F(x,x) 5. Considerare il seguente pseudocodice 0 int v = 5 void void A(z) int x = z * v 2

? Fornire una chiamata alla funzione A di modo che il programma, usando scope statico, stampi il valore 10. Fornire una seconda chiamata per stampare il valore 10, ma usando scope dinamico. 6. Considerare il seguente pseudocodice int y = 2 void A() int x = 2 int k = 3 void A() ** 1 ** x = 2 C() void C() int z = 5 ** 2 ** Scrivere qual è il contenuto delle variabili attive al punto ** 1 ** e ** 2 **, utilizzando scope dinamico e scope statico. 7. Dato il seguente pseudocodice, dire cosa viene stampato sia nel venga usato scope dinamico, quando si chiama A(). int x = 2 void A() void int x = 6 void C() 3

C() 8. Considerare il seguente pseudocodice 2 void int x = 6 void A(int z) x = x * z? Fornire una chiamata alla funzione A di modo che il programma, usando scope statico, stampi il valore 12. Fornire una seconda chiamata per stampare il valore 12, ma usando scope dinamico. 9. Si vuole gestire lo heap con lista libera con blocchi a dimensioni variabili. Si progetti con un certo livello di dettaglio: Tutte le informazioni di gestione da mantenere all interno di ogni blocco Qualora necessarie, le strutture dati ausiliarie per gestire con una certa efficienza una politica di allocazione first-fit e deallocazione che preveda la fusione di blocchi adiacenti. Si consideri di avere 100000 posizioni di memoria nello heap, e di avere 5 programmi (P1, P2, P3, P4 e P5), che richiedono uno spazio cosi definito: P1: 3000 posizioni. P2: 5000 posizioni. P3: 40000 posizioni. P4: 20000 posizioni. P5: 7000 posizioni. Si considerino i seguenti eventi: 4

1. P1 richiede di essere allocato 2. P2 richiede di essere allocato 3. P3 richiede di essere allocato 4. P1 termina 5. P4 richiede di essere allocato 6. P2 termina 7. P5 richiede di essere allocato 8. P3 termina 9. P4 termina 10. P5 termina Schematizzare lo stato dello heap al termine dell esecuzione dei punti 3,4,5,6,7,10, avendo cura di definire lo stato delle informazioni ausiliarie per ogni blocco. 10. Si consideri il seguente pseudocodice. void foo ( int y ) x = x + 1 y = y + 10 x = x + y write (x) int x = 0 foo (x) write (x) Dire cosa viene stampato sia nel caso si utilizzi scope statico sia nel caso in cui si utilizzi scope dinamico. 11. Si consideri il seguente pseudocodice. void a () void b () corpo_di_b void c () void d () corpo_di_d 5

corpo_di_c corpo_di_a Fornire uno schema del display in seguito alla chiamata di procedure a, b, c, d, b, considerando che alla fine della successione di chiamate tutte le procedure siano ancora attive, ovvero nessuna di esse ha ancora ritornato il controllo. 6