Slide Lezione 3
Slide Lezione 3
Università di Udine
Informatica
L’informatica è la scienza degli algoritmi che descrivono e
trasformano l’informazione: la loro teoria, analisi, progetto,
efficienza, realizzazione ed applicazione
Università di Udine
Informatica
L’informatica è la scienza degli algoritmi che descrivono e
trasformano l’informazione: la loro teoria, analisi, progetto,
efficienza, realizzazione ed applicazione
• “Quantità” di informazione:
– 1 domanda, 2 risposte (si/no) vero/falso
– 2 domande, 4 coppie di risposte
– n domande, 2n sequenze di risposte
• Unità di misura dell’informazione: bit
– n domande, n bit di informazione ho n bit se ho domande le cui risposte sono equiprobabili (50% sì, 50% no, …) e
sono indipendenti
• è importante anche la probabilità con cui le alternative si verificano:
comunicazioni su eventi improbabili sono altamente
informative; su eventi probabili, scarsamente informative
• è importante anche l’indipendenza delle domande:
due domande dipendenti informano meno.
• Esempi:
– (telefonata in Australia) “Piove?” (si/no)
– (telefonata a Udine) “Piove?” (si/no)
– “Piove?”, “Stai bene?” (no-no/no-si/si-no/si-si)
– “Piove?”, “La strada è asciutta?” (si-no/no-si)
Algoritmo
Informalmente:
• Procedimento composto da una sequenza di istruzioni elementari, che
consente di rispondere ad un insieme di domande, o di risolvere un
problema.
• studiato dalla teoria della calcolabilità: cosa si può tradurre in algoritmo,
cosa non si può, quando da’ risultati, ...
• Esempi di (quasi*) algoritmi:
– ricette di cucina
– metodi di laboratorio
– procedure per iscriversi all’università
– …
* A meno di un dettaglio…
Algoritmi:
la metafora dell'ufficio
Materiale nell’ufficio
• una lavagna di lavoro
– gesso
– cancellino
• lavagna di programma
– magnetica
– con freccia/segnalino
• uno sportello utente
– modulo IN
– certificato OUT
– segnalatore acustico
• una sedia
La lavagna di lavoro
• a quadretti, divisa in M righe dette
posizioni
• ognuna con N caselle
• ogni posizione può contenere un
numero naturale di N cifre
• la lavagna ha una cornice, a LAVAGNA DI LAVORO
sinistra, anch’essa divisa in righe N O M E 1 2 4 1 7
8
La lavagna di programma
• è una lavagna magnetica
• su cui il direttore descrive
l’attività richiesta all’impiegato,
utilizzando un metodo
opportuno; Lavagna di programma
11
}
– combinati in sequenze,
CICLI – eventualmente eseguiti ripetutamente,
– eventualmente scegliendo tra compiti
diversi tramite qualche espressione logica
• seguendo le istruzioni specificate sulla
lavagna di programma
• due “categorie” di istruzioni:
– attività elementari istruzioni dirette
– organizzazione delle attività in cicli
13
SEQUENZA E BLOCCO DECISIONALE
Le attività elementari
• lettura e scrittura sulla lavagna di
lavoro,espressa con sintassi precisa
• lettura dal modulo IN non si scrive
• scrittura sul certificato OUT non si legge
• operazioni aritmetiche semplici +, -, x, :
utilizzando la lavagna di lavoro
• valutazione di condizioni logiche vero o falso
L’organizzazione
delle attività
I diagrammi di flusso
• struttura composta da blocchi connessi da frecce
– grafo costituito da nodi ed archi orientati
anche
ripetuti
•serve per descrivere procedure che cominciano, si svolgono attraverso una serie di
+ volte passi ben definiti, a volte si differenziano in base a determinate condizioni logiche
• un diagramma di flusso può essere costituito da un numero “qualsiasi” di blocchi,
purché ce ne sia uno ed uno solo di inizio ed almeno uno di fine
SOLO un blocco di inizio, ALMENO un blocco di fine
non ha frecce
di ingresso
........
INIZIO ........ ........
V condizione F
FINE istruzione elementare logica
4x1–>4
Informazioni all’utenza
• il direttore avverte l’utente che l’ufficio è pronto a
rispondere al suo quesito,
• e gli spiega le modalità dell’interazione con l’ufficio:
– dovrà recarsi allo sportello,
– scrivere la base della potenza richiesta nella prima riga
del modulo IN,
– e l’esponente nella seconda riga dello stesso modulo.
– poi dovrà premere il pulsante del segnalatore acustico
• Al termine del lavoro dell’ufficio, potrà leggere il
risultato sul certificato OUT nella prima riga.
22
Alcune osservazioni/1
• il problema dell’utente era: 43
• l’ufficio però risolve: XY (= IN-1 IN-2)
(direttore lungimirante)
• non è l’unico algoritmo possibile!
• quanti blocchi ci sono? 9
• quante istruzioni deve eseguire l’impiegato? 16
• il numero di istruzioni eseguite:
– non dipende dal numero di blocchi,
– dipende dalla struttura del diagramma e dai dati di ingresso
– infatti, per 42 sarebbero servite 13 istruzioni, per 41 10
istruzioni, per 40 7 istruzioni, ..., però per 83 sarebbero
servite comunque 16 istruzioni il numero di istruzioni dipende dall’esponente e
• quindi servono 7 + (IN-2 * 3) istruzioni non dalla base siccome nel mio diagramma ho
messo condizioni solo sull’esponente
23
Alcune osservazioni/2
L’impiegato:
• ha capacità operative elementari limitate (conosce
ed esegue un numero esiguo di istruzioni);
• le attività elementari che sa svolgere sono fisse e
non possono essere cambiate; non sono a loro volta programmabili
• non è autonomo, e non può né cambiare il contenuto
della lavagna di programma, né eseguire le istruzioni
diversamente da come specificato; così si possono avere cicli
• non è in grado di gestire situazioni non previste o NON RIESCE A GESTIRE
ERRORI!
non coerenti con le sue regole di comportamento;
• sa comunque interpretare ed eseguire diagrammi di
flusso di dimensioni arbitrarie.
Alcune osservazioni/3
• Chi sa fare cosa?
– l’impiegato non sa calcolare la potenza l’ha fatto ma non se n’è reso conto
– l’ufficio sa calcolare la potenza
• l’ufficio sa calcolare qualsiasi compito che riguardi i
numeri naturali, purché:
– si possa costruire un diagramma di flusso che descrive
come svolgerlo;
– le posizioni della lavagna di lavoro siano sufficienti a
contenere tutte le variabili necessarie; devo avere abbastanza memoria
– le posizioni sul modulo IN e sul certificato OUT bastano
per contenere dati iniziali e risultati;
– il numero di caselle delle posizioni sia sufficiente a
contenere i numeri naturali che servono al programma
il numero di caselle limiti il numero massimo di numeri con cui
posso lavorare!
l’impiegato tramite l’algoritmo otterrà un numero troppo grande si
dovrà fermare
Ufficio e calcolatore
• L’ufficio svolge compiti complessi,
• perché il suo impiegato è stato istruito (“programmato”) dal
direttore(“programmatore”)
• per risolvere problemi normalmente più generali di quelli
proposti dall’utente
direttore
UTENTE
PROGRAMMATORE
problema
particolare
problema
soluzione del problema generale
(programma)
28
la macchina di Touring riesce a svolgere infiniti calcoli
Cosa manca al nostro ufficio?
31
32
Altro protocollo
HACCP
34
Rappresentazione dell’informazione
35
Rappresentazione dell’informazione
39
Aritmetica in base b
• è quella usuale (che si basa sulla posizione)
• Esempi:
– somma ottale (b=8):
2+3=5; 4+7 = 13; 17+2 = 21; 144+43=207
– somma binaria (b=2):
0+1=1; 1+0=1; 1+1=10; 00101100+00011001= 01000101
– somma esadecimale (b=16):
FF1+2F=1020
– prodotto: bisogna conoscere le tabelline...
40
Quanta informazione codifico?
Quanta • L’entità minima di informazione è la singola cifra
informazione della rappresentazione in base b;
codifico con una • ogni cifra può assumere b valori diversi;
stringa di cifre
• quindi:
in una
– con una cifra si rappresentano b informazioni diverse;
determinata
base? – con due cifre b*b= b2 informazioni;
Ovvero quanti – .... con N cifre bN informazioni diverse
valori diversi può • Esempi:
assumere una – 4 bit (-> base 2) : 24 informazioni diverse
stinga di cifre
espresse in una – 1 byte: 28 = 256 informazioni diverse
determinata – 8 caselle sulla lavagna di lavoro: 108 informazioni
base? 41
I numeri naturali
• la rappresentazione binaria dei numeri permette di
rappresentare numeri naturali (cioè interi positivi, incluso lo zero)
• nei calcolatori però non abbiamo a disposizione un numero
illimitato di bit:
– di solito il numero di cifre (bit) per rappresentare un numero è
fissato (16, 32,64);
– avendo N bit,
– si possono rappresentare numeri da 0 a 2N-1
– se durante un’operazione aritmetica si va oltre 2N-1 , si genera
il cosiddetto errore di overflow
– Esempio: 4 bit, 1011+0111=10010 (overflow)
se ottengo un numero troppo grande, l’errore viene messo sul REGISTRO DI
STATo e si cerca di gestirlo, siccome l’impiegato non è in grado di gestirlo
42
I numeri “negativi”
• sono indispensabili nell’aritmetica usuale
• come possiamo codificarli?
• Idea:
– N bit rappresentano 2N numeri diversi;
– per i numeri naturali, avevamo “deciso” che la
numerazione partiva da 0;
– scegliamo invece un intervallo a cavallo dello zero, che
includa quindi numeri positivi e negativi
-2N-1 0 2N-1-1 2N-1
naturali
negativi
Complemento a 1 e a 2
• Complemento a 1: dati N bit per rappresentare un
numero,
– il primo bit indica il segno (0=positivo, 1=negativo),
– gli altri N-1 il valore assoluto del numero
– Esempio a 4 bit:
0000 = +0 1000 = -0
0001 = +1 1001 = -1
0010 = +2 1010 = -2
...............................
0111 = +7 1111 = -7
chi implementa le operazioni deve ricordarsi che +0 e -0 sono uguali
• Due problemi:
– due rappresentazioni dello zero (0000, 1000)
– non si possono fare le operazioni aritmetiche con le regole usuali
• Non ci piace... Usiamo il complemento a 2
– Un algoritmo che permette di rappresentare i numeri in modo
meno leggibile, ma che evita i due problemi sopra indicati 44
il primo bit effettivamente continua a essere interpretabile come positivo o negativo, ma poi la
codifica del resto è un pochino diversa: non ho il doppio zero e riesco anche a fare somme con
l’algoritmo che ci hanno insegnato alle elementari.
È quello che viene usato per rappresentare i numeri relativi.
I numeri “con la virgola”
• NB: non potremo mai rappresentare numeri con
infinite cifre all’interno di un calcolatore!
• è comodo ricondurre un numero con la virgola alla
combinazione di due numeri interi.
• Un numero decimale generico può essere scritto come
numero intero diviso per un’opportuna potenza di 10,
cioé moltiplicato per una potenza negativa di 10:
• 0.0190 = 19/1000 = 19*10-3
– 565.2300 = 56523/100 = 56523 * 10-2
– N = mantissa * 10 esponente
• dando per scontata la base 10, la coppia di numeri
interi è <mantissa, esponente> si tende a utilizzare la notazione esponenziale
45
VIRGOLA FISSA: n cifre per parte intera, n cifre per parte decimale; limita molto con numeri grandi
49
50
Rappresentazione dell’informazione multimediale
51
verde verde …
Numeri che
rappresentano colori
…
blu blu blu
53
Un esempio
• codifica di
immagini in b/n
senza sfumature immagine e griglia
• ogni pixel è 0100000
rappresentato 0110000
con 1 bit: 0111100
0000000
– 0 = bianco ; sua rappresentazione in pixel
– 1 = nero 0100000011000001111000000000
rappresentazione numerica
• griglia composta
da 7x4 pixel
Codifica vettoriale
• a volte le immagini -sintetiche-
possono essere memorizzate come
insieme di primitive geometriche
che le compongono
• primitive: punto, linea, rettangolo,
cerchio, etc codificate con codice +
parametri
Esempio di codifica:
• È una specie di linguaggio che •punto: 0,x,y
descrive "come" si disegna qualcosa •linea: 1, x1,y1,x2,y2
• es. WMF, PICT, DWF , le figure che •rettangolo: 2,x1,y2,x2,y2
disegnamo dentro Powerpoint, etc •cerchio: 3, cx,cy,r (,<255,0,0>)
eventuale colore
Codifica dell’immagine:
2 30 15 50 75 3 55 45 7 1 5510 110 50
L’ordine della codifica non è casuale. Se le figure non sono trasparenti l’ordine del disegno conta, tanto che nei
sistemi che lavorano in modo vettoriale si hanno comandi che permettono di portare le figure in primo o secondo
piano.
Oltre alla geometria stessa, vengono definiti con parametri anche le decorazioni della figura come il colore della
linea, il colore del riempimento, spessore della linea etc.
Il pregio della codifica vettoriale è che è indipendente dalla risoluzione del dispositivo che utilizziamo per
visualizzare.
il suono è una versione delle immagini semplificata (lo rappresentiamo in una sola dimensione)
(3*60+45)*44100*2stereo =
19845000 campioni
19845000*2 bytes/10242=
37,85 Mbytes
versione stereo dei 2 canali; versione non compressa
68
Esiste una codifica "vettoriale" per i suoni?
serve per salvare
l’equivalente dello
• In parte sì, per la musica: lo spartito e le sue spartito associato agli
versioni digitali, in particolare lo standard MIDI strumenti da
utilizzare e salvare le
• MIDI = Musical Instrument Digital Interface note degli spartiti
– Nato per la comunicazione tra strumenti musicali distribuite su
dispositivi diversi
– I comandi possono essere scritti su un file che in
pratica è uno spartito completo di numerose
informazioni extra per suonarlo (es. tempo)
69
Codifiche video
• un’immagine in movimento viene memorizzata (non solo nei
calcolatori...) come sequenza di fotogrammi, catturati a
intervalli fissati (es. 25/s)
• la codifica digitale è simile: una sequenza video corrisponde
ad una sequenza di immagini
• il problema dell’ingombro in memoria è particolarmente
pesante: si cerca quindi di codificare solo le differenze tra
fotogrammi.
• Precisione della codifica: risoluzione dell’immagine, bit/pixel,
fotogrammi/secondo (tenendo presente che l’occhio ha un
la retina
tempo di latenza di 1/25 s)
• Esempi: MPEG 1-2-4, Quicktime, AVI
il video combina gli aspetti dell’immagine con l’aspetto temporale tipico del suono 70
Fotogrammi…
Differenze…
72
Ingombro in memoria
• Alcuni esempi:
– testo equivalente a libro da 200 pagine: 400 KB
– immagine b/n 512x512: 32 KB
– immagine 640x480, 256 colori: 300 KB
– immagine 1024x768, milioni di colori: 2.3 MB
– 1 minuto di suono, 44 KHz 16 bit: 5.1 MB
– 1 minuto di video 320x240, 25 f/s, 256 colori:
112.5 MB
• è utile adottare delle strategie per ridurre
queste dimensioni
73
Tecniche di compressione
• si applicano a dati generici, quando possibile
• due categorie: analizza una sequenza di bit. cerca di rappresentarla in modo meno ingombrante—>
cerca la ridondanza e elimina ciò che è superfluo, viene rappresentato in modo compresso
– tecniche reversibili (lossless), in cui con metodi statistici e
matematici viene ridotta la ridondanza dell’informazione
dai dati, per cui è possibile riottenere integralmente i dati
iniziali; spesso sono tecniche generiche (es. Huffmann,
LZW)
– tecniche irreversibili (lossy), in cui si elimina dai dati una
parte dell’informazione, ritenuta non significativa, per cui
non è possibile ricostruire esattamente i dati di partenza,
ma se ne ottiene un’approssimazione; spesso sono
specifiche per una determinata tipologia di dati (es JPEG)
74
non c’è perdita di informazione—> posso comprimere tutto
0000000001111110000110000000111111111
rappresentazione numerica
010011011000100100100011111001
rappresentazione compressa
• Formati di compressione lossless: GIF, TIFF, ZIP
Ho nove zeri di seguito: la mia codifica sarà rappresentata dallo 0 e poi da una rappresentazione su quattro bit del numero 9, cioè: 0|
1001| 75
Poi ho 6 volte il numero 1–> la mia codifica sarà rappresentata dal numero 1 e dalla rappresentazione su quattro bit del numero 6, cioè
1|0110
Poi ho 4 volte lo 0–> la mia codifica sarà rappresentata dal numero 0 e dalla rappresentazione su 4 bit del numero 4
E così via.
Se però la sequenza presenta molte variazioni, questo tipo di rappresentazione non sarà efficace ma anzi occuperà più spazio.
Se sappiamo che la nostra sequenza di bit ha alta variabilità allora non useremo questa tecnica di compressione. Nonostante ci vada
un bit per il valore e 4 bit per il numero di volte è anche vero che se avessi sequenze più lunghe di 15 bit non riuscirei a rappresentarle.
Avere il bit per il valore significa che se mi ritrovo con 100 zeri di seguito li rappresenterò con una serie di sequenze uguali (15 zeri,
seguiti da 15 zeri, seguiti da 15 zeri eccetera)
Tecniche irreversibili
• Per ridurre lo spazio, a volte ci si accontenta di un’approssimazione dei
dati iniziali
– immagini, suoni, video
– NON per memorizzare programmi, basi di dati, etc
• Esempio (banale): nelle immagini, memorizzare un pixel si ed uno no,
ricostruendo i pixel mancanti per interpolazione matematica
• di solito queste tecniche utilizzano un modello della sorgente e
dell’utilizzatore per eliminare informazione che si suppone poco
significativa
– JPEG (immagini), basato sul modello della telecamera e dell’occhio, il blu viene
rappresentato meno bene perché lo vediamo meno bene
– MPEG (video): memorizza aree con differenze maggiori di una soglia tra un frame e il
successivo
– MP3 (audio): viene memorizzato solo ciò che siamo in grado di sentire: cioè niente
suoni deboli (con soglia che dipende dalla frequenza), e niente suoni mascherati (cioè
coperti da altre componenti più intense, effetto mascheramento, mascheramento
temporale, …) 76
Perdita di informazione?
• Non significa che una parte dell'immagine o del suono non è
presente e basta:
• Significa che viene sostituita da artefatti che derivano
dall'algoritmo usato per comprimere
– Es. nelle immagini, colori falsati, bordi confusi, sfumature…
77
78
Perdere informazione significa che vengono introdotti degli artefatti cioè dei dettagli che non sono presenti
nell’immagine originale.
Nelle immagini jpeg gli artefatti si concentrano nelle zone di transizione tra colori molto diversi (es: tra bianco e nero).
Sono punti dove la transizione viene memorizzata con una precisone più bassa quindi si intravedono anche i
macroblocchi.