Dizionari. Hashtables.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Dizionari. Hashtables."

Transcript

1 Dizionari Hashtables

2 Credits Materiale a cura del Prof. Franco Milicchio

3 Introduzione I tipi di dato che abbiamo introdotto fino ad ora sono molto semplici Ad esempio liste, stringhe, sono essenzialmente mappe di interi In effetti, temperature[i], è una mappa N R, cioè ad ogni intero viene associato un reale Analogamente una stringa associa un intero ad un carattere ASCII Una hashtable (o dizionario ) è una mappa da un insieme in un altro, o in altre parole, è una lista di coppie chiave-valore

4 Hashtable h = dict() h["ciao"] = h["al"] = h["mondo"] = for i in h: print i, h[i] Memoria h["ciao"] 3,1415 ciao mondo al h["mondo"] 2,7182 h["al"] -1,2345

5 Operazioni Il layout in memoria è peculiare: ne vedremo a breve il perché È possibile iterare su un dizionario allo stesso modo di una lista, tenendo presente che l iteratore è una chiave L oggetto ha alcuni metodi utili, come d.keys() e d.values(), che rispettivamente ritornano una lista di chiavi e di valori La creazione di una hashmap è possibile inline, utilizzando la seguente sintassi: h = { key:value, key:value, } L accesso è costante nel tempo

6 Complessità Una lista in Python è una sequenza lineare: in altre parole in memoria, gli elementi adiacenti occupano spazi adiacenti Sappiamo che l indice in una lista indica lo scostamento dall inizio dell array Il tempo per accedere ad un elemento è dunque costante, ovvero O(1) Anche una hashmap ha questa proprietà, grazie all hashing Altro Array di 10 elementi Altro RAM array[5] = -4

7 Hashmap: Implementazione Una hashmap è una struttura dati complessa, noi ne introdurremo una versione molto semplificata Una hashmap dall insieme K all insieme V è costituita da due elementi fondamentali: Una funzione di hash: una funzione da un insieme nei naturali h : K N Una lista i cui elementi sono liste di coppie nell insieme K V

8 Hashmap 0 d[ ciao ] = h(ciao) = Lista

9 Hashmap: Implementazione Nel modello precedente, la lista degli elementi contiene solo dei valori Cosa succede se più chiavi hanno lo stesso valore di hash? La lista, dunque, non può essere una lista di elementi, bensì una lista di liste Ogni elemento della lista viene chiamato bucket Ogni bucket contiene la lista di tutti i valori associati a chiavi con stesso hash In questo caso, si chiama collisione

10 Hashmap d[ ciao ] = 42 h(ciao) = Lista [ [ lotr, 9], [ ciao, 42],... ]

11 Complessità Calcoliamo la complessità asintotica della modifica di un elemento in una hashtable Abbiamo due casi fondamentali, con complessità diverse La hashtable contiene un elemento per bucket La hashtable contiene più elementi per bucket La prima è il caso medio, la seconda opzione è il caso peggiore

12 Complessità: Caso Medio Nel caso medio, la hashtable contiene un elemento per bucket Questo vuol dire che per raggiungere un elemento k e modificarlo, è necessario: Calcolare l hash function con argomento k Accedere alla zona di memoria dell elemento k Entrambe le operazioni sono a tempo costante, quindi la complessità è O(1)

13 Complessità: Caso Medio d[ ciao ] = Indipendente dal h(ciao) = 3 numero di bucket Indipendente dal numero di bucket Lista

14 Complessità: Caso Peggiore Nel caso peggiore, la hashtable contiene più elementi per bucket Calcolare l hash function con argomento k Accedere alla zona di memoria degli elementi con lo stesso hash di k Scorrere la lista degli elementi fino a trovare k Le prime due operazioni sono a tempo costante, O(1) L ultima operazione, al contrario, è lineare, quindi la complessità è O(n)

15 Complessità: Caso Peggiore d[ ciao ] = 42 [ [ lotr, 9], [ ciao, 42],... ] Dipende dalla lunghezza, h(ciao) = 3 asintoticamente O(n) Indipendente dal numero di bucket Lista

16 Hash Function h = dict() h["ciao"] = h["al"] = h["mondo"] = for i in h: print i, "->", h[i], "hash:", hash(i) ciao -> hash: mondo -> hash: al -> hash:

17 Hash Function print hash("aaaaaaaaaaa") print hash("baaaaaaaaaa") print hash("abaaaaaaaaa") print hash("aaaaaaaaaab") print hash("bbbbbbbbbbb")

18 Hash Function L hash function stabilisce in quale bucket una coppia chiave-valore debba risiedere È quindi critica nella costruzione di una buona hashmap Una buona hash function ha una distribuzione uniforme dei valori La distribuzione, ovviamente, dovrebbe essere indipendente dalla dimensione della hashtable Si pensa che le hash function crittografiche, i.e., difficili da invertire, siano delle buone funzioni candidate

19 Distribuzioni h(k) :=1 Hashmap

20 Distribuzioni h(k) := k e k! Hashmap

21 Distribuzioni h(k) := 1 p 2 e (k µ) Hashmap

22 Distribuzioni h(k) := k min K +1 max K min K +1 Hashmap

23 Esempio Una hashtable è una struttura dati fondamentale: fornisce un accesso veloce a valori (nel caso medio) È utile nei casi un cui si debba cercare un valore ripetutamente As esempio, è molto indicata per contare valori Sia come problema tipo il seguente: data una stringa possibilmente molto lunga, e.g., il testo di un libro intero, contare tutte le parole Con una lista, ad ogni parola dovremo cercare se esiste scandendola Con una hashtable, la ricerca in media è costante

24 Implementazione Le hashmap sono costrutti base, per questo sono spesso implementate nelle librerie base di vari linguaggi Ad esempio, Python ha dict, C++ unordered_map, Java HashMap Come già accennato le hash function giocano un ruolo fondamentale Creare una buona hash function è molto difficile Altrettanto difficile è scrivere una struttura dati efficiente È un esercizio molto complicato scrivere dunque una hashmap, si consiglia di utilizzare la struttura dati fornita dal linguaggio

Input/Output. Console e File.

Input/Output. Console e File. Input/Output Console e File http://www.dia.uniroma3.it/~roselli/ [email protected] Credits Materiale a cura del Prof. Franco Milicchio Introduzione Le istruzioni di stampa servono a rendere visibili

Dettagli

TABELLE AD INDIRIZZAMENTO DIRETTO

TABELLE AD INDIRIZZAMENTO DIRETTO Tabelle Servono per implementare dizioniari in modo efficiente. dizionari insiemi di coppie (chiave, valore). Esempio: in un compilatore di un linguaggio di programmazione viene creata una tabella dei

Dettagli

Esercizi Capitolo 7 - Hash

Esercizi Capitolo 7 - Hash Esercizi Capitolo 7 - Hash Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive

Dettagli

Esercitazione E3 File System

Esercitazione E3 File System Esercitazione E3 File System Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009 E3-1 Indici ISAM Si consideri un file di 60.000 record di 80 byte ciascuno, con un campo chiave di 16 byte, sul quale

Dettagli

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15 ANNO ACCADEMICO 2014/15 1 a prova in itinere 13 gennaio 2015 ESERCIZIO 1 Si risolva l equazione di ricorrenza al variare del parametro reale a>1. T (n) = 27 n a T + n 2 log n a ESERCIZIO 2 Si ordinino

Dettagli

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash Funzioni Hash Sommario Tabelle ad indirizzamento diretto e hash Funzioni Hash Requisiti Metodo della divisione Metodo della moltiplicazione Funzione Hash Universale La ricerca Talvolta si richiede che

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 5 Alberto Ceselli [email protected] Università degli Studi di Milano 12 Marzo 2013 Le funzioni sono oggetti di prima classe in Scheme In Scheme le funzioni

Dettagli

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

Dettagli

Primo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Primo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale Primo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini [email protected] - [email protected] 10 marzo 2016 Programma 1. Lettura di un problema tratto dalle

Dettagli

Massimo Benerecetti Tabelle Hash

Massimo Benerecetti Tabelle Hash Massimo Benerecetti Tabelle Hash # Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: [email protected] A.A. 2009-2010 Rappresentazione di insiemi

Dettagli

Strutture di accesso ai dati: B + -tree

Strutture di accesso ai dati: B + -tree Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O 2 0 0 9-2 0 0 Osservazione Quando l indice aumenta di dimensioni, non può risiedere

Dettagli

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1 Dizionario Insieme dinamico che offre solo le seguenti operazioni: inserimento di un elemento dato cancellazione di un elemento dato ricerca di un elemento dato (verifica dell appartenenza di un elemento

Dettagli

Hash Tables. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Hash Tables. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione Hash Tables Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Hash Tables, A.A. 2009/2010 1/42 Hash Tables Indirizzamento

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione al corso di Algoritmi e Strutture Dati Luigi Pontieri Il nome del corso: Algoritmi e Strutture Dati Algoritmo: metodo per la risoluzione di problemi di elaborazione di informazioni, espresso

Dettagli

Massimo Benerecetti Tabelle Hash: gestione delle collisioni

Massimo Benerecetti Tabelle Hash: gestione delle collisioni Massimo Benerecetti Tabelle Hash: gestione delle collisioni # Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: [email protected] A.A. 2009-2010

Dettagli

Tecniche di Ordinamento dei Vettori

Tecniche di Ordinamento dei Vettori Tecniche di Ordinamento dei Vettori Corso di Laurea Ingegneria Corso B A.A. 2010-2011 1 Contenuto 1) Generalità 2) Metodi a Minimo Ingombro di Memoria 2.1) Ordinamento per selezione ( Selection Sort )

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di

