Il 0% ha trovato utile questo documento (0 voti)
21 visualizzazioni41 pagine

Slide Lezione 3

Caricato da

ricky2004.romeo
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
21 visualizzazioni41 pagine

Slide Lezione 3

Caricato da

ricky2004.romeo
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 41

Algoritmi ed informazione

Vincenzo Della Mea

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

ACM - Association for Computing Machinery

INFORMATICA = INFORMAZIONE +ALGORITMO


Algoritmi ed informazione

Vincenzo Della Mea

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

ACM - Association for Computing Machinery

INFORMATICA = INFORMAZIONE +ALGORITMO


Cos’è l’informazione?
• Gödel, Turing, Shannon, Wiener,...
• Shannon: l’informazione dipende dal numero di alternative e
dalla loro probabilità alla base della teoria dell’informazione; per lui utente e destinatario si scambiano bit che
scorrono sul canale di comunicazione

• Bateson: ricevere informazioni vuol dire sempre e


necessariamente ricevere notizie di differenza sechemigiàarriva un messaggio con qualcosa
conosco—> non è
un’informazione

Informazione secondo Shannon

• “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

Ci sono impiegato e direttore

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

corrispondenti alle posizioni,


ognuna delle quali ha 5 caselle.
NOME: sequenza di lettere/• ogni riga della cornice può
sequenze di lettere e numeri contenere un nome (distinto)
• variabile: posizione sulla lavagna
IN QUESTO CASO: nome = identificata da un nome
12417 nomi N=8 caselle;

• valore: contenuto di una variabile M= 10 posizioni

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

il segnalino viene • è dotata di un segnalino


spostato dall’impiegato magnetico a forma di freccia,
man mano che svolge i
compiti
che l’impiegato utilizza per
indicare ciò che sta facendo.
• (specificheremo meglio il
contenuto della lavagna)
9

Lo sportello per gli utenti


modulo compilato
• un modulo “IN”:
dall’utente, il quale scrive – con Min righe di N caselle
nelle caselle delle cifre – ogni posizione ha nome fissato
IN-i (1≤i≤Min)
– lo compila l’utente
• un certificato “OUT”:
– con Mout righe di N caselle
in

– ogni posizione ha nome fissato


OUT-j (1 ≤ j≤ Mout) MODULO IN
ut
o

restituisce all'utente il compito 1 2 7 IN-1


che egli gli aveva richiesto – lo compila l’impiegato IN-2
IN-3
• i e j possono essere IN-4
specificati da un nome di CERTIFICATO OUT
posizione sulla lavagna di 1 4 2 4 OUT-1
lavoro (es. OUT-nome) OUT -2
OUT -3
• un pulsante collegato ad un OUT -4

campanello N=8 caselle;


Min = Mout= 4 posizioni 10
L’IMPIEGATO SVOLGE LA FUNZIONE DEL PROCESSORE NEL COMPUTER!

Come funziona l’ufficio:


cosa fa l’impiegato?
lavora principalmente con i numeri naturali
• Attende che suoni il campanello;
• quando suona, si alza, va alla lavagna di
programma e posiziona la freccia magnetica sul
punto di inizio dell’attività; il punto di inizio gli è segnalato in modo comprensibile
• inizia ad eseguire le istruzioni presenti sulla lavagna
posizioni
– nell’ordine stabilito,
– leggendo dal modulo IN eventuali dati,
– usando la lavagna di lavoro per memorizzare dati
temporanei,
– riportando alla fine eventuali risultati sul certificato OUT

11

Come funziona l’ufficio:


cosa fa l’utente?
• riporta sul modulo IN i dati che vuole far
elaborare all’impiegato,
• preme il pulsante del campanello,
• attende l’elaborazione,
• legge i risultati sul certificato OUT
Cosa fa il direttore?
• identifica i problemi degli utenti,
• trova le soluzioni,
• progetta una descrizione operativa comprensibile
dall’impiegato
• e la riporta sulla lavagna di programma
12
Le attività dell’impiegato
• può svolgere un insieme finito di compiti
elementari,

}
– 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

• descritte da istruzioni sulla


