Strutture dati e loro organizzazione. Gabriella Trucco
|
|
|
- Agostina Barbieri
- 9 anni fa
- Просмотров:
Транскрипт
1 Strutture dati e loro organizzazione Gabriella Trucco
2 Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi (variabili) anziché indirizzi numerici Dato: un particolare valore che una variabile può assumere Tipo di dato: modello matematico che caratterizza l'insieme di valori che una variabile può assumere, e le operazioni che possono essere eseguite su di essa
3 Tipi di dato primitivi Intero dati numerici costituiti da numeri interi Operazioni: aritmetiche e confronto Reali dati numerici costituiti da numeri non interi Operazioni simili a interi Booleani Vero/falso Operatori dell algebra booleana, confronto Caratteri Dati alfanumerici Operazioni: concatenazione, confronto
4 Struttura dati Un modo per memorizzare e organizzare i dati e rendere efficiente l accesso e la modifica dei dati stessi Esempi: array, matrici, grafi, alberi, tabelle hash, heap, liste, code, pile,... Una struttura dati consiste di: un modo sistematico di organizzare i dati un insieme di operatori che permettono di manipolare gli elementi della struttura
5 Struttura dati Statiche: la dimensione è definita al momento della creazione. Una volta terminato lo spazio allocato, è necessario creare un altra struttura di dimensione maggiore dello stesso tipo e copiarvi dentro il contenuto della prima Array, record Dinamiche: la dimensione della struttura dati può variare nel tempo senza limite. L unico limite è la quantità di memoria disponibile nella macchina su cui andrà in esecuzione l applicazione Liste, code, pile, alberi, grafi
6 Strutture dati Lineari: i dati sono disposti in sequenza e possono essere nominati come primo, secondo, terzo,... Non lineari: i dati non sono disposti in sequenza Omogenee: i dati sono tutti dello stesso tipo Non omogenee: i dati sono di tipi diverso Esempio: il tipo di dato array rappresenta una struttura dati lineare, omogenea, a dimensione fissa
7 Struttura dati Nozione astratta svincolata dalla concreta rappresentazione della struttura nel modello di calcolo Implementazione: descrive il modo con il quale la struttura è memorizzata e viene gestita dal calcolatore Ogni struttura dati ammette più implementazioni con un costo diverso Spazio di memorizzazione Tempo per l esecuzione delle operazioni primitive sulla struttura
8 Array In alcuni casi, informazione da elaborare consiste di un aggregazione di valori anziché un solo valore Utile indicare l insieme di valori con una sola variabile: variabile di tipo strutturato Array: Insieme di variabili, tutte dello stesso tipo, identificato da un nome unico. Gli elementi dell array sono disposti in memoria in posizioni consecutive.
9 Definizione di array Specificare: Nome della variabile Tipo di elementi Numero di elementi presenti (cardinalità dell array ESEMPI Definizione di una variabile array v contenente 20 interi: int v[20]; Definizione di una variabile array w contenente 10 float: float w[10];estelar)
10 Accesso agli elementi di un array Specificare il nome della variabile La posizione dell elemento tramite un valore intero (indice) v[0]: primo valore dell array v[n-1]: N-mo elemento
11 Inizializzazione di un array
12 Operazioni Inizializzazione: operazione di input per ciascuno degli elementi Stampa: fare la stampa di ognuno degli elementi. Quale costrutto usare? Ciclo iterativo Esempio int v[5]={23, 2, 4, 3, 54} for (i=0; i<5; i++) print v[i];
13 Ricapitolando Array = blocco di elementi dello stesso tipo struttura dati statica e omogenea, usata in molti linguaggi di programmazione ispirata alla nozione matematica di vettore, (o di matrice, nel caso di array bidimensionali). sorta di casellario: le cui caselle sono dette celle dell'array stesso. Ogni cella come una variabile tradizionale che rappresenta un elemento dell'array; tutte le celle sono variabili di uno stesso tipo preesistente, detto tipo base dell'array. array di interi, array di stringhe, array di caratteri Ciascuna delle celle dell'array è identificata da un valore di indice. indice numerico con valori che assumono numeri interi contigui che partono da 0 o da 1 cella di indice 0, di indice 1, e, in generale, di indice N, dove N è un intero compreso fra 0 (o 1) e il valore massimo per gli indici dell'array.
14 Array Implementazione di un array A di n elementi di tipo primitivo (int, char,...): è memorizzato in n celle consecutive a partire da un indirizzo ind A Scorrimento sequenziale tramite un ciclo iterativo in tutti i suoi elementi o a partire da alcuni di essi oltre a poter accedere singolarmente ad una sua generica posizione. il tempo di accesso ad un generico elemento i è uguale al tempo di accesso della cella di indirizzo ind A+ i, quindi è costante int vettore[5]; // definisce "vettore" come array di 10 elementi interi vettore[0] = 3; // assegna il valore "0" alla cella di indice 0 vettore[1] = 2; vettore[2] = 5; vettore[3] = 0; vettore[4] = 3;
15 Array bidimensionali Matrici: necessari due indici per identificare un elemento dell array Per definire un array bidimensionale, è necessario specificare: il nome della variabile array il tipo degli elementi il numero degli elementi presenti nelle due dimensioni (cardinalità di riga e cardinalità di colonna dell array) Es: double mat [10][10];
16 Esempio
17 Array multidimensionali Un indice per ogni dimensione ogni elemento è identificato dalla combinazione di valori di tutti gli indici del vettore
18 Esempio di matrice: immagine bitmap Costituita da una griglia di n m punti (dot o pixel) colorati n:l numero di righe di punti (pixel rows) m: numero di colonne di punti (pixel columns) Esempio: immagine (ingrandita)
19 Qualità immagine bitmap Dipende da: numero di punti nell immagine (pixel count) numero dei colori: profondità di colore (color depth) Maggiori sono il numero di punti e la profondità di colore, maggiore è la qualità purtroppo aumenta anche la dimensione Occorre tenere sempre conto dell impiego dell immagine
20 Esempi Es1: immagine in due colori, bianco e nero, ingrandita, di un carattere per lo schermo numero di punti e colori molto basso, ma sufficiente Es2: immagine =1.92 Mpixel, in 2 24 = colori, ridotta
21 Profondità di colore I colori percepiti variano in modo continuo Nelle immagini digitali si utilizzano colori tratti da un insieme finito, rappresentabile con un numero finito di bit. Tale numero è la profondità di colore (color depth), o risoluzione cromatica, dell immagine. Profondità di colore maggiormente usate: 1 bit: il pixel può essere solo bianco o nero 8 bit: il pixel può avere uno tra 2 8 = 256 differenti colori. 16 bit: 2 16 = ( 64k ) colori 18 bit: ( 256k ) colori 24 bit: 2 24 colori. La profondità è detta True Color.
22 Profondità di colore
23 Record Record (o tipo aggregato) = blocco di dati in cui elementi diversi possono appartenere a tipi diversi Struttura dati che può essere eterogenea o omogenea. Combinazione di elementi che possono essere di diverso tipo, ad esempio un intero, un numero in virgola mobile e un carattere testuale. Gli elementi che lo compongono sono detti anche campi, e sono identificati da un nome. Struct del linguaggio C Struct { char Nome[25]; int Età; }Impiegato;
I tipi strutturati e i record in C++
I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi
Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C
Ripasso R1 Dati strutturati Aggregazione di dati omogenei: gli array Spesso gli algoritmi lavorano su insiemi di dati omogenei. o l insieme dei valori reali che rappresentano le temperature medie delle
Gli Array. Dichiarazione di un array
Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato
Linguaggio C: Array Valeria Cardellini
Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione
Introduzione alla programmazione. Alice Pavarani
Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello
Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
Introduzione al Linguaggio C
INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)
Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Marco Liverani ([email protected])
Costanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
Capitolo 2 GOCCE DI JAVA. Domande a risposte multiple
GOCCE D AVA Capitolo 2 Domande a risposte multiple Selezionando una risposta, il bottone corrispondente diventa verde se la risposta è giusta, altrimenti diventa rosso. 2 1. Quale dei seguenti non è un
Vettori Matrici Grafi Introduzione al Fuzzy-tool. Renato Mainetti
Vettori Matrici Grafi Introduzione al Fuzzy-tool Renato Mainetti Vettore In Matematica: Un vettore è un elemento di uno spazio vettoriale. I vettori sono quindi elementi che possono essere sommati fra
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
Il linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
Introduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
Algoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
Indice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
Cicli annidati ed Array multidimensionali
Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un
Introduzione a Matlab
INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi
Array multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)
Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici
Lezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo [email protected] Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
Fasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo Sviluppo di programmi Per la costruzione di un programma
Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso
Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura
Caratteristiche di un linguaggio ad alto livello
Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Introduzione >> Sommario Sommario Panoramica Alcuni Esempi
RAPPRESENTAZIONE DELLE INFORMAZIONI
RAPPRESENTAZIONE DELLE INFORMAZIONI 1 RAPPRESENTAZIONE DELLE INFORMAZIONI Le informazioni gestite dai sistemi di elaborazione devono essere codificate per poter essere memorizzate, elaborate, scambiate,
Informatica Generale Andrea Corradini I linguaggi di programmazione
Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi
