Sistemi di Elaborazione Introduzione all’informatica • Obiettivi del corso • Definizioni generali • Il calcolatore • Codifica binaria dell’informazione Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 1 Premessa Il corso non presuppone conoscenze informatiche precedenti Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 2 Obiettivi del corso Conoscere gli aspetti fondamentali dell’Informatica e della struttura dei calcolatori Conoscere la struttura di alcuni dei più utilizzati pacchetti applicativi Conoscere alcune delle possibilità di informazione offerte da internet Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 3 Cos’è l’informatica ? L’informatica è la scienza dei calcolatori L’informatica è la scienza della programmazione L’informatica è la scienza di Internet Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 4 Cos’è l’informatica ? L’informatica è la scienza della rappresentazione e dell’elaborazione automatica dell’informazione L’informatica è lo studio degli algoritmi: • delle loro proprietà formali e matematiche • delle loro realizzazioni hardware • delle loro realizzazioni linguistiche • delle loro applicazioni Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 5 Che cos’è un algoritmo ? Un insieme ben ordinato e finito di operazioni non ambigue ed effettivamente calcolabili che, applicate ad un insieme di condizioni iniziali, produce un risultato e termina in una quantità di tempo finita. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 6 Esempi di algoritmi Ricetta di cucina Sequenza di operazioni per registrare un programma con un video registratore Sequenza di operazioni per montare una tenda Sequenza di operazioni per moltiplicare due numeri … Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 7 Un algoritmo ben scritto La ricetta per cuocere 100 g di pasta: 1. Metti 1 l di acqua in una pentola 2. Poni la pentola sul fornello 3. Accendi la fiamma del fornello 4. Finchè l’acqua non bolle ripeti il passo 5. 5. Aspetta 1 minuto. 6. Aggiungi 10 g di sale grosso 7. Leggi sulla confezione della pasta la cottura prevista 8. Versa la pasta nell’acqua bollente 9. Aspetta il tempo di cui al punto 7. 10. Scola la pasta 11. Fine Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 8 Un algoritmo per guadagnare in borsa 1. Se le azioni sono scese al punto che non possono far altro che salire, compra 2. Se le azioni sono salite al punto che non possono far altro che scendere, vendi Un insieme ben ordinato e finito di operazioni non ambigue ed effettivamente calcolabili che, applicate ad un insieme di condizioni iniziali, produce un risultato e termina in una quantità di tempo finita. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 9 I due ubriachi 1. Siccome Peppe è ubriaco, Ciro lo accompagna a casa 2. Siccome Ciro è ubriaco, Peppe lo accompagna a casa 3. Siccome Peppe è ubriaco, Ciro lo accompagna a casa … Un insieme ben ordinato e finito di operazioni non ambigue ed effettivamente calcolabili che, applicate ad un insieme di condizioni iniziali, produce un risultato e termina in una quantità di tempo finita. F. Ambrosino & F. Perfetto Laboratorio di Informatica A.A. 2008-2009 10 Riassumendo…. L’ “algoritmo” per vincere in borsa • non è ben ordinato • è ambiguo L’ “algoritmo” dei due ubriachi • non impiega un tempo finito • non produce un risultato Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 11 Formalizzazione del concetto di algoritmo: perché ? L’obiettivo è la costruzione di uno o più mezzi di calcolo in grado di eseguire “operazioni primitive” (ovvero effettivamente calcolabili) . Un mezzo di calcolo che esegue operazioni primitive permette di automatizzare una soluzione di un problema espressa da un algoritmo. La soluzione di un problema espressa da un algoritmo costituito da sequenze di operazioni primitive può essere automatizzata Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 12 Cos’ è un programma ? Un Programma è l’espressione di un algoritmo in un linguaggio comprensibile all’esecutore L’algoritmo è una rappresentazione astratta della soluzione di un problema, il programma è l’espressione concreta dell’ algoritmo Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 13 Linguaggi di Programmazione I Uno stesso algoritmo può essere espresso (codificato) attraverso diversi linguaggi di programmazione I linguaggi di programmazione consentono al programmatore di astrarre dalle caratteristiche fisiche dell’esecutore Esistono alcune centinaia di linguaggi di programmazione: sono tutti basati su pochi concetti fondamentali Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 14 Linguaggi di Programmazione II Programmazione: una qualsiasi notazione per la descrizione di algoritmi e strutture dati (general purpose languages) Es. Fortran, C, C++, Basic, Java Domain-specific: qualsiasi notazione per la descrizione di un problema in un dominio di applicazione determinato e circoscritto. Es HTML, LaTeX, SQL… Scripting: linguaggi interpretati che consentono anche di collegare tra loro delle applicazioni. Es, Perl, TCL/TK, php, JavaScript… Principio: Scegliere il linguaggio più appropriato per la risoluzione di un dato problema Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 15 Correttezza di un algoritmo Determinare la correttezza dell’algoritmo elaborato per un dato problema può essere arduo…le condizioni per essere ragionevolmente sicuri di averlo trovato sono: • Comprensione effettiva del problema • Validità della soluzione indipendentemente da condizioni particolari o dal valore dei dati in ingresso • Livello di approssimazione del risultato sufficiente agli scopi di progetto Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 16 Efficienza degli algoritmi Una volta determinato un algoritmo corretto per la soluzione di un problema, occorre preoccuparsi della sua efficienza, ovvero di come esso gestisca le risorse tempo (numero di operazioni necessarie alla soluzione) e spazio (memoria occorrente per trovare la soluzione) che saranno in quantità finita per qualunque elaboratore reale. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 17 . . . . proseguendo Un criterio per la valutazione dell’efficienza di un algoritmo è di grande utilità in quanto dobbiamo assicurarci la possibilità di operare confronti tra diversi algoritmi, indipendentemente dal linguaggio con cui saranno implementati e dalla “potenza” della macchina su cui saranno eseguiti. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 18 Valutare l’efficienza rispetto al tempo L’efficienza rispetto alla risorsa tempo può essere valutata in generale contando il numero di operazioni richieste dall’algoritmo per arrivare alla soluzione del problema in funzione del numero n dei dati in ingresso. In questa valutazione non è importante il valore esatto quanto la dipendenza funzionale e l’ordine di grandezza. Si parlerà allora di algoritmi o complessità O(n), O(n2), O(log n) , O(2n) etc. a seconda degli andamenti. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 19 L’algoritmo di ricerca sequenziale... Supponiamo di voler cercare un nome in una rubrica telefonica contenente 100 nomi. Il primo algoritmo che viene in mente potrebbe essere: Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 20 1. Acquisisci nome1…..nome100 2. Acquisisci tel1……tel100 3. Acquisisci nome cercato 4. Poni trovato = falso 5. Poni i = 1 6. Ripeti finché trovato diventa vero o i >100 7. Se nomei = nome cercato allora 8. Stampa teli 9. Poni trovato = vero Altrimenti 10. Incrementa i di 1 11. Fine del ciclo 12. Se trovato = falso allora 13.Stampa messaggio ‘ Nome non in elenco’ 14. Fermati Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 21 …e quello di ricerca binaria L’algoritmo di ricerca sequenziale è semplice e corretto... ma non sfrutta il fatto che la rubrica è ordinata ! “Riesco a trovare i nomi molto più velocemente sul dizionario, da quando ho scoperto che sono in ordine alfabetico ” (Groucho Marx) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 22 1. Acquisisci nome1…..nome100 2. Acquisisci tel1……tel100 3. Acquisisci nome cercato 4. Poni trovato = falso 5. Poni inizio = 1 e fine = 100 6. Ripeti finché trovato diventa vero o fine <inizio 7. Poni i a (inizio+fine)/2 8. Se nomei = nome cercato allora 9. Stampa teli 10. Poni trovato = vero Altrimenti Se nome cercato precede alfabeticamente nomei 11. Poni fine = i -1 altrimenti (nome cercato segue nomei) 12. Poni inizio = i +1 13. Fine del ciclo 14. Se trovato = falso allora 15.Stampa messaggio ‘ Nome non in elenco’ 16. Fermati Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 23 Confronto fra ricerca sequenziale e ricerca binaria Computer: CRAY T3E-900 1360 processori in parallelo Costo: 30 M euro Numero di op. al secondo: 7*1011 Algoritmo ric. sequenziale Computer: Pentium Pro 200 Costo: fuori produzione, si può trovare a 200 euro Numero di op. al secondo: 7*107 Algoritmo ricerca binaria Elenco di Napoli (106 abitanti): Elenco di New York (2*107 abitanti): Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 24 Automatizzare i calcoli I primi mezzi automatici di calcolo compaiono nel XVII secolo ad opera di Schickard e Pascal. Funzionano sulla base di ruote dentate. Macchina calcolatrice di Schickard Ambrosino - Noli - Perfetto LaPascalina Sistemi di Elaborazione A.A. 20152016 25 Il primo programma Ma la prima macchina a disporre di un vero programma è il telaio di Jacquard costruito nel 1804 : il disegno della trama viene inserito tramite schede perforate e realizzato automaticamente dalla macchina. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 26 I primi calcolatori elettronici Motivati principalmente da esigenze belliche i primi grandi calcolatori elettronici a valvole furono realizzati dalle maggiori potenze in conflitto nel corso degli anni 40. ENIAC: 18000 valvole 30 m lunghezza 30 tonnellate Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 28 Il calcolatore moderno Il principale problema dei calcolatori fino agli anni ’40 era la fondamentale differenza fra il modo in cui venivano memorizzati i dati e quello in cui venivano realizzati i programmi, che non erano memorizzati, ma realizzati esternamente usando connessioni, fili etc. Fu il genio di Von Neumann che permise di progettare e realizzare, nel 1950, l’EDVAC, il primo calcolatore a programma memorizzato. L’EDVAC pesava 8 ton e aveva una memoria di 1024 parole… ma non era nella sostanza diverso dal computer usato per scrivere questa presentazione… Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 29 La macchina di Von Neumann Lo schema della macchina di Von Neumann, modello sul quale si basano praticamente tutti i moderni computer è basato su quattro elementi fondamentali: • La memoria • L’unità aritmetico logica (ALU) • L’unità di controllo Processore • Le unità di Ingresso/Uscita (I/O) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 30 La macchina di Von Neumann (II) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 31 La memoria RAM Controllo ALU Indirizzo MAR Contenuto 0 Dato o istruzione 1 Dato o istruzione 2 Dato o istruzione Memory Address Register F/S Dati e istruzioni sono codificati MDR Memory Data Register Operazioni possibili: • Fetch (indirizzo) • Store (indirizzo, valore) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 32 Le unità di I/O • Dispositivi di interfaccia utente: tastiera, monitor, mouse… • Dispositivi di comunicazione: porte e dispositivi ad esse connessi (stampanti, modem…) • Dispositivi di memoria di massa: (Hard disk, Floppy disk, CDROM, DVD) Tempi caratteristici di accesso: diversi ordini di grandezza più lenti della memoria RAM Controllore di I/O Interrupt I/O Buffer Driver Dati Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 33 L’unità aritmetico logica: ALU Il cuore calcolante del computer: effettua un insieme finito e predeterminato di operazioni matematiche e logiche. Gli operandi vengono letti da registri in ingresso, e il risultato dell’operazione è scritto su un registro in uscita. Il registro di stato (SR) riporta il segno del risultato e la presenza di riporto o di una condizione di errore( underflow, overflow) Registro 00 Linee di selezione Registro 01 ALU SR Registro 15 Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 34 L’unità di controllo (I) Struttura di una istruzione in linguaggio macchina: Codice operativo – Indirizzo 1 – Indirizzo 2 Esempio: ADD X,Y (Y=X+Y) Dati e istruzioni sono codificati Ciclo di esecuzione di un programma: • Instruction fetch • Decodifica • Esegui Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 35 L’unità di controllo (II) Program Counter (++) Registro istruzioni (IR) Codice op. – Indirizzo 1-Indirizzo N Decodificatore di istruzione Memoria, ALU,controllori I/O… Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 36 Riassumendo La struttura di Von Neumann permette di calcolare una sequenza di istruzioni opportunamente codificate e memorizzate e di controllare il flusso dell’esecuzione. La gestione dell’I/O è delegata a opportuni controllori per ottimizzare le prestazioni. La condizione chiave per la realizzazione del calcolatore è disporre di un sistema efficiente e affidabile di codifica dell’informazione, ovvero dei dati e delle istruzioni che devono essere via via eseguite. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 37 Codifica binaria Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 38 La codifica binaria L’alfabeto più semplice è quello costituito da soli due simboli. Un sistema automatico basato su un alfabeto binario è: Facilmente implementabile su un supporto fisico Sostanze magnetiche con due opposte polarizzazioni Passaggio o meno di corrente Passaggio o meno di luce . . . . Piu’ economico Piu’ affidabile Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 39 Es. Codice binario di Morse: . A .- J .--- S ... B -... K -.- T - C -.-. L .-.. U ..- D -.. M -- V ...- E . N -. W .-- F ..-. O --- X -..- G --. P .--. Y -.-- H .... Q --.- Z --.. I .. R .-. Ambrosino - Noli - Perfetto • Codifica solo le lettere maiuscole • Il numero di simboli in successione non e’ fisso per ogni lettera Sistemi di Elaborazione A.A. 20152016 40 Sistema di numerazione decimale 1. E’ posizionale (unità, decine, centinaia) 2. E’ costituito da 10 cifre (base = 10) peso 504.31 = 5 • 102 + 0 • 101 + 4 • 100 + 3 • 10-1 + 1 • 10-2 Cifra più significativa Ambrosino - Noli - Perfetto valore intrinseco della cifra Cifra meno significativa Sistemi di Elaborazione A.A. 20152016 41 Notazione posizionale La notazione posizionale consente di scrivere un numero N di una certa base generica b come una sequenza di cifre. 504.31 = 5 • 102 + 0 • 101 + 4 • 100 + 3 • 10-1 + 1 • 10-2 Generalizzando, data una base b ed un insieme di b cifre: an-1 a n-2 a n-3 . . .a 2 a 1 a 0 . a -1 a -2 …. . . a-m-2 a m-2 am-1 a-m Valore decimale del numero N Ambrosino - Noli - Perfetto V(N) = n -1 åab i = -m i Sistemi di Elaborazione A.A. 20152016 i 0 £ ai £ b - 1 42 Sistemi posizionali Sistema Base Cifre binario 2 01 ottale 8 01234567 decimale 10 0123456789 esadecimale 16 0123456789 ABCDEF (208) 10=(11010000)2=(D0)16=(320)8 base Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 43 Sistema non posizionale Il sistema di numerazione romano non è posizionale: il valore associato a ciascun simbolo non dipende dalla sua posizione. Es: nei due numeri XII e XIX la seconda cifra, pur avendo la stessa posizione, assume due pesi diversi: XII = 10 + 1 + 1 XIX = 10 + 10 - 1 Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 44 Limiti della rappresentazione posizionale (I) Data un sistema di numerazione di base b qual è il massimo numero intero positivo rappresentabile in una sequenza di n cifre? Es. in 4 cifre il sistema decimale può rappresentare interi positivi da 0 a 9999, ovvero 104 valori diversi, ovvero b4 valori. Formalmente, il numero massimo Nmax rappresentabile con n cifre nella base b è: Nmax = Ambrosino - Noli - Perfetto n -1 å (b - 1) bi = bn - 1 i= 0 Sistemi di Elaborazione A.A. 20152016 45 Limiti della rappresentazione posizionale (II) Quante cifre sono invece necessarie per rappresentare un dato numero in una base? Basta invertire la relazione precedente: Ceiling: minimo intero superiore nmin = élogb ( N + 1)ù Es. in una sequenza di 16 cifre il sistema binario può rappresentare 216 = 65536 interi positivi che vanno da 0 a 65535; il numero minimo di cifre per rappresentare il numero 1000 è ceil(log2(1001)) = 10 Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 46 Il computer e l’informazione Il sistema posizionale binario permette la codifica dell’informazione numerica attraverso l’uso di solo due cifre. Con opportune convenzioni si possono rappresentare anche i numeri relativi interi e frazionari, i caratteri, le immagini ed i suoni. A causa della maggiore facilità implementativa ed affidabilità su un supporto fisico, i calcolatori digitali trattano solo informazione codificata in forma binaria. L’unità elementare d’informazione manipolata e memorizzata da un computer è detta bit (binary digit), e può assumere i valori 1 e 0. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 47 Alcune convenzioni byte sequenza di 8 bit (Es. 01001011) word da 16 a 64 bit a seconda dell’architettura; convenzionalmente 16bit longword convenzionalmente 32 bit Multiplo Sigla Kilo Mega Giga Tera Peta Exa k M G T P E Ambrosino - Noli - Perfetto Valore 210 220 230 240 250 260 Approssimazione = 1024 = 10242 = 10243 = 10244 = 10245 = 10246 Sistemi di Elaborazione A.A. 20152016 103 106 109 1012 1015 1018 48 Codifica dei numeri interi Nell’ aritmetica binaria vi sono 4 tecniche di organizzazione dei numeri interi con segno. 1. Modulo e segno; 2. Complemento alla base diminuita; 3. Complemento alla base; 4. Eccesso M (o bias); Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 49 Codifica dei numeri interi Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 50 Codifica dei numeri interi Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 51 Codifica dei numeri interi Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 52 Codifica dei numeri interi Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 53 Codifica dei numeri interi In pratica, il complemento a 2 si ottiene invertendo tutti i bit e aggiungendo 1. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 54 Codifica dei numeri razionali Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 55 Codifica dei numeri irrazionali Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 56 Codifica dei numeri irrazionali Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 57 Float, double, long double L’esempio precedente si riferisce a un numero di tipo float o singola precisione. Lo standard ANSI/IEEE754 definisce anche il numero di bit per ciascun campo per rappresentare numeri di tipo double (doppia precisione) e long double (quadrupla precisione). S (1 bit) E (8 bit) S (1 bit) E (11 bit) F (23 bit) F (52 bit) Float Double Long double S (1 bit) E (15 bit) Ambrosino - Noli - Perfetto F (112 bit) Sistemi di Elaborazione A.A. 20152016 58 Overflow e underflow Nelle operazioni fra floating point, possono verificarsi due condizioni di errore : •Overflow: in un qualsiasi passo l’esponente calcolato è superiore al massimo rappresentabile; può verificarsi quando si maneggiano numeri dal valore assoluto molto elevato. •Underflow: in un qualsiasi passo l’esponente calcolato è inferiore al minimo rappresentabile; può verificarsi quando si maneggiano numeri molto vicini allo “zero” della macchina. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 59 Propagazione degli errori I calcoli in virgola mobile vengono effettuati riportando i numeri allo stesso esponente, lavorando poi sulle mantisse e infine normalizzando il risultato. Tali procedure introducono un arrotondamento nei calcoli: la cifra meno significativa della mantissa sarà sempre affetta da un errore. Per minimizzare questo errore lo standard IEEE 754 prevede di memorizzare tutti i risultati intermedi di un’operazione in virgola mobile con due cifre aggiuntive dette di cifra di guardia e cifra di arrotondamento. In questo modo i calcoli in virgola mobile garantiscono una precisione inferiore a metà dell’unita sulla cifra meno significativa. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 60 Codifica dei caratteri Mentre per codificare numeri si usano tecniche basate sul loro valore, per codificare dei caratteri c’è bisogno di una relazione convenzionale, ovvero di una tabella che faccia corrispondere a una data sequenza di bit un dato carattere. Nel progettare tale tabella bisogna tener conto ovviamente anche di caratteri non direttamente stampabili, ma che rappresentino la formattazione del testo, come ad esempio il carriage return CR (“a capo”). Le tabelle “standard” oggi più usate sono quella cosiddetta ASCII e quella UNICODE Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 61 Codifica dei caratteri (II) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 62 Codifica dei caratteri (III) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 63 Il codice ASCII Lo standard internazionalmente adottato per la codifica dei caratteri è il codice ASCII, acronimo di American Standard Code for Information Interchange. Le caratteristiche del codice ASCII sono: •7 bit ovvero 128 caratteri da 0 a 127 •32 caratteri speciali non stampabili •Cifre del sistema decimale, maiuscole, minuscole, !”#$&’()*+,./@:;<=>? Etc. •Le lettere e le cifre conservano l’ordine alfabetico/numerico •La distanza fra maiuscole e minuscole è fissata Il codice viene spesso esteso a 8 bit per comprendere set di caratteri specifici di una certa area geografica, come è,Ç I primi 8 bit del codice UNICODE corrispondono a quelli dell’ASCII esteso. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 64 Il codice ASCII (II) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 65 Il codice UNICODE Per aumentare il numero di caratteri rappresentabili nel 1991 è stato introdotto il sistema di caratteri UNICODE, che utilizzando codici di 16 bit, consente di rappresentare fino a 65536 caratteri diversi (sufficienti per la maggior parte delle lingue del mondo). Trasmettere un testo in formato UNICODE comporta l’invio di una quantità doppia di dati, rispetto ad una codifica ASCII estesa. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 66 Il codice UCS Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 67 Il codice UCS (II) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 68 Esercizio Nell’alfabeto di Venere sono previsti 375 simboli; Quanti bit si devono utilizzare per rappresentarli tutti? L’esercizio richiede di trovare il numero di bit che sono necessari per codificare 375 informazioni diverse. Dobbiamo quindi applicare la formula: 2N >= M e ricavare N 2N >= 375 se N=9 Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 69 Esercizio (II) Quanti byte occupa la frase “biologia marina” se la si codifica utilizzando il codice ASCII esteso? 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 Quanti byte occupa la stessa frase scritta in codice UNICODE? Poichè ogni carattere in codice UNICODE occupa due byte avremo 15 caratteri --> 15 x 2 byte = 30 byte Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 70 Immagini (I) Non c’è un “quanto” naturale di informazione elementare come la cifra per i numeri o la lettera per i testi. Si introduce allora un reticolo di punti detti pixel Ad ogni pixel viene poi associato un certo numero di bit, che indica l’intensità luminosa di ciascun colore primario, ovvero della combinazione RGB RedGreenBlue . Una tipica codifica utilizza 8 bit per colore (=256 livelli di intensità) ovvero 24 bit/pixel. In questo modo si possono rappresentare 224 ~ 16 milioni di diverse tonalità di colore. Il numero di bit/pixel impiegati viene chiamato profondità di colore dell’immagine. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 71 Immagini (II) 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0001100001100110010000101001000110001001010000100110011000011000 3 zeri 2 uno 4 zeri 2 volte (2 uno 2 zeri) uno 4 zeri 1 0 1 2 zeri … Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 72 Immagini (III) 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 Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 73 Immagini (IV) 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 Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 74 Immagini (V) 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 Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 75 Immagini (VI) Colori e risoluzione • Il numero di pixel presenti sullo schermo (colonne x righe) prende il nome di risoluzione • Risoluzioni tipiche sono: 800 x 600 1024 x 768 1280 x 1024 Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 76 Immagini (VII) La dimensione di un’immagine con profondità di colore a 24 bit e risoluzione tipica di un monitor di PC (1024x768 pixels) è già di 2.25 MB. Per poter stampare immagini di qualità fotografica occorre una risoluzione decisamente superiore…. COMPRESSIONE dei dati Vari tipi di file, con diversi livelli di compressione, ad es.: TIFF: Tagged Image File Format GIF: Graphics Image Format (solo per immagini semplici) JPEG: (Joint Photographers Expert Group) molto usato per immagini fotografiche BMP: basso livello di compressione, immagini ingombranti. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 77 .bmp 3841 Kb .tiff 3842 Kb .jpeg 425 Kb Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 78 .jpeg 425 Kb Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 79 .bmp 3841 Kb Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 80 Immagini (IV) Un discorso a parte meritano le immagini vettoriali, usatissime nel campo della progettazione meccanica, architettonica, elettronica etc. L’immagine, piuttosto che in punti, è scomposta in forme geometriche astratte come poligoni, cerchi etc. Per descrivere una circonferenza bastano ad es. posizione del centro e raggio. Vantaggi: Svantaggi: •indipendenza dalla risoluzione del •non applicabile in modo semplice a dispositivo di visualizzazione/stampa fotografie e immagini complesse •dimensioni ridotte delle immagini Tipici formati vettoriali: PostScript, PDF (Portable Data Format) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 81 Immagine tridimensionale vista da diverse prospettive ottenuta con un programma di CAD Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 82 Suoni e filmati Le tecniche di compressione dei dati, unite a studi di psicoacustica hanno permesso di realizzare rappresentazioni di filmati e di sequenze audio di dimensioni accettabili, dell’ordine di qualche MB. Questo ha aperto la strada all’utilizzo della multimedialità nell’informatica. Tipici formati audio/video sono MP3, MPEG, AVI, RealAudio, RealVideo. Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 83 Rappresentazione di suoni • Caratteristiche dell’audio (e dei segnali analogici) tempo Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 84 Rappresentazione di suoni (2) • Campionamento dell’audio ad intervalli di tempo fissi tempo Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 85 Rappresentazione di suoni (3) • Campionamento dell’audio ad intervalli di tempo fissi tempo Ogni campione viene rappresentato con un numero finito di bit (quantizzazione) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 86 Rappresentazione di suoni (4) • L’accuratezza della ricostruzione dipende : • da quanto sono piccoli gli intervalli di campionamento • da quanti bit uso per descrivere il suono in ogni campione nella fase di quantizzazione • al solito … maggiore accuratezza significa maggior quantità di memoria occupata! • Anche per i suoni si possono utilizzare tecniche di compressione per migliorare l’occupazione di memoria della sequenza di campioni Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 87 Rappresentazione di suoni (5) • Algoritmi lossy per suoni : sfruttano il fatto che per l’orecchio umano suoni a basso volume sovrapposti ad altri di volume maggiore sono poco udibili e possono essere eliminati • è quello che accade nello standard MPEG Layer 3 , detto anche MP3 Esempi di formati sono: – WAV (Microsoft) – AIFF (Audio Interchange File Format, Apple) Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 88 Video non compresso (originale) Video compresso con tecnica intraframe Ambrosino - Noli - Perfetto Sistemi di Elaborazione A.A. 20152016 89