lavagna di programma sintassi precisa e
non contrattabile 14
Esempi di istruzioni
ALLOCAZIONE
• Assegnamento: ISTRUZIONI
va sulla lavagna di lavoro, vede se c’è già una variabile “nome “ con quel valore; se c’è, cancella il
– valore ® nome contenuto corrente e lo aggiorna; se non c’è, scrive il contenuto nel primo spazio vuoto disponibile
– nome1 ® nome2 se non esiste nome1–>l’impiegato si blocca!
• Lettura: LEGGI IN-i nome
• Scrittura: SCRIVI nome OUT-i
• Operazioni aritmetiche intere: solo cifre, no virgole o punti
ESEMPIO
– op1 + op2 ® nome, op1 - op2 ® nome, “PIPPO+1”—> si cerca PIPPO (deve esistere); prendo il suo valore
numerico e sommo 1; il valore ottenuto lo metto nella casella “PLUTO”
op1 × op2 ® nome, op1 / op2 ® nome
• Condizioni logiche a esito binario vero/falso:
– semplici:op1 > op2 , op1 = op2 , op1 < op2
– Espressioni: (espr1 )AND (espr2 ) , (espr1 )OR(espr2 ), NOT(espr)

AND tra 2 espressioni logiche è vero se entrambe sono vere


OR tra 2 espressioni logiche è vero se almeno una delle 2 è vera
NOT nega: NOT vero—> falso; NOT falso—> vero

L’organizzazione
delle attività

• Le semplici operazioni che l’impiegato sa fare


possono essere combinate in modo da
permettergli di svolgere compiti più complessi
• il direttore indica come combinare le attività
semplici con apposite istruzioni sulla lavagna
• il metodo utilizzato è quello dei
diagrammi di flusso
• che è ovviamente compreso dall’impiegato
i diagrammi di flusso sono il principale metodo per descrivere gli algoritmi

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

blocco di inizio blocco di fine blocco funzionale blocco decisionale


