Perché informatica generale (1)

Documenti analoghi
Abilità Informatiche. capitoli 1-2. Prof. Fabio Calefato a.a Giurisprudenza

Tipi di Informazione

La codifica del testo

RAPPRESENTAZIONE DELLE INFORMAZIONI

La codifica. dell informazione. Tipi di informazione

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

La codifica dei caratteri di un testo

Sistemi di Elaborazione delle Informazioni

La codifica dell informazione

La codifica dell informazione. Rappresentazione binaria. Rappresentazione posizionale in base 10

1.2 Concetti base dell Informatica: Informazione

La codifica binaria. Informatica B. Daniele Loiacono

Calcolatore e unità di misura

o Occorre rappresentare tale informazione in formato facilmente manipolabile dall elaboratore

La codifica. dell informazione

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Il sistema binario: bit e Byte Codifica del testo Il Byte come U.d.M. dell'informazione Multipli del Byte

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

Segnale analogico. Analogico vs digitale. Segnale digitale. Trasformazione da analogico a digitale

Rappresentazione binaria. Laboratorio di Informatica. Calcolatori digitali. N: numeri naturali. La codifica binaria. I primi 16 numeri binari

Aspetti dell informazione

CODIFICA IMMAGINI IN BIANCO E NERO

Codifica dell Informazione

Somma di numeri binari

Codifica dell Informazione

Concetti Introduttivi. Rappresentazione delle informazioni

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

La codifica binaria. Informatica B. Daniele Loiacono

Rappresentazione dell Informazione. Sistemi di Elaborazione delle Informazioni Rappresentazione Informazione 1

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

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria

Informazione binaria: suoni, immagini, sequenze video

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Introduzione al Linguaggio C

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

La codifica. dell informazione

La codifica dell informazione

Laboratorio di Informatica

La codifica digitale

Appunti di informatica: la codifica dell'informazione

Rappresentazione dell'informazione

Rappresentazione dei Dati

Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale

RAPPRESENTAZIONE DEI DATI SISTEMI DI MISURA

Codifica binaria dell informazione

Corso di Informatica A (A-L) Corso di Laurea in Scienze e Tecniche Psicologiche a.a 2005/06. Obiettivi del corso. Prof. ssa Maria Luisa Sapino

Codifica di informazioni numeriche

CODIFICA DI CARATTERI

Rappresentazione dei dati in memoria

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

1.3d: La Codifica Digitale dei Suoni

Aritmetica dei Calcolatori Elettronici

Nozioni di grafica sul calcolatore. concetti di base

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Introduzione. Elementi di Informatica. Sistemi di Numerazione Addizionali. Sistemi di Numerazione. Sistemi di Numerazione Romano

Tecnologie per il web e lo sviluppo multimediale. Rappresentazione delle informazioni

Corso di Informatica

Rapida Nota sulla Rappresentazione dei Caratteri

La rappresentazione delle informazioni

Informatica di Base - 6 c.f.u.

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

INFORMAZIONI NUMERICHE RAPPRESENTAZIONE DELL INFORMAZIONE

Sistemi di Elaborazione delle Informazioni 6 CFU

Codifica dell informazione

Codifica binaria. Rappresentazioni medianti basi diverse

Rappresentazione binaria

Sistemi di Numerazione Binaria

La Rappresentazione dell Informazione

Sistemi di Elaborazione delle Informazioni

Lezione 3. I numeri relativi

Informatica Generale

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Informatica. Informatica. Grandezze digitali. Grandezze analogiche

4.3: La Codifica dei Suoni e dei Video

Informatica. Terzo anno Prof. A. Longheu

Le immagini digitali

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Rappresentazione binaria delle informazioni oppure Rappresentazione digitale delle informazioni

Sistemi di Elaborazione delle Informazioni 6 CFU

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

RAPPRESENTAZIONE DELLE INFORMAZIONI NEI CALCOLATORI

I.4 Rappresentazione dell informazione

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Calcolo numerico e programmazione Rappresentazione dei numeri

Codifica. Rappresentazione di numeri in memoria

Il Modello di von Neumann (2) Prevede 3 entità logiche:

La "macchina" da calcolo

Esame di Informatica. Facoltà di Scienze Motorie LE UNITA DI MISURA (1/4) LE UNITA DI MISURA (3/4) LE UNITA DI MISURA (2/4) Lezione 2

Corso di Architettura degli Elaboratori

Introduzione e Nozioni di Base. Prof. Thomas Casali

Elaborazione dell informazione. Elaborazione dell informazione. Rappresentazione dei numeri INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Elementi di informatica

Rappresentazione dell Informazione

La digitalizzazione delle informazioni (come e perché trasformare le informazioni in numeri) A cura di Saverio Cantone

Informatica di Base - 6 c.f.u.

Numerazione binaria e rappresentazione delle informazioni

Informazione multimediale

Fondamenti di Informatica. per la Sicurezza. a.a. 2003/04. Calcolo binario. Stefano Ferrari

L'Informazione e la sua Codifica. Maurizio Palesi

Transcript:

Perché informatica generale (1) Obiettivi: 1 - Conoscere i fondamenti su cui si basa il mondo digitale (binario, digitalizzazione di immagini, suoni, calcoli, occupazione, conversione). 2 Conosce l hardware per capire, almeno a grandi linee, su cosa stiamo lavorando e cosa ci servirebbe per lavorare meglio. 3 Conoscere la teoria dei sistemi operativi come cuore alla base di ogni sistema. 4 Conoscere i principali sistemi operativi

Perché informatica generale (2) Obiettivi: 5 Conoscere i fondamenti della progettazione HCI (Human Computer Interaction) 6 Conoscere i principi di funzionamento e interazione in reti locali e Internet 7 Capire il concetto di algoritmo e come utilizzare gli algoritmi per risolvere i problemi

Informatica Definizione di Informatica: Scienza della rappresentazione e dell elaborazione dell informazione

Informatica L informatica tratta l informazione e la sua codifica le tecniche per raccoglierla, memorizzarla, distribuirla, trasformarla, il calcolatore, il suo funzionamento, le possibilità che offre per la trasformazione dell informazione, le tecniche di utilizzo, la comunicazione tra elaboratori, tra persone (mediata dal calcolatore)

Struttura Computer Hardware Software Firmware

Hardware Hardware Struttura fisica del calcolatore formata da parti meccaniche, elettriche, elettroniche (Video HD, tastiera, modem, CPU, ecc,)

