Corso di Informatica Scienza e Tecnologia per i Beni Culturali Scienze e Turismo Alpino a.a 2003/04 Prof. Nicola Olivetti Dip. Informatica Univ.Torino C.so Svizzera 185,Torino tel: 011/ home: sito del corso:
Obiettivi del corso Basi dell’informatica: l codifica dell’informazione l hardware: struttura di un computer l software: sistemi operativi l comunicazione tra computer, reti di computer (internet)
Obiettivi del corso (segue) Software applicativo di base per l videoscrittura l presentazioni l fogli elettronici l database l navigazione in internet l Esercitazioni in laboratorio
Testi per il corso Testi adottati: l L. Console, M. Ribaudo, Introduzione all'informatica, Torino Utet libreria, 1997 In alternativa: l D.Sciuto, G. Buonanno,W. Fornaciari, L. Mari. Introduzione ai sistemi informatici, Mc Graw Hill, 2002 Altri testi: l D. P. Curtin, K. Foley, K. Sen, C. Morin Informatica di base, Mc Graw Hill, 2002 l S. Grandi, E. Bonechi, Informatica Zero, Apogeo, l M. Calvo, F. Ciotti, Internet 2004, Laterza, 2004 l P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di Dati, McGraw- Hill, 1996
La codifica delle informazioni Lezione 1
Che cosa è un’informazione?
Aspetti dell’informazione Quando abbiamo a che fare con informazione di qualunque tipo distinguiamo: l contenuto (messaggio/significato) l rappresentazione (codifica/significante) l supporto materiale
Il numero dieci 10 (dieci nella numerazione araba) X (dieci nella numerazione romana) 10
Significato e significante PaneCane
Analogico versus digitale Omino perplesso
Analogico/digitale: una definizione Analogico: basato sulla similitudine tra la rappresentazione e l'informazione rappresentata Digitale: basato su una rappresentazione simbolica di informazioni discrete
Esempi l Orologio a lancette/ orologio a cifre l il disco di vinile/ il CD l La fotocamera tradizionale/quella digitale l il telefono tradizionale/ la linea ISDN
Codifica di informazioni (discrete) A = alfabeto = insieme finito di simboli = {a,b,c,…} stringa = sequenza finita di simboli di A esempio: “aabcedc” è una stringa di n = 7 simboli codifica: funzione che associa in modo 1-1 (iniettivo) una stringa su A ad ogni informazione informazioni A* = insieme di tutte le stringhe su A codifica
Esempio: codifica binaria A = {0,1} spenta accesa 0101 La lampadina è primavera estate autunno inverno Siamo in
Quante informazioni posso rappresentare con stringhe di lunghezza n su un alfabeto di k simboli? Esempio A = { } Quante sono le stringhe di lunghezza n se A ha k simboli? Data la stringa s = x 1 … x n-1 esistono k stringhe della forma x 1 … x n-1 y con y A
perciò se le stringhe di lunghezza n-1 sono m, allora quelle di lunghezza n sono m k. Facendo variare n: l n = 1 allora k l n = 2 allora k k … l n = 3 allora k k k in generale le stringhe di lunghezza n saranno: k … k (n volte) = k n In conclusione: con un alfabeto di k simboli posso rappresentare k n informazioni con stringhe di lunghezza n
Esercizio l L’alfabeto A = { } : quante informazioni posso codificare con stringhe di lunghezza 5? 4 5 = 1024
Rappresentazione delle informazioni all’interno dei computer l I computer usano una codifica binaria. l L’alfabeto e’ costituito da soli due simboli, indicati convenzionalmente con 0 e 1 l L’entità minima di informazione (0 e 1) prende il nome di bit (binary digit - cifra binaria). Mediante un bit possiamo rappresentare due informazioni
Le ragioni di questa scelta sono prevalentemente di tipo tecnologico, infatti i due simboli corrispondono a: l due stati di polarizzazione di una sostanza magnetizzabile; l i due stati di carica elettrica di una sostanza l al passaggio/non passaggio di corrente attraverso un cavo conduttore; l al passaggio/non passaggio di luce attraverso un cavo ottico l etc.…..
Unità di Misura: bit, Byte, … 1 bit = stringa su {0,1} di lunghezza unitaria 1 byte = stringa su {0,1} di lunghezza 8 1 KB = 2 10 = 1024 byte 1 MB = 2 20 =1024 Kbyte (un milione di byte circa) 1 GB = 2 30 =1024 Mbyte (un miliardo di byte circa) 1 TB = 2 40 =1024 Gbyte (mille miliardi di byte circa)
Codifica binaria Con una sequenza di n bit possiamo rappresentare 2 n informazioni Viceversa: se devo rappresentare k> 1 informazioni diverse, quanti bit sono necessari? Ho bisogno di un numero di bit n tale che 2 n k Questo numero è log 2 k
k log 2 k
Esercizio l Quanti bit sono necessari per codificare i giorni della settimana? E i giorni del mese? l I giorni della settimana sono 7: ho bisogno di 3 bit l I giorni del mese sono al massimo 31: ho bisogno di 5 bit
La codifica dei caratteri l Dobbiamo rappresentare le lettere dell’alfabeto {a,b,c, …A,B,C, %, &, (, ),…0,1,2,3,.,; ?+,-*,...} l L’insieme di simboli comunemente usati nell’alfabeto anglosassone, incluse le cifre numeriche, lettere maiuscole e minuscole, simboli di punteggiatura, parentesi e operatori aritmetici, può essere codificato usando 7 bit (2 7 = 128) l Il metodo di codifica più diffuso tra i produttori di hardware e di software prende il nome di codice ASCII (American Standard Code for Information Interchange)
La codifica dei caratteri: Il codice ASCII NUL SO FS SOH SI GS STX DLE RS ETX DC US EOT DC SP ENQ DC ! ACK DC " BEL NAK # BS SYN $ HT ETB % NL CAN & VT EM ' NP SUB ( CR ESC )
La codifica dei caratteri: Il codice ASCII * G : H , ; I < J = K / > L ? M A O B P C Q D R E S F T
La codifica dei caratteri: Il codice ASCII U c q V d r W e s X f t Y g u Z h v [ i w \ j x ] k y ^ l z _ m { ` n ¦ a o } b p ~ DEL
Il codice ASCII Sebbene 7 bit siano sufficienti per codificare l’insieme di caratteri di uso comune, il codice ASCII standard utilizza 8 bit, il primo dei quali è sempre 0 Codici ASCII con 1 iniziale sono utilizzati per codificare caratteri speciali, ma la codifica non è standard. Codifica della parola cane c a n e
Problema inverso: decodifica quale testo è codificato da una data sequenza? –si divide la sequenza in gruppi di otto bit (un byte); –si determina il carattere corrispondente ad ogni byte i l P o.
Osserva che: La decodifica è possibile (e facile) perchè i caratteri sono codificati con stringhe binarie di lunghezza costante
Altri formati l ECBDIC formato alternativo a 8 bit l UNICODE nuovo standard a 16 bit contiene simboli per la maggiorparte degli alfabeti esistenti (compreso arabo, giapponese, etc…) l MSWINDOWS codifica proprietaria della Microsoft simile a UNICODE
Esercizio l Un testo di 400 caratteri occupa 1600 bit, quanti caratteri ha l’alfabeto? l Ogni carattere occupa 1600/400 = 4 bit l con 4 bit posso codificare 2 4 = 16 caratteri
Codifica di un documento l Un documento può essere formattato: –i caratteri hanno una dimensione, uno stile, un font –il testo può essere giustificato, avere margini, tabulazioni, centrature, incolonnato etc. l Tutte queste caratteristiche possono venire codificate e memorizzate insieme al testo l formato solo-testo (text-only) rimuove tutte le informazioni di formattazione aggiuntive
Il codide ASCII codifica anche le cifre decimali l la codifica ASCII è troppo costosa in spazio: 24 = l non è possibile usare direttamente le codifiche ASCII per le operazioni aritmetiche: Esempio: Numero ASCII = e Rappresentazione dei numeri
l La numerazione decimale utilizza una notazione posizionale basata sul numero 10. La sequenza “234” rappresenta il numero 2 x x x 10 0 l La notazione posizionale può essere utilizzata in qualunque altro sistema di numerazione (con base diversa da 10)
Sistemi di numerazione Ogni numero può essere rappresentato in qualunque base B > 1 Fissata una base B > 1 c n c n-1 … c 1 c 0 dove ciascun c i < B, rappresenta il numero r = c n B n + c n-1 B n-1 +… + c 1 B 1 + c 0 B 0
Basi usate comunemente l Base decimale B = 10: cifre 0,1,2,3,4,5,6,7,8,9 l Base binaria B=2: cifre 0,1 l Base ottale B=8: cifre 0,1,2,3,4,5,6,7 l Base esadecimale B=16: cifre 0,1,…,9,A,B,C,D,E,F
Sistema di numerazione binaria Nel caso binario la sequenza c n c n-1 c n-2... c 1 c 0 (ogni “c i ” è la cifra “0” o la cifra “1”) rappresenterà il numero c n x 2 n + c n-1 x 2 n c 1 x c 0 x 2 0 La sequenza “1011” in base 2 denota il numero 1 x x x x 2 0 = 11 (in base 10) Per evitare ambiguità si usa la notazione = 11 10
Esempio: numerorappresentazione binaria
Metodo di conversione da base 10 a base 2 Dato k = c n x 2 n + c n-1 x 2 n c 1 x c 0 x 2 0 siano m il quoziente di k diviso 2 e r il resto, hai che m = c n x 2 n-1 + c n-1 x 2 n-2 + …+ c 1 x 2 0 r = c 0 k = 2m + c 0 c 0 {0,1} è l’ultimo bit (il meno significativo) ripeti il procedimento su m determinando in questo modo gli altri bit, fino a che m diventa 0
Esempio = 11 = 1 2 0 = = 1 = 0 = 2 = 5 2 + 1
Esercizio l Esercizio: convertire in binario il numero 37 l soluzione: = = 1 2 0
Conversioni decimale-ottale decimale-esadecimale Per le conversioni decimale-ottale, decimale- esadecimale, si usano esattamente gli stessi metodi: l = 9 x l 9 = 1 x l 1 = 0 x = verifico: 1x x x 8 0 = l = 4 x l 4 = 0 x = 4B 16 verifico: 4 x x 16 0 = 75 10
Conversioni binario-ottale Sono Facili! l Binario --> ottale raggruppiamo i bit in gruppi di 3 a partire da destra e convertiamo ciascuna tripletta in una cifra (< 8) Es: = = l ottale --> binario processo inverso: codifica in binario ogni cifra ottale con tre bit
Conversioni binario-esadecimale Altrettanto Facili! l Binario --> esadecimale raggruppiamo i bit in gruppi di 4 a partire da destra e convertiamo ciascuna quadrupla in una cifra (< 16) Es: = 7B 16 = l esadecimale --> binario processo inverso: codifica in binario ogni cifra esadecimale con quattro bit
Esercizio l Converti in ottale e in esadecimale il seguente numero binario: = 1452 ottale = 32A esadecimale = 810 decimale
Aritmetica binaria = 0 con riporto = 1 con riporto = 1 con riporto = 0 con riporto = 1 1 =
Esercizio l Calcola l risultato = = 32
Limiti della rappresentazione di numeri Consideriamo la base dieci: con 3 cifre decimali si possono rappresentare i numeri compresi tra 0 e 999, il numero successivo (1000) richiede una quarta cifra Se si vuole rappresentare 1000 con 3 cifre decimali si ha un problema di overflow, ossia si esce dal numero di cifre destinato alla rappresentazione, e si genera un errore perché il numero non può essere rappresentato
Poiché il numero 999 può essere scritto come (ossia ), possiamo enunciare la seguente regola: con N cifre decimali si possono rappresentare i numeri da 0 a 10 N -1 Consideriamo la base due: con tre cifre binarie si possono rappresentare i numeri compresi tra 0 e (ossia 8-1), possiamo enunciare la seguente regola: con N cifre binarie si possono rappresentare i numeri da 0 a 2 N -1
Overflow nelle operazioni =011 = ___ ______ = 100 = ___ ______ *** ERRORE: OVERFLOW *** (non può essere codificato con tre bit) Questo problema può essere osservato anche con la rappresentazione decimale = _____ 11 *** ERRORE: non basta una sola cifra
Standard per numeri interi l Numeri piccoli: 1byte <= 255 l Interi: 2-4byte <= 2 32 l Interi lunghi: 4-8byte <= 2 64
Rappresentazione di numeri razionali in virgola mobile (floating point) Rappresentazione di numeri razionali, esempio 12,5 Abbiamo che 12,5 = 125/10 = 125 * = 1250/100 = 1250 * possiamo quindi rappresentare 12,5 con la coppia (125, -1)
Si adotta una rappresentazione dei numeri razionali (con segno) del tipo segno mantissa base esponente
Rappresentazione di numeri grandi Esempio: supponiamo di avere a disposizione solo 2 byte di dover memorizzare (non si può: 2 16 ~ ) O si usano più byte o si sacrifica la precisione, adottando una rappresentazione in virgola mobile = (2.307 x ) = = (2.307 x 10 4 )
l Se siamo disposti a trascurare l'ultimo addendo (7.130), possiamo memorizzare il numero dedicando i primi 4 bit all'esponente (il 4 di 10 4 ) e i restanti 12 bit al moltiplicatore (mantissa) ESPONENTE MANTISSA 1° BYTE 2° BYTE
Codifica standard a 32 bit l 1 bit per il segno dell’esponente l 1 bit per il segno della mantissa l 8 bit per il valore assoluto dell’esponente l 22 bit per il valore assoluto della mantissa Uso di hardware specializzato per operazioni con floating point: coprocessore matematico
Esempio: rappresentazione dei razionali (con base 10) 0 -1x x x x Numeri Negativi rappresentabili Numeri Positivi rappresentabili
Esercizio l Supponi di avere –1 bit per segno mantissa –1 bit per segno esponente –2 bit per esponente e –8 bit per mantissa m l e i numeri siano scritti in base 10 come m* 10 e l quali sono il minimo e il massimo numero positivo e negativo rappresentabili? l osservare le lacune: i numeri compresi strettamente tra 25,5 e 26 non sono rappresentabili
Fissando il numero complessivo di bit si hanno due scelte: l Meno bit per l’esponente, più bit per la mantissa: –maggiore precisione –intervallo piccolo dei numeri rappresentabili (numeri densi) l Più bit per l’esponente, meno per la mantissa: –minore precisione, –intervallo grande dei numeri rappresentabili (numeri sparsi)