non ha frecce
contiene istruzioni anche più di una
in uscita
elementari (operazioni freccia in entrata; le
aritmetiche, lettura, frecce in uscita sono 2
scrittura, ..) e ha anche per far sì che si vada o
più di una freccia in in “VERO” o in
entrata, ma solo una “FALSO”
freccia in uscita (no
ambiguità
L’impiegato riconosce ed interpreta i vari tipi di blocchi:

• blocco di inizio: quando il segnale acustico suona,


l’impiegato cerca il blocco di inizio sulla lavagna e
posiziona il segnalino magnetico accanto ad esso. Poi
identifica il blocco connesso a quello di inizio, e posiziona
accanto a quello il segnalino magnetico.
• blocco di fine: quando il segnalino magnetico finisce
accanto al blocco di fine, l’impiegato va a sedersi.
• blocco funzionale: l’impiegato esegue l’attività descritta
all’interno del blocco. Poi identifica il blocco connesso a
quello appena eseguito, e gli mette vicino il segnalino.
• blocco decisionale: l’impiegato valuta la condizione logica
contenuta nel blocco, ed in base al risultato (vero o falso)
posiziona il segnalino magnetico al blocco connesso alla
freccia etichettata con V o con F.
19

Come funziona l’ufficio?


Un esempio
• Un utente si reca dal direttore e gli presenta il suo problema:
vuole sapere
quanto vale la terza potenza di 4.
• Il direttore gli risponderà che studierà il problema ed appena
avrà pronta la soluzione lo avvertirà.
• Il direttore analizza quanto l’utente gli ha chiesto,
• identifica un metodo matematico per il calcolo delle potenze
(la moltiplicazione di un numero ripetuta per il numero di volte
indicato dall’esponente, a meno che l’esponente sia zero, nel
qual caso il risultato è sempre 1) il direttore non si limita a capire quanto fa 4^n, ma
cerca una generalizzazione matematica
• e lo traduce nel diagramma di flusso corrispondente,
basandosi sulle istruzioni elementari che l’impiegato conosce.
NON ESISTE UN SOLO DIAGRAMMA DI FLUSSO POSSIBILE i nomi delle variabili possono essere diversi (x, y, z, …)
ci sono diverse organizzazioni del diagramma di flusso
il direttore ha deciso che nel modulo di ingresso la base va nella prima riga e l'esponente nella seconda. Quindi risolve in generale x^y.
Poi dirà all'utente come risolvere il suo problema specifico. Il diagramma di flusso legge dalla prima riga del modulo di ingresso quello
che per l'utente è la base e la riporta in una variabile sulla lavagna di lavoro che chiamiamo BASE. Poi esegue la stessa cosa sulla
seconda riga riportandola sulla lavagna di lavoro di una variabile che chiamiamo ESP. Ora mette 1 in una variabile detta VAL. Tale
variabile è momentanea, di supporto e conterrà alla fine dell'esecuzione il risultato della potenza che si scriverà nella prima riga del
certificato di uscita.

Il risultato del lavoro del direttore:


un diagramma di flusso per l’impiegato

legge dal modulo 1 riga 1 il valore 4 e lo scrive nella


variabile “base” che può essere allocata dove vuole,
siccome non c’è nulla sulla lavagna

gli fa leggere il valore 3 e glielo fa mettere nella variabile “ESP” che


ancora non esiste—> la si mette nella prima posizione possibile

ripeto il ciclo fino a quando ho esp=0–>


scrivo sul certificato il valore 1
ho finito il problema e ho creato l’algoritmo che 3-1=2 e controllo se è 0
vale per qualunque problema

4x1–>4

Tale valore lo si ottiene tramite diversi passaggi: 21


1. C'è un blocco decisionale che mi chiede se ESP=0. Se vale 0 vado a scrivere 1 sul certificato di uscita. Se non è 0 inizia un
giro di operazioni particolare.
VAL è moltiplicato per la base e metto il risultato in val (VAL=4)
Leggo il valore dell'esponente, sottraggo 1 e metto il risultato in ESP( ESP=2)
Tale struttura è un CICLO che viene ripetuto fino a quando ESP non diventa 0
2. Quando ottengo 0, esco e vado a scrivere 64 (nel caso specifico)
Si svolgono cicli continui. Il programmatore può anche sbagliare e in tal caso si ottiene un ciclo infinito e il computer va in
down.

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

la complessità di un algoritmo dipende dal numero di dati di ingresso

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

Fine della metafora, ovvero:


Il calcolatore
• Chiamiamo calcolatore una macchina, comunque
realizzata, che sappia produrre le stesse prestazioni
dell’ufficio riceve in ingresso un programma che descrive come risolvere un
problema, un numero di dati a risolvere e risolve ciò che gli è stato chiesto
• In altre parole, un calcolatore è un sistema che,
ricevendo in ingresso:
– un programma che descrive un metodo di risoluzione di
un dato problema,
– e un insieme di dati iniziali per tale programma,
produce in uscita i risultati dell’esecuzione del
programma in corrispondenza dei dati iniziali
assegnati
26
soluzione del problema
Il calcolatore (diagramma di flusso sulla lavagna)

dati iniziali UFFICIO risultati


(modulo IN) (certificato OUT)

soluzione del problema


(programma)

dati iniziali CALCOLATORE risultati

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)

dati iniziali ufficio risultati


CALCOLATORE

28
la macchina di Touring riesce a svolgere infiniti calcoli
Cosa manca al nostro ufficio?

• Affinché sia più simile al “computer”


• intuitivamente:
– gestisce solo numeri naturali; a noi
interessa anche altro (numeri reali,
caratteri, etc)
– non ha memoria a lungo termine né per i dati
né per i programmi;
– la comunicazione utente/ufficio è un po’
macchinosa (simile a quella che si aveva tanti
anni fa, nei sistemi cosiddetti batch)

Algoritmi e diagrammi di flusso


• Il diagramma di flusso è un modo per
rappresentare un algoritmo;
– Altri modi includono i linguaggi di programmazione,
le regole, ecc
• Algoritmi e diagrammi di flusso non riguardano
solo gli informatici!
– Ovunque sia necessario caratterizzare bene un
processo, è necessario rappresentarlo con un
qualche metodo formale
– Conoscere qualche metodo formale, ed il senso di
alcune scelte, aiuta ad avere maggiore
consapevolezza 30
Vediamo alcuni esempi...
• Diagrammi di flusso descritti in modo più o
meno formale,
• Relativi ad attività non necessariamente
informatizzate

31

Esempio: protocolli clinici

32
Altro protocollo