Software Software Componente del calcolatore costituita dai programmi di base e dai programmi applicativi per la gestione e l uso del sistema Software di sistema Software applicativo

Firmware Firmware Software cablato direttamente in chip hardware non facilmente modificabile. Es. flash Bios e successive soluzioni Il firmware è un programma, ovvero una sequenza di istruzioni, integrato direttamente in un componente elettronico nel senso più vasto del termine (integrati, schede elettroniche, periferiche). Il suo scopo è quello di avviare il componente stesso e consentirgli di interagire con altri componenti hardware tramite l'implementazione di protocolli di. https://it.wikipedia.org/wiki/firmware

Algoritmo Per algoritmo intendiamo: Una sequenza ordinata di passi per risolvere un problema

Programma Programma: codifica di un dato algoritmo in un opportuno linguaggio di programmazione (ossia linguaggio elaborabile da un computer ü Grammatica: uso di un particolare vocabolario ü Sintassi: correttezza formale delle frasi scritte nel programma, rispetto al linguaggio di programmazione scelto ü Semantica: correttezza sostanziale del programma in termini di significato Un programma puo essere corretto sintatticamente ma scorretto semanticamente (non risolve correttamente il problema per cui e stato ideato)

Processo Qualsiasi programma o parte di esso opportunamente tradotto in L.M. e caricato in memoria principale diventa un processo Processi di sistema Processi utente / applicativi

Tipi di Informazione Testo (caratteri) Numeri Suoni Immagini Le informazioni sono concetti astratti che esistono indipendentemente dalla loro rappresentazione Tutto ciò che ci circonda è informazione

Informazione digitale Codifica Informazione Rappresentazione digitale Decodifica File

Cosa significa digitale??

Digitale attinente ai numeri, numerico; in particolare si dice di apparecchiatura che trasforma informazioni (testi, immagini, suoni ecc.) in sequenze numeriche e le elabora o le gestisce in questo formato; Etimologia dall ingl. digital, deriv. di digit cifra, unità numerica.

Informazione digitale Codifica Informazione Rappresentazione digitale Decodifica File

Codifica dell informazione Idea di base: Usare presenza/assenza di carica elettrica passaggio/non passaggio di corrente/luce Stati di polarizzazione di una sostanza magnetizzabile BInary digit (cifra binaria): il BIT Usiamo cioe una rappresentazione binaria (a due valori) dell informazione

Codifica dell informazione Con 1 bit rappresentiamo solo 2 diverse informazioni: 1 à vero, 0 à falso 1 à si, 0 à no 1 à on, 0 à off Com possiamo rappresentare più informazioni??

Codifica dell informazione Mettendo insieme piu bit possiamo rappresentare piu informazioni: 2 bit = 4 informazioni 00-01 - 10-11

Codifica dell informazione Esempio: un esame può avere quattro possibili esiti ottimo 00 discreto 01 sufficiente 10 insufficiente 11 Con 2 bit si codificano 4 informazioni (2 2 )

Codifica dell informazione Se dobbiamo rappresentare più di 4 informazioni occorre aggiungere il 3 bit, tante parole quanti sono i concetti 000, 001, 010, 011, 100, 101 110, 111 Avalle 2004

Codifica dell informazione Nel caso di aggregazioni di tre bit si hanno otto configurazioni possibili, a cui potremmo far corrispondere dell informazione: nero con 000 rosso con 001 blu con 010 giallo con 011 verde con 100 viola con 101 grigio con 110 arancione con 111

Codifica dell informazione Con 2 bit si codificano 4 informazioni (2 2 ) Con 3 bit si codificano 8 informazioni (2 3 ) Con N bit si codificano 2 N informazioni

Codifica dell informazione Se invece dobbiamo rappresentare 21 concetti diversi mi servono 2 N >= M dove M=21 2 5 = 32 Alcune sequenze ( da 22 a 32) non vengono utilizzate

Codifica dell informazione Per rappresentare 57 invece informazioni diverse dobbiamo usare gruppi di almeno 6 bit. Infatti: 2 6 = 64 > 57 Cioe un gruppo di 6 bit puo assumere 64 configurazioni diverse: 000000 / 000001 / 000010 / 111110 / 111111

Codifica dell informazione In generale, con N bit, ognuno dei quali puo assumere 2 valori, possiamo rappresentare 2 N informazioni diverse viceversa: Per rappresentare M informazioni dobbiamo usare N bit, in modo che: 2 N >= M

Il Byte In informatica ha assunto particolare importanza il concetto di: byte = 8 bit = 2 8 = 256 inf. diverse Il byte e usato come unita di misura per indicare le dimensioni della memoria, le dimensioni del disco, la potenza di un elaboratore, Usando sequenze di byte (e quindi aggregati di 8 bit di bit) si possono rappresentare caratteri, numeri immagini, suoni.

Multipli del Byte Di solito si usano i multipli del byte Kilo KB 2 10 (~ mille byte, 1024) MegaMB 2 20 Giga GB 2 30 (~ un milione, 1KBx1024) (~ un miliardo, 1MBx1024) Tera TB 2 40 (~ mille miliardi, 1GBx1024)

Codifica dei caratteri E necessario individuare un codice numerico per rappresentare i caratteri. Il codice ASCII (American Standard Code for Interchange Code) usa i primi 7 bit di ogni byte: 2 7 = 128 caratteri diversi Sufficienti per l alfabeto anglosassone

Codifica dei caratteri Per la codifica di 127 caratteri standard sono sufficienti 7 bit (ASCII standard) Talvolta occorre utilizzare 8 bit (ASCII esteso) 256 caratteri Oppure ancora 16 bit (UNICODE) 65535 caratteri MS Windows usa un codice proprietario a 16 bit per carattere, simile ad UNICODE ma non totalmente standard chiamato multilanguage UTF8: UTF-8 (Unicode Transformation Format, 8 bit) è una codifica dei caratteri Unicode in sequenze di lunghezza variabile di byte, UTF-8 usa da 1 a 4 byte per rappresentare un carattere Unicode

Codifica ascii dei caratteri ASCII Simb. ASCII Simb. ASCII Simb. 00000000 NUL 00001110 SO 00011100 FS 00000001 SOH 00001111 SI 00011101 GS 00000010 STX 00010000 DLE 00011110 RS 00000011 ETX 00010001 DC1 00011111 US 00000100 EOT 00010010 DC2 00100000 SP 00000101 ENQ 00010011 DC3 00100001! 00000110 ACK 00010011 DC4 00100010 " 00000111 BEL 00010101 NAK 00100011 # 00001000 BS 00010110 SYN 00100100 $ 00001001 HT 00010111 ETB 00100101 % 00001010 NL 00011000 CAN 00100110 & 00001011 VT 00011001 EM 00100111 00001100 NP 00011010 SUB 00101000 ( 00001101 CR 00011011 ESC 00101001 )

Codifica ascii dei caratteri Avalle 2004 ASCII Simb. ASCII Simb. ASCII Simb. 00101010 * 00111001 9 01000111 G 00101011 + 00111010 : 01001000 H 00101100, 00111011 ; 01001001 I 00101101-00111100 < 01001010 J 00101110. 00111101 = 01001011 K 00101111 / 00111110 > 01001100 L 00110000 0 00111111? 01001101 M 00110001 1 01000000 @ 01001110 N 00110010 2 01000001 A 01001111 O 00110011 3 01000010 B 01010000 P 00110100 4 01000011 C 01010001 Q 00110101 5 01000100 D 01010010 R 00110110 6 01000101 E 01010011 S 00111000 8 01000110 F 01010100 T

Codifica delle parole Sono sequenze di caratteri Esempio: INFORMATICA 01001001 01001110 01000110 01001111 01010010 0100110 01000001 I N F O R M A 01010100 01001001 01000011 01000001 T I C A

Codifica delle parole Per la lettura di un file ASCII ( ad esempio un normalissimo file pippo.txt) il sistema memorizza lunghe sequenze di codici Ascii. La decodifica consiste nella suddivisione in blocchi di 8 bit e la ricerca del simbolo grafico corrispondente

Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero 324 può essere rappresentato dalla sequenza di byte: 00110011 00110010 00110100 3 2 4 Ma ATTENZIONE si tratta di rappresentazione di simboli e non del valore numerico 324 da utilizzare nelle operazioni matematiche

Codifica dei numeri (decimale) Sistema posizionale in cui ogni cifra di un numero assume un valore che dipende dalla sua posizione Il sistema decimale (base 10): 245 = 2 x 100 + 4 x 10 + 5 x 1 245= 2 x 10 2 + 4 x 10 1 + 5 x 10 0 Si deve fare la somma dei prodotti di ciascuna cifra moltiplicata per la base elevata all esponente che rappresenta la posizione della cifra stessa (partendo da 0)

Codifica dei numeri (binario) Utilizza una notazione posizionale basata su 2 cifre (0 e 1) e sulle potenze di 2 Esempio: 10110 = 1 x2 4 + 0 x2 3 + 1x2 2 + 1 x2 1 + 0x2 0 = 22 Esempio: 1010101 = 1x2 6 +0x2 5 +1x2 4 +0x2 3 +1x2 2 +0x2 1 +1x2 0 = 85 1*64+0*32+1*16+0*8+1*4+0*2+1*1 = 85

Codifica dei numeri (Esadecimale) Utilizza una notazione posizionale basata su 16 cifre (0,1,2,,9,A,B,C,D,E,F) e sulle potenze di 16 Esempio: 1011 16 = 1x16 3 + 0x16 2 + 1x16 1 + 1x16 0 = 4113 1*4096 + 0*256 + 1*16 + 1*1 = 4113 Esempio: C3B5 = 12 * 16 3 + 3 * 16 2 + 11 * 16 1 + 5 * 16 0 = 50101 12*4096 + 3*256 + 11*16 + 5*1= 49152 + 768 + 176 + 5 = 50101

Conversioni dei numeri (da 2 a 10 ) Un metodo pratico (memorizza le potenze di 2) 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 256 128 64 32 16 8 4 2 1

Conversioni dei numeri (da 2 a 10 ) Un metodo pratico Esempio: 10011101 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1 0 0 1 1 1 0 1 128+ 16 + 8 + 4 + 1 = 157

Conversioni dei numeri (da 2 a 10 ) Provate a convertire il seguente numero da base 2 a base 10 Esempio: 10111 2 4 2 3 2 2 2 1 2 0 16 8 4 2 1

Conversioni dei numeri (da 2 a 10 ) Provate a convertire il seguente numero da base 2 a base 10 Esempio: 10111 2 4 2 3 2 2 2 1 2 0 16 8 4 2 1 1 0 1 1 1 16 4 2 1 =23

Conversioni dei numeri (da 2 a 10 ) Provate a convertire il seguente numero da base 2 a base 10 Esempio: 1100010 2 6 2 5 2 4 2 3 2 2 2 1 2 0 64 32 16 8 4 2 1

Conversioni dei numeri (da 2 a 10 ) Provate a convertire il seguente numero da base 2 a base 10 Esempio: 1100010 2 6 2 5 2 4 2 3 2 2 2 1 2 0 64 32 16 8 4 2 1 1 1 0 0 0 1 0 64 32 2 = 98

Conversioni dei numeri (da 2 a 10 ) Provate a convertire il seguente numero da base 2 a base 10 Esempio: 100000001 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 256 128 64 32 16 8 4 2 1

Conversioni dei numeri (da 10 a 2 ) Per convertire un numero in base 2 si devono trovare i resti delle divisioni successive del numero per la base 2 Esempio: 157 10 157 / 2 resto 1 78 / 2 resto 0 39 / 2 resto 1 19 / 2 resto 1 10011101 9 / 2 resto 1 4 / 2 resto 0 2 / 2 resto 0 1 / 2 resto 1

Conversioni dei numeri (da 10 a 2 ) Consideriamo ad esempio il numerale 13 in base 10 e cerchiamo la rappresentazione corrispondente in base 2.

Conversioni dei numeri (da 10 a 2 ) 13 espresso in base 2 1101

Conversioni dei numeri (da 10 a 2 ) Consideriamo ad esempio il numerale 42 in base 10 e cerchiamo la rappresentazione corrispondente in base 2.

Conversioni dei numeri (da 10 a 2 ) 42 espresso in base 2 101010

Conversioni dei numeri (da 10 a 2 ) Consideriamo ad esempio il numerale 345 in base 10 e cerchiamo la rappresentazione corrispondente in base 2.

Conversioni dei numeri (da 10 a 2 ) 345 espresso in base 2 101011001

Conversioni dei numeri (da 2 a 16 ) Un metodo pratico Esempio: 10011101 8 4 2 1 8 4 2 1 1 0 0 1 1 1 0 1 9 D = 157

Esercizi da base 2 a base 10 111011 101111101 110000 110010101 101010101010 101000000001 Suggerimenti 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 256 128 64 32 16 8 4 2 1 Ancora: 2 9 = 512. 2 10 =1024. 2 11 =2048

Soluzioni 111011 59 101111101 381 110000 48 110010101 405 101010101010 2730 101000000001 2561

Da base 10 a base 2 128 1234 5654 1233 234 511

Soluzioni 128 10000000 1234 10011010010 5654 1011000010110 1233 10011010001 234 11101010 511 111111111 Potete testare altri esercizi verificandoli con il convertitore: http://wims.unice.fr/wims/wims.cgi

Addizione binaria

Addizione binaria

Addizione binaria 10111001 + (185) 10000100 = (132) =========== 100111101 (317) Overflow = oltre il numero massimo di cifre rappresentabili con un datonumero di cifre (es Byte) Avalle 2004

Interi con segno 111 (neg) = 001 = -1 1010 (neg) = 0110 = -6 0000 +0 1000-0 0001 +1 1001-1 0010 +2 1010-2 0011 +3 1011-3 0100 +4 1100-4 0101 +5 1101-5 0110 +6 1110-6 0111 +7 1111-7

Interi con segno 111 (neg) = 001 = -1 1010 (neg) = 0110 = -6 0000 +0 1000-0 0001 +1 1001-1 0010 +2 1010-2 0011 +3 1011-3 0100 +4 1100-4 0101 +5 1101-5 0110 +6 1110-6 0111 +7 1111-7 E MI MANGIO SEMPRE UN BIT PER IL SEGNO

Complemento a 2 0000 +0 0001 +1 1001-7 0010 +2 1010-6 0011 +3 1011-5 0100 +4 1100-4 0101 +5 1101-3 0110 +6 1110-2 0111 +7 1111-1

Complemento a 2 Si fissa un ampiezza di n bits detta precisione Il bit piu significativo (a sinistra) determina il segno: 0 corrisponde a +, 1 a - I bits restanti sono la codifica binaria se il numero e positivo Se il num. e negativo, per calcolarne il valore assoluto si trasforma la sequenza si parte da destra verso sinistra e la si lascia invariata fino al primo 1, dopodiche si complementano i bit rimasti (scambio di 0 con 1 e viceversa): la codifica binaria risultante e il valore assoluto.

Cifre rappresentabili Sist. Decimale = 0-99 = 10 N - 1 Sist. Binario= 0-11111111 = 2 N - 1 Esempio: 11111111 (8 bit )= 2 8-1= 255. Per rappresentare il n. 256 serve un bit in piu : 100000000 = 1*2 8 = 256.

Cifre rappresentabili Date N cifre binarie, è possibile rappresentare i numeri da 0 a 2 N- 1 È evidente il fatto che, nel momento in cui si fissa il numero di bit destinati alla rappresentazione di un numero, si fissa anche il numero massimo rappresentabile. Ad esempio, se scegliamo di utilizzare otto bit, i numeri rappresentabili saranno quelli compresi tra 0 e 2 8-1, ossia tra 0 e 255.

Cifre rappresentabili Fissate quante cifre (bit) sono usate per rappresentare i numeri, si fissa anche il numero piu grande che si puo rappresentare con 16 bit: 2 16-1 = 65.535 con 32 bit: 2 32-1 = 4.294.967.295 con 64 bit: 2 64-1 = circa 1,84 * 10 19 Si possono rappresentare numeri piu grandi se si tollera un certo grado di imprecisione.

Overflow Deciso il numero di cifre a disposizione si fissa anche il numero massimo rappresentabile, numeri più grandi causano problemi di overflow Esempio: 4 cifre in base 10 9999 + 1 = 10000 10 in base 2 1111 + 1 = 10000 2 (= 1610)

Numeri a virgola mobile (floating point ) Numero 12,52 = 1252/100 = 1252 * 10-2 Un numero decimale e rappresentato come un intero moltiplicato per una opportuna potenza di 10, cioe con una coppia: <1252; -2> mantissa esponente

Numeri a virgola mobile (floating point ) Rappresentazioni a 16 bit - 2 bit per i segni - 9 bit per il valore assoluto della mantissa - 5 bit per il valore assoluto dell'esponente Rappresentazioni a 32 bit - 2 bit per i segni - 20 bit per il valore assoluto della mantissa - 10 bit per il valore assoluto dell'esponente

Numeri a virgola mobile (floating point ) Con lo stesso metodo possiamo rappresentare numeri molto grandi. Con 8 bit: <11111,111> 5 bit di mantissa: 11111 = 31 3 bit di esponente: 111 = 7 11111111 = 31 * 10 7 = 310 milioni Mentre, con la notazione classica, con 8 bit rappresentiamo al massimo il 255

Numeri a virgola mobile (floating point ) Purtroppo però non si può utilizzare sempre perche si perde in precisione Es. 5 cifre (decimali) 4 per la mantissa, 1 per l esponente. 546,768 <5467; -1> che diventa Un numero compreso tra 546,7 e 546,8

Numeri a virgola mobile (floating point ) Altro esempio potendo usare 6 cifre Es. 6 cifre (decimali) 5 per la mantissa, 1 per l esponente. 324,7686 <32476; -2> che diventa Un numero compreso tra 324,76 e 324,76

Numeri a virgola mobile (floating point ) Consideriamo, per esempio, il numero 312545 che essendo composto da sei cifre genera un errore di overflow. Osserviamo che questo stesso numero può essere scritto come: 312545 = 3125.45 *10 2 e quindi, potendo usare solo 5 cifre rappresentato mediante la coppia <3125,2> a scapito della sua precisione perché si perdono le ultime due cifre, quelle meno significative. In altri termini, la coppia <3125,2> denota in modo impreciso tutti i numeri compresi tra 312500 e 312599.

Numeri a virgola mobile (floating point ) Altro esempio potendo usare 6 cifre Es. 6 cifre l esponente. 5 per la mantissa, 1 per 6.789.346 <67.893; 2> che diventa Un numero compreso tra 6.789.300 e 6.789.400

Numeri a virgola mobile (floating point ) Altro esempio potendo usare 6 cifre Es. 6 cifre l esponente. 5 per la mantissa, 1 per 36.789.346 <36789; 3> che diventa Un numero compreso tra 36.789.000 e 36.790.000

Rappresentazione delle immagini Immagini in bianco e nero

Rappresentazione delle immagini Dividere l immagine in una griglia a righe orizzontali e verticali Ogni quadratino della griglia e un pixel Codificare ogni pixel con: 0 se il pixel e bianco 1 se il pixel e nero Il formato dell immagine (BMP, Jpeg, Tiff, ecc.) determina anche la partenza: convenzionalmente si parte dal 1 quadratino basso a sinistra.

Rappresentazione delle immagini Risoluzione 7 X 4

Rappresentazione delle immagini 0 0000000 0111100 0110000 0100000 1 0 0 0 0 22 23 24 25 26 27 28 0 0 0 1 1 0 15 16 17 18 19 20 21 1 1 1 1 0 0 8 9 10 11 12 13 14 0 1 0 0 0 0 0 0 2 3 4 5 6 7 Immagine ricostruita 0 0 0 Risoluzione in bit B/W 1 1 1 1 1 1 1

Rappresentazione delle immagini Aumentiamo la risoluzione a 14 X 8

Rappresentazione delle immagini Quindi: le immagini sono rappresentate con un certo livello di approssimazione, o meglio, di risoluzione, ossia il numero di pixel usati per riprodurre l immagine: 640 x 480 pixel; 800 x 600 pixel 1024 x 768 pixel; 1280 x 1024 pixel 1400 x 1280 pixel É importante anche il dot pitch, il grado di definizione del pixel: 0,25-0,28 in quanto maggior risoluzione e minor dot-pitch garantiscono immagini migliori

Immagine con risoluzione 620 x 379 con 72 pixel x pollice

Immagine con risoluzione 300 x 183 con 32 pixel x pollice

Rappresentazione delle immagini - Esistono immagini in B/W ( 1 solo bit per il colore ) - Oppure immagini a livelli di grigio o colori - Con 8 bit si codificano 256 livelli di grigio. (ottenuti regolando la luminosita del pixel) - Con 8 bit si rappresentano 256 colori, con 16 bit 65.000 colori, con 24 bit 16 milioni di colori diversi per pixel - Attenzione : fare sempre attenzione nel calcolo - a bit e byte 256 colori = 1 byte per pixel

Rappresentazione delle immagini 1 pixel a 2 colori 1 bit 1 pixel a 256 colori 1 byte (1 * 8 bit) 1 pixel a 65535 colori 2 byte (2 * 8 bit) 1 pixel a 16 Mil. di colori 3 byte (3 * 8 bit)

Dimensione delle immagini 1. moltiplicare la risoluzione orizzontale per la risoluzione verticale ottenendo così il numero totale di pixel dell immagine (es. 726X356); 2. moltiplicare il numero di bit necessari per rappresentare ciascun pixel (in base ai colori) per il numero di pixel ottenuto al passo 1. 3. trasformare il totale ottenuto al punto 2 in byte (dividere il risulato per 8); 1. se i colori sono 256, 65535 o 16 milioni è sufficiente moltiplicare il totale dei pixel per 1, 2 o 3 esprimendo così il totale direttamente in byte.

Esempio 1 - Abbiamo un immagine 10 X 20 pixel con 200 colori Per 200 colori occorrono 8 bit (256 colori) 1) 10 X 20 = 200 pixel 2) Per ogni pixel 8 bit, quindi 200 X 8 = 1600 bit 3) Trasformo in byte 1600/8 = 200 byte (200*1) Avalle 2004

