Informatica Parte 1
Informatica Parte 1
Fondamenti di Programmazione
Rappresentazione e Codifica
dell’Informazione
capitolo 1 del testo:
“Le radici dell’informatica” – Chianese Moscato Picariello Sansone
Il concetto di Informazione
• Informazione
– …. deriva da informare, ossia dare forma
– … fa riferimento ad un concetto astratto che può coincidere
con qualunque notizia o racconto
• Rappresentazione Discreta
– Utilizza un insieme finito di rappresentazioni distinte che vengono
messe in relazione con alcuni elementi dell’universo da
rappresentare
–è un’approssimazione di quella analogica
Codifica
• Un’informazione per essere elaborata deve essere
codificata in una rappresentazione comprensibile
all’interlocutore
–La codifica è l’insieme di convenzioni e di regole da adottare per
trasformare un’informazione in una sua rappresentazione
• La stessa informazione può essere codificata in modi diversi
(rappresentazioni diverse) a seconda del contesto
Esempi:
cifre arabe:1 numerazione romana: I numerazione cinese:
UP 向上 ALTO
Codici
• Un codice è un sistema di simboli che permette la rappresentazione
dell’informazione ed è definito dai seguenti elementi
–I simboli che sono gli elementi atomici della rappresentazione
–L’alfabeto che rappresenta l’insieme dei simboli possibili:
con cardinalità (n) del codice si indica il numero di elementi dell’alfabeto
–Le parole codice o stringhe che rappresentano sequenze possibili (ammissibili)
di simboli: per lunghezza ( l ) delle stringhe si intende poi il numero di simboli
dell’alfabeto da cui ciascuna parola codice risulta composta
–il linguaggio che definisce le regole per costruire parole codici che abbiano
significato per l’utilizzatore del codice
Parole Codice
• Siano
–V= {v1 , v2 , ... , vm } l’insieme degli m valori diversi di una data informazione
–A = {s1 , s2 , ... , sn } un alfabeto composto da n simboli distinti
• Si considerino diverse lunghezze delle parole codice
–con l = 1 si hanno tante parole codice diverse (n1)
quanti sono i simboli dell’alfabeto
–con l = 2 si hanno tante parole codice diverse quante sono le
combinazioni con ripetizione degli n simboli nelle due posizioni, ossia n2
–con l = 3 si hanno n3 parole codice diverse
• In generale il numero di parole codice differenti è uguale a nl
Esempio
• Considerato l’alfabeto A = {-,.}
del codice Morse (ha cardinalità
n=2 ),
al variare della lunghezza l
cambia il numero di parole codice
a disposizione (e quindi dei valori
che si possono rappresentare)
Corrispondenza parola codice - valore
• La codifica è tale che
–ad ogni vi corrisponde almeno una sequenza s1i s2i ...sni
–a ciascuna parola codice s1i s2i ...sni corrisponde uno ed un solo vi
Attenzione!
In alcuni contesti, “ridondanza” per un codice ha una definizione più
stringente (ed è una proprietà utile, non è indice di inefficienza).
Codifica a Lunghezza fissa e variabile
• Codifica a lunghezza fissa
–tutte le parole codice hanno sempre la stessa lunghezza,
fissata da particolari esigenze applicative
• I calcolatori adottano codifiche a lunghezza fissata e definita
Ad esempio
• (101111)2 = 1 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 1 × 21 + 1 × 20 = 32 + 8 + 4 + 2 +1 =
• (142)5 = 1 × 52 + 4 × 51 + 2 × 50 = 25 +20 +2 =
• (47)10 = 4 × 101 + 7 × 100
NOTA: L'impiego nella base 2 di un minor numero simboli rispetto al sistema decimale (2 contro
10) implica che lo stesso valore abbia una rappresentazione più lunga in notazione binaria che
non in quella decimale
Conversione decimale - binario
Dato un valore d decimale, nel caso di b=2
Se ora si divide la parte intera ottenuta precedentemente (dpi1 )ancora per la base 2
dpi1 /2 = ci × 2i-2 + ci-1 × 2i-3 +………+ c2 × 20 + c1 × 2-1 , con c1 resto della divisione
(1001101)2 =
=1 × 26 + 0 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20 =
= 64 + 0 + 0 + 8 + 4 + 0 + 1 = (77)10
• Per evitare l’uso di stringhe troppo lunghe e di difficile
lettura, sono molto usati il sistema ottale ed esadecimale
Esempi d’uso della notazione ottale
• Rappresentazione sintetica dei permessi di file in UNIX
Esempi d’uso della notazione esadecimale
• Rappresentazione RGB dei colori • Indirizzi fisici delle schede di rete
○ HTML, programmi di grafica...
• Vantaggi
–indipendenza dalla posizione della virgola “floating point”
–possibilità di trascurare tutti gli zeri che precedono la prima cifra
significativa con la normalizzazione della mantissa
–possibilità di rappresentare con poche cifre numeri molto grandi
oppure estremamente piccoli
Rappresentazione finita e discreta dei numeri reali
• In un intervallo reale, comunque piccolo, esistono
infiniti valori (i numeri reali formano un continuo)
• I valori rappresentabili in binario appartengono
invece ad un sottoinsieme che contiene un numero
finito di valori reali ognuno dei quali rappresenta
un intervallo del continuo
• In altri termini, diviso l'insieme dei numeri reali in
intervalli di fissata dimensione, si ha che ogni x
appartenente all'intervallo [Xi, Xi+1[ viene
sostituito con Xi
Effetti delle Approssimazioni
• Il CALCOLO NUMERICO si pone come obiettivo la ricerca di algoritmi appropriati per la
soluzione di problemi matematici che fanno largo uso dei numeri reali
–un qualsiasi calcolo numerico sarebbe privo di senso, qualora non si avesse un'idea del tipo e
dell'entità degli errori che si possono commettere
• I numeri reali rappresentabili in binario godono della seguente proprietà
–Esempio:
• 10100011 = 163 in b=10; 163-127 = 36
• 00100111 = 39 in b= 10; 39-127=-88
Esempi:
• 1 10000001 01000000000000000000000
–Segno negativo
–Esponente: 27+20=129-127=2
–Mantissa: 1+2-2=1.25
–Numero: -1.25 22=-5
Esempi
• 8.5
• Segno +
• 8.5 in binario: 1000.1=1.0001 23
–Mantissa: 00010000000000000000000
–Esponente: 3+127=130=10000010
–NUMERO: 0 10000010 00010000000000000000000
Esempi
• -109.78125
• Segno -, quindi il primo bit sarà 1
• Cominciamo trasformando 109.78125 in binario
• Per la parte intera: 10910 = 11011012
• Per la parte decimale 0.7812510 = 0.110012
• Quindi il numero in binario è 1101101.110012, che normalizzato diventa
1.10110111001 * 262
• Adesso abbiamo mantissa ed esponente, dobbiamo metterli nel formato
richiesto
• Esponente 6, da portare in eccesso 127 -> 6 + 127 = 13310 = 100001012
• Mantissa 1.101101110012 si toglie il primo 1 e si mettono gli 0 a destra per
arrivare a 23 bit
• Risultato: 1 10000101 10110111001000000000000
Configurazioni particolari
• Esponente e mantissa tutti 0 : rappresentano 0
• Mantissa tutti 0 ed esponente tutti 1: rappresentano infinito
• Mantissa diversa da 0 e esponente tutti 1: rappresentato la situazione di
Not a Number (NAN), cioè un valore indefinito (esempio il risultato di una
divisione per 0 o la radice quadrata di un numero negativo)
Testi, Immagini, Video e Audio
Rappresentazione Testi
Il testo è uno degli oggetti digitali più diffuso nel mondo informatico. Molte
sono le applicazioni che generano e manipolano i cosiddetti documenti
elettronici. Un testo digitale è una stringa di simboli ad ognuno dei quali viene
associato un codice binario secondo un prefissato standard.
Rappresentazione dei Caratteri
● Per rappresentare i caratteri esistono vari codici
● Gli standard accettati sono
○ EBCDIC 8 bit
○ ASCII 7 bit (ASCII esteso 8 bit = 256 simboli)
● Lo standard e’ importante affinchè sistemi diversi
comunichino tra loro
ANSI ASCII
● Alla fine degli anni sessanta l'ente americano di standardizzazione ANSI (American
National Standards Institute) decise di fissare un alfabeto che consentisse a tutti i
calcolatori, anche di produttori diversi, di poter comunicare tra loro o con i
dispositivi ad essi collegati
● I simboli dell’alfabeto vennero elencati in una tabella per codificare, attraverso la
posizione assunta da loro in essa, vari tipi di caratteri: alfabetici, numerici, di
punteggiatura, simbolici, e anche alcuni codici da usare come controllo della
comunicazione tra una macchina e l'altra (per esempio, per segnalare l’inizio o la
fine di una trasmissione)
● Il trasferimento di un insieme di informazioni da un calcolatore all'altro su una rete
poteva così essere effettuato attraverso un linguaggio comune, costituito da tale
forma di codifica
● La tabella fu chiamata ASCII, ossia American Standard Code for Information
Interchange
Codice ASCII
UNICODE
● Uno standard che si propone di affrontare il problema del multilinguismo è Unicode
(Universal Encoding)
○ Assegna un numero univoco ad ogni simbolo in maniera indipendente dal programma, dalla
piattaforma e dalla lingua (e relativo alfabeto): il suo scopo è quello di creare una codifica delle
scritture a livello universale
○ Si basa sulla codifica ASCII, ma va oltre la limitazione dell'alfabeto latino potendo codificare
caratteri scritti in tutte le lingue del mondo. Originariamente si basava su una codifica a 16 bit che
dava la possibilità di codificare più di 65 mila caratteri
● Per rappresentare qualunque carattere, compresi quelli cinesi e tutte le loro varianti, è stato
proposto lo standard Unicode (ISO-10646) che utilizza l'UTF (Unicode Transformation Format)
● I formati UTF possono essere a 8, 16 e 32 bit
○ L'UTF-8 si basa su parole di 8 bit (1 byte) per la codifica dei caratteri; ed usa da 1 a 4 byte per
carattere: i primi 128 valori, che iniziano col bit 0, utilizzano 1 byte per carattere e corrispondono
all'ASCII, i successivi 1920 (dal 128 al 2047) utilizzano 2 bytes per codificare greco, cirillico, copto,
armeno, ebraico, arabo. Per gli altri caratteri si usano 3 o 4 bytes. UTF-16 utilizza parole di 16 bit
per codificare i caratteri, viene utilizzato da Java, ed è la rappresentazione interna usata da
Windows e Mac OS-X.
I dati multimediali
La realtà è continua
Immagini Suoni
La codifica delle informazioni è discreta
Da analogico a digitale
● Un formato analogico può essere rappresentato matematicamente
sempre come una funzione continua del tempo, mentre una
rappresentazione digitale è una rappresentazione discreta di questa
● La trasformazione da analogico a digitale si realizza per mezzo di una
operazione detta campionamento ed una di quantizzazione
■ a intervalli regolari di tempo, si va a osservare quali valori assume la funzione
analogica e se ne conservano le osservazioni o campioni
■ l’operazione di quantizzazione approssima i campioni ad un certo numero
prefissato di livelli
Convertitori Analogici-Digitali
Campionamento
Quantizzazione
Codifica delle Immagini
• Nel mondo reale, una immagine è un insieme continuo di
informazioni
–luce, colore
• Il calcolatore tratta informazioni discrete
• E’ allora necessario scomporre l’informazione in un insieme
finito di elementi che verranno codificati con sequenze di bit
Le Immagini BITMAP
• La scomposizione più ovvia consiste nel
suddividere l’immagine in un reticolo di punti
detti pixel (picture element)
10000000 10000000
11000000 11000000
11100000 11100000
11111000 11111000
11111100 11111100
11111111 11111111
Bitmap BN e GreyLevel
● Ogni punto del reticolo viene codificato con uno o più bit
■ per immagini a due soli colori, bianco e nero
● 1 bit/pixel
■ per immagini a livelli di grigio (256 livelli)
● 8 bit/pixel
Dispositivi di Acquisizione
● Gli “occhi” elettronici (ad esempio, dispositivi ad
accoppiamento di carica) acquisiscono una “areola”
del mondo, registrandone le caratteristiche di colore,
luminosità, etc,
● Più piccola è l’areola, più vicine sono tra loro, più
numerose sono, e migliore è la “qualità”
dell’immagine acquisita
● Il concetto di risoluzione è legato a quanto sono fitti i
punti che visualizzano l’immagine
○ Maggiore è la risoluzione dell’immagine, maggiore è la
possibilità di distinguere dettagli in essa presenti
○ Tutti i pixel contenuti in una immagine digitale hanno
dimensioni identiche. La loro dimensione è determinata
dalla risoluzione alla quale l’immagine viene
digitalizzata
■ ad esempio la risoluzione di 600 dpi indica che ciascun
pixel misura 1/600 di pollice
Le immagini a colori
● La colorimetria spiega che un colore può essere ottenuto tramite
combinazione di almeno tre colori base detti primari
● Se i tre colori base sono il Rosso, il Verde ed il Blu si ha lo spazio
RGB
● Color = a R + b G + c B
● Con 8 bit/colore base, per ogni colore si useranno 24 bit, ovvero
circa 16 milioni di colori diversi
Esempio di Immagini Digitali
I formati BITMAP
● Ciascuna immagine viene memorizzata con diversi formati
bitmap alcuni dei quali prevedono forme di compressione
● Tra i formati più comuni,
○ Tagged Image File Format TIFF
○ Graphics Interchange Format GIF
○ Joint Photographers Expert Group JPEG
○ Microsoft Bit Map BMP e Device Independent BitMap DIB
○ PC Paintbrush PCX
Dimensione dei Bitmap: un esempio
■ Cinema: 24 fotogrammi/sec
■ TV: 25 o 30 fotogrammi/sec
○ La sequenza continua di immagini della realtà viene quindi discretizzata ottenendo una
serie di immagini (detti frame) che variano velocemente, ma a intervalli stabiliti
○ Il frame-rate è il numero di frame mostrati per secondo (fps)
● Lo standard MPEG (Moving Picture Expert Group) prevede la codifica di ciascun frame fisso,
oltre alla codifica di suoni, attraverso tecniche di Compressione Dei Dati
○ senza compressione, 1 min. di filmato a 24 fotogrammi/sec occuperebbe 644MB
Compressione
● Per risolvere i problemi connessi con le dimensioni elevate sono stati introdotti
processi di compressione
○ riducono lo spazio occupato mediante o la diminuzione del numero di bit
necessari per codificare una singola informazione (compressione entropica)
○ oppure la diminuzione del numero di informazioni da memorizzare o trasmettere
(compressione differenziale, compressione semantica). La compressione può
conservare integralmente o no il contenuto della rappresentazione originale
secondo due tecniche principali
■ la compressione senza perdita di informazione (lossless, reversibile) che sfrutta le ridondanze
nella codifica del dato
■ la compressione con perdita di informazione (lossy, irreversibile) che invece sfrutta le
ridondanze nella percezione dell’informazione
Compressione Lossless
● La compressione lossless avviene tramite una classe di algoritmi che consentono
di ricostruire tutta l’informazione iniziale partendo da quella compressa
● Non sempre si ottengono riduzioni significative
● Tra le tecniche di compressione lossless si ricordano
○ la Run-length encoding (RLE) che codifica sequenze di valori uguali premettendo un
indicatore di ripetizioni al valore codificato
○ la codifica di Huffman che assegna un numero inferiore di bit alle sequenze più
probabili attraverso un vettore di codifica
○ la compressione Lempel-Ziv-Welch (LZW) che costruisce dinamicamente una tabella
di codifica con numero variabile di bit sulla base delle sequenze incontrate
○ la codifica differenziale in cui ogni dato è rappresentato come differenza rispetto al
dato precedente
Compressione Lossy
● I metodi lossy comportano riduzioni notevoli delle dimensioni, ma la ricostruzione
dell’informazione da quella compressa non è identica a quella iniziale
● Tali metodi rimuovono parti che possono non essere percepite come avviene nel caso di
immagini, video e suoni
○ Ad esempio gli algoritmi di compressione usati nei formati GIF e JPEG per immagini fisse
sfruttano la caratteristica dell’occhio umano di essere poco sensibile a lievi cambiamenti di
colore in punti contigui, e quindi eliminano questi lievi cambiamenti appiattendo il colore
dell’immagine
● Tra le tecniche di compressione lossy si ricordano:
○ la compressione JPEG per le immagini che applica una trasformata nel dominio delle frequenze
(Discrete Cosine Transform) che permette di sopprimere dettagli irrilevanti riducendo il numero
di bit necessari per la codifica
○ la compressione MPEG per i video che codifica parte dei frame come differenze rispetto ai
valori previsti in base ad una interpolazione
○ la compressione MP3 per l’audio che si basa alle proprietà psicoacustiche dell’udito umano per
sopprimere le informazioni inutili
Codifica dell’Audio
● Il suono è un segnale analogico funzione del tempo consistente in vibrazioni che
formano un’onda, la cui ampiezza misura l’altezza dell’onda e il periodo è la
distanza tra due onde
● Anche il suono deve essere campionato e quantizzato per poter essere
digitalizzato
● L'operazione di campionamento discretizza il segnale con una frequenza
dell'ordine delle decine di KHz (migliaia di campioni al secondo) perché è
dimostrato che l’orecchio umano percepisce fedelmente il suono originale se il
suo campionamento è non inferiore a 30KHz
Frequenze di campionamento
Algebra di Bool (cenni)
Operatori Booleani
● Sulle stringhe di bit sono anche definiti operatori che lavorano bit a bit
(bitwise operator). Essi sono detti booleani e sono
○ AND: dati due bit restituisce il valore 1 se e solo se i bit erano entrambi posti a
1, in tutti gli altri casi il risultato è 0; l’AND è detto anche prodotto logico
○ OR: dati due bit restituisce il valore 0 se e solo se i bit erano entrambi posti a 0,
in tutti gli altri casi il risultato è 1; l’OR è anche detto somma logica
○ NOT: dato un bit restituisce il valore 0 se esso era posto a 1, restituisce invece 1
se il bit era posto a 0; il NOT viene anche detto operatore di negazione o di
complementazione
Tavola di Verità
Esempio
Proposizioni Logiche
● Una proposizione semplice è qualsiasi enunciato che può
assumere valore vero o falso
○ Esempio “vi sono altre cifre a sinistra delle ultime
considerate”
■ Queste condizioni possono assumere un valore vero o falso, cioè un
valore logico
■ In modo più sintetico la condizione usata come esempio che si può
anche esprimere con l’espressione
● (numero di cifre a sinistra) > 0
Operatori di Confronto
● Permettono il confronto di valori qualsiasi
● Gli operatori di relazione più noti sono quelli che permettono
di confrontare quantità numeriche
○ uguale ( simbolo ‘=’)
○ diverso ( simbolo ‘≠’)
○ maggiore ( simbolo ‘>’)
○ minore ( simbolo ‘<’)
○ maggiore o uguale ( simbolo ‘≥’)
○ minore o uguale ( simbolo ‘≤’)
Predicati Semplici con Operatori di relazione
● Per la dimostrazione
○ Consideriamo ad esempio la prima: dovete dimostrare che
a+b è il complemento dell’espressione al secondo membro.
Per farlo applicate la definizione di complemento
117
118
Teorema di De Morgan
(1)
(2)
● Per la dimostrazione
○ Usate la proprietà distributiva ed infine il complemento
119
Risoluzione dell’esempio
● Poniamo
○ A: l'utente ha già consegnato meno di 5 conti corrente
○ B: ci sono altri utenti in coda
○ A': l'utente ha già consegnato almeno 5 conti corrente
● La prima condizione corrisponde alla formula
● A OR (NOT B)
● La seconda condizione corrisponde alla formula
● NOT (A' AND B)
● osservando che A' = NOT A diventa
● NOT (NOT A AND B)
Risoluzione dell’esempio
● Costruiamo le tabelle di verità delle due espressioni
○ valore di verità dell’espressione composta in corrispondenza
di ogni possibile combinazione di valori di verità delle
condizioni atomiche componenti (A e B)
● Le due condizioni sono equivalenti se le due tabelle di
verità sono uguali
Confronto tabelle di verità
prima condizione
seconda condizione