HACCP

34
Rappresentazione dell’informazione

35

Rappresentazione dell’informazione

• rappresentazione binaria: si basa su due


simboli (es. 0/1)
• tecnologicamente pratica (è facile
rappresentare due stati: acceso/spento, due
polarizzazioni magnetiche, etc)
• i computer attuali si basano unicamente su
informazione rappresentata in modo binario
a vari livelli (processori, memorie,
periferiche....)
36
Notazione posizionale
• Cosa significa un numero come lo scriviamo noi?
• abbiamo una serie di dieci simboli ordinati: “0”, “1”,..., “9”
• il loro significato dipende dalla posizione che assumono nella
“parola” che codifica un numero: 1 all’inizio ≠ 1 alla fine
• sn-1sn-2...s1s0 =
sn-1*10n-1 + sn-2*10n-2 +...+s1*101 +s0*100
• Es: 1967 = 1*103 + 9*102 + 6*101 +7*100
• “10” è la base b della rappresentazione, ovvero il numero di
simboli usati; potrebbe essere diversa:
• sn-1sn-2...s1s0 =
sn-1*bn-1 + sn-2*bn-2 +...+s1*b1 +s0*b0
37

Minore è il numero di cifre di cui disponiamo, maggiore è la lunghezza della rappresentazione


di un numero, poiché avendo più cifre esse diventano più espressive, e ne servono meno per
rappresentare un determinato numero.

Esempio: rappresentazione ottale

• base 8, simboli 0,1,2,3,4,5,6,7


• 13678 = 1*83 + 3*82 + 6*81 +7*80
= 512+192+48+7= 75910
BASE 8–> base ottale

Esempio: rappresentazione binaria


• base 2, simboli 0,1
• 10112 = 1*23 + 0*22 + 1*21 +1*20
= 8+0+2+1= 1110
38
se i simboli sono meno di 10, si tendono a usare sottoinsiemi per semplificare la notazione
Notazione posizionale
• L'origine è araba
– Come l'algebra, ed il nome algoritmo
– (in realtà: provenienza Indù)
• È molto più pratica di altre nozioni alternative
– Esempio: numeri romani
– Operazioni difficili

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

• idealmente la codifica dovrebbe mantenere la


possibilità di fare le operazioni come al solito...
43

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

Floating point (virgola mobile)


• nella pratica, sia mantissa che esponente vengono
rappresentati con un numero fissato di bit, a cui si
aggiungono i 2 bit di segno (non si usa il complemento
a due per comodità).
• Avendo in tutto 16 bit, se ne useranno: 2 per i segni, 9
per il valore assoluto del numero, 5 per il valore
assoluto dell’esponente
• quindi i numeri rappresentabili saranno:
-511 * 10-31 ≤N ≤ 511 * 10 31 rappresento versioni approssimate dei miei numeri grandi,
tranne per circa 65mila precisi (i primi)
• Avendo 32 bit, se ne useranno: 2 per i segni, 20 per il
valore assoluto del numero, 10 per il valore assoluto
dell’esponente
• si può arrivare a 64 o 128 bit
46
Piccolo riassunto
• i numeri rappresentati nel calcolatore sono limitati
• ciò significa:
– se sono interi, avranno un minimo ed un massimo,
dipendente dal numero di bit utilizzati nella
rappresentazione
– se sono reali (con la virgola) sono rappresentati con una
approssimazione, la cui precisione dipende dal numero
di bit usati, da come sono suddivisi ed anche dal
particolare numero rappresentato.
• le conseguenze dell'approssimazione si possono
notare in calcoli che coinvolgono numeri molto
piccoli o molto grandi
47

Rappresentazione di informazioni non


numeriche

Testo, immagini, audio, video.


Compressione.
Rappresentazione del testo
• Vogliamo rappresentare tutto ciò che può entrare in un testo:
– lettere dell’alfabeto maiuscole e minuscole,
– segni di punteggiatura,
– cifre,
– indicatori di fine della riga o pagina, etc.
• Idea: un numero per ogni carattere
• In modi diversi: es ASCII, EBCDIC, ...
– Il più diffuso è ASCII (American Standard Code for Information Interchange),
che usa 7 bit per codificare i caratteri (inclusi in un byte con il primo bit a 0)
– ASCII esteso: codifica anche simboli speciali (es èàü),
su 8 bit con il primo bit a 1; non è realmente standard
– UNICODE: 16 bit, 65536 caratteri, tutti gli alfabeti

