informatica generale - di.unito.itbotta/didattica/codinfo-leo.pdf · sfumature per il rosso, 4 per...

27
Informatica Generale Marco BOTTA Leonardo Lesmo Dipartimento di Informatica Università di Torino Email: [email protected] , [email protected] Tel. Ufficio:011 - 6706711 www.di.unito.it/~botta/didattica/ TESTI CONSIGLIATI Introduzione all’Informatica (2 a ed.) L. Console, M. Ribaudo UTET1997 Informatica di Base D.P. Curtin, K. Foley, K. Sen, C. Morin McGraw-Hill 1999

Upload: dangkiet

Post on 01-Dec-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

1

Informatica Generale

Marco BOTTALeonardo Lesmo

Dipartimento di InformaticaUniversità di Torino

Email: [email protected], [email protected]. Ufficio:011 - 6706711

www.di.unito.it/~botta/didattica/

TESTI CONSIGLIATI

• Introduzione all’Informatica (2a ed.)L. Console, M. RibaudoUTET1997

• Informatica di BaseD.P. Curtin, K. Foley, K. Sen, C. MorinMcGraw-Hill 1999

2

000100101010011101010101000101101010000111000101111111000001111111101010100100100101010011101010101000101101010000111000101111111000001111111101010100011101101010011101010101000101101010100111000101111111000010101011111010100000100101010011101010101000101101010000111000101111111000001101111101010100000100101010011101010101000101101010000111000101111111000001111111101010100100100101010011101010101000101101010000111000101111111000001111111101010100011101101010011101010101000101101010100111000101111111000010101011111010100000100101010011101010101000101101010000111000101111111000001101111101010100000100101010011101010101000101101010000111000101111111000001111111101010100100100101010011101010101000101101010000111000101111111000001111111101010100011101101010011101010101000101101010100111000101111111000010101011111010100000100101010011101010101000101101010000111000101111111000001101111101010100000100101010011101010101000101101010000111000101111111000001111111101010100100100101010011101010101000101101010000111000101111111000001111111101010100011101101010011101010101000101101010100111000101111111000010101011111010100000100101010011101010101000101101010000111000101111111000001101111101010100000100101010011101010101000101101010000111000101111111000001111111101010100100100101010011101010101000101101010000111000101111111000001111111101010100011101101010011101010101000101101010100111000101111111000010101011111010100000100101010011101010101000101101010000111000101111111000001101111101010100

La codifica

dell’informazione

• Esistono vari tipi di informazione, di natura e forma diversa, così come rappresentazioni diverse della stessa informazione

Tipi di informazione

3

• Come possiamo rappresentare le informazioni all’interno di un sistema di calcolo?

• Si introduce il concetto di codifica

Problema

informazione rappresentazione

codifica

decodifica

• X: insieme degli oggetti che si vogliono rappresentare

• A: alfabeto di simboli

• A*: insieme di tutte le possibili sequenze, finite e infinite, costruite su A

• cod: X A* decod: A* X U {errore}

• ∀ y∈X : decod(cod(y)) = y

• L’insieme X, l’alfabeto A, le funzioni cod e decod formano un Codice per la rappresentazione degli elementi di X

Codifica (o Codice)

4

• Nel caso dei sistemi di calcolo è stata introdotta la rappresentazione digitale

• bit (binary digit - cifra binaria): 0 o 1

• Per poter rappresentare un numero maggiore di informazioni si usano sequenze di bit

00 01 10 11

Codifica (o Codice)

• Il processo secondo cui si fa corrispondere ad una informazione una configurazione di bit prende il nome di codifica dell’informazione

• Esempio: un esame può avere quattro possibili esiti– cod(ottimo) 00– cod(discreto) 01– cod(sufficiente) 10– cod(insufficiente) 11

Rappresentazione digitale

5

• Con 2 bit si codificano 4 informazioni (22)

• Con 3 bit si codificano 8 informazioni (23)

• ………

• Con N bit si codificano 2N informazioni

Codifica dell’informazione

Codifica dell’informazione

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 1

1 1 1 1 1 1 1 1

……..

8 bit formano un

byte

6

Codifica dell’informazione

• Problema inverso: quanti bit ci vogliono per rappresentare M informazioni diverse?

2N >= M

• Esempio: dovendo rappresentare 1.000 informazioni diverse dobbiamo avere a disposizione N=10 bit per la codifica

210 = 1024NB. “avanzano” delle configurazioni ma non è possibile usare solo 9 bit per 1000 informazioni