Esempio 2 - Abbiamo un immagine 1000 X 400 pixel con 60000 colori Per 60000 colori occorrono 16 bit (65535 colori) 1) 1000 X 400 = 400.000 pixel 2) Per ogni pixel 16 bit, quindi 400.000 X 16 = 6.400.000 bit 3) Trasformo in byte 6.400.000/8 = 800.000 byte (400.000*2) Avalle 2004

Esempio 3 - Abbiamo un immagine 1000 X 200 pixel con 16 milioni di colori colori Per 16M di colori occorrono 24 bit 1) 1000 X 200 = 200.000 pixel 2) Per ogni pixel 24 bit, quindi 200.000 X 24 = 4.800.000 bit 3) Trasformo in byte 4.800.000/8 = 600.000 byte (200.000*3)

Esercizio 1 - Abbiamo un immagine 800 X 600 pixel con 256 colori Quanti bit occorrono per 256 colori? 1) Calcolate la risoluzione totale (base x altezza) 2) Moltiplicate la risoluzione totale x il numero di bit 3) Trasformate in byte

Esercizio 1 soluzione - Abbiamo un immagine 800 X 600 pixel con 256 colori Quanti bit occorrono per 256 colori? 1) Calcolate la risoluzione totale (800 x 600): 480.000 2) Moltiplicate la risoluzione totale x il numero di bit: 3.840.000 bit 3) Trasformate in byte: 480.000 byte (480 KB)

Esercizio 2 - Abbiamo un immagine 640 X 480 pixel con 65.535 colori Quanti bit occorrono per 65.535 colori? 1) Calcolate la risoluzione totale (base x altezza) 2) Moltiplicate la risoluzione totale x il numero di bit 3) Trasformate in byte

Soluzione Esercizio 2 - Abbiamo un immagine 640 X 480 pixel con 65.535 colori Quanti bit occorrono per 65.535 colori? 16 1) Calcolate la risoluzione totale (base x altezza): 307.200 2) Moltiplicate la risoluzione totale x il numero di bit 307.200 * 16= 4.915.200 3) Trasformate in byte: 614.400 byte (614,4 KB)

Esercizio 3 - Abbiamo un immagine 1024 X 768 pixel con 16M di colori Quanti bit occorrono per 16M di colori? 1) Calcolate la risoluzione totale (base x altezza) 2) Moltiplicate la risoluzione totale x il numero di bit 3) Trasformate in byte

Soluzione Esercizio 3 - Abbiamo un immagine 1024 X 768 pixel con 16M di colori Quanti bit occorrono per 16M di colori? 24 1) Calcolate la risoluzione totale (base x altezza): 786.432 2) Moltiplicate la risoluzione totale x il numero di bit: 18.874.368 3) Trasformate in byte: 2.359.296 byte (2,359 MB)

Rappresentazione delle immagini Lo standard RGB prevede i colori rosso (Red), verde (Green) e blu (Blue) e si codifica con 1 byte ogni colore base Red, Green,Blue 256, 256, 256 Che si esprimono con i numeri da 0-255

Rappresentazione delle immagini http://codicicolori.com/codici-colori-rgb

La compressione delle immagini Compressione senza perdita di dati (lossless compression). Aree contenenti pixel dello stesso colore vengono codificate in modo compatto; questo permette una compressione limitata ma salvaguarda dalla perdita di informazioni nella fase di decompressione. Compressione con perdita di dati (lossy compression). Questa famiglia di tecniche di compressione permette una riduzione nelle dimensioni dell immagine compressa fino anche a dieci volte rispetto allo schema precedente ma comporta una perdita di informazioni.

Grafica bitmap Un oggetto bitmap è memorizzato semplicemente come una griglia di pixel a ciascuno dei quali è associato un colore. Una volta disegnata una linea, essa non è più una linea ma solo un insieme di pixel sullo schermo, pertanto non è più possibile modificarne le coordinate. Le manipolazioni chesi possono fare su un oggetto bitmap sono molto differenti da quelle che sipossono fare su un oggetto vettoriale, perché si basano sul concetto di pixel.

Grafica bitmap L immagine è descritta pixel per pixel Per ridurre l occupazione di memoria, l immagine è spesso compressa La qualità dipende da tanti fattori - numero di bit utilizzati per ciascun pixel - caratteristiche dell immagine - algoritmo di compressione usato - fattore di ingrandimento sul video

Immagine bitmap L ingrandimento fa perdere risoluzione

Compressione Per ridurre la dimensione delle immagini bitmap, si usano vari algoritmi di compressione (con/senza perdita di informazione) Il guadagno dipende dall algoritmo e dalla immagine originale, e può essere significativo

Formati grafici del web GIF (Graphic Interchange Format) - utilizza da 2 a 256 colori - compressione senza perdita (loseless) - immagini a peso minimo - adatto per immagini con colore omogeneo -si possono salvare con sfondo trasparente - normalmente vengono scaricate dal browser riga per riga - se si vuole offrire un anteprima dell immagine mentre il browser la scarica bisogna esportarle come GIF interlacciate -questo ultimo procedimento è consigliato per immagini di grandi dimensioni

Formati grafici JPEG (Joint Photographic Experts Group) - colori a 24-32 bit - il livello di compressione può essere scelto e può essere molto alto, con perdita di informazione (lossy). Ma esiste anche una versione loseless - adatto per immagini fotografiche - non consente l utilizzo di background trasparenti - negli schermi a bassa risoluzione le immagini possono risultare sgranate - il formato JPEG progressivo consente lo scaricamento graduale dell immagine (ma ne determina un aumento di peso)

JPEG: Esempio di compressione

Formati grafici PNG (Portable Network Graphics) Consente di esportare in 3 formati: 8-24-32 bit Lossy Migliore resa del JPEG Ora è pienamente supportate dai browser

Immagine bitmap Bitmap 750 KB L ingrandimento fa perdere risoluzione

Gif 24 KB

JPG, 24 KB

PNG, 21 KB

JPG

GIF

Grafica vettoriale Un oggetto vettoriale è costituito da una sequenza di segmenti, che vengono memorizzati registrando le coordinate delle estremità di ciascun segmento. Tali segmenti possono essere dritti o curvi, e possono essere uniti a formare una linea spezzata, aperta o chiusa. Un oggetto vettoriale ha inoltre degli attributi, come ad esempio il colore e lo spessore della linea, il riempimento se si tratta di una figura chiusa (ad es. un rettangolo), etc. Gli attributi sono memorizzati separatamente dalle coordinate, per cui una volta creato l oggetto è possibile modificare le coordinate lasciando inalterati gli attributi, oppure modificare gli attributi senza cambiare la forma dell oggetto.

Grafica vettoriale L immagine è descritta da un algoritmo che permette di ricrearla La qualità è indipendente dal fattore di inrandimento

Immagine vettoriale L ingrandimento non fa perdere la risoluzione 117

Le immagini vettoriali - - Le immagini vengono costruite a partire dalla descrizione degli elementi che le compongono mediante un linguaggio testuale - Ad es, SVG (Standard Vector Graphics)

http://www.w3schools.com/svg/tryit.asp? filename=trysvg_myfirst

Le immagini in movimento Un'immagine in movimento viene generalmente memorizzata come una sequenza di fotogrammi. Tanto maggiore è il numero di fotogrammi nell'unità di tempo (la frequenza dei fotogrammi), tanto migliore apparirà la qualità del movimento Se i fotogrammi sono poco frequenti si avrà l'effetto di un'immagine che si muove a scatti. Ad esempio, le immagini televisive vengono trasmesse con una frequenza di 25/30 fotogrammi al secondo e ogni fotogramma ha una risoluzione di 576X720 pixel, con un numero di colori codificabile con 16 bit.

Come comprimere le immagini in movimento Innanzitutto per risparmiare spazio per ogni fotogramma si possono usare le stesse tecniche di codifica e di compressione usate per le immagini fisse. Un secondo modo per ridurre lo spazio nasce dall'osservazione che spesso non vi sono molte differenze tra due fotogrammi consecutivi di un'immagine Si può allora pensare che, dopo aver memorizzato un fotogramma, non si devono memorizzare completamente quelli successivi, ma semplicemente si devono ricordare le differenze rispetto al fotogramma memorizzato in modo completo. Dopo un certo insieme di fotogrammi memorizzati per differenza sarà quindi indispensabile memorizzare un nuovo fotogramma in modo completo.

