1.2d: La codifica Digitale dei caratteri
2 Bibliografia Curtin, 3.6 (vecchie edizioni) Curtin, 2.5 (nuova edizione) CR pag. 9-14 Questi lucidi
3 La codifica dei caratteri Un testo è rappresentato attraverso una successione di caratteri Ogni carattere viene scelto all interno di un insieme finito e piuttosto ristretto (almeno per le lingue basate sull'alfabeto latino) di simboli dell alfabeto della lingua Riapplichiamo il metodo di codifica generale (ad ogni oggetto da codificare corrisponde una successione di bit) Nel caso del semaforo, facevamo corrispondere Una combinazione diversa di 2 bit a ogni stato del semaforo Nel caso del testo, faremo corrispondere Una combinazione diversa di 8 bit a ogni simbolo da rappresentare
La codifica dei caratteri Costruiremo cioè una TABELLA DI CODIFICA DEI CARATTERI che associ caratteri alfanumerici a gruppi di 8 bit 4 Ad esempio: e così via 01000001 A 01000010 B 01000011 C 01000100 D
5 Perché 8 bit? La codifica dei caratteri Un testo è composto da 26 caratteri alfabetici 10 Simboli numerici Alcuni simboli di interpunzione Altri simboli (+ - & ^ ecc ) 26 caratteri alfabetici in maiuscolo (retaggio di quando non esistevano i word processor e veniva utilizzato un unico font) Alcuni segnali di comando ( Vai a capo, squilla il campanello, Ritorno di carrello, TAB, ecc.. anche questi ricordo di quando l unica unità di output era la telescrivente che bisognava comandare in alcune operazioni)
6 La codifica dei caratteri Con parole binarie lunghe 8 bit, è possibile rappresentare 256 alternative diverse (2 8 =256) da 00000000 a 11111111 passando per tutte le combinazioni intermedie (00000001, 00000010, ) 256 alternative sono sufficienti per codificare i simboli coinvolti in un testo.
Tavola ASCII La codifica di riferimento, utilizzata dalla maggior parte dei computer, è detta ASCII (si legge 'aski, American Standard Code for Information Interchange) Il codice ASCII era stato sviluppato originariamente per l'uso delle macchine telescriventi, e alcuni dei 32 caratteri di controllo risentono ancora di questa eredità. 7 I primi 32 numeri sono associati, anziché a caratteri alfanumerici, ai cosiddetti 'caratteri di controllo' (control characters), corrispondenti a istruzioni quali 'a capo', 'ritorno indietro' e simili
8 Tavola ASCII CODICE ASCII: Ad ogni lettera corrisponde un numero, dato dalla posizione della lettera nella tabella. Ad esempio: P corrisponde al numero 01010000. Quando viene ordinato alfabeticamente un testo, il computer segue l ordine dato dalla posizione dei caratteri nella tavola ASCII, per cui 1P precede P1 1P è dato dal numero 00110001 01010000, mentre P1 dal numero 01010000 00110001 e il primo è più piccolo del secondo).
9 Tavola ASCII
Esempio Il risultato? Una stringa di caratteri sarà rappresentata dal computer come una successione di gruppi di 8 bit O G G I P I O V E 01001111 01000111 01000111 01001001 00100000 01010000 01001001 01001111 01010110 01000101 Consideriamo il problema inverso: data una sequenza di bit, il testo che essa codifica può essere così ottenuto: Si divide la sequenza in gruppi di 8 bit 10 Si determina il carattere corrispondente ad ogni byte Esempio: 01101001 01101100 00100000 01010000 01101111 00101110 i l P o.
Una codifica per i numeri Il Codice ASCII presenta un valore per ognuno dei 10 simboli che corrispondono alle cifre decimali. Esercizio: 0 48 10 ; 2 50 10 ; 3 51 10 ; 4 52 10 ; Il numero 324 viene così rappresentato dalla sequenza di 3 bytes: 00110011 00110010 00110100 51 10 50 10 52 10 Questa rappresentazione non è efficiente (Utilizza molti più bits di quanto sia necessario) Non è adatta per eseguire le operazioni aritmetiche sui numeri 11 Per i numeri si utilizza una codifica diversa dalla ASCII.
12 Tavola ASCII estesa (ISO Latin1 a 8 bit) La codifica ASCII originaria faceva corrispondere ad ogni carattere una parola binaria di 7 bits (ciò permetteva di codificare 128 caratteri diversi) La codifica attualmente usata fa corrispondere ad ogni carattere una parola binaria di 8 bits (ciò permette di codificare 256 caratteri diversi) ed è denominata ISO Latin 1. ISO indica l'approvazione da parte dell'international Standardization Organization e 'Latin 1' indica che si tratta della tabella di riferimento per gli alfabeti di tipo latino.
13 Tavola ASCII estesa (ISO Latin1 a 8 bit)
14 ASCII Estesa (usata da Windows)
15 Esercizi Scrivete le seguenti frasi usando solo i codici ASCII e ISO Latin 1. ç è un simbolo sulla tastiera. Erdös è stato un importante matematico. 5+9=14. a b
Tavola UNICODE a 16 bits 16 Pur avendo a disposizione 256 caratteri, il codice ISO Latin 1 non può essere veramente 'universale Proprio per questo motivo, è stato avviato un progetto estremamente ambizioso: definire una tavola di codifica basata su 16 bit, che consentono 65.536 diverse combinazioni di '0' e '1 lunghe 16, e permettono dunque di codificare oltre 65.000 caratteri. Questa tavola si chiama Unicode, comprende finora (versione 2.0) 38.885 caratteri, e rappresenta uno sforzo di sistematizzazione non solo dal punto di vista informatico, ma anche da quello linguistico.
17 Testi non formattati Un testo non formattato è memorizzato come sequenza di caratteri (spazi e ritorni a capo compresi) Ogni carattere è rappresentato con un codice numerico Il codice più diffuso è il codice ASCII, in cui ad ogni carattere è associato un numero compreso tra 0 e 255 Un codice emergente è l UNICODE che consente di rappresentare testi scritti in altri alfabeti (quello arabo) o in ideogrammi (ad esempio il cinese)
18 Testi formattati Un testo formattato viene invece memorizzato in modo non standard, a seconda del programma con cui è stato scritto (ad esempio Word) Esistono dei formati standard di diffusione dei testi (i più usati sono PostScript e PDF) utilizzati per la pubblicazione di articoli su Internet Un altro formato per testi e ipertesti è HTML, usato per scrivere le pagine web
19 Word Processor Un word processor è un programma per la composizione, la gestione e l impaginazione dei testi Il testo viene trattato a livello di parola (da cui il termine word processor), ma anche a livello superiore (paragrafo, sezione, ecc.) ed inferiore (singolo carattere)