Codifica dei caratteri

• Alfabeto anglosassone per codificare ognisimbolo sono sufficienti 7 bit (ASCII standard)

• 8 bit (ASCII esteso)

• 16 bit (UNICODE)

• MS Windows usa un codice proprietario a16 bit per carattere, simile ad UNICODE

ASCII = American Standard Code for Information Interchange

7

ASCII Simb. ASCII Simb. ASCII Simb.00000000 NUL 00001110 SO 00011100 FS

00000001 SOH 00001111 SI 00011101 GS00000010 STX 00010000 DLE 00011110 RS00000011 ETX 00010001 DC1 00011111 US00000100 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 dei caratteri (ASCII)

ASCII Simb. ASCII Simb. ASCII Simb.00101010 * 00111001 9 01000111 G

00101011 + 00111010 : 01001000 H00101100 , 00111011 ; 01001001 I00101101 - 00111100 < 01001010 J00101110 . 00111101 = 01001011 K

00101111 / 00111110 > 01001100 L00110000 0 00111111 ? 01001101 M00110001 1 01000000 @ 01001110 N00110010 2 01000001 A 01001111 O

00110011 3 01000010 B 01010000 P00110100 4 01000011 C 01010001 Q00110101 5 01000100 D 01010010 R00110110 6 01000101 E 01010011 S

00111000 8 01000110 F 01010100 T

Codifica dei caratteri (ASCII)

8

Codifica delle parole

• … e le parole? Sono sequenze di caratteri

• Esempio: informatica generale

01101001

i

01101110

n

01100110

f

01101111

o

01110010

r

01101101

m

01110100

t

01100001

a

01101001

i

01100011

c

01100001

a

00100000

spazio

01100111

g

01100101

e

01101110

n

01100101

e

01110010

r

01100001

a

01101100

l

01100101

e

Codifica dell’informazione: verifica

1. Nell’alfabeto di Marte sono previsti 300 simboli; quanti bit si devono utilizzare per rappresentarli tutti?

2. Quanti byte occupa la frase “biologia marina” se la si codifica utilizzando il codice ASCII esteso?

3. Quanti byte occupa la stessa frase scritta in codice UNICODE?

4. Dati 12 bit per la codifica, quante informazioni distinte si possono rappresentare?

9

Codifica dell’informazione: soluzione

1. Nell’alfabeto di Marte sono previsti 300 simboli; quanti bit si devono utilizzare per rappresentarli tutti?

L’esercizio richiede di trovare il numero di bit che sono necessari per codificare 300 informazioni diverse.

Dobbiamo quindi applicare la formula 2N>=M e ricavare N

2N >= 300 se N=9

2. Quanti byte occupa la frase “biologia marina” se la si codifica utilizzando il codice ASCII esteso?

3. Quanti byte occupa la stessa frase scritta in codice UNICODE?

Codifica dell’informazione: soluzione

Poichè sappiamo che ogni carattere in codice ASCII esteso occupa un byte dobbiamo contare il numero di caratteri (inclusi gli spazi bianchi) che formano la frase “biologia marina” e moltiplicare per 1

15 caratteri 15 byte

Poichè ogni carattere in codice UNICODE occupa due byte avremo

15 caratteri 15 x 2 byte = 30 byte

10

Codifica dell’informazione: soluzione

4. Dati 12 bit per la codifica, quante informazioni distinte si possono rappresentare?

In questo caso conosciamo la lunghezza delle sequenze di bit che sono usate per la codifica dell’informazione e basterà applicare la formula 2N per trovare il numero di informazioni distinte che si possono rappresentare

212 = 4096

Codifica dell’informazione: compressione

Poichè la codifica dei dati occupa spazio e lo spazio ha un costo, sono stati inventati dei metodi di ‘compressione’

Primo esempio: compattazione dei simboli ripetuti

La codifica della sequenza AAAABBBBAAAAAAAAACCC

Richiede 20 bytes (codifica ASCII)

La stessa sequenza può essere rappresentata da4A4B9A3C

Che invece occupa solo 8 bytes

11

Codifica dell’informazione: compressione

Secondo esempio: Codici a lunghezza variabile(codice di Huffmann - 1)

Supponiamo che il nostro alfabeto (X) sia formato da 6 caratteri, ma non tutti equiprobabili. Ad esempio, la frequenza potrebbe essere:

A: 40% D: 4%B: 10% E: 30%C: 15% F: 1%

