Strutture dati e loro organizzazione. Gabriella Trucco

Размер: px
Начинать показ со страницы:

Download "Strutture dati e loro organizzazione. Gabriella Trucco"

Транскрипт

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подробнее