Informatica Docente : Jeremy Sproston Orario: Gruppo 1: (gli studenti i cui cognomi iniziano con la lettera A fino alla lettera L (inclusi)) Lunedì ore 14 – 16 Martedì ore 14 – 15 Gruppo 2: (gli studenti i cui cognomi iniziano con la lettera M (inclusi) fino alla lettera Z) Martedì ore 15 – 16 Mercoledì ore 14 – 16 Web:
Codifica dei suoni Fisicamente un suono è rappresentato come un’onda che descrive la variazione della pressione dell’aria nel tempo (onda sonora) Sull’asse delle ascisse viene rappresentato il tempo e sull’asse delle ordinate viene rappresentata la variazione di pressione corrispondente al suono stesso
Codifica dei suoni Si effettuano dei campionamenti sull’onda (cioè si misura il valore dell’onda a intervalli costanti di tempo) e si codificano in forma digitale le informazione estratte Quanto più frequentemente il valore di intensità dell’onda viene campionato, tanto più precisa sarà la sua rappresentazione
Codifica dei suoni La sequenza dei valori numerici ottenuta dai campioni può essere facilmente codificata con sequenze di bit
Codifica dei suoni (esempio) Se volessimo codificare la musica di qualità CD dovremmo: –Usare due registrazioni corrispodenti a due microfoni distinti –Campionare il segnale musicale producendo campioni al secondo –Per ogni campione (che è un numero) si usano 16 bit –Per cui, il numero di bit che sarebbero necessari per codificare ogni secondo è pari a 2 x campioni x 16 bit/campione = bit
Codifica dei suoni Codifiche standard –WAV (MS-Windows) –MIDI –MP3 MIDI –Codifica le note e gli strumenti che devono eseguirle –Efficiente, ma solo musica, non voce MP3 –MPEG-3: variante MPEG per suoni –Grande diffusione, molto efficiente
Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da “0” a “9” fornendo in questo modo una rappresentazione dei numeri Per esempio: il numero 324 potrebbe essere rappresentato dalla sequenza di byte: Ma questa rappresentazione non è efficiente e soprattutto non è adatta per eseguire le operazioni aritmetiche sui numeri
Codifica dei numeri (il sistema decimale) La rappresentazione dei numeri con il sistema decimale può essere utilizzata come spunto per definire un metodo di codifica dei numeri all’interno degli elaboratori –Esempio: la sequenza di cifre 324 viene interpretato come: 3 centinaia + 2 decine + 4 unità 324 = 3 x x x = 3 x x x 10 0
Codifica dei numeri (il sistema decimale) In generale la sequenza c n c n-1 c n-2 … c 1 c 0 (ogni “c i ” è una cifra compresa tra “0” e “9”) viene interpretata come: c 0 x (c 0 unità) c 1 x (c 1 decine) c 2 x (c 2 centinaia) … c n-1 x 10 n-1 + c n x 10 n La cifra meno siginificativa La cifra più siginificativa
Codifica dei numeri (il sistema binario) La numerazione decimale quindi utilizza una notazione posizionale basata sul numero 10 La notazione posizionale può essere utilizzata in qualunque altro sistema di numerazione (con base diversa di 10) Nel sistema di numerazione binario i numeri vengono codificati utilizzando le due cifre “0” e “1”
Codifica dei numeri (il sistema binario) In analogia con il caso decimale 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 0 x c 1 x c 2 x … + c n-1 x 2 n-1 + c n x 2 n La cifra meno siginificativa La cifra meno siginificativa La cifra più siginificativa
Codifica dei numeri (il sistema binario) Esempio: la sequenza “1011” denota il numero 1 x x x x 2 3 = 11 (in base 10) Per evitare ambiguità si usa la notazione = 11 10
Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo c m c m-1 c m-2 … c 1 c 0 (le “c i ” sono cifre binarie) Per convertire un numero in base dieci nel corrispondente in base due si devono trovare i resti delle divisioni successive del numero per due
Conversione dalla base 10 alla base 2 Esempio: il numero 6 10 : 6/2 = 3 resto 0 3/2 = 1 resto 1 1/2 = 0 resto 1 Leggendo i resti dal basso verso l’alto (in quanto si ottengono a partire dalla cifra meno significativa, l’unità), si ha che rappresentazione binaria del numero 6 10 è 110 2
Conversione dalla base 10 alla base 2 Perchè = 6 10 ? 6/2 = 3 resto 00 x /2 = 1 resto 11 x /2 = 0 resto 11 x 2 2 = 6
Conversione dalla base 10 alla base 2 Esempio: il numero : 345/2 = 172 resto 1 172/2 = 86 resto 0 86/2 = 43 resto 0 43/2 = 21 resto 1 21/2 = 10 resto 1 10/2 = 5 resto 0 5/2 = 2 resto 1 2/2 = 1 resto 0 1/2 = 0 resto 1 Leggendo i resti dal basso verso l’alto (in quanto si ottengono a partire dalla cifra meno significativa, l’unità), si ha che rappresentazione binaria del numero è
Conversione dalla base 2 alla base 10 Sia c m c m-1 c m-2 … c 1 c 0 un numero rappresentato in base 2, usiamo: c 0 x c 1 x c 2 x … + c m-1 x 2 m-1 + c m x 2 m = N Esempio: x x x x x x x x x 2 8 = = 345
Altri basi: ottale, esadecimale Sistema ottale –Utilizza una notazione posizionale basata su otto cifre (0,1,…,7) e sulle potenze di 8 –Esempio: = 1 x x x 8 0 = 67 Sistema esadecimale –Utilizza una notazione posizionale basata su sedici cifre (0,1,…,9,A,B,C,D,E,F) e sulle potenze di 16 –Esempio: = 1 x x x 16 0 = 259 –Esempio: AC4 16 = 10 x x x 16 0 = 2756
Operazioni su numeri binari Addizione: = 0 con riporto = 1 con riporto = 1 con riporto = 0 con riporto 1 Esempi: = = = =
Overflow (il sistema decimale) Consideriamo la base dieci: con tre cifre decimali si possono rappresentare i numeri compresi tra 0 e 999 –Il numero successivo (1000) richiede una quarta cifra che non abbiamo –In questo caso si dice che si ha un problema di overflow; si genera un errore perché il numero 1000 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
Overflow (il sistema decimale) Esempio: alla rappresentazione decimale si possono applicare le operazioni aritmetiche Vogliamo usare solo tre cifre decimale – = 483 – = 104 – = 57 – = 1100 – = 1483 – = 1000 Tre cifre sono sufficiente Tre cifre non sono sufficiente: overflow
Overflow (il sistema binario) 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 (il sistema binario) Esempio di overflow nel sistema binario dovuto a operazioni aritmetiche: –5 + 4 = 9 (in sistema decimale) –abbiamo usato solo un cifre decimale per il risulto Ricordiamo: 5 10 = 101 2,4 10 = Errore: overflow (non può essere codificato 9 10 = con tre bit) = (in sistema binario) Errore: overflow (non può essere codificato 910 = con tre bit)Errore: overflow (non può essere codificato 910 = con tre bit)
Rappresentazione dei numeri In realtà, una semplice codifica binaria come quella discussa fino ad ora non è sufficiente, per due motivi: –numeri negativi –numeri con la virgola Per questi numeri vengono utilizzate delle rappresentazioni differenti
Strutturazione logica dei dati: i file Informazione più complesse possono essere composte a partire da informazioni elementari Esempio di una banca (Console e Ribaudo) –Supponiamo di voler mantenere all’interno di un computer tutte le informazioni riguardanti i clienti –Per ogni cliente dovremo registrare Il cognome Il nome L’indirizzo Il numero di conto La disponibilità sul conto La foto
Strutturazione logica dei dati: i file I dati riguardanti ciascun cliente devono essere raggruppati, mentre i dati riguardanti clienti diversi devono essere mantenuti separati tra di loro Le informazioni devono essere organizzate in modo tale che il loro reperimento e il loro uso risultino semplici È necessario introdurre dei meccanismi per la strutturazione dei dati, costruendo strutture di codifica delle informazioni composte
Strutturazione logica dei dati: i file Per l’esempio della banca –Tutte le imformazioni riguardanti un cliente possono essere viste come un blocco le cui componenti possono eventualmente essere analizzate independentemente
File, record e campi Un file è un meccanismo di strutturazione delle informazioni che permette di aggregare informazioni elementari in strutture più complessse Un file può essere definito introducendo i concetti di campo e record
File, record e campi Un campo è costituito da un insieme di byte –Serve per codificare una singola informazione che può essere: numerico alfabetica o alfanumerico un’immagine o un suono Un record è constituito da un insieme di campi logicamente correlati tra di loro (quindi è un insieme di byte) Un file è costituito da una sequenza di record
Un campo è costituito da un insieme di byte Un record è constituito da un insieme di campi logicamente correlati tra di loro –quindi è un insieme di byte Un file è costituito da una sequenza di record –quindi è un insieme di byte … campo record file
File, record e campi Nell’esempio della banca le informazioni relative ad un singolo cliente possono essere viste come un record i cui campi sono: –Un campo alfabetico per il nome –Un campo alfabetico per il cognome –Un campo alfanumerico per l’indirizzo –Un campo numerico per il numero del conto –Un campo numerico per la disponibilità sul conto –Un campo immagine per la foto Le informazioni riguardanti la banca possono essere viste come un file costituito da un insieme di record, uno per ogni cliente
File, record e campi La definizione di file appena data è la più generale possibile In realtà, si possono distinguere due diversi tipi di file: –file strutturati che sono effettivamente sequenze di record –file di testo in cui l’informazione è semplicamente una sequenza di caratteri (sequenza di byte) Si può pensare che il record coincida con il singolo carattere e non sia quindi possibile suddividerlo ulteriormente in campi Nel seguito concentreremo sul primo tipo di file
File, record e campi Un aspetto importante riguarda la lungezza dei record Vi sono due possibilità: –file con record a lunghezza costante –file con record a lunghezza variabile
Record a lunghezza costante Solo per comodità, possiamo rappresentare graficamente un file con record a lunghezza costante come una tabella …………… ,89MassimilianoRossiVia Milano ,14CristinaBianchiCorso Venezia ,67ElenaRossiVia Milano ,90AdaBoVia Po 1 …………… Per definire un file con record a lunghezza costante occorre precisare il numero di byte destinati a ciascun campo
Record a lunghezza costante La scelta di avere file con record a lunghezza costante presenta due svantaggi: –è difficile stimare a priori la dimensione di ciascun campo –nella maggior parte dei casi, l’informazione che deve essere memorizzata all’interno di un campo occupa meno spazio di quello a disposizione L’alternativa alla stabilire a priori le dimensioni dei campi è quella di avere campi a dimensione variabile
Record a lunghezza variabile , ,14 13, ,90 Massimiliano Cristina Elena Ada Rossi Bo BianchiCorso Venezia 1 Via Po 1 Via Milano 151 Nel caso di campi a dimensione variabile sorge tuttavia il problema di separare le informazioni tra di loro
Struttura fisica di un file Sebbene abbiamo usato una struttura a tabella per discrevere logicamente le infoirmazioni contenute in un file è importante notare che un file è una struttura lineare record1 record2 record 3 … Questo è anche il modo in cui un file viene memorizzato fisicamente nella memoria di un elaboratore
Struttura fisica di un file Nel caso di campi, e quindi di record con dimensione variabili, è necessario introdurre dei caratteri speciali per separare le varie informazioni –Per esempio, “&” per separare i record e “#” per separare i campi …& #513,89#Massimiliano#Rossi#Via Milano 151&271564#7000,14#Cristina#Bianchi#Corso Venezia 1&… I separatori “&” e “#” non sono necessari nel caso di file con campi a dimensioni costanti
Struttura fisica di un file Un altro aspetto fondamentale riguarda il problema del riparimento delle informazioni I dati che vengono memorizzati in un file devono poter essere letti e modificati I principali metodi di accesso sono –accesso sequenziale –accesso diretto –accesso con chiave