Con una codifica come quelle viste in precedenza, sono necessari 3 bit per carattere. Per codificare un testo di 1000 caratteri sono quindi necessari 3000 bit.

Codifica dell’informazione: compressione

Secondo esempio: codice di Huffmann (2)

Prendiamo invece i due caratteri con frequenza minore (D e F) eassegnamo ad essi i bit 0 e 1. Chiamiamo DF questo ‘gruppo’ di due caratteri. Otteniamo così:

A: 40% DF: 5%B: 10% E: 30%C: 15%

Ripetiamo ora il procedimento. Troviamo B e DF e ad essi associamo 0 e 1. Ora, possiamo supporre che B sia codificato con 0, D con 10 (lo 0 assegnato al passo precedente) e F con 11.

A: 40% BDF: 15%C: 15% E: 30%

Ora su C e BDF: 0 e 1. Quindi Cod(C)=0; Cod(B)=10; Cod(D)=110; Cod(F)=111;

12

Codifica dell’informazione: compressioneSecondo esempio: codice di Huffmann (3)

Nuova tabella: A: 40% BCDF: 30%E: 30%

Quindi E: 0 e BCDF: 1. Ottenendo:Cod(E)=0; Cod(C)=10; Cod(B)=110; Cod(D)=1110; Cod(F)=1111

A: 40% BCDEF: 15%Infine: Cod(A)=0; Cod(E)=10; Cod(C)=110; Cod(B)=1110; Cod(D)=11110; Cod(F)=11111

Abbiamo ora alcuni codici di ben 5 bit! Ma nel nostro file di 1000 caratteri ci saranno in media 400 A (400 bit), 300 E (600 bit), 150 C (450 bit), 100 B (400 bit), 40 D (200 bit) e 10 F (50 bit). Laquantità totale di spazio sarà dunque

400+600+450+400+200+50=2100 bit anzichè 3000!

Codifica dell’informazione: compressione

Secondo esempio: codice di Huffmann (4)

Ma come è possibile DECODIFICARE il testo, non sapendo quanti bit si usano per ogni carattere?

Es. 000101110111100101111110010

La regola è: lo 0 indica la fine di un carattere. Per sapere di quale carattere si tratta, basta contare quanti 1 lo precedono. Se si trovano cinque 1 di fila, allora è una F.

La sequenza precedente corrisponderà a:

0 0 0 10 1110 11110 0 10 11111 10 0 10A A A C B D A C F C A C

13

Codifica dell’informazione: errori

Es. Bit di parità (1)

Nella codifica ASCII standard sono usati solo 7 bit.Possiamo supporre che il primo bit del byte sia sempre 0, mentre i restanti 7 costituiscono la codifca vera e propria. Ad esempio:

01000001 A 01000010 B 01000011 CPer cui ABBACA sarebbe rappresentato come

01000001 01000010 01000010 01000001 01000011 01000001Se si verifica un errore di trasmissione nel penultimo bit del quarto carattere, si otterrebbe

01000001 01000010 01000010 01000011 01000011 01000001che corrisponde a ABBCCA

Esistono dei metodi per rilevare la presenza di errori in una codifica (ad es. nel caso di trasmissione dati)

Codifica dell’informazione: errori

Es. Bit di parità (2)

Supponiamo ora che il bit iniziale sia 1 se tra I restanti c’è un numero dispari di 1, 0 in caso contrario. In ogni byte, così, il numero di bit 1 sarà sempre pari. La codifica di ABBACA sarà:

01000001 01000010 01000010 01000001 11000011 01000001

Se ora si verifica l’errore precedente, otteniamo:01000001 01000010 01000010 01000011 01000011 01000001

Ma ora il quarto byte ha un numero dispari di bit a 1, e questo non può succedere! Si è quindi verificato un errore (e si può, ad esempio, chiedere una ritrasmissione dei dati).

N.B. Esistono anche dei codici autocorrettori, ma sono molto più complicati

14

Codifica delle immagini

Pixel = picture element

Codifica delle immagini

1 1

1 1 1 1

10

0

0

0

0 0 0 00

0 0

0

00

0 0

00

0

001 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

15

Codifica delle immagini

zz

0000000011110001100000100000

Codifica delle immagini

• Assegnando un bit ad ogni pixel è possibile codificare solo immagini in bianco e nero

• Per codificare le immagini con diversi livelli di grigio oppure a colori si usa la stessa tecnica: per ogni pixel viene assegnata una sequenza di bit

