1 Strutture dati. 2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Gestione della memoria centrale
Puntatori in C e C++.
Tipi di dato astratti Lista, Pila, Coda, Albero.
Estendere i linguaggi: i tipi di dato astratti
Unità D2 Archivi e file.
Procedure In assembler.
Array multidimensionali
Strutture dati lineari
Algoritmi e Programmazione
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
Memoria virtuale Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. Solo alcune parti di un programma devono trovarsi.
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Strutture dati elementari
Algoritmi in C++ (1) da completare
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
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.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Laboratorio di informatica: ASSEMBLER
Corso di Fondamenti di programmazione a.a.2009/2010
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.
File.
eliana minicozzi linguaggi1a.a lezione2
Introduzione alla programmazione lll
APPUNTI SUL LINGUAGGIO C
Array Struttura numerate di dati. Memorizzare molti dati In informatica cè spesso bisogno di memorizzare ed elaborare un insieme costituito da molti dati.
Heap allocation e garbage collector di Oberon Algoritmo Quick Fit e garbage collector mark and sweep.
memoria gestita staticamente:
Fondamenti di Informatica1 Realizzazione software Due fasi: 1. Specifica dell'algoritmo 1.a Definizione dei dati 1.b Definizione della modalità della loro.
DBMS ( Database Management System)
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
EXCEL FORMATTAZIONE DATI.
Tavole dinamiche Spesso non si sa a priori quanta memoria serve per memorizzare dei dati in un array, in una tavola hash, in un heap, ecc. Può capitare.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 6 (Deitel) I vettori Sommario Introduzione Vettori Dichiarazione di vettori 6.4.
BIOINFO3 - Lezione 24 ARRAY
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
Corso di informatica Athena – Periti Informatici
Il Sistema Operativo: il File System
Unità Didattica 3 Linguaggio C
Foglio elettronico Excel Livello avanzato
IL MASSIMO DI UN ARRAY ESERCIZIO
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Complessità di un algoritmo
Microsoft Access Chiavi, struttura delle tabelle.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
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.
Risoluzione delle collisioni con indirizzamento aperto Con la tecnica di indirizzamento aperto tutti gli elementi stanno nella tavola. La funzione hash.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Algoritmi e Strutture Dati Strutture Dati Elementari.
Relazione sulle strutture dati Svolta da: Buccella Simone Strutture di dati Aree di memoria Puntatore numericibooleani alfabetici Statici dinamici Puntatori.
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Esercizi.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
Esercitazione no. 4 EXCEL II Laboratorio di Informatica AA 2009/2010.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

1 Strutture dati

2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione astratta

3 Strutture statiche e dinamiche Statica: che non cambia nel tempo (forma o dimensione) Es.: elenco di nomi: posso aggiungere o eliminare nomi? Struttura statica: solo metodi per accedere ai dati e per modificarli Struttura dinamica: anche metodi per aggiungere e togliere dati, e trovare spazio in memoria per i nuovi dati

4 Puntatori Ogni cella di memoria ha un indirizzo Indirizzo = valore numerico  puo’ essere memorizzato in una cella di memoria Puntatore: cella/e di memoria che contiene l’indirizzo di un’altra cella di memoria Puo’ servire a sapere dove sono stati memorizzati dei dati Es.: registro contatore programma della CPU

5 Puntatori come tipi di dati In molti linguaggi di programmazione Dichiarazione, allocazione, gestione dei puntatori (come un real o un integer) Es.: in memoria c’e’ una lista di romanzi (per ordine alfabetico del titolo)  Vogliamo trovare tutti i romanzi di un certo autore  aggiungo una cella ad ogni romanzo, che contiene il puntatore al romanzo successivo dello stesso autore, in un ciclo

6 Esempio

7 Array omogeneo Viene memorizzato in memoria in celle contingue Facile trovare l’elemento i: Vado all’indirizzo di inizio dell’array, x Vado all’indirizzo x + (i-1)*k celle, dove k=numero di celle per un elemento dell’array

8 Esempio

9 Array bidimensionale Esempio: tabella con venditori sulle righe e giorni della settimana sulle colonne: numero di vendite in ogni cella  array bidimensionale Una riga: vendite di un venditore in una settimana Una colonna: vendite fatte in un giorno da tutti i venditori

10 Simulazione di tabella in memoria Memoria: sequenza di celle con indirizzi consecutivi Un array e’ statico  posso riservare un pezzo di memoria per l’intero array, e poi metterci l’array riga per riga

11 Esempio Come trovare il valore in terza riga e quarta colonna? Da prima cella, passiamo la prima riga e la seconda Cinque elementi per riga  10 elementi pr arrivare al primo elemento della terza riga Altri 3 elementi per quarto elemento della terza riga  13 elementi in totale

12 In generale... Array con c colonne, x indirizzo iniziale Indirizzo di elemento in riga i e colonna j: x + (c * (i-1)) + (j-1) Il compilatore traduce i riferimenti (es. Vendite[2,4]) in indirizzi di memoria Il programmatore usa la forma tabulare (struttura astratta), il compilatore usa la memorizzazione in memoria (struttura fisica)

13 Esercizio Array bidimensionale con 8 righe e 11 colonne Ogni elemento occupa 2 celle di memoria Memorizzato per righe a partire dall’indirizzo 25 Indirizzo dell’elemento in terza riga e sesta colonna? 25 + (11x2x2) + (2x5) = =79

14 Liste Sequenza di elementi, dinamica Es.: lista di nomi, ogni nome 8 lettere  8 celle di memoria Come la memorizzo in memoria? Blocco di celle consecutive (80)?

15 Liste contigue Devo cancellare un nome  spazio vuoto  devo spostare tutti i nomi che seguono (ordine alfabetico) Devo inserire un nuovo nome  non c’e’ spazio  devo spostare tutto il blocco

16 Lista concatenata Gli elementi sono memorizzati in aree di memoria diverse invece che contigue Nell’esempio, 9 celle per ogni nome: 8 per il nome, 1 per puntatore all’elemento successivo Inoltre, puntatore al primo elemento (testa) della lista Puntatore speciale (nil) nell’ultimo elemento Per accedere all’elemento i-esimo: devo scorrere tutti gli elementi dal primo all’i-esimo

17 Lista concatenata

18 Cancellazione in liste concatenate Modifico il puntatore che punta all’elemento da cancellare, e lo faccio puntare all’elemento successivo

19 Inserzione in liste concatenate Trovo un blocco di 9 celle “libero”, dove metto il nome e il puntatore all’elemento che lo seguira’ nella lista Cambio il puntatore di chi lo precedera’ per farlo puntare a lui

20 Code e pile Le liste concatenate riducono gli spostamenti se permettiamo inserzioni e cancellazioni ovunque Se permettiamo modifiche solo alle estremita’, anche una struttura contigua puo’ andare bene Pila (stack): inserzioni (push) e cancellazioni (pop) solo ad una estremita’ (cima)  l’ultimo elemento inserito e’ il primo ad essere cancellato (LIFO) codapila

21 Memorizzazione di una pila Blocco di celle contigue, grande abbastanza per le inserzioni previste Puntatore alla cima dello stack (ultimo elemento riempito)

22 Pila per chiamate di procedura Quando un programma chiama una procedura, deve memorizzare da qualche parte l’indirizzo di ritorno (da cui riprendere l’esecuzione dopo) Dove lo memorizza? In una pila Chiamata dopo chiamata, gli indirizzi vengono memorizzati sulla pila Alla chiusura delle procedure, gli indirizzi di ritorno vengono presi in ordine opposto

23 Pila per chiamate di procedura

24 Pila per ordine inverso Vogliamo stampare gli elementi di una lista concatenata in ordine inverso Ci serve una struttura dati per memorizzare ogni nome finche’ i nomi seguenti non sono stati stampati Scorro la lista e metto i nomi su una pila Alla fine della lista, stampo i nomi della pila

25

26

27 Esercizi e domande Un programma chiama la procedura A, che chiama la B. Quando B termina, A chiama la procedura C. Seguire questo percorso mantenendo aggiornata la pila delle posizioni di ritorno.

28 Coda Tutti gli inserimenti ad una estremita’ (coda) Tutte le cancellazioni all’altra estremita’ (testa) FIFO Memorizzazione:  celle contigue  due puntatori alla testa: primo elemento alla coda: primo elemento libero Coda “circolare”: quando gli elementi ragiungono la fine del blocco, inserisco dall’altra estremita’

29 Code

30 Code

31 Code circolari

32 Code circolari

33 Esercizio IndirizzoContenuto 11C 12 13G 14 15E 16 17B 18 19U 20 21F 22 Inserire gli indirizzi nelle celle vuote in modo che ogni cella con una lettera, piu’ la cella successiva, formi un elemento di una lista concatenata in cui le lettere appaiono in ordine alfabetico Che indirizzo per testa lista?

34 Esercizio IndirizzoContenuto 30J B X N K P 4134 Lista concatenata Un elemento: due celle (lettera + indirizzo elemento successivo) Modificare i puntatori per eliminare N Sostituire N con G e modificare puntatori in modo che G sia in ordine alfabetico

35 Esercizio IndirizzoContenuto 30N I J E M A 4130 Puntatore alla testa: 34 Che nome e’ contenuto nella lista? Modificare puntatori per avere il nome Jean

36 Esercizio Coda Ogni elemento occupa una cella di memoria Puntatore alla testa = 11 Puntatore alla coda = 17 Quali soni i valori dei due puntatori dopo aver inserito un elemento e eliminati due?