Informatica • Non è la scienza dei calcolatori • “scienza della rappresentazione e della elaborazione dell’informazione” • Il termine scienza indica un tipo di trattamento dell’informazione rigoroso, oggettivo e riproducibile • Il giornalismo è indubbiamente legato all’informazione, ma non è scienza AA 2010/11 19 Informatica di base Introduzione Definizione ACM (Association for Computing Machinery) • L’informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto efficienza, realizzazione e applicazione AA 2010/11 20 Informatica di base Introduzione Algoritmo • Una sequenza di passi definiti con precisione che portano all’esecuzione di un compito • esempi: • Somma di due numeri a molte cifre • Istruzioni per il bancomat • Ricette di cucina AA 2010/11 21 Informatica di base Introduzione Informatica e calcolatori • Problema: addizione di due numeri: • Elaborare un algoritmo astratto • Scrivere un programma in ‘C’ che esegua la somma • Compilare ed eseguire il programma su un PC • Cercare la calcolatrice in Windows Xp • Imparare ad utilizzare un programma già pronto AA 2010/11 22 Informatica di base Introduzione Informazione e Dati • • • • • • Numeri Documenti di testo Immagini Suoni Filmati Documenti ipertestuali AA 2010/11 23 Informatica di base Introduzione Memorizzazione Codifica • Ogni dato deve essere codificato per essere memorizzato • Anche il software è codificato e memorizzato • Programmi sorgenti • programmi scritti in linguaggio comprensibile da noi • Librerie • pezzi di programmi che svolgono compiti particolari e predefiniti • spesso dovete installarle per utilizzare programmi già fatti • Eseguibili • programmi direttamente interpretabili dal processore AA 2010/11 24 Informatica di base Introduzione Memorizzazione • Si usano unità di memoria con 2 possibili stati: • Cifre [0] e [1] • Magnetizzazione ↑ oppure ↓ • Carica + oppure – • La natura del segnale dipende dal dispositivo fisico • Dal punto di vista logico il mezzo fisico non ha importanza AA 2010/11 25 Informatica di base Introduzione Da analogico a digitale • Analogico • Segnale che può assumere infiniti valori con continuità • Digitale • Dal latino “digitus” (dito) o inglese “digit” (cifra) • segnale che può assumere solo valori discreti • Alla base c’è la coppia di valori [0] e [1] • Segnali più complessi si ottengono per combinazione di parecchie unità binarie AA 2010/11 26 Informatica di base Introduzione Bit e Sequenze di Bit • Con un bit: si possono rappresentare 2 informazioni (o “stati” diversi • • • • 1 e 0 (rappresentazione convenzionale del valore dei bit) vero e falso bianco e nero acceso e spento • Con sequenze di bit: si possono rappresentare più informazioni • 2 bit: 4 configurazioni possibili (00, 01, 10, 11) • 3 bit: 8 configurazioni (000, 001, 010, 011, 100, 101, 110, 111) ... • 8 bit (1 Byte): 28 configurazioni ... • N bit: 2N configurazioni -> possiamo rappresentare 2N “cose” diverse AA 2010/11 27 Informatica di base Introduzione Codifica dell’Informazione • Processo di associazione di informazioni a sequenze di bit • È una convenzione ma deve essere intesa allo stesso modo tra chi deve condividere l’informazione • chi scrive e chi legge • Esempio: come rappresentare numeri, testi, immagini, suoni • “Formato”: modo con cui un’informazione viene rappresentata in bit AA 2010/11 28 Informatica di base Introduzione Quanti Bit per M Informazioni? • Con x bit si rappresentano 2x informazioni (“cose”) • Determinare x (numero bit) tale che 2x ≥ M • Es. x = 6 per M = 50 • Infatti 25 = 32 (troppo pochi!) • Mentre 26 = 64 • Per l’alfabeto anglosassone • • • • 26 lettere Æ M = 26 x tale che 2x≥26 x=5 Es. 00000 = a, 00001= b, 00010 = c, AA 2010/11 Informatica di base Introduzione 29 Codifica dei Numeri • I numeri sono sempre gli stessi, cambia solo il modo di scriverli.... Notazione “additiva” XVIII 18 Notazione “posizionale” 10010 AA 2010/11 30 Informatica di base Introduzione Notazione posizionale • Quando scriviamo un numero, ad esempio 239, intendiamo dire: • 2 centinaia PIU’ • 3 decine PIU’ • 9 unità • A seconda della posizione, una cifra specifica cose diverse • BASE: se usiamo 10 cifre (0-9) allora la base è 10 • BASE: se usiamo 2 cifre (0-1) allora la base è 2 • INDIPENDENTEMENTE dalla base utilizzata, i numeri sono sempre gli stessi, cambia la rappresentazione! AA 2010/11 31 Informatica di base Introduzione Numeri Decimali (“base 10”) cn cn-1 .... c2 c1 c0 c0x100 + c1x101 + c2x102 +…+ cnx10n dove i ci (le cifre) possono andare da zero a nove (e sono dieci in tutto - “base 10”) con N cifre riesco a rappresentare i 10N numeri da 0 a 10N-1 • Esempio 2042 = 2 x 103 + 0 x 102 + 4 x 101 + 2 x 100 AA 2010/11 32 Informatica di base Introduzione I Numeri in un Computer • La rappresentazione dei numeri in un computer deve essere la più efficiente possibile, in modo da ottimizzare la velocità di calcolo • Il modo in cui gli “umani” fanno calcoli, incolonnando i numeri uno sotto l’altro potrebbe essere utile.. • ... ma un computer mette a disposizione solo due cifre, lo zero e l’uno... e quindi: AA 2010/11 33 Informatica di base Introduzione Numeri Binari cn cn-1 .... c2 c1 c0 c0x20 + c1x21 + c2x22 +…+ cnx2n dove i ci possono andare da zero a uno (e quindi sono due in tutto - “base 2”) con N cifre riesco a rappresentare i 2N numeri da 0 a 2N-1 E’ possibile cambiare il modo di scrivere il tutto, convertendo da una “base” all’altra AA 2010/11 34 Informatica di base Introduzione Conversione da Binario a Decimale • Es. la sequenza binaria 1101 rappresenta il numero: 1*23 + 1*22 + 0*21 + 1*20 = 1*8 + 1*4 + 0*2 + 1*1 = 8+4+1=13 (in base 10) • Generalmente si indica: 11012 = 1310 AA 2010/11 35 Informatica di base Introduzione Conversione da Decimale a Binario • Partendo da un numero decimale, costruisco il numero binario da destra a sinistra • • • • divido il numero per 2: il resto è la cifra c0 divido il risultato per 2: il resto è la cifra c1 divido il risultato per 2: il resto è la cifra c2 divido il risultato per 2: il resto è la cifra c3 • e così via: mi fermo quando il risultato della divisione è 0 (eventualmente con resto 1) • • • • 13 / 2 = 6 resto 1 6 / 2 = 3 resto 0 3 / 2 = 1 resto 1 1 / 2 = 0 resto 1 • Quindi 1310 Æ 11012 • c0 è la cifra più a destra, c1 la penultima, e così via! AA 2010/11 36 Informatica di base Introduzione Conversione da decimale a binario (altro esempio) • Conversione di 2910 29/2 = 14 R = 1 (c0) (....1) 14/2 = 7 R = 0 (c1) (...01) 7/2 = 3 R = 1 (c2) (..101) 3/2 = 1 R = 1 (c3) (.1101) 1/2 = 0 R = 1 (c4) (11101) • 111012 AA 2010/11 37 Informatica di base Introduzione Che numero è? • A quale numero decimale corrisponde il numero binario 11001 • 1 x 20 + 0 x 21 + 0 x 22 + 1 x 23 + 1 x 24 = • 1 + 0 + 0 + 8 + 16 = 25! AA 2010/11 38 Informatica di base Introduzione Che numero è? • Qual è la rappresentazione binaria del numero decimale 24? • 24 : 2 = 12 resto 0 (....0) • 12 : 2 = 6 resto 0 (...00) • 6 : 2 = 3 resto 0 (..000) • 3 : 2 = 1 resto 1 (.1000) • 1 : 2 = 0 resto 1 (11000) --> stop! • 11000 AA 2010/11 39 Informatica di base Introduzione Da decimale a binario AA 2010/11 40 Informatica di base Introduzione Codifica dell’informazione • L’informazione è codificata in formato binario • la specifica codifica –associazione tra i dati e le stringhe binarie- dipende dalle applicazioni • stringa = sequenza di caratteri alfanumerici • L’unità minima (0/1) prende il nome di bit • Dati e programmi sono memorizzati in unità chiamate Byte • Un byte è a sua volta costituito da 8 bit • simboli base: le cifre binarie • unità minima di informazione digitale AA 2010/11 41 Informatica di base Introduzione Codifica dell’informazione Byte 1 0 0 1 0 1 1 1 bit Il significato della stringa di bit dipende dalla codifica •se letto come intero “unsigned”, è il valore 151 •se letto come intero “Complemento a 2”, è il valore -105 AA 2010/11 42 Informatica di base Introduzione Codifica dell’informazione • 151 è il valore decimale corrispondente al valore binario 1 0 0 1 0 1 1 1 • Perché il byte 151 corrisponde all’intero –105 nella codifica 2C? • perché nella codifica 2C il bit più significativo è il bit di segno (1: -, 0: +) • Una volta stabilito che il numero è negativo, il valore si ottiene togliendo 28 dal numero letto come positivo: 151-28 = 151-256 = -105 AA 2010/11 43 Informatica di base Introduzione Rappresentazione dei numeri Interi Positivi: 10010111=27+24+22+21+20= =128+16+4+2+1=151 Negativi: esistono varie rappresentazioni 2C(complemento a 2) Per cambiare segno ad un numero, si nega il numero (scambiare 0 con 1 e viceversa) e si somma 1 (se <0 il primo bit è sempre 1) AA 2010/11 44 Informatica di base Introduzione Numeri interi [-128,127] • • • • • • • • • • • • 01111111 ……. 00000011 00000010 00000001 00000000 11111111 11111110 11111101 11111100 ………. 10000000 AA 2010/11 = 127 = = = = = = = = 3 2 1 0 -1 -2 -3 -4 = -128 45 Informatica di base Introduzione Non solo numeri Consideriamo il byte: 0 1 1 0 0 0 1 0 •Può essere il numero 98 •Oppure la lettera “b” AA 2010/11 46 Informatica di base Introduzione Codifica dell’informazione • Codice testuale • ASCII: codice a 7 bit • rappresenta le 26 lettere maiuscole e minuscole dell’alfabeto inglese, le 10 cifre, segni di interpunzione per un totale di 120 simboli distinti circa • esteso a 8 bit per includere lettere accentate e altri segni • Unicode: codice a 16 bit che rappresenta anche i simboli di altri alfabeti e delle lingue orientali • 65536 simboli distinti (I primi 128 sono quelli ASCII) • comunque insufficiente • lingue non alfabetiche AA 2010/11 Informatica di base Introduzione 47 Caratteri ASCII (american standard code for information) dec. 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 testo spazio AA 2010/11 ! “ # $ % & ' ( ) * + , . / dec. 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 testo 0 1 2 3 4 5 6 7 8 9 : ; < = > ? dec. 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 testo @ A B C D E F G H I J K L M N O dec. 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 48 testo P Q R S T U V W X Y Z [ \ ] ^ _ dec. 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 testo ` a b c d e f g h i j k l m n o dec. 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 testo p q r s t u v w x y z { | } ~ canc. Informatica di base Introduzione Codifica dell’informazione • Le applicazioni possono salvare i dati su file in formati differenti • compatibilità verso altre analoghe applicazioni • Formato: insieme delle regole che specificano come codificare le informazioni e le istruzioni per il loro uso e/o per la loro rappresentazione • può essere pubblico o proprietario AA 2010/11 49 Informatica di base Introduzione Codifica dell’informazione • Due classi di formato • testo: l’informazione è rappresentata come sequenza di caratteri alfanumerici opportunamente codificati • binario: l’informazione è rappresentata come sequenze binarie il cui significato può essere quello numerico o altro a seconda della codifica adottata dall’applicazione AA 2010/11 50 Informatica di base Introduzione Codifica dell’informazione • Codice binario • sequenze di 32 (64) bit interpretate come istruzioni macchina (es. file con suffisso .exe), istruzioni di formattazione, o numeri • dipende dalle applicazioni • sequenze di lunghezza arbitraria in funzione della codifica adottata • comprensibile solo ai programmi che conoscono il codice AA 2010/11 Informatica di base Introduzione 51 Formato dei numeri • Interi • Positivi • Unsigned char • Short • Int 1 Byte 2 Byte 4 Byte 0-255 0-65536 0-(232-1) 1 Byte 2 Byte 4 Byte -128,127 -32768,32767 -231,(231-1) • Con segno • Char • Short • Int • razionali (floating point) AA 2010/11 52 Informatica di base Introduzione Formato dei numeri Razionali (floating point) • 3,14159… = 3,14159 x 100 • 1937,26 = 1,93726 x 103 • 0,0005162 = 5,162 x 10-4 • 6,2x1023 • Servono 2 numeri: uno per la mantissa ed uno per l’esponente. AA 2010/11 53 Informatica di base Introduzione Numeri floating point Data la mantissa m e l’esponente e n=mx2e avendo scelto la base=2 1 8 23 32 bit segno esponente mantissa 64 bit 1 AA 2010/11 11 52 54 Informatica di base Introduzione Codifica dell’informazione • Il formato non dipende dalla semantica delle informazioni in un file (e viceversa) • es: numeri in formato testo • (a) Il numero 155 è codificato come stringa di 3 caratteri • es: numeri in formato binario • (b) Il numero 155 è codificato dalla sequenza di bit corrispondente al suo valore binario • si noti che (a) richiede 3 byte (se si usa la codifica ASCII) mentre (b) 1 byte AA 2010/11 55 Informatica di base Introduzione Altri tipi di dato • Immagini • Campionamento spaziale e memorizzazione come sequenza di numeri • Valori di intensità luminosa • Musica • Campionamento temporale • Valori di Intensità e frequenza delle vibrazioni • Filmati • Serie di fotogrammi • Differenze fra un fotogramma ed il successivo AA 2010/11 56 Informatica di base Introduzione Codifica dell’informazione • Il formato è interpretato dal programma con cui si accede al file • capisce le istruzioni • capisce la codifica dei dati • È specificato dal suffisso nel nome del file • .exe, .txt, .rtf, .html, .xml, .pdf, .ps, .ppt, .doc, .xls, .c, .gif, .jpg, .mp3, ecc. • Il sistema operativo manda in esecuzione il programma corrispondente in base al suffisso AA 2010/11 57 Informatica di base Introduzione Formati di file AA 2010/11 58 Informatica di base Introduzione Codifica dell’informazione • Il formato dei file è fondamentale per la condivisione delle informazioni • Massima portabilità: formato testo • nei documenti salvati come testo, si può perdere la formattazione • non si può operare sui valori numerici • minimo ingombro • facile l’analisi di stringhe • leggibile da qualunque applicazione • spedibile direttamente via mail, senza bisogno di allegati (attachment) AA 2010/11 59 Informatica di base Introduzione Codifica dell’informazione • formato testo: è alla base di molti altri formati • le informazioni contenute sono interpretate come particolari istruzioni dalle applicazioni (ad es. un file .html per un browser) • esempi: .ps, .html, .c, .java, …. • usano tutti una codifica testuale • è possibile visualizzarne il contenuto usando un semplice editor di testo (es. Wordpad) AA 2010/11 60 Informatica di base Introduzione Codifica dell’informazione • esempio: un frammento di un file .html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0055)http://homes.dsi.unimi.it/prog/turno2/lab/progetti.html --> <!-- saved from url=(0060)http://homes.dsi.unimi.it/prog/turnoSerale/lab/progetti.html --> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> AA 2010/11 61 Informatica di base Introduzione Codifica dell’informazione • La scelta del formato deve tener conto dell’impiego del file • sulla rete: codifica “leggera” • per elaborazione locale: binaria • per scambio: testo AA 2010/11 62 Informatica di base Introduzione Codifica dell’informazione • Esercizi • • • • • AA 2010/11 apriamo un file .exe con un editor di testo apriamo un file .rtf con un editor di testo apriamo un file .pdf con un editor di testo apriamo un file .ppt con un editor di testo proviamo a fare le stesse operazioni usando Word 63 Informatica di base Introduzione DIAGRAMMI DI FLUSSO