Dettagli

Hash Table. Hash Table

Hash Table. Hash Table Hash Table La ricerca di un elemento su una lista (semplice o doppia) presenta una complessità di tipo O(n), dato che occorre scandire (al più) l intera lista per poter trovare l elemento desiderato. Le

Dettagli

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 7, 2016 Liste trabocco (Separate Chaining) Esercizio 1 [Libro 7.5] Un dizionario è realizzato con liste di trabocco.

Dettagli

Laboratorio di Python (con Linux)

Laboratorio di Python (con Linux) 8 a lezione Università di Bologna 2, 4 maggio 2012 Sommario 1 2 3 Diversi Python 2.6 vs 2.7 v.s 3.x La versione di Python installata sulle macchine del laboratorio è la 2.6 (per l esattezza 2.6.6 ). Versioni

Dettagli

Studio degli algoritmi

Studio degli algoritmi COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica Dispense per i corsi di Informatica generale Corso di laurea in Matematica e Introduzione agli Algoritmi Corso di laurea in Informatica Prof. Tiziana Calamoneri Prof. Giancarlo Bongiovanni Questi appunti

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I 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 Lez. 8 - Introduzione all ambiente

Dettagli

Liste, dizionari e tuple

Liste, dizionari e tuple Liste, dizionari e tuple Andrea Passerini [email protected] Informatica Liste Descrizione Una lista è una sequenza di oggetti qualunque (anche di tipo diverso, anche altre liste) >>> l = ["abc",

Dettagli

RETI LINEARI R 3 I 3 R 2 I 4

RETI LINEARI R 3 I 3 R 2 I 4 RETI LINERI 1 Leggi di Kirchoff. Metodo delle correnti di maglia R 1 R 3 I 1 I 3 E 1 J 1 J 2 J 3 I 2 I 4 R 4 I 5 R 5 I 6 R 6 J 4 R 7 Il calcolo delle correnti e delle differenze di potenziale in un circuito

Dettagli

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo

Dettagli

Algoritmi di ordinamento: Array e ricorsione

Algoritmi di ordinamento: Array e ricorsione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion

Dettagli

INFORMATICA 3 Prof.ssa Sara Comai

INFORMATICA 3 Prof.ssa Sara Comai INFORMATICA 3 Prof.ssa Sara Comai ESERCIZI SESSIONE LIVE Ricerca e indicizzazione Ing. Paola Spoletini 1. Hashing Data una tabella hash di lunghezza m=11, si supponga di dover inserire (in ordine) le chiavi:

Dettagli

Lezione 6 programmazione in Java

Lezione 6 programmazione in Java Lezione 6 programmazione in Java Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi

Dettagli

Programmazione Ricorsione in coda

Programmazione Ricorsione in coda Programmazione Ricorsione in coda Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Ricorsione in coda Ricorsione in coda La ricorsione in coda (o tail-recursion) è un caso speciale di ricorsione

Dettagli

Ordinamenti per confronto: albero di decisione

Ordinamenti per confronto: albero di decisione Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto

Dettagli

Esercizi su variabili aleatorie discrete

Esercizi su variabili aleatorie discrete Esercizi su variabili aleatorie discrete Esercizio 1. Data la variabile aleatoria discreta X, caratterizzata dalla seguente rappresentazione nello spazio degli stati: 1 0,25 X = { 0 0,50 1 0,25 calcolare

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati A.A. 15/16 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro Contatti Studio: stanza 513, V piano DIB Telefono: 080 544 2297 email: [email protected]

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

Dettagli

Problemi algoritmici e Complessità degli algoritmi

Problemi algoritmici e Complessità degli algoritmi Problemi algoritmici e Complessità degli algoritmi Università degli Studi di Salerno Corso di Laurea in Scienze della comunicazione Informatica generale Docente: Angela Peduto A.A. 2005/2006 Problemi algoritmici!

Dettagli

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli Funzioni e moduli Andrea Passerini [email protected] Informatica Funzioni nella programmazione Descrizione Una funzione è una sequenza di istruzioni cui viene dato un nome Questo permette di riutilizzare

Dettagli

Fondamenti di Informatica T1 Mappe

Fondamenti di Informatica T1 Mappe Fondamenti di Informatica T1 Mappe Tutor Melissa Licciardello [email protected] Melissa Licciardello Fondamenti di Informatica T1 1 / 16 Mappe Matrice N x 2 : Gli elementi della prima colonna,

Dettagli

Strutture fisiche di accesso

Strutture fisiche di accesso Strutture fisiche di accesso Esercitazioni - Basi di dati (complementi) Autore: Dr. Simone Grega Esercizio 1 Siano date le seguenti informazioni: B=4096 bytes la dimensione di un blocco H=12 bytes la dimensione

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Programmazione in Python per la bioinformatica

Programmazione in Python per la bioinformatica per la bioinformatica University of Verona Sommario La struttura dati Lista Lista Come si rappresenta una lista in python Reminder: Lista collezione ordinata di elementi L = a 0, a 1,, a n 1 La variabile

Dettagli

Statistica Descrittiva Soluzioni 6. Indici di variabilità, asimmetria e curtosi

Statistica Descrittiva Soluzioni 6. Indici di variabilità, asimmetria e curtosi ISTITUZIONI DI STATISTICA A A 2007/2008 Marco Minozzo e Annamaria Guolo Laurea in Economia del Commercio Internazionale Laurea in Economia e Amministrazione delle Imprese Università degli Studi di Verona

Dettagli

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016 ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016 Classe: 4^A inf Prof.ssa Lami Carla Prof. Simone Calugi Programma di INFORMATICA GENERALE, APPLICAZIONI

Dettagli

Distribuzioni campionarie. Antonello Maruotti

Distribuzioni campionarie. Antonello Maruotti Distribuzioni campionarie Antonello Maruotti Outline 1 Introduzione 2 Concetti base Si riprendano le considerazioni fatte nella parte di statistica descrittiva. Si vuole studiare una popolazione con riferimento

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 07 Oggetti e Java Marzo 2010 Programmazione Java 1 Contenuti Il linguaggio Java Applicazioni Java e il metodo main Esempi di applicazioni

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,

Dettagli

Espressioni aritmetiche

Espressioni aritmetiche Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:

Dettagli

UNIVERSITA DEGLI STUDI DI PERUGIA

UNIVERSITA DEGLI STUDI DI PERUGIA UNIVERSITA DEGLI STUDI DI PERUGIA REGISTRO DELLE LEZIONI E DELLE ALTRE ATTIVITÀ DIDATTICHE Anno accademico 2006-2007 Dott./Prof. Pinotti Maria Cristina Settore scientifico-disciplinare INF01 Facoltà Scienze

Dettagli

Piano cartesiano e Retta

Piano cartesiano e Retta Piano cartesiano e Retta 1 Piano cartesiano e Retta 1. Richiami sul piano cartesiano 2. Richiami sulla distanza tra due punti 3. Richiami punto medio di un segmento 4. La Retta (funzione lineare) 5. L

Dettagli

Algoritmi in C++ (seconda parte)

Algoritmi in C++ (seconda parte) Algoritmi in C++ (seconda parte) Introduzione Obiettivo: imparare a risolvere problemi analitici con semplici programmi in C++. Nella prima parte abbiamo imparato: generazione di sequenze di numeri casuali

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute.

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute. I due esercizi seguenti su un esempio semplice (trovare il massimo tra due o tra tre numeri) introducono la descrizione di algoritmi con diagrammi a blocchi, le strutture di controllo sequenza e condizione,

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Facoltà di Ingegneria Clinica BCLR Dispense di Paolo Caressa e Raffaele Nicolussi. Lezione 9. Versione per Python 3. Docenti: Alberto Marchetti Spaccamela Raffaele Nicolussi

Dettagli

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1 Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)

Dettagli

Laboratorio di Python

Laboratorio di Python Istruzione di condizione, Input da tastiera, Università di Bologna 6 e 8 marzo 2013 Sommario 1 Tipi di errore e Debugging 2 3 4 Outline Tipi di errore e Debugging 1 Tipi di errore e Debugging 2 3 4 Esercizio

Dettagli

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati Sommario - Progettazione di un database - Join - Valore NULL - Operatori aggregati Progettazione di un database - In un database c'è una marcata distinzione tra i valori in esso contenuti e le operazioni

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Esercitazione 1 Conversione di base

Esercitazione 1 Conversione di base Esercitazione 1 Conversione di base A.A. 2017-18 Esercizio 1 (M) Scrivere un programma che esegua la conversione di un numero reale qualunque da base 10 a base β {2,..., 16}, utilizzando gli M-function

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Seconda lezione a Python Dottore Paolo Parisen Toldin - [email protected] Dottoressa Sara Zuppiroli - [email protected] L'importanza di capire Perché non dobbiamo dichiarare

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Introduzione alla programmazione. Walter Didimo

Introduzione alla programmazione. Walter Didimo Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata

Dettagli

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function Introduzione al MATLAB c Parte 3 Script e function Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 M-file di tipo Script e Function Script Function 2 Gestione dell

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli