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