49

Codice ASCII (+ estensione)

50
Rappresentazione dell’informazione multimediale

• rappresentazione digitale delle informazioni


multimediali:
– immagini "fisse"
– suoni
– video
• problemi di ingombro della rappresentazione
-> tecniche di compressione

51

Codifica bitmap delle immagini


• un’immagine viene suddivisa tramite una griglia in quadratini detti
pixel (picture element) rappresenta numericamente il colore medio della sua area; è il dettaglio + piccolo che
posso vedere, non c’è nulla dentro al pixel; unità più piccola dell’immagine digitale
• ogni pixel assumerà come valore il colore medio dell’area che
rappresenta
– secondo un qualche modello del colore
• la griglia corrisponderà ad una matrice costituita dai valori dei
pixel nell’immagine di partenza magari c’è qualche dettaglio + piccolo al pixel—> io non riesco a vederlo
• l’insieme dei valori dei pixel è una approssimazione dell’immagine
• la precisione della codifica dipende dal numero di pixel nella griglia
e dal numero di valori che il pixel può assumere (b/n, toni di grigio,
colore)
• Vedremo i dettagli quando parleremo di bioimmagini
Codifica bitmap delle immagini

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

immagine digitale (approssimata)


54
Precisione della codifica:
risoluzione spaziale
• Maggiore è il numero
di pixel che
compongono la griglia,
migliore è
l’approssimazione
griglia 14x8
dell’immagine (e
maggiore è
l’ingombro)
Con pixel quadrati è però inevitabili che nella
rappresentazione delle linee non verticali o orizzontali
ci siano zone seghettate, effetto detto aliasing (sono
stati studiati anche pixel esagonali, che rappresentano
55
meglio lo spazio, usato per esempio per le immagini
biomediche, ma più a livello dell'interpretazione).
Tecniche di anti-aliasing: si mettono dei grigi nelle
zone di transizione per ingannare l'occhio e rendere
l'immagine più piacevole.

Precisione della codifica: livelli di grigio


• con 1 bit per pixel possiamo 0 1
codificare solo bianco e nero; 1 bit
• normalmente le immagini
presentano una serie continua di
sfumature dal bianco al nero; 0 1 2 3
• se associamo più bit ad ogni 2 bit
pixel, possiamo codificare il
corrispondente numero di
sfumature (livelli) di grigio; per
esempio: 0 1 2 … … 14 15
– 4 bit-> 16 livelli di grigio
– 8 bit -> 256 livelli di grigio 4 bit
• anche questa è
un’approssimazione, in quanto
discretizziamo un valore continuo
Immagini a colori
• per ottenere immagini a colori, è necessario rappresentare
numericamente le varie tonalità utilizzabili nell'immagine
• ciò si ottiene in almeno due maniere,
• ma sempre partendo da uno specifico modello del colore
– Non si possono mettere in fila come i toni di grigio!
MODELLO ADDITIVO: si suppone di partire da un fondo
ipoteticamente nero, cioè che non emette luce, e ci si aggiungono (=
additivo) componenti dei tre colori primari (rosso, verde, blu) in
quantità diverse fino a formare la sfumatura che ci interessa.
Quando le tre componenti sono al 100 % della loro possibilità
otteniamo il bianco. Quando sono allo 0% otteniamo il nero. Tutto il
resto sarà dipendente da come graduiamo
queste cose.
MODELLO SOTTRATTIVO: si parte dal bianco, ovvero una superficie
57
che riflette tutte le componenti di colore e, apponendo dei pigmenti,
sottraiamo parte di queste componenti a partire da tre colori primari
che sono complementari agli altri tre, e sono il ciano, il magenta e il
giallo. La K della sigla sta per black, perché nella pratica non è vero
che sottraendo tutti colori primari ottengo il nero, ma il marrone.
Quindi nonostante ci sia una teoria della rappresentazione delle
immagini, la pratica può differire leggermente

Modelli del colore


• dato un insieme di colori primari, è possibile
ottenere una qualsiasi sfumatura
"mescolandoli" opportunamente
• modello additivo (o RGB):
– i colori sono rosso, verde, blu, e si "aggiungono"
ad un ipotetico fondo nero (per esempio, tramite
luci colorate);
• modello sottrattivo (o CMYK)
– ciano, magenta, giallo, ed eventualmente nero
– si sottraggono ad un fondo bianco nelle stampanti il nero è il
colore + utilizzato
• oltre che per la rappresentazione nel calcolatore,
i due modelli si usano anche per formare il colore
nei dispositivi di output
– schermo: RGB; stampante: CMYK
• esistono altri modelli matematici (es. HSV)
58
Modelli del colore
RGB
CMY

• ogni sfumatura può essere rappresentata dalle


percentuali dei colori primari che la formano
– es. in RGB, giallo = 100% R, 100%G, 0% B
– giallo chiaro 100% R, 100%G, 50% B
– grigio scuro 10%R, 10%G, 10% B
nero (totale assenza di luce): 0%, 0%, 0% 59

bianco (completa presenza di luce): 100%, 100%, 100%


rosso intenso: 100% rosso, 0% altri
rosso scuro: tolgo una percentuale di rosso
rosso tendente al rosa: meno % di rosso diluiti con altri colori primari
QUESTO PROCEDIMENTO VALE PER OGNUNO DEI COLORI
PRIMARI

Immagini a colori: codifiche


• a milioni di colori (di solito RGB): + potente e rappresenta più sfumature di colori
– ogni pixel è rappresentato da 3 sottovalori, ognuno corrispondente alla
percentuale di un colore primario, con una precisione determinata (es. 8
COLORE PRIMARIO = CANALE
bit/colore) in ambito medico si usano + bit per avere
più precisione
• es: giallo chiaro = (255,255,127); grigio scuro = (25,25,25)
100%, 100%, 50% 10%, 10%, 10%
• a palette:
– la palette (tavolozza) è una tabella che descrive un numero limitato di sfumature
di colore (es.256) come sopra; nell'immagine, ogni pixel sarà rappresentato
dall'indice della sua sfumatura nella tabella
• es. un pixel giallo conterrà per es. 133, e nella posizione 133 della palette ci sarà una
descrizione del giallo come sopra
• altre codifiche: trasformate matematiche basate su seno e coseno

ESEMPIO: rosso=7 -–> quando dovrò usare il rosso nell’immagine,


60
userò il 7, siccome nella tabella c’è scritto così
Esempio
• Milioni di colori
– Ogni pixel, tre valori:
– <R, G, B>
– Es. <255,100,100>
(rosso chiaro)
• Palette (256 colori) —>al massimo ci sono 256 sfumature
– Ogni pixel, un valore (pari alla posizione sulla palette)
R G B 0
.
.
255,0,0 133 133
.
.
255 61

Differenze tra codifiche


• quanti colori rappresento?
– codifica completa: dipende dal numero di bit, ma
usualmente sono 8•3=24, quindi milioni di colori
• ok per immagini da scene naturali 8 bit per ogni colore primario; ci
in ambito biomedico saranno 2^24= 16 milioni di
• es: TIFF, BMP (,JPEG) sfumature
– palette: di solito la palette ha 256 sfumature, ed è
il numero massimo di colori
• ok per immagini sintetiche che hanno poche sfumature
• es: GIF, PNG
• quanto spazio occupa un'immagine?
occupa il triplo di
– RGB: ingombro totale: X•Y•bit•3 (di solito bit=8) un’immagine a palette
– Palette: ingombro totale: X•Y+(bit•3•256)
XY=numero di pixel 62
Quanti MB occupa?
2048 pixel
• RGB:
– 3 canali, ogni pixel è composto da 3 byte

– 1 byte per canale


1360 pixel

2048*1360*3 = 8355840 Byte


8355840/10242 ~ 7,97MBytes
• Se fosse GIF?
• 1 bye per pixel
• + la palette
2048*1360 = 2785280 Byte
2785280 /10242 ~ 2,66MBytes

Il file però occupa 1,8MBytes..


63
è compresso: la compressione rende
la stessa quantità di informazione
(o anche meno con JPEG) meno
ingombrante

rappresentazione in formato digitale di una immagine che viene dalla realtà

Precisione della codifica


• dipende sia dalla risoluzione spaziale che dalla precisione di
quantizzazione numero di pixel utilizzati per rappresentare l’immagine,
– (se sono immagini acquisite, dipenderà anche dalla sorgente)
• ogni approssimazione (sia spaziale che di colore) dà luogo a
distorsioni più o meno visibili!
quanti livelli di grigio o sfumature di colore riesco a rappresentare
La precisione poi dipende anche dalla sorgente e dall’utilizzo dell’immagine: infatti, ci sono immagini in cui
non avrebbe senso impiegare 16 milioni di colori e immagini che non hanno bisogno di molti livelli di grigio
perché la sorgente non è in grado di fornire tutta la precisione che catturo con tanti livelli di grigio, e lo stesso
vale anche per la risoluzione spaziale. Ogni approssimazione da questo punto di vista da luogo a distorsioni che
sono più o meno visibili. La bassa risoluzione spaziale dà luogo all’effetto chiamato pixelatura. In questo caso
riduco localmente la risoluzione quindi vedo pochi pixel con poco dettaglio. L’approssimazione dei colori si
64
manifesta quando una immagine in bianco e nero presenta i grigi simulati dai puntini bianchi e neri, quindi
con una bassa precisone, una bassa quantizzazione. Un altro fenomeno è la posterizzazione in cui riducendo il
numero di livelli di colori vedo le immagini con profili visibili tra le diverse colorazioni.
si elencano tutte le primitive geometriche utilizzate per creare quel disegno

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)

