• Non ci sono risultati.

Informatica!! appunti dalla lezione del 09/10/2012!

N/A
N/A
Protected

Academic year: 2022

Condividi "Informatica!! appunti dalla lezione del 09/10/2012!"

Copied!
19
0
0

Testo completo

(1)

Informatica !!

appunti dalla lezione


del 09/10/2012!

(2)

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!

(3)

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)!

(4)

UTF-8!

Universal Character Set

Transformation Format – 8bit!

(5)

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.!

(6)

Un’immagine divisa in pixel!

(7)

Tabella RGB!

(8)

Grafica vettoriale: 


dai rudimenti ai risultati finali!

(9)

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…)!

(10)

frequenza!

ampiezza!

forma!

(11)

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)!

(12)
(13)

La compilazione:


dalla scrittura dei programmi al

codice binario!

(14)

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!

(15)

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 !

(16)

.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!

(17)

codice  sorgente  

…  

int  x  =  0;  

cout  <<  x;  

…  

prova.cpp  

Compilatore  C++  

codice  eseguibile  

…  

000101010101011 101010101111010  

…  

prova.exe  

(18)

La compilazione!

•  Il processo di compilazione consiste di 3 tipi diversi di analisi!

•  L’analisi lessicale controlla che siano usate parole corrette del linguaggio di programmazione (ad es.:

cout , int , ctou )!

•  L’analisi sintattica controlla che le istruzioni siano costruite in maniera corretta (ad es. int x = 0; , 


= 0 int x; )!

•  L’analisi semantica analizza il significato delle

istruzioni (ad es.: “x = x+5;” vuol dire “prendi x e

aggiornalo sommando 5”)!

(19)

Limiti della compilazione!

•  Il programmatore deve fare attenzione!

•  Il successo delle suddette tre analisi non è garanzia del buon funzionamento del

programma!

•  Un programma scritto correttamente in 
 C++ può non rispettare le specifiche

perché il programmatore ha scritto un codice che differisce da quanto ha

intenzione di realizzare!

Riferimenti

Documenti correlati

Si fa pure notare che il programma batch viene utilizzato allo stesso modo di un comando DOS non residente in memoria e come tale, per poter essere eseguito deve essere indicato

– Deve essere vera la prima volta che il ciclo

Per introdurre questa caratteristica nella funzione, utilizziamo un nuovo puntatore t a lelem su cui salviamo l’indirizzo della struct che deve essere eliminata, quindi, dopo

•  Nella progettazione di un algoritmo il programmatore inizia a porsi problemi relativi alla rappresentazione delle informazioni che deve essere efficiente (senza sprechi

• L'output HTML del programma deve contenere immagini, sia presistenti che generate dinamicamente dal programma stesso (le immagini generate dal programma dovranno essere in

Una volta che un programma è in forma eseguibile, può essere trasferito dal file in cui risiede (memoria secondaria) in memoria centrale ed essere

• Possiamo vedere una procedura come una parte di codice (programma) che può essere richiamato (eseguito) quando se ne ha bisogno scrivendone il nome.. Definire

• Il programma in esecuzione deve essere in memoria principale e quindi le informazioni devono essere trasferite dalla memoria secondaria a quella principale ogni volta che