• Per memorizzare un pixel non è più sufficiente un solo bit. Ad esempio, se utilizziamo 4 bit possiamo rappresentare 24=16 livelli di grigio o 16 colori diversi, mentre con 8 bit ne possiamo distinguere 28=256, ecc.

16

L’uso del colore

• Il colore può essere generato componendo 3 colori: Red, Green, Blue (RGB)

• Ad ogni colore si associa una possibile sfumatura

• Usando 2 bit per ogni colore si possono ottenere 4 sfumature per il rosso, 4 per il blu e 4 per il verde che, combinate insieme, danno origine a 64 colori diversi

• Ogni pixel per essere memorizzato richiede 6 bit

L’uso del colore

• Usando 8 bit per ogni colore si possono ottenere 256 sfumature per il rosso, 256 per il blu e 256 per il verde che, combinate insieme, danno origine a circa 16,7 milioni di colori diversi (precisamente 16777216 colori)

• Ogni pixel per essere memorizzato richiede 3 byte

Come vedremo in seguito,nelle pagine web si usa lacodifica RGB che permette

di generare circa 16,7 milioni di colori distinti

17

Colori e risoluzione

• Il numero di pixel presenti sullo schermo (colonne x righe) prende il nome di risoluzione

• Risoluzioni tipiche sono

800 x 6001024 x 7681280 x 1024

Codifica delle immagini: verifica

1. Quanti byte occupa un’immagine di 100x100 pixel in bianco e nero?

2. Quanti byte occupa un’immagine di 100x100 pixel a 256 colori?

3. Se un’immagine a 16,7 milioni di colori occupa 2400 byte, da quanti pixel sarà composta?

18

Codifica delle immagini: soluzione

1. Quanti byte occupa un’immagine di 100x100 pixel in bianco e nero?

Conoscendo la risoluzione dell’immagine possiamo trovare il numero di pixel che la compongono: 100x100 = 10000 pixel.

Inoltre, nel caso di immagini in bianco e nero basta un solo bit per codificare il colore di ogni pixel e quindi saranno necessari 10000 bit per memorizzare l’immagine.

Per trovare il numero di byte basta fare 10000 / 8 = 1250 byte

Codifica delle immagini: soluzione

2. Quanti byte occupa un’immagine di 100x100 pixel a 256 colori?

Rispetto all’esercizio precedente, in questo cambia lo spazio occupato da ciascun pixel. Sappiamo che l’immagine è a 256 colori. Per poter rappresentare 256 configurazioni diverse sono necessari 8 bit, ovvero 1 byte

L’immagine occuperà quindi 10000 x 1 byte = 10000 byte

19

Codifica delle immagini: soluzione

3. Se un’immagine a 16,7 milioni di colori occupa2400 byte, da quanti pixel sarà composta?

In questo caso le informazioni fornite dall’esercizio sono il numero colori e lo spazio occupato dall’immagine.

Dal numero di colori ricaviamo lo spazio occupato da ciascun pixel, calcolando il valore N nell’espressione 2N>=16,7 milioni. Il risultato è 24 bit, ovvero 3 byte.

Se ogni pixel richiede 3 byte e l’immagine occupa 2400 byte, sarà composta da 2400 / 3 = 800 pixel.

Unità di misura

Di solito si usano i multipli del byte

Kilo KB 210

Mega MB 220

Giga GB 230

Tera TB 240

(~ un migliaio, 1024)(~ un milione, 1KBx1024)(~ un miliardo, 1MBx1024)(~ mille miliardi, 1GBx1024)

20

Grafica bitmap

• Le immagini codificate pixel per pixel sono dette immagini in grafica bitmap

• La grafica bitmap va bene per immagini complesse o irregolari. I formati più conosciuti sono: BITMAP (.bmp), GIF (.gif), JPEG (.jpg)

Nelle pagine web si usano principalmente le immagini in

formato GIF o JPEG(recentemente anche PNG)

GIF (Graphics Interchange Format) JPEG (Joint Photographic Expert Group)

Grafica bitmap

• Le immagini bitmap occupano parecchio spazio

• Esistono delle tecniche di compressione che permettono di ridurne le dimensioni

• Ad esempio, se più punti vicini di un’immagine assumono lo stesso colore, si può memorizzare la codifica del colore una sola volta e poi ricordare per quante volte deve essere ripetuta

• GIF e JPEG sono formati compressi

21

Grafica vettoriale

• Se le immagini sono regolari si può usare una codifica di tipo vettoriale in cui non si specificano le informazioni di colore dei singoli pixel ma ogni elemento geometrico primitivo viene specificato individualmente