Codifica del suono


• fisicamente i suoni sono dati da
variazioni nella pressione dell’aria
che possono essere rilevate
(dall’orecchio, dal microfono) e
trasformate in impulsi elettrici
• questi impulsi possono venire ampiezza
misurati a intervalli determinati e
trasformati in un’approssimazione
digitale (un numero intero) come
succede nelle immagini
tempo
CAMPIONAMENTO E QUANTIZZAZIONE nel tempo (le immagini
nel tempo e nello spazio)
approssimazione del campione di suono in questo caso è la linea rossa—> semplificazione del
suono (3,5,7,8,6,3,0,-2,…)
Suoni: precisione della codifica
• come nelle immagini, dipende da due fattori:
– frequenza di campionamento, ovvero l’intervallo di tempo tra una
misurazione e l’altra;
– rappresentazione binaria del campione
(discretizzazione/quantizzazione): anche il valore misurato viene
trasformato in un valore discreto
• concretamente, se il suono deve essere ascoltato,
possiamo basarci sui limiti del nostro udito: 8-20000 Hz,
percezione di differenze fino ad una certa soglia
• 44 KHz come frequenza di campionamento CD
– 16 bit/campione (=65536 valori diversi), stereo
• basta meno per la sola voce (6000Hz)
lo stesso meccanismo si usa anche per i biosegnali (cambierà solo la frequenza)
67

C’è un teorema (Teorema di Shannon-Nyquist) che ci dice a che frequenza bisogna


campionare qualcosa per rappresentarla in modo sufficiente: bisogna cioè acquisire un
segnale almeno al doppio della frequenza massima che si vuole riconoscere nel segnale.

Quanti Mbytes occupa?


• Canzone lunga 3'45"
2 canali—> 2 byte

(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…

si analizza il video fotogramma per fotogramma e si scatta un’istantanea (si memorizza) di


71
tutte le differenze—> si cercano tutti i blocchi che cambiano da un frame all’altro

Formati video comuni


• Televisione digitale:
– (HD ready) 1280x720, 50/60Hz
– Full HD: 1920x1080, 50/60/24Hz
– Ultra HD/4K: 3840x2160, 50/60/24 Hz
– HEVC (H265): High Efficiency Video Coding

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

Esempio: tecnica reversibile


• partendo da una sequenza di bit, ne ricaviamo una
nuova codificando le serie di bit uguali con 1 bit per il
valore, più 4 bit per il numero di volte che si ripete.
STRINGA COMPRESSA potrebbe essere: o91604120719; si indica cifra-numero di volte in cui si ripete

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

Artefatti da compressione: JPEG

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.

Potrebbero piacerti anche