La codifica dei filmati - Sono sequenze di immagini compresse: (ad esempio si possono registrare solo le variazioni tra un fotogramma e l altro) Utilizzano tutti la tecnica del CODEC (COmpress od DECompress) - Un codec è un programma o un dispositivo che si occupa di codificare e/o decodificare digitalmente un segnale (tipicamente audio o video) perché possa essere salvato su un supporto di memorizzazione o richiamato per la sua lettura. (https://it.wikipedia.org/wiki/codec )

La codifica dei filmati Utilizzano tutti la tecnica del CODEC (COmpress od DECompress) - Esistono vari formati per codificare filmato e sonoro : mpeg (il piu usato) avi (microsoft) quicktime (apple) mov

http://www.w3schools.com/html/html5_video.asp

La codifica dei filmati MPEG (Moving Picture Experts Group) fino a 200:1 DIVX MOTION JPEG (Max 100:1)

Il suono Fisicamente un suono è rappresentato come un onda che descrive la variazione della pressione dell aria nel tempo (onda sonora) Sull asse delle ascisse viene posto il tempo t e sull asse delle ordinate la variazione della pressione corrispondente. t

Il campionamento dei suoni - Si effettuano dei campionamenti sull onda (cioè si misura il valore dell onda ad intervalli di tempo costanti) e si codificano in forma digitale le informazioni estratte da tali campionamenti. - La sequenza dei valori numerici ottenuta dai campioni può essere facilmente codificata t

Il campionamento dei suoni - Quanto più frequentemente il valore dell onda viene campionato, tanto più precisa sarà la sua rappresentazione - Il numero di campioni raccolti per ogni secondo definisce la frequenza di campionamento che si misura in Hertz (Hz) t

Il campionamento dei suoni L onda sonora viene misurata (campionata) ad intervalli regolari Minore e l intervallo di campionamento e maggiore e la qualita del suono La risoluzione standard è a 16 bit Es. I CD musicali: 44000 campionamenti al secondo, 16 bit per campione.

Codifica dei suoni (esempio) Ó Se volessimo codificare la musica di qualità CD dovremmo: Usare due registrazioni corrispondenti a due microfoni distinti Campionare il segnale musicale producendo 44100 campioni al secondo Per ogni campione (che è un numero) si usano 16 bit Per cui, il numero di bit che sarebbero necessari per codificare ogni secondo è pari a 2 x 44100 campioni x 16 bit/campione = 1.414.200 bit

La codifica dei suoni Alcuni formati:.aiff.wav (wave).mpeg.cda. MP3 (fattore di compressione 12:1) midi usato per l elaborazione della musica al computer

http://www.w3schools.com/html/html5_audio.asp

Archiviare le informazioni Tutte le informazioni digitalizzate vengono archiviate in sequenze di bit Sequenze di bit più o meno lunghe si chiamano file identificati da un nome di file e un estensione. pippo.doc Convenzionalmente l estensione identifica il formato di aggregazione (non sempre)

FILE CON informazione strutturata il cognome il nome l'indirizzo il numero di conto la disponibilità sul conto la foto.

Il campo Campo: Un campo è costituto da un insieme di byte e serve per codificare una singola informazione che può essere: - numerica: si parla in questo caso di campo numerico, costituito da un insieme di byte per la codifica dei numeri; - alfabetica (alfanumerica): si parla di campo alfabetico (alfanumerico), costituito da una sequenza di byte che codificano i caratteri della stringa alfabetica (alfanumerica); - un'immagine o un suono.

Il record Un record è costituito da un insieme di campi che sono logicamente correlati tra di loro e che costituiscono, nel loro insieme, un'informazione complessa. - un campo alfabetico per il nome; - un campo alfabetico per il cognome; - un campo alfanumerico per l'indirizzo; - un campo numerico per il numero del conto; - un campo numerico per la disponibilità sul conto; - un campo immagine per la foto (tale campo conterrà la codifica digitale dell'immagine).

Campi con lunghezza costante in un database Mysql

Il file Un file è costituito da una sequenza di record. Le informazioni riguardanti la banca possono essere viste come un file costituito da un insieme di record, uno per ogni cliente. -file strutturati che sono effettivamente sequenze di record; -file non strutturati in cui l'informazione è semplicemente una sequenza di caratteri (byte) che costituiscono un testo; si può pensare che il record coincida con il singolo carattere e non sia quindi possibile suddividerlo ulteriormente in campi.

File con record a lunghezza costante File con record a lunghezza costante 114561 51352,50 Massimiliano Rossi Via Milano 151 271564 231474,32 Cristina Bianchi Corso Venezia 1 102574 567899,80 Elena Rossi Via Milano 151 143256 21452,34 Ada Bo Via Po 1

File con record a lunghezza variabile File con record a dimensione variabile 114561 51352,50 Massimiliano Rossi Via Milano 151 271564 231474,32 Cristina Bianchi Corso Venezia 1 102574 567899,80 Elena Rossi Via Milano 151 143256 21452,34 Ada Bo Via Po 1

File con record a lunghezza variabile...&1146561#51352,50#massimiliano#rossi#via Milano151&271564#231474,32#Cristina#Bianchi #Corso Venezia 1&... Servono due caratteri speciali: # fine campo & inizio/fine record

Problema del reperimento delle informazioni

Accesso ai dati accesso sequenziale File a dimensione costante si avanza di un numero di byte prestabilito. Il record successivo inizia al termine della somma di tutti i campi. File a dimensione variabile ci posizioniamo sul punto di inizio del primo record (segnalato dal carattere & ) e cominciamo a leggere i vari caratteri fino al terzo simbolo # L accesso sequenziale non è efficiente perché ogni volta la ricerca viene effettuata a partire dall'inizio del file.

Accesso ai dati accesso diretto Il punto di inizio di un record (campo) all'interno di un file prende il nome di indirizzo del record (campo). Poiché un file è, in ultima analisi, un insieme di byte, possiamo definire come indirizzo di un byte il numero che corrisponde alla posizione del byte nella sequenza (per cui il primo byte ha indirizzo 0, il secondo ha indirizzo 1 e così via); l'indirizzo di un campo è quindi l'indirizzo del primo byte del campo e l'indirizzo di un record è l'indirizzo del primo campo del record. Recuperare il record in n-esima posizione richiede il posizionamento al byte che si trova in posizione 50*(n-1) do 50 è la lunghezza ipotetica del record in byte. Possibile se l indirizzo del record è noto!! L'accesso diretto ai record non è possibile con file a lunghezza variabile perché in questo caso non è possibile calcolare l'indirizzo.

Accesso ai dati accesso con chiave Per poter realizzare l'accesso in modo veloce si mantengono le informazioni sugli indirizzi al di fuori del file. Campo chiave : il campo chiave ci permette di individuare univocamente tutti i record del file. Una volta scelto il campo chiave si costruisce un nuovo file che prende il nome di file delle chiavi (o tabella delle chiavi) ed è costituito da record a dimensione costante formati da due campi: - un campo per contenere il valore della chiave - un campo per contenere l'indirizzo del record all'interno del file. - il file delle chiavi ha tanti record quanti sono i record del file originario.

File delle chiavi chiave 102574 114561 143256 271564 indirizzo del record 222 135 259 189 File delle informazioni 135 189 222 259 114561 51352,50 Massimiliano Rossi Via Milano 151 271564 231474,32 Cristina Bianchi Corso Venezia 1 102574 567899,80 Elena Rossi Via Milano 151 143256 21452,34 Ada Bo Via Po 1 Avalle 2004

File delle chiavi chiave indirizzo del record Bo Ada 402 Rossi Paola 357 Verdi Giovanni 235 Verdi Paola 296 File delle informazioni 235 296 357 402 Giovanni Verdi 19/5/45 Via Roma 5 Paola Verdi 19/5/45 Via Roma 5 Paola Rossi 11/3/75 Via Milano 15 Ada Bo 12/1/92 Via Po 1 Avalle 2004

Strategie di ricerca: SEQUENZIALE Occorre definire delle strategie di ricerca efficienti all interno del file delle chiavi, per poi procedere con accesso diretto nella tabella informazioni. La ricerca più semplice è quella sequenziale: si tratta cioè di lettura un accesso sequenziale alla tabella delle chiavi, fino a quando non si trova il record con la chiave desiderata. Ovviamente nessun vantaggio

Strategie di ricerca : BINARIA Indispensabile mantenere le chiavi ordinate. Si prende il record che si trova a metà nella tabella e si legge il valore della chiave. Sia k' il valore della chiave che si trova in questa posizione: 1 se k'=k, ossia l'elemento cercato è proprio quello di metà, allora abbiamo finito e abbiamo trovato l'elemento che stiamo cercando. 2 se k<k' allora l'elemento cercato è nella prima metà della tabella (poiché la tabella è ordinata) e si può proseguire la ricerca ripartendo dall'inizio ma considerando la tabella che contiene solo i primi N/2 elementi. 3 se k>k' allora l'elemento cercato è nella seconda metà della tabella e si può proseguire la ricerca ripartendo dall'inizio ma considerando la tabella che contiene solo gli elementi da N/2 fino alla fine. Avalle 2004

Algortimo ricerca binaria Si prende il nome y che si trova a metà nella lista (ossia che si trova in posizione N/2) e lo si confronta con il valore da cercare x. 1. se x=y, ossia l'elemento cercato è proprio quello di metà, allora abbiamo finito e abbiamo trovato l'elemento che stiamo cercando. 2. se x<y allora l'elemento cercato è nella prima metà della lista (poiché la lista è ordinata) e si può proseguire la ricerca ripartendo dall'inizio ma considerando la tabella che contiene solo i primi N/2-1 elementi. 3. se x>y allora l'elemento cercato è nella seconda metà della tabella e si può proseguire la ricerca ripartendo dall'inizio ma considerando la lista che contiene solo gli elementi da N/2+1 fino alla fine.

Strategie di ricerca : BINARIA Indispensabile mantenere le chiavi ordinate. chiave indirizzo del record Bianchi 402 Bruni 296 Gialli 98 Rosa 701 Rossi 546 Russo 357 Verdi 235

Strategie di ricerca : BINARIA Indispensabile mantenere le chiavi ordinate. chiave indirizzo del record Bianchi 402 Bruni 296 Gialli 98 Rosa 701 Rossi 546 Russo 357 Verdi 235 Cerchiamo ROSSI

Strategie di ricerca : BINARIA Indispensabile mantenere le chiavi ordinate. chiave Rossi Russo Verdi indirizzo del record 546 357 235 Cerchiamo ROSSI

Funzioni di hash Es. resto della divisione intera della chiave per il numero di righe nella tabella Un metodo ancora più efficiente per organizzare la tabella delle chiavi e per effettuare la ricerca di un elemento prevede l'uso di un particolare tipo di funzione, chiamata funzione di hash. Supponiamo di avere una tabella delle chiavi con N righe. L'inserimento degli elementi nelle righe avviene utilizzando la funzione di hash che deve essere definita per tutti i possibili valori del campo chiave e deve avere la proprietà che, quando applicata ad una chiave k, restituisce sempre un valore compreso tra 0 e N-1, ossia: hash(k) = a con 0 a N-1

Funzioni di hash Es. resto della divisione intera della chiave per il numero di righe nella tabella Supponiamo ora di dover inserire nella tabella delle chiavi il record corrispondente alla chiave k. Si deve procedere come segue. si valuta hash(k); supponiamo che il valore sia a; si inserisce il record corrispondente alla chiave k nella riga a-esima della tabella, se questa è libera, oppure nella prima riga libera successiva a quella a-esima.

Funzioni di hash Es. resto della divisione intera della chiave per il numero di righe nella tabella La funzione di hash deve avere le seguenti caratteristiche: i suoi valori devono essere sparsi uniformemente nell'intervallo compreso tra 0 e N-1; la probabilità che la funzione assuma lo stesso valore per due chiavi diverse deve essere bassa; la sua valutazione deve essere fatta velocemente.

Funzioni di hash Es. resto della divisione intera della chiave per il numero di righe nella tabella Infatti, supponendo di voler cercare la chiave k possiamo procedere nel modo seguente. si valuta la funzione di hash(k); supponiamo ancora che il valore sia a. Questo significa che il record corrispondente alla chiave k si troverà nella riga a-esima o in una di quelle immediatamente successive. si cerca il record con chiave k nella riga a-esima e poi nelle successive fino a che non viene trovato..

Funzioni di hash Es. resto della divisione intera della chiave per il numero di righe nella tabella Una buona funzione di hash permette quindi di trovare le informazioni in modo immediato, tanto più veloce quanto più la funzione è facile da calcolare. Una funzione usata solitamente nel caso di chiavi a valori numerici è il resto della divisione intera della chiave per il numero di righe nella tabella. Ad esempio, supponiamo di avere una tabella delle chiavi con 100 righe e di dover inserire chiavi numeriche. La funzione di hash per una chiave k sarà allora: hash(k) = resto della divisione di k per 100 Si ha quindi che: la chiave 324 viene inserita nella riga 24 della tabella; la chiave 456 nella riga 56; e così via..

Esercizio Provate a creare una tabella (file con record e campi a dimensione costante) per gli studenti di un corso di laurea, con corrispondete file delle chiavi Provate poi a creare un altra tabella contentente i voti che gli studenti hanno preso per gli esami Provate a pensare a come associare la tabella degli esami agli studenti