Informatica !!
appunti dalla lezione
del 09/10/2012!
Il concetto di codifica!
• La codifica è una corrispondenza biunivoca tra entità di qualunque genere e numeri interi!
• Visto che il processore elabora numeri, tutto ciò che può essere descritto mediante tali
numeri può essere oggetto di elaborazione da parte del calcolatore:!
– testi!
– immagini!
– suoni!
Codifica di testi!
• Bisogna far corrispondere a ogni carattere un particolare numero!
• Esistono molte convenzioni a riguardo, tra cui ad esempio la tabella ASCII (American Standard Code for Information
Interchange), oggi inglobata nella più nuova codifica UTF-8 (vedi slide
seguente)!
UTF-8!
Universal Character Set
Transformation Format – 8bit!
Codifica di immagini!
• Nel far corrispondere a ogni immagine un numero, si può procedere in 2 modi diversi!
• Approccio “raster”: si divide l’immagine in elementi di dimensioni molto ridotte, caratterizzati da un unico colore (pixel: picture element), a ogni colore si
corrispondere una codifica (ad es. RGB: terna di valori numeri che indicano quanto rosso, quanto verde,
quando blu ci sia nel colore codificato). L’immagine diventa una sequenza di numeri che descrive i colori di ciascun pixel che la compone!
• Approccio “vettoriale”: l’immagine viene vista come un insieme di figure geometriche colorate. La codifica
avviene grazie alle formule matematiche che
descrivono le figure, e alla già menzionata codifica del colore.!
Un’immagine divisa in pixel!
Tabella RGB!
Grafica vettoriale:
dai rudimenti ai risultati finali!
Codifica di suoni!
• Sapendo che i suoni sono prodotti da onde che si muovono in un fluido (solitamente
aria), basta avere una descrizione
matematica di tali onde per avere una codifica!
• L’ampiezza dell’onda corrisponde all’intensità del suono (suono forte/suono debole)!
• La frequenza dell’onda all’altezza del suono (note alte/note basse)!
• La forma dell’onda al timbro del suono (voce/
pianoforte/motore/etc…)!
frequenza!
ampiezza!
forma!
Campionamento!
• Per avere una descrizione numerica dei valori
dell’onda dobbiamo campionarla, ossia registrare il
suo valore un certo numero di volte nell’unità di tempo!
• Il numero di campioni nell’unità di tempo prende il nome di frequenza di campionamento!
• Più è alta la frequenza di campionamento, migliore + la ricostruzione dell’onda originale, perché abbiamo a disposizione più campioni!
• Avere più campioni naturalmente vuol dire che la
descrizione dell’onda risulta più lunga (ad es. un file MP3 di una canzone diventa più grande se la canzone è camionata a frequenza più elevata)!
La compilazione:
dalla scrittura dei programmi al
codice binario!
Scrivere programmi!
• Scrivere programmi significa esprimere un algoritmo in un linguaggio comprensibile al calcolatore, ossia utilizzando un linguaggio di programmazione (ad es.: C++)!
• Un programma in C++, prima di essere eseguito dal calcolatore, deve essere compilato, ossia elaborato da un
compilatore!
Il compilatore!
• Il compilatore è anch’esso un programma in funzionamento nel calcolatore, ed ha lo scopo di tradurre programmi scritti in un linguaggio di programmazione in
eseguibili, ossia programmi scritti nel linguaggio macchina!
• Le istruzioni scritte in linguaggio macchina possono essere lette, decodificate, ed
eseguite direttamente dal processore !
.cpp e .exe!
• Il programma scritto in C++ prende si chiama anche codice sorgente, e il nome del file ha la tipica estesione .cpp (ad es.: prova.cpp)!
• Il codice sorgente viene compilato e, se tutto va bene, viene creato il corrispondente
codice eseguibile, con estensione .exe (ad es.: prova.exe)!
• Il codice eseguibile è pronto per essere
eseguito dal calcolatore!
codice sorgente
…
int x = 0;
cout << x;
…
prova.cpp
Compilatore C++
codice eseguibile
…
000101010101011 101010101111010
…
prova.exe