• Le immagini vengono costruite a partire dalla descrizione degli elementi che le compongono mediante un linguaggio testuale o delle formule geometriche

• Spesso occupano meno spazio rispetto alle immagini bitmap

Codifica dei filmati video

• Un filmato è una sequenza di immagini statiche (dette fotogrammi o frame)

• Per codificare un filmato si digitalizzano i suoi fotogrammi

• Esempi di formati per il video sono AVI (Audio

Video Interleave, Microsoft) e MOV (noto come QuickTime, Apple)

• Compressione: MPEG (Moving Picture Expert Group), differenza tra fotogrammi

22

t

Codifica dei suoni

• 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

Codifica 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

23

t

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

• Esempi di formati sono

– WAV (Microsoft)

– AIFF (Audio Interchange File Format, Apple)

• Compressione: MP3 (estensione audio per MPEG)

Codifica dei suoni

24

Codifica dei suoni: verifica

1. Quanto spazio occupa un suono della durata di 10 secondi campionato a 100 Hz, in cui ogni campione occupa 4 byte?

2. Un secondo di suono campionato a 512 Hz occupa 1KB. Quanti valori distinti si possono avere per i campioni?

Codifica dei suoni: soluzione

1. Quanto spazio occupa un suono della duranta di 10 secondi campionato a 100 Hz, in cui ogni campione occupa 4 byte?

La frequenza di campionamento ci dice quanti campioni di suono vengono memorizzati in un secondo, 100 in questo caso. Avendo 10 secondi di suono avremo 10 x 100 = 1000 campioni.

Poichè ogni campione richiede 4 byte, il suono occuperà 1000 x 4 = 4000 byte (che corrispondono a circa 4 KB)

25

Codifica dei suoni: soluzione

2. Un secondo di suono campionato a 512 Hz occupa1KB. Quanti valori distinti si possono avere per i campioni?

Se il campionamento è a 512Hz, in un secondo di suono ci sono 512 campioni.

Se l’occupazione totale è di 1KB, e cioè di 1024 bytes, ogni campione occupa 1024/512=2 bytes, e cioè 16 bit

Di conseguenza, per ogni campione si possono avere 216 = 65536 valori distinti

Codifica dei suoni: un esempio reale

Un file che contiene dei dati, e di solito viaggia su Internet, non può contenere solo i dati ma deve includere anche informazioni su “se stesso”, e cioè sulla propria dimensione, sulla modalità con cui I dati sono codificati, sulla struttura interna.

• La codifica Wave

Ad esempio, un file audio deve specificare la frequenza di compionamento e il numero di canali (1: mono, 2: stereo, …)

I file wave sono divisi in due parti (dette chunk): il chunk del formato e il chunk dei dati.

26

Codifica dei suoni: un esempio reale

• Il chunk del formato

Informazioni caratteristiche del particolare formato

VariaFormat Spec18-fine

Spazio occupato da un frame2Block Align16-17

Numero minimo di campioni/sec per buona riproduzione

2Reprod Rate14-15

Numero di campioni al secondo2Sample Rate12-13

Numero di canali (1=mono, 2=stereo, …)

2#canali10-11

Tipo di codifica2Format Tag8-9

Lunghezza di questo chunk4Format Length4-7“fmt “ (4 caratteri fissi)4Format Id0-3

DescrizioneLungh.NomePosizione

Codifica dei suoni: un esempio reale

• Il chunk dei dati

Dati effettiviVariaData8-fine

Lunghezza del campo successivo (dati)

4Data Length4-7“data“ (4 caratteri fissi)4Data Id0-3

DescrizioneLungh.NomePosizione

Si noti che, in caso di più canali (es. 2 canali per stereo), ogni canale(left, right) viene campionato separatamente. E’ quindi necessario decidere come disporre i campioni. Il modo standard è:

1destro, 1sinistro, 2 destro, 2sinistro, ……

27

Osservazione

• Per calcolare lo spazio occupato da un file di testo, da un’immagine, da un file audio, la tecnica è sempre la stessa

– Si trova lo spazio occupato da ogni unità elementarecostituente il file (un carattere per il testo, un pixel per l’immagine, un campione per il file audio)

– Si trova il numero di unità elementari che costituiscono il file (il numero di caratteri per il testo, il numero di pixel per l’immagine -sfruttando la risoluzione, il numero di campioni per il file audio - sfruttando la frequenza di campionamento)

– Si moltiplicano queste due quantità