Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a. 2002-2003 – 3° ciclo.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Puntatori Linguaggio C.
Puntatori in C e C++.
Costruttori e Distruttori
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Liste.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Allocazione dinamica della memoria
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione VIII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione VIII B: Puntatori e Pasticci Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Approfondimento delle classi
nome: sequenza di caratteri usata per denotare un oggetto
Puntatori - Cenni Nicola Fanizzi Corso di Programmazione C.d.L. in Informatica DIB - Università degli Studi di Bari.
memoria gestita staticamente:
Algoritmi e Programmazione Avanzata
Le funzioni a tempo di esecuzione
AN FI Array Array in Java. AN FI Array Dichiarazione di array in Java [ ]; //oppure u [] ; int a[]; int[] a; u La dimensione non è specificata.
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Java Contardi Carlo A.S. 2008/09.
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Unità Didattica 3 Linguaggio C
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Sintassi base e struttura di un programma
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Complessità di un algoritmo
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Ereditarietà.
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
Strutture dati elementari
Oggetti in C# Lezione 1 Classi ed istanze Oggetti in C# - Lezione 1.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
CORSO DI PROGRAMMAZIONE II Lezione 22
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
GLI ARRAY MONODIMENSIONALI. Utilizzando le nostre attuali conoscenze, proviamo a risolvere il seguente problema: Calcolare la media dei voti conseguiti.
Programmazione ad oggetti
Struttura di una lista legata Una lista legata è una variabile strutturata in cui ogni elemento mantiene l’indirizzo (mediante un puntatore) dell’elemento.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Variabili e assegnazione
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Puntatori e Stringhe.
Il linguaggio C Puntatori e dintorni.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1. 2 Variabili statiche e dinamiche Un programma è un processo in esecuzione a cui il sistema operativo assegna una certa zona di memoria. Tale zona può.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Pile e Code.
1 novembre I nomi in Java F. Bombi 1 novembre 2002.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Il linguaggio C Puntatori e dintorni. 2 Puntatori : idea di base In C è possibile conoscere e denotare l’indirizzo della cella di memoria in cui è memorizzata.
Relazione sulle strutture dati Svolta da: Buccella Simone Strutture di dati Aree di memoria Puntatore numericibooleani alfabetici Statici dinamici Puntatori.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
Il linguaggio C Puntatori e dintorni.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Strutture e Classi.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Transcript della presentazione:

Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo

Memoria dinamica La memoria dinamica è la memoria gestita dinamicamente a run-time dal sistema operativo e dal programma (stack ed heap) E’ possibile (per un programma) allocare aree di memoria dinamicamente durante l’esecuzione ed accedere ad esse mediante puntatori. Gli oggetti così ottenuti sono detti dinamici ed allocati nella memoria libera.

Memoria stack L’area di memoria stack é quella in cui viene allocato un “pacchetto” di dati non appena l’esecuzione passa dal programma chiamante a una funzione. Questo “pacchetto” contiene: - l’indirizzo di rientro nel programma chiamante - la lista degli argomenti passati alla funzione - il valore di ritorno della funzione e viene “impilato” sopra il pacchetto precedente (quello del progr. chiamante) e poi automaticamente rimosso dalla memoria appena l’esecuzione della funzione é terminata.

Memoria stack Nella memoria stack vengono sistemati anche i dati relativi a tutte le variabili automatiche (cioè locali e non statiche) create dalla funzione. Il loro “tempo di vita” é legato all’esecuzione della funzione proprio perché, quando la funzione termina, l’intera area stack allocata viene rimossa.

Memoria heap Esiste un’altra area di memoria che il programma può utilizzare. Questa area, detta heap, è soggetta a regole completamente diverse da quelle che governano l’area stack. L’area heap non é allocata automaticamente, ma solo su esplicita richiesta del programma (allocazione dinamica della memoria) L’area allocata non é identificata da un nome, ma é accessibile solo tramite dereferenziazione di un puntatore

Memoria heap La sua visibilità é legata a quella della variabile puntatore che contiene il suo indirizzo Il suo tempo di vita coincide con l’intera durata del programma, a meno che non venga esplicitamente deallocata; se il puntatore va out of scope, l’area non é più accessibile, ma continua a occupare memoria inutilmente. L’allocazione dinamica della memoria si realizza tramite l’operatore prefisso new. La deallocazione di tale memoria si realizza tramite l’operatore unario delete.

Operatore new L’operatore new permette di allocare memoria per uno o più oggetti nell’area heap e ne restituisce l’indirizzo new tipo [dimensione] tipo é il tipo dell’oggetto (o degli oggetti) da creare dimensione é il numero degli oggetti, che vengono sistemati nella memoria heap consecutivamente; se questo operando é omesso, viene costruito un solo oggetto In caso di errore (memoria libera/dinamica non disponibile) restituisce il valore NULL

Esempi int* punt = new int; alloca un oggetto int nell’area heap e usa il suo indirizzo per inizializzare il puntatore punt; struct anagrafico { }; anagrafico* p; p = new anagrafico [100]; definisce la struttura anagrafico e dichiara un puntatore a tale struttura, a cui assegna l’indirizzo del primo di cento oggetti di tipo anagrafico, allocati nell’area heap.

Operatore delete L’operatore unario delete dealloca (libera) la memoria dell’area heap puntata dall’operando. int* punt = new int; allocazione delete punt; deallocazione L’operatore delete non cancella la variabile puntatore né altera il suo contenuto: l’unico effetto é di liberare la memoria puntata rendendola disponibile per eventuali ulteriori allocazioni.

Operatore delete L’operatore delete può essere applicato solo ad un puntatore che indirizza un oggetto allocato mediante una new mantenendo la correttezza semantica dell’operazione. Non esiste alcun controllo sull’uso congruente degli operatori new e delete, sono sotto la sola gestione del programmatore.

Operatore delete Se delete punta a un’area in cui sono stati allocati più oggetti, l’operatore va ulteriormente specificato con una coppia di parentesi quadre (senza la dimensione, che il C++ é in grado di riconoscere automaticamente). float * punt = new float [100]; ( alloca 100 oggetti float ) delete[] punt; (libera tutta la memoria allocata)

Operatore delete L’operatore delete costituisce l’unico mezzo per deallocare memoria heap, che, altrimenti, sopravvive fino alla fine del programma, anche quando non é più raggiungibile. int* punt = new int; ( alloca un intero nell’area heap) int a; ( definisce la variabile a intera) punt = &a; (assegna a punt l’indirizzo di a) L’oggetto intero dell’area heap non é più raggiungibile in quanto con l’ultima assegnazione si è distrutto il valore iniziale di p (indirizzo ritornato da new) !