Sei sulla pagina 1di 35

INTRO INFORMATICA E CALCOLATORI

INFORMATICA
Trattamento automatico dell'informazione. 
Come nasce l'informatica? nasce perché l'uomo si vuole appoggiare alla macchina per
fare delle cose che tendenzialmente non è molto bravo. L’uomo costruisce delle
macchine per elaborare informazioni?
Disciplina che si occupa dello studio dei sistemi per l’elaborazione automatica
dell’informazione
In inglese non c’è una parola esatta per informatica, si parla di Computer Science.

Oggi diciamo informatica, una maniera meno cool di dire ICT (Information and
communication Technology) on Information technology.
Entrano in questo termine una gran varietà di sistemi di telecomunicazioni e oggetti
(computer, smartphone, scanner, tablet…).
informazione + elaborazione + trasmissione = comunicazione

Elaborazione automatica perché? 


Le prime macchine sono create per supportare il calcolo numerico. Poi vediamo tutte le
forme che ci sono oggi, che aiutano alla nostra limitata capacità mentale, memoria
limitata… Dalla semplice macchina per il calcolo siamo arrivati a sistemi che oggi
conosciamo. Di fondo tutto parte dell'architettura del calcolo.
Benefici rispetto all’elaborazione umana dell’informazione:
 si riducono o tempi di elaborazione
 si aumenta l’affidabilità
 si evitano elaborazioni “noiose”
 si diffondono elaborazioni “difficili”

Possiamo distinguere tra dato, informazione e conoscenza.


 Dato: cosa perceptible. insieme di simboli tracciati su un supporto fisico, che
può essere letto. Esempio: 3 8 temperatura corporea? numero di scarpe? età?...
un dato non comporta alcun vantaggio se non è messo in relazione con la
proprietà a cui si riferisce trasformandosi quindi in informazione.  i dati sono
espressi con simboli, apparentemente ad un certo “alfabeto” insieme di simboli;
secondo un codice, un formalismo coerente di rappresentazione.
 Informazione: dato messo in relazione con l'aspetto della realtà a cui si riferisce.
relazione con la semantica, con il significato. 
 Conoscenza: regole che consentono di trarre vantaggio dall’informazione.
collegare informazioni, creando una rete di informazioni.

1
Compiere ragionamenti = prendere decisioni basate sulla conoscenza. 
Approccio alla risoluzione dei problemi basato sulla conoscenza:
 determinare l’ammontare minimo di informazioni che serve per prendere
una decisione nella maniera migliore possibile
 l’acquisizione di informazione in genere infatti è un processo costoso in
termini di tempo

INFORMAZIONE
L'informazione è legata ai dati. Una stessa informazione può essere codificata con
simboli e modalità diverse (1963, MCMLXIII, millenovecentosessantatre) 
L’informazione può essere di vario genere e secondo il suo genere e la sua semantica
viene trattata di un modo preciso.
I simboli con cui sui computer rappresentiamo l'informazione sono i simboli binari, i
simboli convenzionali. Bit = binary digit, cifra binaria. Nei calcolatori ogni
informazione viene rappresentata mediante sequenze di bit (che sono due simboli: 0 e
1). Perché si parla di bit? i motivi sono di natura tecnologica: 
 Le memorie sono fisicamente costituite da elementi atomici "bistabili"?¿ (celle
di memoria). tutte le rappresentazioni digitali occupano uno spazio che viene
misurato in termini di quanti simboli si vogliono per rappresentare quella
informazione.
Nelle memorie dei computer noi sappiamo quali sono i simboli usati per
riscrivere l’informazione, e sono due: 0 e 1. Possono corrispondere a diversi stati
di polarizzazione positiva o negativa se la tecnologia è una tecnologia
magnetica, oppure ai supporti di memoria di tecnologia ottica (0 può
corrispondere alla presenza di un buco è l’1 all’assenza di buco).
Dispositivo bistabile = capace di assumere due solo configurazioni alternative
Diversi stati di polarizzazione di supporti magnetici
Diversi stati di corrente in supporti elettrici
Passaggio / non passaggio di luce in supporti ottici.

QUANTI POSSIBILI VALORI DI DATI POSSO RAPPRESENTARE SU n


DISPOSITIVI BISTABILI? (è cioè con N bit?)
Quante possibili configurazioni posso avere in una memoria? Immagina un documento
excel con una cella, quante possibilità ci sono? Due: cella con il numero 0 o cella con il
numero 1. Una memoria fatta di due celle, quali sono le possibili configurazioni? 00, 01,
10, 11. Sono quattro valori diversi.
Quante più celle di memoria, maggior variabilità dell'informazione. Regola matematica:
2 elevant a N. N és el numero di bit. Esempio: 8 bit, té 256 possibilitats (2 elevat a 8 es
256).

2
PREFISSI PER I MULTIPLI BINARI
Kilo 2 elevat a 10
Mega 2 elevat a 20
Giga 2 elevat a 30
Tera elevat a 40
Peta a 50
Exa a 60
Zetta a 70
Yotta a 80

ELABORAZIONE DELL’INFORMAZIONE
Che cosa vuole dire?  comincia con l'introduzione di un dato di ingresso. ha un processo
di trasformazione e di elaborazione che produce i risultati in uscita che dopo vengono
trasformati per essere rappresentati all’utente.
Questa operazione di trasformazione prende il nome di codifica. e poi, nella inversa,
quando il risultato dell'elaborazione fatto della macchina si deve riproporre al utilizzatto
della macchina stessa viene un passaggio di decodifica. Esempio: registrazione vocale
di whatsapp, l'informazione viene trasformata in segnale elettronico, trasformata in
digitale e poi si viene presentata sullo schermo decodificata in forma di carattere.
Quale sono le operazioni di elaborazione? possono essere di vario tipo.
Qualsiasi attività condotta sull’informazione stessa: creazione, modifica (anche
eliminazione), confronto, conservazione (comunicazione a distanza nel tempo),
trasmissione (comunicazione a distanza nello spazio).
Ogni elaborazione si può ricondurre a questo schema:
 codifica dell’informazione (simboli su un supporto fisico)
 trasformazione fisica sul supporto (generazione di nuove sequenze di simboli)
 decodifica delle nuove sequenze di simboli.
Il processo di elaborazione (trasformazione dell’informazione) è stabilito dall’uomo, dal
programmatore, lui concepisce il processo di elaborazione e lo spiega alla macchina
creando i programmi. il programmatore decide quello che la macchina deve fare, lo
esprime in un linguaggio comprensibile per la macchina, un linguaggio di
programmazione.
Noi decidiamo qual è questo flusso elaborativo che prende il nome di algoritmo
(concetto che viene dall'astronomo e matematico persiano Al-Khwarizmi che nel IX sec
scrisse un trattato sul calcolo). è un processo di elaborazione dell'informazione che porta
alla risoluzione di un certo problema.

3
Quali sono i linguaggi che utilizza il programmatore per dire alla macchina quello che
deve fare? Java, C++, Swift, R, Python… linguaggio non ambiguo comprensibile alla
macchina.

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI


Possiamo distinguere tipi di sistemi di elaborazione delle informazioni:
 Manuali: forniscono una docifica dei dati, ma affidano completamente all’uomo
l’esecuzione delle trasformazioni fisiche su di essi. Esempio: sistema di calcolo
carta e penna.
  Automatici rigidi: sono in grado di operare specifiche trasformazioni fisiche sui
dati, ma richiedono continue indicazioni da parte dell’uomo che deve specificare
di volta in volta la trasformazione da compiere. Esempio: calcolatrice
  Automatici flessibili: sono in grado di operare un insieme di trasformazioni
fisiche dei dati in accordo ad una descrizione fornita dall’uomo in un linguaggio
di programmazione. Esempio: calcolatore

ALCUNE TAPPE STORICHE DEI SISTEMI DI ELABORAZIONE


DIGITUS
Digitus = dito
Il primo strumento adottato dall’uomo per la rappresentazione dell’informazione
numerica. Alla base della diffusione del sistema di numerazione decimale, abbiamo
dieci diti.
Proprio per questo digitus = digit = cifra

ABACO
Prima apparizione in Cina, 2000 a.C. sistema di calcolo manuale basato su
rappresentazione numerica posizionale. 
Telaio con una serie di guide parallele lungo ciascuna delle quali potevano essere
spostati dei sassolini.
Calculus = sassolino = calcolo. 
Ogni guida corrisponde ad un ordine peso diverso (unità, decine, centinaia...).
Con l’abaco cominciamo a dare forma a un sistema numerico posizionale: decina,
centinaia, unità… comincia qui. Ogni cifra ha un peso che dipende della sua posizione,
per questo il nome, sistema posizionale.

REGOLO CALCOLATORE

4
Inghilterra, XVII. William Oughtred. Strumento di calcolo analogico per calcolare fino
ad elevamenti a potenza, logaritmi e funzioni trigonometriche. Per secoli fu lo
strumento più utilizzato in ingegneria (in uso fino agli anni ‘70).
Strumento analogico grazie al quale possiamo sapere i risultati di determinate
operazioni

LA PASCALINA
Francia, XVII. Blaise Pascal – filosofo e matematico francese. Calcolatrice meccanica
in grado di eseguire addizioni basata su dispositivi a ruote dentate.

MACCHINA DI LEIBNITZ
Germania, XVII secolo. Gottfried Wilhelm Von Leibnitz - filosofo e matematico
tedesco «Stepped Reckoner». Calcolatrice meccanica a manovella in grado di eseguire
le quattro operazioni aritmetiche.

L’ANALYTICAL ENGINE
Inghilterra, XIX. Charles Babbage – filosofo e matematico inglese, il padre del
calcolatore. Primo tentativo di calcolatore «programmabile» dotato di una «memoria»
Macchina in grado di operare input e output su schede perforate come quelle impiegate
a quel tempo per programmare i telai. Proprio con riferimento ai telai tessili, il
dispositivo di calcolo venne chiamato «Mill» (opificio) e la memoria nella quale
immagazzinare i dati e i risultati «Store» (magazzino).
Ada King, contessa di Lovelace. Prima programmatrice della storia. Scrisse un
programma per l’analytical engine per consentire di calcolare la sequenza di Bernoulli.

MACCHINA DI TURING
1936. Modello teorico fondamentale basato su quello di automa a stati finiti. Usato per
approfondire il concetto stesso di algoritmo e raggiungere risultati teorici sulla
calcolabilità.

Z3
Germania, Seconda Guerra Mondiale – anni ’30. Konrad Zuse primo prototipo di
calcolatore basato su relé elettromagnetici. Interruttori elettrici la cui apertura e chiusura
è controllata tramite un altro circuito elettrico.

COLOSSUS
Londra, Seconda Guerra Mondiale – anni ‘40. Tommy Flowers, ingegnere. Primo
calcolatore completamente elettronico basato su valvole termoioniche (o «tubi a
vuoto»). Acquisiva input da un nastro perforato.

5
ENIAC
Pennsylvania, Seconda Guerra Mondiale – anni ‘40. Jhon Mauchly & John Eckert
Electronic Numerical Integrator and Computer. Basato su valvole termoioniche, pesava
30 tonnellate. La sua programmazione impiegava 6 persone che dovevano operare
collegando vari cavi e usando vari interruttori – non era basata su programma
memorizzato
 Per superarne i limiti, nacque EDVAC con l’aiuto di Von Neumann. Electronic
Discrete Variabile Automatic Computer.

SECONDA METÀ ‘900


Avanzamenti sconvolgenti in campo elettronico.
Anni ‘50: i transistor sostituiscono le valvole termoioniche (meno costosi, più piccoli,
più veloci, più affidabili).
Anni ‘60: circuiti integrati - microchip e microprocessori (calcolatori ancora più
piccoli).
Anni ‘80: avvento del personal computer.

ARCHITETTURA DEL CALCOLATORE


COMPUTER
Un computer è un apparecchio elettronico progettato per eseguire autonomamente e
velocemente attività diverse. Come tutte le macchine, non ha nessuna capacità
decisionale o discrezionale, ma si limita a compiere determinate azioni secondo
procedure prestabilite.
Il computer è una macchina che in maniera automatica esegue operazioni “elementari”
ad altissima velocità. L’altissima velocità di elaborazione ( ad esempio: milioni di
istruzioni per secondo) fa sì che operazioni complicate (espresse mediante un gran
numero di operazioni semplici) siano eseguite in tempi ragionevoli per l’ambiente
esterno.

ALGORITMO
Un algoritmo è una sequenza finita di passi elaborativi elementari che consente di
risolvere un problema. In altri termini, un algoritmo è una sequenza di operazioni che
bisogna compiere per arrivare all’output desiderato (“soluzione al problema”) a partire
dagli input
Informalmente, un algoritmo è il lavoro da far svolgere ad un esecutore.

6
Per usare un computer bisogna non solo progettare preliminarmente un algoritmo, ma
anche provvedere ad impartirglielo in una “forma” che gli risulti comprensibile. QUesta
“forma” è il cosiddetto programma.
L’esecuzione di un algoritmo da parte di un esecutore si traduce in una successione di
azioni che vengono da esso effettuate nel tempo.

PROGRAMMA, PROCESSORE, PROCESSO


Programma: La descrizione di un algoritmo in un linguaggio comprensibile ad un
calcolatore
Processore: L’esecutore di un algoritmo
Processo: Il lavoro svolto eseguendo l’algoritmo, ovvero. Il programma in esecuzione.
Uno stesso algoritmo può evocare processi diversi ad ogni esecuzione. A seconda delle
condizioni in cui il lavoro viene svolto, si possono verificare comportamenti diversi da
parte dell’esecutore.

MODELLO DI ESECUTORE
Uno stesso elaboratore può eseguire diversi programmi e quindi risolvere diversi
problemi “macchina polifunzionale” (general purpose”).
Un elaboratore opera su una rappresentazione (ottenuta mediante opportuna codifica)
del valore dell’informazione. Tali rappresentazioni del valore sono contenute in registri
di memoria, o semplicemente “registri”. Un registro è atto a memorizzare, secondo
apposite convenzioni, un numero finito di valori distinti di un’informazione.
L’elaboratore numerico, eseguendo un programma, opera sulle rappresentazioni dei
valori delle informazioni e le trasforma in rappresentazioni dei risultati. Le operazioni
avvengono sui dati contenuti nei registri. Le istruzioni del programma in esecuzione
sono contenute anch'esse in registri.

IL MODELLO DI VON NEUMANN


Modello architetturale di riferimento dei tradizionali computer. Proposto nel 1945 da
Von Neumann, matematico di origine ingherese, dozza dell’EDVAC a cui lavorarono
anche Mauchly ed Eckert.
Si basa sul concetto di “programma memorizzato”. La macchina immagazzina nella
propria memoria i dati su cui lavorare e le istruzioni per il suo funzionamento.
Unità di Ingresso: per l'acquisizione dei dati e dei programmi e per il loro trasferimento
in memoria.
Unità di Memoria: per la registrazione sia dei dati che delle istruzioni del programma
Unità di controllo: preside a tutte le operazioni svolte dall’elaboratore. Interpreta le
istruzioni prelevate dalla memoria e ne guida l’esecuzione inviando apposti segnali alle
altre unità.
7
Unità Aritmetico-Logica (ALU): dedicata alla esecuzione delle operazioni aritmetiche e
logiche.
Unità di Uscita: per il trasferimento all’esterno dei risultati presenti in memoria.

Memorie: Insiemi di registri. Le entità preposte alla memorizzazione dei dati


(contenitori di dati)
CPU: Central Processor Unit. COstituita da unità di controllo, ALU e alcuni registri.
Dispositivi di input/output (periferiche)

MEMORIE
Possono essere viste come un insieme di “registri”. Contenitori fisici, di dimensioni
finite e fissate, a cui si può far riferimento tramite un “indirizzo di memoria”.
L’indirizzo di memoria rappresenta la posizione occupata dal registro nell’insieme.
La dimensione di un registro si misura in numero di bit. Memorie con registri di otto bit
sono dette “a byte” o “a caratteri”; con più di otto bit (solitamente 16 o 32) vengono
invece dette “a word”. La capacità di una memoria di misura in multipli del byte.

Ogni bit è memorizzato tramite un dispositivo capace di assumere due sole condizioni
(“bistabile”)
 Memorie di tipo elettronico: circuito detto flip-flop che mostra un valore di
tensione o uguale a 5 Volt o a 0 Volt.
 Memorie di tipo magnetico: sorta di calamita polarizzata o positivamente o
negativamente.
 Memorie di tipo ottico: superficie con o senza buco (a seconda dei casi, viene
riflesso diversamente il raggio laser che la colpisce).
In ogni caso il dispositivo di lettura deve essere in grado di riconoscere lo stato del bit
memorizzato. Ad esempio: valore 1 se tensione a 5 volto/polo positivo/assenza di buco.
Valore o se tensione a volto/polo negativo/presenza di buco.

OPERAZIONE SULLA MEMORIA


Load: Operazione di lettura. Si preleva l'informazione contenuta nel registro senza però
distruggerla.
Store: Operazione di scrittura, SI inserisce una informazione nel registro eliminando
quella precedente.
La memoria è un sistema che assolve al compito di conservare il dato depositandolo in
un registro, nel caso di operazione di scrittura, e di fornire il dato conservato in un
registro, in caso di lettura.
Per comprendere il funzionamento di un registro di memoria, si può pensare ad esso
come ad una lavagna, il cui eso può essere così esemplificato: Si possono leggere le
8
informazioni dalla lavagna a patto che vi siano state scritte in precedenza; la lettura non
cancella quanto scritto: la scrittura di nuove informazioni obbliga a cancellare quelle
precedenti, che pertanto vengono perse.

TIPI DI MEMORIE
Classificazione in base alla tecnica di accesso (semplificazione):
 Memoria ad accesso casuale: RAM (Random Access Memory). Il tempo di
accesso in lettura/scrittura è indipendente dalla posizione del registro nella
memoria.
 Memoria ad accesso sequenziale: prima di poter leggere una cella è necessario
leggere o attraversare quelle che la precedono (come avviene ad esempio nei
nastri magnetici). Il tempo di accesso in lettura/scrittura è dunque dipendente
dalla posizione del registro nella memoria (ed è in media più lungo se comprato
alla precedente tipologia di accesso).
Classificazione in base alle operazioni effettuabili:
 Memorie a sola lettura: ROM (Read Only Memory). COncepite per la sola
lettura delle informazioni. Usate quando si desidera che alcune istruzioni o dati
non siano mai alterati o persi con sovrascritture.
 Memorie a lettura/scrittura: esempio, memoria centrale, memoria di massa… 
Classificazione in base alla persistenza dei dati:
 Memorie volatili: tecnologie elettroniche. Perdono le informazioni in esse
registrate al cessare dell’alimentazione.
 Memorie permanenti: tipicamente in tecnologia di tipo magnetico o ottico. Le
ROM e le memorie di massa sono di questo tipo.

TIPI DI MEMORIE NEL COMPUTER


Memoria RAM: Memoria volatile o memoria di lavoro. In essa vengono conservati i
dati in corso di elaborazione e le istruzioni del programma in esecuzione. Tutti i dati
necessari durante l’esecuzione di un programma.
Memoria ROM: il contenuto della ROM è indipendente dall’alimentazione del
computer e le informazioni in esse contenute sono permanenti. La ROM è necessaria in
quanto in essa risiedono informazioni vitali per la fase di bootstrap (partenza) del
computer.
Disco rigido, memoria permanente.

MEMORIE DI MASSA
Memorie ausiliarie permanenti caratterizzate da una elevata capacità. Le informazioni
contenute nella memoria di massa devono essere dapprima trasferite nella memoria
centrale e successivamente elaborate.

9
Le informazioni prodotte dalla CPU (Central Processor Unit), viceversa, devono essere
depositate in memoria centrale per poi essere conservate nelle memorie di massa.
Le memorie di massa hanno tempi di accesso maggiori dovuti alle tecnologie impiegate
per realizzarle. Per ovviare alla differenza di velocità tra i due dispositivi si impiegano
tecniche che prevedono che la memoria centrale contenga anche aree di accumulo dei
dati in transito verso tutti i dispositivi esterni (buffer).
Esempi:
 A lettura/scrittura: Hard disk (uno o più dischi magnetici rotanti ad alta velocità,
dotati di testine di lettura e scrittura), Memorie flash (tecnologia elettronica non
volatile, piccole dimensioni e bassi consumi).
 A sola lettura: tecnologia ottica, CD-ROM, DVD-ROM.

UNITÀ DI INGRESSO E DI USCITA


Unità di ingresso (input): Tutti i dispositivi che consentono di inviare dati (e/o comandi)
all'elaboratore dall’esterno. Esempio: tastiera, mouse, scanner, tavolette grafiche, ....
Unità di uscita (output): Tutti i dispositivi che consentono di inviare dati e/o comandi
dall'elaboratore all’esterno. Esempio: display, monitor, stampanti, plotter,
Le unità di ingresso e di uscita sono anche dette ”periferiche”.
Alcuni dispositivi possono essere sia di ingresso che di uscita (“ingresso/uscita”).
Esempio: touchscreen.

INTERFACCIAMENTO CON LE PERIFERICHE: LE PORTE


Ogni periferica è controllata tramite una opportuna “interfaccia”. Tale interfaccia è
realizzata tramite una scheda di circuiti inserita nel “case” (involucro rigido) del
calcolatore.
Il collegamento dell’interfaccia al dispositivo avviene attraverso le porte di input/output
predisposte sulla scheda stessa ed accessibili dall’esterno del case. Esempi di porte:
porte USB, telefono, parallela, video…

LA CPU
CU – Control Unit. Gestisce il ciclo operativo del processore
 ALU – Arithmetical Logic Unit. Esegue operazioni aritmetiche, di confronto o bitwise.
Sui dati prelevati dalla memoria centrale o dai registri interni
Registri interni: Sono dei registri di memoria di appoggio per le operazioni della CPU
che hanno tempi di accesso inferiori a quelli dei registri della memoria centrale.

CONTROL UNIT

10
È preposta all'interpretazione delle singole istruzioni e all’attivazione di tutti i
meccanismi necessari per eseguire le singole istruzioni. In particolare la CU ha il
compito di prelevare ogni istruzione dalla memoria centrale (“fetch”), decodificarla,
prelevare i dati dalla memoria se servono all’istruzione (“operand assemby”), eseguire
l’istruzione (“execute”).
Per esempio: se l'istruzione prelevata è di tipo aritmetico e richiede due operandi, la CU
predispone dapprima il prelievo dalla memoria di tali operandi, attiva poi l'ALU perché
esegua l'operazione desiderata, ed infine deposita il risultato di nuovo in memoria. Al
termine dell'esecuzione di una istruzione la CU procede al prelievo dalla memoria della
successiva istruzione secondo un ordine rigidamente sequenziale. L’esecuzione di una
istruzione può avere inizio solo se la precedente è stata portata a termine.

I BUS
Canali di comunicazione condivisi. Sono fisicamente costituiti da uno o più fili su cui
possono transitare uno o più bit contemporaneamente. A seconda delle informazioni
trasportate si distinguono:
 Bus dati (data bus)
 Bus indirizzi (address bus)
 Bus comandi o di controllo (command o control bus)

CONTROL BUS
Il control bus serve alla CU per indicare ai dispositivi cosa essi devono fare. Tipici
segnali del control bus sono quelli di «read» e «write» mediante i quali la CU indica ai
dispositivi rispettivamente se devono leggere un dato dal data bus (comando “read”) o
scriverlo su di esso (comando “write”). Il data bus permette ai dati di fluire da CPU a
registro di memoria selezionato per operazioni di store e viceversa per quelle di load.

ADDRESS BUS
L’address bus serve alla CU per comunicare l'indirizzo del dispositivo interessato da
una operazione di lettura o scrittura anche i dispositivi di input / output hanno un
indirizzo, alla stessa stregua dei registri di memoria. Tutti i componenti del sistema
(memoria, input, output, memoria di massa, etc.) devono essere dotati della capacità di
riconoscere sull’address bus il proprio indirizzo. In altri termini, attraverso l’address bus
la CU effettua la selezione del dispositivo a cui sono rivolti i comandi e i dati.

DATA BUS
Il data bus permette ai dati di fluire dalla CPU al registro di memoria selezionato, per
operazioni di store viceversa, per quelle di load. 
La CU controlla anche il flusso di informazioni con il mondo esterno abilitando il
transito delle informazioni dalla memoria verso le risorse di output e viceversa da quelle
di input.

11
RIEPILOGO (BUS)
La CPU è l’unico elemento che fornisce l’indirizzo all’address bus. 
Memorie e dispositivi di input ed output devono ascoltare l’address bus per attivarsi
quando su di esso compare il proprio indirizzo identificativo. Nel caso della memoria,
l’attivazione avviene quando viene riconosciuto l’indirizzo corrispondente ad uno dei
registri di cui essa è composta.
Il dispositivo attivato deve interpretare i segnali del control bus per eseguire i comandi
della CU. Le memorie prelevano dati dal data bus o immettono dati in esso in funzione
del comando impartito dalla CU; i dispositivi di input possono solo immettere dati sul
data bus; i dispositivi di output possono solo prelevare dati dal data bus.

BUS SERIALI E PARALLELI


Bus seriale: costituito da un solo filo; su di esso i bit transitano uno dietro l’altro.
Bus parallelo: costituito da n fili; su di esso transitano n bit alla volta.
L’address bus e il data bus sono paralleli. Le loro dimensioni caratterizzano i sistemi di
calcolo (cfr. parallelismo e capacità di indirizzamento).
Il numero di bit dell’address bus indica la capacità di indirizzamento della CPU, ossia la
sua capacità di gestire la dimensione della memoria centrale e il numero di dispositivi di
input ed output; un address bus ad n bit consente di selezionare un registro tra 2 alla n.
La dimensione del data bus condiziona la velocità di scambio delle informazioni tra i
diversi dispositivi. Con m fili solo m bit possono viaggiare contemporaneamente. Il
numero di bit che viaggiano contemporaneamente è detto “parallelismo” ed è un
parametro che caratterizza il processore in quanto pari alla dimensione dei registri
interni della CPU atti a contenere i dati.

IL CLOCK
Orologio interno che scandisce i ritmi di lavoro. Sincronizza le attività di tutti i
dispositivi. Il clock è un segnale periodico di periodo fisso un’onda quadra
caratterizzata da un periodo T (detto ciclo) una frequenza f (f=1/T) misurata in Hertz
(Hz). Esempio: un clock da 10 cicli al secondo ha la frequenza f = 10 Hz e il periodo T=
100ms.
 La frequenza dei clock moderni spazia dai MHz ai GHz 1 MHz corrisponde a un
milione di battiti al secondo 1 GHz corrisponde a un miliardo di battiti al secondo.

FREQUENZA DI CLOCK E VELOCITÀ DI ELABORAZIONE


La velocità di elaborazione di una CPU dipende dalla frequenza del suo clock; più
accelerato è il battito del clock maggiore è la velocità di esecuzione.

12
Frequenza di clock = numero di operazioni elementari eseguite nell’unità di tempo dalla
CPU. Con un clock a 3 GHz si intende per convenzione che il processore è in grado di
eseguire 3 miliardi di operazioni elementari al secondo.
In realtà l’esecuzione di una operazione elementare può richiedere più cicli di clock sia
per la complessità delle operazioni che per la lentezza dei dispositivi collegati alla CPU.

ISTRUZIONE IN LINGUAGGIO MACCHINA


Le istruzioni sono operazioni semplici: trasferimento dati da un registro ad un altro (da
memoria a memoria, da memoria a registri della CPU o viceversa, da memoria a output,
da input a memoria) e operazioni aritmetiche o logiche eseguite dall’ALU.
Concettualmente è una quadrupla: i = (Cop, Pdi, Pdo, Pis). In cui:
 Cop è il codice operativo, ossia il codice che indica alla UC della CPU
l’operazione da compiere; l’insieme dei Cop prendere il nome di repertorio di
istruzioni e dipende dalla specifica CPU.
 Pdi sono i puntatori ai dati di ingresso che servono per svolgere l’operazione
Cop detti anche di input; esistono istruzioni che non hanno operandi di input.
 Pdo sono i puntatori ai dati di uscita prodotti dall’operazione Cop detti anche di
output; esistono istruzioni che non hanno operandi di output.
 Pis è il puntatore alla prossima istruzione da svolgere al termine dell’esecuzione
di quella corrente.

FIRMWARE
Nei microprocessori, ad ogni istruzione corrisponde una sequenza di microistruzioni
conservate in una memoria interna alla UC. La sequenza di microistruzioni ha il
compito di generare le abilitazioni necessarie alla attuazione delle istruzioni. L’insieme
dei micro-programmi composti dalle microistruzioni memorizzate nella memoria
interna alla UC prende il nome di firmware.

HARDWARE, FIRMWARE E SOFTWARE


Hardware: L’insieme dei componenti meccanici, elettrici ed elettronici di un
calcolatore.
Software: L’insieme dei programmi nella memoria del calcolatore. Ogni programma è
fatto da istruzioni. L’esecuzione delle istruzioni è gestita come descritto nelle
microistruzioni del firmware.

SOFTWARE DI BASE E SOFTWARE APPLICATIVO


Software di base: programmi che servono a tutti gli utenti del sistema. Sistema
operativo, traduttori dei linguaggi di programmazione, antivirus, etc.
Software applicativo: programmi che risolvono problemi specifici. Applicativi per
l’elaborazione di testi, fogli elettronici, basi di dati, gestione e modifica di immagini,
programmi in C++, Java, R, etc.

13
IL SISTEMA OPERATIVO
È il componente software fondamentale di un computer. È formato da un insieme di
programmi che interagiscono tra loro per realizzare due obiettivi principali:
 Gestire efficientemente l’elaboratore e i suoi dispositivi
 Creare un ambiente virtuale per l’interazione con l’utente

CONSIDERAZIONI
Una volta avviato, il ciclo del processore non termina mai e quindi ad ogni istruzione
deve sempre seguirne un’altra da eseguire successivamente. 
Quando termina un’applicazione, un elaboratore torna ad eseguire i programmi del
sistema operativo. Perché tutto ciò proceda nel rispetto del modello di Von Neumann,
deve avvenire che in memoria siano sempre presenti i programmi e i dati del sistema

Nella memoria di un elaboratore moderno si possono pertanto individuare in ogni


istante cinque aree distinte (programmi del sistema operativo, dati del sistema operativo,
programmi di utente, dati di utente, Buffer)?¿
L’avvio di un calcolatore richiede che, dopo l’accensione, sia avviato il ciclo del
processore per l’esecuzione dei programmi (fase di bootstrap). Si deve predisporre nel
registro PI l’indirizzo del registro di memoria contenente la prima istruzione da
eseguire.
Nella fase di bootstrap, il calcolatore inizia il ciclo di funzionamento software caricando
il primo programma da eseguire (programma di boot). Questo programma svolge le
azioni di avvio (diagnostica, avvio periferiche fondamentali tramite il bios, ...).
Successivamente viene lanciato il sistema operativo

LA CODIFICA DELL’INFORMAZIONE
Informazione:
 Attributo (significato)
 Valore
 Tipo del genere dell’informazione. Testuale, fotografica, numerica… 
Per portare l’informazione alla tecnologia è necessario la trasformazione, questo prende
il nome di codifica.
L’informazione è portata da, o trasmessa su, o memorizzata in, o contenuta in qualcosa;
questo “qualcosa” però non è l’informazione stessa.
Ogni supporto ha le sue caratteristiche in quanto mezzo su cui può essere scritta
dell’informazione. Alcuni supporti sono particolarmente adatti alla trasmissione di
informazione, ma non alla sua memorizzazione (aria), per altri supporti vale il viceversa
(compact disc).

14
Elaborazione dell’informazione
 si codifica l’informazione disponibile scrivendo su un supporto fisico.
 si manipola il supporto con opportune trasformazione fisiche, ottenendo una
versione modificata del supporto.
 si decodifica l’informazione corrispondente al risultato dell’elaborazione
leggendo dalla versione modificata del supporto.
Altre operazioni di trattamento di informazione:
 trasmissione: in questo caso la trasformazione fisica consiste nel trasferimento al
destinatario del supporto su cui il mittente ha scritto l’informazione
 memorizzazione: in questo caso si sceglie un supporto in grado di mantenersi
stabile nel tempo, in modo che al momento della lettura esso si presenti identico
a come era stato scritto.
Distinguere informazione e supporto fisico vuol dire distinguere tra entità logiche ed
entità fisiche. L’informazione richiede un supporto fisico, ma non coincide con esso.
L’informazione è un’entità extra-fisica, non interpretabile in termini di materia-energia
e sottoposta alle leggi della fisica solo perché basata su un supporto fisico.
L’informazione si può creare e distruggere.
Si ottiene informazione quando, dato un insieme di alternative possibili, la lettura del
supporto ne elimina alcune e ne seleziona altre. 
COndizione necessaria perché un supporto possa portare informazione è che possa
assumere configurazioni differenti, a ognuna delle quali venga associata una differente
entità di informazione. Un supporto che possa presentarsi sempre e comunque in un
unico modo non può portare alcuna informazione. Il caso più semplice è quello in cui le
configurazioni possibili per il supporto sono due.
A ogni configurazione del supporto deve essere associata un’entità di informazione. Per
interpretare le differenti configurazioni del supporto in termini di informazione è
necessario conoscere il codice (cioè la regola) che a ogni configurazione ammessa del
supporto associa un’entità di informazione.
La definizione di un codice comporta che siano identificati in modo non ambiguo
l’insieme delle possibili configurazioni del supporto e ñ’insieme delle possibili entità di
informazione a cui ci si vuole riferire.
Variando il codice è possibile riferirsi a entità di informazione differenti utilizzando uno
stesso supporto fisico.

IL CONCETTO DI INFORMAZIONE
Informazione deriva da “informare”, ossia “dare forma”. fa riferimento ad un concetto
astratto che può coincidere con un qualcosa che viene comunicato in una certa forma.
Nella Teoria dell'Informazione, l'informazione viene associata al concetto di messaggio
da una sorgente ad un destinatario. Perché esista informazione, il messaggio deve
contribuire ad eliminare incertezza nel destinatario. Affinché un messaggio possa essere

15
interpretato, mittente e destinatario devono aver concordato un insieme di regole con le
quali scrivere, e in seguito leggere, il messaggio stesso.
Definizione di Shannon: L’informazione è tutto ciò che può consentire di ridurre il
nostro grado di incertezza su un evento che si può verificare.
La misura dell’informazione si associa alla probabilità che il messaggio si verifichi. Più
grande è l’incertezza del contenuto del messaggio, maggiore sarà l’informazione che
riceveremo quando il messaggio sarà arrivato. Se non c’è incertezza sul contenuto del
messaggio, non vi è neppure informazione.

RAPPRESENTAZIONE DELL’INFORMAZIONE
Perché persone o macchine possano utilizzare un’informazione hanno bisogno che essa
sia appropriatamente “rappresentata” – Se non fosse esistita la scrittura, non avremmo
un resoconto oggettivo degli avvenimenti dell’uomo dalla sua nascita fino ad oggi.
Scrivere, leggere ed elaborare informazioni implica che chi lo fa abbia preliminarmente
concordato un codice, ossia una serie di regole e convenzioni da seguire.
Nel calcolatore, si usano rappresentazioni “discrete” delle informazioni, anche quando
l’informazione nasce come “continua” (es., segnali audio, biometrici, etc.)
Rappresentazione analogica. Le proprietà del fenomeno rappresentato sono “omomorfe”
alla forma della rappresentazione; la rappresentazione varia in analogia con la
grandezza reale; una grandezza è rappresentata in modo continuo e la gran parte delle
grandezze fisiche della realtà sono di tipo continuo.
Rappresentazione discreta: utilizza un insieme finito di rappresentazioni distinte che
vengono messe in relazione con alcuni elementi dell’universo rappresentato; è
un’approssimazione di quella analogica.

Dalla rappresentazione analogica a quella digitale


Il campionamento. Conversione di un segnale continuo nel tempo in un segnale
discreto, valutandone l'ampiezza a intervalli di tempo regolari.
 La quantizzazione. Conversione di un segnale continuo in ampiezza in un segnale a
valori di ampiezza discreti

CODIFICA
Un’informazione per essere correttamente elaborata deve essere codificata in una
rappresentazione comprensibile all’elaboratore stesso. La codifica è l’insieme di
convenzioni e di regole da adottare per trasformare un’informazione in una sua
rappresentazione e viceversa; la stessa informazione può essere codificata in modi
diversi (rappresentazioni diverse) a seconda del contesto. Si pensi alle diverse
rappresentazioni delle informazioni numeriche (araba vs romana).
Un codice è un sistema di simboli che permette la rappresentazione dell’informazione
ed è definito dai seguenti elementi:

16
 i simboli - gli elementi atomici della rappresentazione in codice;
 l’alfabeto codice - l’insieme dei simboli possibili
 la cardinalità dell’alfabeto codice (n) - il numero di simboli contenuti
nell’alfabeto codice
 le parole codice – le sequenze possibili (ammissibili) di simboli dell’alfabeto
codice
 la lunghezza delle parole codice (l) - il numero di simboli dell’alfabeto codice da
cui ciascuna parola codice risulta composta;
 il linguaggio - le regole di codifica per costruire parole codice che abbiano
significato per l’utilizzatore del codice

Alfabeto sorgente:
• V= {v1 , v2 , ... , vm } (cardinalità m)
Insieme degli m valori diversi (detti simboli sorgente) dell’informazione da codificare
Alfabeto codice:
• A = {s1 , s2 , ... , sn } (cardinalità n)
Insieme degli n simboli codice da usare per la costruzione delle parole codice
Si considerino diverse lunghezze delle parole codice:
 l = 1: si hanno tante parole codice diverse quanti sono i simboli dell’alfabeto
(n1);
 l = 2: si hanno tante parole codice diverse quante sono le combinazioni con
ripetizione degli n simboli nelle due posizioni, ossia n2.
 l = 3: si hanno n3 parole codice diverse
 …
 In generale, il numero di parole codice differenti utilizzando l simboli è uguale a
nl

CORRISPONDENZA TRA SIMBOLI SORGENTE E PAROLE CODICE


Per una rappresentazione senza ambiguità, ad ogni vi deve corrispondere una ed una
sola sequenza s1i s2i ...sli. La lunghezza l delle parole codice deve essere scelta in modo
che: nl > m
nl > m: ci sono più parole codice che simboli sorgente (“ridondanza”)
nl = m: ci sono esattamente tante parole codice quante i simboli sorgente
Codifica a lunghezza fissa: Tutte le parole codice hanno sempre la stessa lunghezza.
Codifica a lunghezza variabile: non tutte le parole codice hanno la stessa lunghezza.
La scrittura è un caso di codifica a lunghezza variabile, come è possibile verificare in un
qualsiasi vocabolario. I calcolatori adottano codifiche a lunghezza fissa e definita.

RAPPRESENTAZIONE DIGITALE BINARIA


17
La rappresentazione digitale binaria è una codifica binaria che nell’informatica assume
particolare interesse perché usata su tutti i calcolatori. Basata su un alfabeto costituito da
due soli simboli distinti, convenzionalmente rappresentati come “0” e “1”, detti “bit” 
“binary digit”, cifre binarie o “bit”. I bit rappresentano le unità minime di
rappresentazione e memorizzazione digitale
NOTA: Solitamente si indica con “digitale” la rappresentazione basata sui bit, anche se
essa teoricamente sottintende una rappresentazione con qualsiasi tipo di cifre.
La rappresentazione digitale semplifica la memorizzazione delle informazioni nei
calcolatori e rende i sistemi digitali meno soggetti ai disturbi elettrici rispetto ai sistemi
analogici. La rappresentazione delle informazioni all’interno dell’elaboratore si basa
sull’alfabeto binario {0,1} in quanto i supporti di memorizzazione delle informazioni
(“registri di memoria”) vengono realizzati con componenti elementari semplici detti
“flip- flop”, che operano in due soli stati possibili.

ANALOGICO VS DIGITALE
Alcune informazioni nascono già in formato digitale, grazie a strumenti che operano
direttamente con tale rappresentazione. Applicazioni dei calcolatori elettronici, editor di
suoni e video, calcolatrici, …
Per elaborare con un calcolatore delle grandezze reali di tipo continuo, bisogna passare
dal formato analogico al formato digitale. Questo passaggio introducendo un errore
dovuto all’approssimazione del segnale di partenza. L’approssimazione introdotta
dipende dal processo di discretizzazione e dalla precisione della rappresentazione
digitale dei numeri.

RAPPRESENTAZIONE DIGITALE BINARIA


Il codice binario utilizza l’alfabeto A = {0,1} (n = 2) per formare parole codice
di una certa lunghezza prefissata l. Le informazioni vengono quindi rappresentate
mediante stringhe di bit di lunghezza l
NOTA: Con l simboli binari posso produrre 2l configurazioni (parole codice) diverse.
Come scegliere la lunghezza l del codice?
Dipende dal numero m di parole dell’alfabeto sorgente che dobbiamo codificare!.
Esempio: Se devo rappresentare m informazioni, servono almeno l=log2m bit per
ottenere per ogni informazione un codice diverso; se il risultato del logaritmo non è un
numero intero, l è pari al primo numero intero superiore al logaritmo; è maggiore è m,
maggiore è l (dunque, maggiori sono le informazioni da codificare, più lunghe sono le
parole codice)

BYTE E WORD
Per ragioni legate alla costruzione dei moderni calcolatori, tipicamente si usano
rappresentazioni binarie di lunghezza l = 8 o di lunghezza pari a multipli di 8. I byte

18
sono stringhe (sequenze) di 8 bit. Sequenze multiple del byte sono invece denominate
word. Tipicamente sono lunghe:
 16 bit (21 byte = 2 byte)
 32 bit (22 byte = 4 byte)
 64 bit (23 byte = 8 byte)
 128 bit (24 byte = 16 byte)

CODIFICA NEI MODERNI CALCOLATORI


Nei calcolatori moderni si adotta dunque una codifica binaria a lunghezza fissa in cui la
lunghezza delle parole codice è un multiplo di 8
Quanti valori posso rappresentare senza ambiguità con 8 bit? Con l=8 cifre binarie si
possono rappresentare fino a 28 = 256 valori diversi
Se bisogna rappresentare più di 256 valori diversi, si userà un codice a lunghezza fissa
in cui l è un multiplo di 8. In linea di principio, se si devono rappresentare m valori con
un codice binario a lunghezza fissa, bisogna trovare il numero b di byte tale che 2(b*8)
>m

I SISTEMI DI NUMERAZIONE
Nel manipolare le informazioni numeriche, gli esseri umani utilizzano un sistema di
rappresentazione detto anche sistema di numerazione.
Sistemi di numerazione. Un sistema di numerazione può essere visto come un insieme
di simboli (“cifre”) e regole che assegnano ad ogni sequenza di cifre uno ed un solo
valore numerico; dunque può essere visto come una codifica
I sistemi di numerazione vengono di solito classificati in sistemi posizionali e sistemi
non posizionali. Nei sistemi posizionali ogni cifra della sequenza ha un’importanza
variabile a seconda della relativa posizione. Es.: nel sistema decimale la prima cifra a
destra indica l’unità, la seconda le decine, etc.
Nei sistemi non posizionali ogni cifra esprime una quantità non dipendente dalla
posizione. Es.: nel sistema romano il simbolo “L” esprime la quantità 50
indipendentemente dalla posizione

SISTEMI DI NUMERAZIONE POSIZIONALE


Un sistema di numerazione posizionale è definito dalla base (o radice) utilizzata per la
rappresentazione. Noi utilizziamo un sistema di numerazione posizionale con base 10
La base indica il numero di simboli a disposizione per rappresentare l’informazione
numerica. È la cardinalità dell’alfabeto codice...
Esempi: Base 10, Le cifre a disposizione sono 10: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Base b, Le
cifre a disposizione sono b: utilizzo cioè b simboli diversi per rappresentare le cifre tra 0
e (b-1).

19
Nella rappresentazione di un numero in accordo alla codifica posizionale, ogni cifra ha
un peso determinato dalla posizione occupata.
La cifra più ha destra è quella a “peso minimo” o “meno significativa”– moltiplica cioè
la minima potenza della base (b0). La penultima cifra a destra moltiplica la potenza 1
della base (b1). La terzultima cifra a destra moltiplica la potenza 2 della base (b2)...
L’ultima cifra (quella più a sinistra) è quella a “peso massimo” o “più significativa” e
moltiplica la potenza (l-1) della base (bl-1), dove l sono le cifre usate per la
rappresentazione
Per determinare l’informazione numerica rappresentata, si devono sommare i pesi di
ogni cifra.

SISTEMA BINARIO
Base 2. Consente di rappresentare numeri mediante la combinazione di due soli simboli
{0, 1} ... ovvero di codificare i numeri in bit. Importanza capitale in informatica.
In un byte, il bit più a destra è quello “meno significativo”, detto anche. Least
Significant Bit (LSB); posizione di peso 0
Mentre quello più a sinistra è quello “più significativo”, detto anche. Most Significant
Bit (MSB); posizione di peso 7

RAPPRESENTAZIONE DEI NUMERI NEL CALCOLATORE


Esistono diverse famiglie di numeri che necessitano di essere rappresentate su un
calcolatore. 
 Numeri relativi (interi positivi e negativi, zero incluso) 
 Numeri reali
Per ciascuna di esse esiste un sistema di codifica ben definito che consente di passare
dalla rappresentazione in cifre binarie al numero effettivo e viceversa. Per ogni numero,
si usa sempre un numero finito di cifre per la rappresentazione. Le rappresentazioni
sono lunghe tipicamente a multipli di 8 bit (multipli byte). L’utilizzo di rappresentazioni
dei numeri con un numero finito di cifre (gestione dei numeri con “precisione finita”)
crea una serie di problemi nel calcolo numerico
 Errore di approssimazione
 Overflow
 Underflow

STRATEGIE DI CODIFICA DELLE INFORMAZIONI NUMERICHE:


RICAPITOLANDO
Nei calcolatori, si adotta una codifica a lunghezza fissa pari ad un multiplo di bit
(tipicamente 8, 16, 32, 64 bit).
Il numero di bit varia a seconda della cardinalità dell’insieme dei numeri che si desidera
rappresentare.

20
L’associazione di un numero alla parola codice viene realizzata differentemente a
seconda della tipologia di numeri che si desidera rappresentare (naturali, relativi,
razionali, etc.).
Essa viene comunque anche influenzata da aspetti che mirano a preservare la facile
manipolazione delle rappresentazioni, dal momento che il calcolatore dovrà lavorare su
di esse (e non sui numeri veri e propri) per effettuare le proprie elaborazioni (operazioni
aritmetiche, confronti logici, etc.).

PROBLEMI DELLA GESTIONE DEI NUMERI A PRECISIONE FINITA


OVERFLOW
Sia la dimensione che il numero dei registri in un calcolatore sono finiti. La cardinalità
degli insiemi numerici che si rappresentano è, invece, infinita. È inevitabile dunque che
in un insieme di cardinalità infinita solo un sottoinsieme finito di elementi possa essere
rappresentato. 
Gli operatori aritmetici, pur essendo talvolta chiusi rispetto all’intero insieme, quasi
certamente non lo sono rispetto al sotto-insieme di cardinalità finita. Quando accade
che, per effetto di tali operazioni, si tenta di rappresentare un numero non contenuto nel
sotto-insieme si parla di overflow. Esempio: se, attraverso un’operazione di codifica, si
rappresentano tutti i numeri naturali da 0 a 127, la somma 100+100=200 o la differenza
5 – 10= –5 genera un overflow all’interno di tale insieme, dal momento che sia il
risultato 200 che il risultato –5 non possono essere rappresentati.

ERRORE DI APPROSSIMAZIONE
Nel caso della rappresentazione di numeri reali, subentra anche il problema dovuto alla
caratteristica dei numeri razionali di costituire un insieme denso; anche se si sceglie per
la rappresentazione un intervallo limitato, non tutti i numeri all’interno di esso potranno
essere rappresentati.
Quando si tenta di rappresentare un numero per cui non è stata prevista una
rappresentazione, spesso si associa la rappresentazione del numero “più vicino”, cioè
quello che approssima meglio il numero in questione. In questo caso si compie un errore
di approssimazione
Questo tipo di errore, pur se in maniera meno subdola, si presenta comunque anche nel
caso dei numeri interi quando, ad esempio, si opera una divisione a risultato non intero e
si associa al risultato la rappresentazione del suo troncamento.

UNDERFLOW
Quando in un’elaborazione si tenta di rappresentare un numero “troppo vicino” allo
zero, l’errore di approssimazione può far sì che la rappresentazione scelta sia quella
dello zero. Questa evenienza può condizionare pesantemente i calcoli successivi nel
seguito dell’elaborazione a causa delle peculiarità della cifra zero; che, ad esempio, non
può essere utilizzata al denominatore di una frazione!

21
Si parla allora di underflow. Questa problematica è molto sentita nell’ambito del calcolo
numerico.

RAPPRESENTAZIONE DEI CARATTERI


L’insieme di base è composto da: 
 lettere maiuscule e minuscole dell’alfabeto inglese
 cifre decimali
 caratteri di interpunzione
 altri caratteri “speciali”: underscore, più, meno, parentesi, asterisco…
Circa un centinaio di elementi.

CODICE ASCII
ASCII = American Standard Code for Information Interchange. Standard per la
rappresentazione dei caratteri prodotto nel 1968 dall’ANSI (American National
Standards Institute).
Al centinaio di caratteri di uso comune si aggiungono dei cosiddetti “caratteri di
controllo”
 Tab (TAB)
 Ritorno a capo (CR – Carriage Return)
 Nuova linea (LF – Line Feed)
 ...
Rappresenta 128 caratteri su 7 bit
Poiché tutti i calcolatori utilizzano normalmente stringhe di bit di lunghezza multipla di
8, l’ottavo bit (quello più significativo) si assume sempre uguale a 0.
I caratteri sono elencati in un particolare ordine e associati a numeri naturali crescenti da
0 a 127.
 Da 0 a 31: caratteri di controllo
 32: spazio bianco
 Da 33 a 47: caratteri di interpunzione e speciali
 Da 48 a 57: cifre decimali da 0 a 9
 Da 58 a 64: altri caratteri di interpunzione e speciali
 Da 65 a 90: lettere maiuscole dell’alfabeto inglese in ordine crescente
 Da 91 a 96: caratteri speciali
 Da 97 a 122: lettere minuscole in ordine crescente
 Da 123 a 127: caratteri speciali
L’associazione con i numeri induce sull’insieme dei caratteri un ordinamento. 
Quando si chiede al calcolatore di ordinare dei nominativi, esso lo fa in accordo a tale
ordine.

22
CODIFICA DELLE IMMAGINI
Suddividiamo l’immagine mediante una griglia formata da righe orizzontali e verticali a
distanza costante. Ogni quadratino derivante da tale suddivisione prende il nome di
pixel (picture element) e può essere codificato in binario secondo la seguente
convenzione:
Il simbolo “0” viene utilizzato per la codifica di un pixel corrispondente ad un
quadratino in cui il bianco è predominante. Il simbolo “1” viene utilizzato per la
codifica di un pixel corrispondente ad un quadratino in cui il nero è predominante.
Non sempre il contorno della figura coincide con le linee della griglia. QUella che si
ottiene nella codifica è un’approssimazione della figura originaria. La rappresentazione
sa`ra più fedele all’aumentare del numero di pixel, ossia al diminuire delle dimensioni
dei quadratini della griglia in cui è suddivisa l’immagine.
Assegnando un bit ad ogni pixel è possibile codificare solo immagini in bianco e nero.
Per codificare le immagini con diversi livelli di grigio oppure a colori si usa la stessa
tecnica: per ogni pixel viene assegnata una sequenza di bit.

Codifica delle immagini (grigio e colore)


Per memorizzare un pixel non è più sufficiente un solo bit. Per esempio, se utilizziamo
quattro bit possiamo rappresentare 2 elevat a 4= 16 livelli di grigio 0 16 colori diversi.
Mentre con otto bit ne possiamo distinguere 2 elevat a 8= 256.
Il colore può essere generato componendo 3 colori: red, green, blue. Ad ogni colore si
associa una possibile sfumatura. Usando 2 bit per ogni colore si possono ottenere 4
sfumature per il rosso, 4 per il blue e 4 per il verde che, combinate insieme, danno
origine a 64 colori diversi. Ogni pixel per essere memorizzato richiede 6 bit.
Usando 8 bit per ogni colore si possono ottenere 256 sfumature per il rosso, per il blue e
per il verde, che combinate danno origine a circa 16,7 milioni di colori diversi.

Grafica bitmap
Le immagini codificate pixel per pixel sono dette immagini in grafica bitmap; le
immagini bitmap occupano parecchio spazio. 
Esistono delle tecniche di compressione che permettono di ridurre le dimensioni. Ad
esempio, se più punti vicini di un’immagine assumono lo stesso colore, si può
memorizzare la codifica del colore una sola volta e poi ricordare per quante volte deve
essere ripetuta.
I formati come GIF e JPEG sono formati compressi.

Grafica vettoriale
Se le immagini sono regolari si può usare una codifica di tipo vettoriale. In una codifica
di tipo vettoriale non si specificano le informazioni di colore dei singoli pixel. Invece

23
ogni elemento geometrico primitivo (per esempio linee, curve) viene specificato
individualmente.
Le immagini vengono costruite a partire dalla descrizione degli elementi che le
compongono mediante un linguaggio testuale o delle formule geometriche.
Spesso occupano meno spazio rispetto alle immagini bitmap. La grafica bitmap, invece,
riesce a rendere con qualità maggiore immagini con un numero elevato di colori.

Immagini complesse od irregolari: codifica bitmap (o raster)


Immagini regolari: codifica vettoriale.

CODIFICA DI IMMAGINI IN MOVIMENTO


Un filmato è una sequenza di immagini statiche (dette fotogrammi o frame). Per
codificare un filmato si digitalizzano i suoi fotogrammi. Esempi di formati per i file
video: AVI, MOV.
Compressione MPEG (Moving Picture Expert Group), differenza tra fotogrammi.

CODIFICA DEI SUONI


Fisicamente un suono è rappresentati 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.
Si effettuano dei campionamenti sull'onda (cioè si misura il valore dell’onda a intervalli
di tempo costanti) e si codificano in forma digitale le informazioni estratte da tali
campionamenti.
QUanto più frequentemente il valore di intensità dell’onda viene campionato, tanto più
precisa sarà la sua rappresentazione. Il numero di campioni raccolti per ogni secondo
definisce la frequenza di campionamento che si misura in Hertz (Hz).
La sequenza dei valori numerici ottenuti dai campioni può essere facilmente codificata
con sequenze di bit. La rappresentazione è tanto più precisa quanto maggiore è il
numero di bit utilizzati per codificare l’informazione estratta in fase di campionamento.

LOGICA BOOLEANA
OPERATORI BOOLEANI
Operatori che lavorano bit a bit. Anche detti “operatori logici”
 AND: prodotto logico. Dati due bit restituisce il valore 1 se e solo se i bit erano
entrambi posti a 1, in tutti gli altri casi il risultato è 0

24
 OR: somma logica. Dati due bit restituisce il valore 0 se e solo se i bit erano
entrambi posti a 0, in tutti gli altri casi il risultato è 1
 NOT: negazione o complementazione. Dato un bit restituisce il valore 0 se esso
era posto a 1, restituisce invece 1 se il bit era posto a 0

CONDIZIONI
Condizioni: anche dette “predicati” o “preposizioni”. Affermazioni da verificare o
controllare nel corso della risoluzione di un problema.
Condizioni atomiche: non scomponibili in condizioni più semplici.
Condizioni composte: scomponibili in condizioni atomiche collegate da opportuni
operatori logici

TABELLA DI VERITÀ
Possono essere usate per definire una qualunque funzione logica. Funzione che ha valori
logici come argomento e come risultato.
Prevedono un numero di colonne pari al numero di operandi (condizioni semplici) più
una corrispondente al risultato.
 ... e un numero di righe pari a tutte le possibili combinazioni dei valori di verità assunti
dagli n argomenti della funzione; 2 alla n righe.

PRECEDENZA DEGLI OPERATORI


Le parentesi possono essere usate per indicare l’ordine con cui gli operatori logici vanno
applicati per calcolare il risultato di verità della condizione composta.
In assenza di parentesi, tra gli operatori sussiste una regola di precedenza del tutto
analoga a quella usata abitualmente per gli operatori matematici.
In ordine di priorità (dalla maggiore alla minore):
 NOT
 AND (come la moltiplicazione)
 OR (come la somma)

ALGEBRA DI BOOLE
George Boole (1815-1864)
Matematico e logico britannico. Padre della logica matematica: scienza che modella
matematicamente la logica in accordo ad un linguaggio formale
“An investigation into the laws of thought on which are founded the mathematical
theories of logic and probabilities”, 1854 (Un’indagine sulle leggi del pensiero su cui
sono fondate le teorie matematiche della logica e della probabilità).

25
Algebra di Boole, alla base di:
 algebra della logica delle proposizioni
 algebra degli insiemi
 algebra dei circuiti
Algebra della logica:
Una proposizione (o “predicato”) può avere due valori
 vero (V, true, 1)
 falso (f, false, 0)
Operazioni:
 congiunzione (&&, and)
 disgiunzione (||, or)
 negazione (!, not)

PREDICATI COMPLESSI
La verità di un predicato composto può essere calcolata a partire dalla verità dei
predicati componenti conoscendo le proprietà degli operatori che li uniscono.
Conoscendo le proprietà degli operatori possiamo:
 Verificare l'equivalenza tra predicati complessi
 Trasformare i predicati complessi in una formulazione equivalente “più
conveniente”
 ...Cioè che prevede un minor numero di operazioni logiche
ESEMPIO ESAME AL POWER

IL SOFTWARE
HARDWARE, FIRMWARE E SOFTWARE
HARDWARE
L’insieme dei componenti meccanici, elettrici ed elettronici di un calcolatore

SOFTWARE
L’insieme dei programmi nella memoria del calcolatore.Ogni programma è fatto da
istruzioni. L’esecuzione delle istruzioni è gestita come descritto nelle microistruzioni
del firmware

SOFTWARE DI BASE E APPLICATIVO


DI BASE

26
programmi che servono a tutti gli utenti del sistema. Sistema operativo, traduttori dei
linguaggi di programmazione, antivirus, etc.

APPLICATIVO
programmi che risolvono problemi specifici. Applicativi per l’elaborazione di testi, fogli
elettronici, basi di dati, gestione e modifica di immagini, programmi in C++, Java, R,
etc.

IL SISTEMA OPERATIVO
È il componente software fondamentale di un computer. È formato da un insieme di
programmi che interagiscono tra loro per realizzare due obiettivi principali:
 Gestire efficientemente l’elaboratore e i suoi dispositivi
 Creare un ambiente virtuale per l’interazione con l’utente

SOFTWARE DI BASE
SISTEMA OPERATIVO
OS, Operating System. Insieme di programmi che forniscono all’utente:
 intermediazione nell’utilizzo della macchina HW
 visione astratta dell’HW = macchina virtuale, macchina astratta
 un ambiente per l’esecuzione del SW applicativo

TRADUTTORI
Traduzione da linguaggio di programmazione di alto livello (Java, Python, C, ...) in
linguaggio macchina.
Macchina astratta = calcolatore + traduttore
compilatore: accetta in ingresso l’intero programma (programma sorgente) e produce in
uscita la rappresentazione dell’intero programma in linguaggio macchina (programma
oggetto).
interprete: accetta in ingresso l’intero programma, traduce e fa eseguire direttamente
ciascuna istruzione del programma sorgente.

COMUNI SOFTWARE APPLICATIVI


SOFTWARE: OPERA DELL’INGEGNO
SW propietario: può essere usato acquistandolo oppure ottenendo l’autorizzazione
all’uso (licenza). Es.: Suite Microsoft Office (Word, Excel, Power Point, ...)

27
SW shareware: distribuito gratuitamente, può essere usato gratuitamente per un periodo
di prova; dopo, pagando la registrazione, si può utilizzarlo e ricevere aggiornamenti.
Es.: Sketch
SW freeware: può essere liberamente usato, copiato e distribuito (no codice sorgente).
Es.: Adobe Acrobat Reader
SW libero e SW open source: può essere usato, copiato e distribuito gratis ma
rispettando alcune regole. Es.: Mozilla Firefox

Software applicativo: 
 video scrittura (word processor). Esempi: word, pages
 fogli elettronici: excel, numbers
 presentazioni multimediali: keynote, powerpoint
 audio/video player: quicktime, windows media player
 software per la grafica: suite adobe (photoshop, illustrator, indesign…), gimp
 client per applicazioni telematiche (web “browser”): edge, safari, chrome,
firefox
 client per applicazioni telematiche (“client di posta”): mail, outlook, thunderbird

LA PROGRAMMAZIONE
LA DESCRIZIONE DEGLI ALGORITMI
Algoritmo: sequenza precisa di operazioni il cui svolgimento è necessario per la
soluzione di un problema assegnato. L’informatica nella sua anima metodologica può
considerarsi lo studio sistematico degli algoritmi. 
Il calcolatore è l’esecutore degli algoritmi. Esecutore “potente”: 
 permettere di gestire quantità di informazioni altrimenti non trattabili.
 risolve un gran numero di problemi in modo più veloce e conveniente degli
esseri umani.
L’informatica utilizza il computer come uno scienziato utilizza il proprio microscopio;
uno strumento per provare le teorie sviluppate e, nel caso specifico, verificare i propri
ragionamenti o algoritmi.

PROGRAMMA
Un programma è la descrizione di un algoritmo in un linguaggio di programmazione
comprensibile all’esecutore. Per realizzare un programma, dato un problema bisogna:
 capire preliminarmente se il problema ammette soluzioni
 nel caso ne ammetta, individuare un metodo risolutivo (algoritmo)
 esprimere tale metodo in un linguaggio comprensibile all'esecutore a cui è
rivolto

28
COSTRUTTI
Per esprimere un algoritmo in linguaggio naturale, si usano dei costrutti che
determinano l'ordine in cui le diverse azioni devono essere svolte. Il più semplice tra
essi è quello che stabilisce che le azioni devono essere svolte una dopo l'altra
(sequenza).
Un altro costrutto comune ci consente di indicare che alcune azioni devono essere svolte
solo se si verificano determinate condizioni (selezione). Esempio: la frase "se la parola è
sbagliata, allora correggi, altrimenti non fare niente" prescrive la correzione soltanto in
presenza di un errore.
Un ultimo costrutto ci dice che alcune azioni devono essere ripetute un certo numero di
volte (iterazione). Esempio: «per ogni parola del rigo, fai le seguenti operazioni»,
«ripeti le operazioni da 1 a 4 fino alla terminazione del testo».

ISTRUZIONI
Un’altra componente fondamentale della descrizione dell’algoritmo è costituita dalle
istruzioni. Le istruzioni sono le frasi che prescrivono l’esecuzione di determinate
operazioni. Si dividono in:
 Elementari: istruzioni note all’esecutore (l’esecutore è direttamente in grado di
eseguirle)
 Non elementari: quelle non note all'esecutore (devono essere scomposte in
istruzioni semplici per poter essere eseguite dall’esecutore)
 Il procedimento che trasforma una istruzione non elementare in un insieme di istruzioni
elementari, prende il nome di raffinamento.

PROGETTAZIONE TOP-DOWN: RAPPRESENTAZIONE DELL’ALGORITMO


RISOLUTIVO
La soluzione al problema può essere rappresentata come un albero in cui:
 La radice corrisponde al problema di partenza
 I nodi rappresentano i punti di scomposizione
 Le foglie sono i problemi direttamente risolvibili dall’esecutore

DALL’ALGORTIMO AL PROGRAMMA
Per rendere un algoritmo eseguibile da un certo esecutore:
Si parte dalla sua descrizione in linguaggio naturale. Si esegue il processo di
raffinamento in modo da esprimere tutte le istruzioni non elementari in termini di
istruzioni appartenenti al “repertorio” dell’esecutore. Si traduce quindi l’algoritmo in un
linguaggio di programmazione comprensibile all’esecutore, ottenendo così il
programma vero e proprio.

LINGUAGGIO DI PROGRAMMAZIONE

29
Il linguaggio di programmazione è una notazione formale per descrivere gli algoritmi.
Come ogni linguaggio, è dotato di una sua grammatica:
 un alfabeto
 un lessico
 una sintassi
 una semantica
...cioè di regole rigide per la composizione di programmi.
Si possono distinguere linguaggi di programmazione di alto livello e di basso livello.

LINGUAGGIO DI BASSO LIVELLO


Linguaggio macchina. È quello direttamente compreso dalla CPU. Le istruzioni sono
espresse in codici binari; è difficile programmare in linguaggio macchina.
 Linguaggi assemblativi. È quello più vicino al linguaggio macchina. Alle sequenze di
bit sono sostituiti dei codici mnemonici più facili da interpretare e ricordare. Un
programma detto “assembler” traduce le istruzioni in linguaggio macchina
 I linguaggi macchina e assemblativi sono anche comunemente detti linguaggi di basso
livello
Le istruzioni dei linguaggi di basso livello esprimono funzionalità molto elementari; la
costruzione di ogni algoritmo in tali linguaggi richiede un gran numero di comandi ed è
particolarmente onerosa.
Per superare queste ed altre difficoltà esistono i linguaggi cosiddetti di alto livello.
Linguaggi di alto livello; rendono l'attività di programmazione più semplice; usano
istruzioni “più sintetiche”. Le istruzioni sono più vicine al tradizionale modo di
esprimere i procedimenti di calcolo da parte di un essere umano; sono espresse in uno
pseudo-linguaggio umano, utilizzando parole-chiave o codici operativi ispirati alla
lingua inglese. Opportuni programmi (“compilatori” e “interpreti”) traducono i
programmi in linguaggio macchina.

REALIZZAZIONE DEI PROGRAMMI DI PICCOLE DIMENSIONI: FASI


1. Analisi del problema: comprensione del “cosa” si deve fare e definizione dei
requisiti della soluzione.
2. Progettazione della soluzione: comprensione del «come» si deve costruire la
soluzione (algoritmo).
3. Programmazione: implementazione della soluzione nel linguaggio di
programmazione scelto
4. Verifica: fase di test in cui si controlla che la soluzione costruita soddisfi i
requisiti.

LA STRUTTURA DEI PROGRAMMI


FASI DI UN LINGUAGGIO DI PROGRAMMAZIONE DI ALTO LIVELLO

30
Tutti i linguaggi di alto livello prevedono quattro tipologie di frasi diverse:
1. le istruzioni, che tradotte in linguaggio macchina indicano al processore le
operazioni da svolgere.
2. le strutture di controllo che definiscono l’ordine di esecuzione delle istruzioni.
3. le frasi di commento che permettono l’introduzione di frasi in linguaggio
naturale utili a rendere più comprensibili i programmi ad un lettore umano
4. le dichiarazioni rivolte al traduttore con le quali il programmatore da ordini al
traduttore del linguaggio di programmazione.

IL CONCETTO DI VARIABILE E DI TIPO


Questi concetti sono fondamentali in tutti i linguaggi di programmazione.
Variabile: rappresenta l’informazione da manipolare tramite il programma.Ad essa
vengono associati:
 un nome identificativo
 un tipo
 un’area di memoria atta a contenere un valore di quel tipo; la dimensione di tale
area e le relative regole d’uso di tale area dipendono dal tipo della variabile.
Tipo: insieme di valori a cui sono associati delle operazioni definite su essi. Esempio: il
tipo «numero intero», il tipo «carattare», il tipo «numero reale»… 
Le variabili sono lo strumento di cui si serve il programmatore per rappresentare e
memorizzare l’informazione da manipolare. 
Il tipo della variabile rappresenta la classe di valori in cui può essere rappresentata
l’informazione da manipolare. Ad esempio: l’informazione relativa all’età media degli
studenti di una classe potrebbe essere rappresentata da una variabile di nome
“etaMedia” di tipo “numero reale”; l’informazione relativa al nome di uno studente
potrebbe essere rappresentata da una variabile di nome “nominativo” e di tipo “stringa”
(“insieme di caratteri”).
In molti linguaggi, esistono delle istruzioni speciali per le dichiarazioni di tipo. Ossia
per la creazione di nuovi tipi di dato.

COSTRUTTI DI CONTROLLO
I costrutti di controllo indicano all'esecutore l'ordine in cui le operazioni devono essere
eseguite. Si distingue tra:
 Costrutti di sequenza
 Costrutti di selezione o costrutti condizionali. A due vie o a più vie
 Costrutti di iterazione

COSTRUTTI DI SEQUENZA
Specificano l’ordine di esecuzione delle istruzioni. Esempio al power.

31
COSTRUTTI CONDIZIONALI A DUE VIE
Consentono di subordinare l'esecuzione di una certa istruzione o sequenza di istruzioni
al verificarsi o meno di una specificata condizione. Esempio al power.

COSTRUTTI CONDIZIONALI A PIÙ VIE


Consentono la selezione tra più alternative. Prescrivono la valutazione di una
espressione (anche detta “selettore”) e la scelta dell'azione a cui è stato associato il
valore ottenuto da tale valutazione. Esempio al power.

COSTRUTTI ITERATIVI
Prescrivono la ripetizione di una o più operazioni. La ripetizione è subordinata al
verificarsi o meno di una certa condizione. Esempio al power.

CICLO WHILE
Prima viene valutata la condizione. L'esecuzione delle azioni è subordinata alla verifica
della condizione. Ovvero, le azioni sono eseguite qualora il valore della condizione sia
vero. Le azioni del ciclo non sono mai eseguite se la condizione è falsa la prima volta
che è calcolata
Il ciclo termina quando la condizione diventa falsa.

CICLO REPEAT
Prima c’è l'esecuzione delle azioni e, dopo, la valutazione della condizione. Le azioni
vengono eseguite almeno una volta. La ripetizione delle azioni termina quando la
condizione diventa vera.

CICLO FOR
Prescrive la ripetizione di azioni un numero di volte fissato a priori. Prevede l’utilizzo di
una variabile detta “contatore di ciclo” che, a partire da un valore iniziale, raggiunge
con un certo passo un valore finale. Quando il contatore di ciclo raggiunge il valore
finale, il ciclo termina

MODULARITÀ
L'applicazione della tecnica top-down permette di strutturare un programma come la
composizione di moduli funzionali. Ogni modulo realizza un singolo e ben preciso
compito e ogni modulo ha un solo punto di ingresso e di uscita.
Ai moduli possono essere associati dei sotto-programmi.

I SOTTOPROGRAMMI (O “FUNZIONI”)

32
Sono blocchi di istruzioni che risolvono un «sotto problema», cioè che assolvono ad una
certa funzione. I sottoprogrammi sono anche comunemente detti «funzioni».
Nel corpo del programma principale, si può usare il nome del sottoprogramma come
“abbreviazione” di tutte le istruzioni in esso contenute.
Quando compare il nome del sottoprogramma nel programma principale, si dice che si
effettua una “chiamata a sottoprogramma”.

CHIAMATA A SOTTOPROGRAMMA
L'esecutore della torta dovrà:
 spostarsi sulla ricetta della crema quando trova il suo riferimento
 riportarsi sulla ricetta della torta nel momento in cui ha terminato la crema.
In altre parole, la chiamata a sottoprogramma può essere vista come una particolare
istruzione di salto alla prima istruzione del sottoprogramma. La terminazione del
sottoprogramma genera poi un ulteriore salto alla istruzione successiva a quella di
chiamata.

VANTAGGI NELL’USO DEI SOTTOPROGRAMMI


Riuso del software
 evitare riscritture inutili di sottoproblemi dello stesso tipo in più punti del
programma;
 integrare soluzioni già disponibili di alcuni sottoproblemi;
 abbreviare il lavoro di scrittura
Semplificazione delle operazioni di verifica e manutenzione. Si verifica la correttezza
del programma completo per passi, ossia verificando dapprima la correttezza dei singoli
sottoprogrammi e successivamente dell'insieme da essi costituito. Programmi più facili
da controllare e manutenere.
Supporto alla suddivisione del lavoro tra programmatori
Aumento della leggibilità di un programma; grazie alla maggiore sinteticità di notazione
ed alla possibilità di usare per i nomi di sottoprogramma dei nomi autodescrittivi. Per
questo è utile indicare una sequenza di istruzioni con un sottoprogramma anche se essa
 compare in un sol punto del programma
 l'introduzione del sottoprogramma non porta ad un testo più breve

DEFINIZIONE DI UN SOTTOPROGRAMMA
La definizione di un sottoprogramma consta di due parti:
 intestazione
 corpo
 Nell’intestazione vengono tipicamente indicati:

33
 Il nome del sottoprogramma
 I parametri formali su cui opera il sottoprogramma
Il corpo è invece il blocco di istruzioni che realizzano la funzionalità associata al
sottoprogramma.

PROGRAMMA PRINCIPALE, PROCEDURE E FUNZIONI


L'uso dei sottoprogrammi permette di costruire programmi costituiti da una gerarchia di
unità di programma (gerarchia di sottoprogrammi). Si chiamerà programma principale
(main) quella unità di programma che si interfaccia direttamente con il sistema
operativo.

DALL’EDITING ALL’ESECUZIONE DEI PROGRAMMI


Un programma scritto in linguaggio di programmazione di alto livello. Deve essere
scritto nel linguaggio di programmazione selezionato tramite un editor nella fase di
editing. Prima di poter essere eseguito su un certo calcolatore, deve essere tradotto nel
linguaggio macchina di quel calcolatore.

EDITING
L’editing è la fase di scrittura di un programma. Il programmatore per scrivere il codice
sorgente del programma può servirsi di un qualsiasi editor di testo. Ma tipicamente si
serve dell’editor di testo specializzato fornito dall’ambiente di sviluppo del linguaggio
di programmazione che usa tali editor di testo offrono una serie di vantaggi tra cui
 l’utilizzo di codice colore per identificare parole chiave del linguaggio
 l’indentazione automatica
 il completamento automatico delle istruzioni
 … 

TRADUTTORI
Per eseguire un programma scritto con un linguaggio ad alto livello occorre tradurlo nel
linguaggio macchina dello specifico processore che si sta usando. I traduttori sono
programmi che permettono di effettuare la traduzione dal codice sorgente (non
eseguibile dalla CPU) al linguaggio macchina. Essi sono:
 gli interpreti
 i compilatori

INTERPRETI VS COMPILATORI
L'interprete di un linguaggio è un programma che:  legge una alla volta le istruzioni di
un programma sorgente. Verifica la correttezza sintattica dell’istruzione, sulla base della
sintassi del linguaggio; in caso positivo (assenza di errori), sulla base della semantica
del linguaggio, la traduce nella corrispondente sequenza di istruzioni in linguaggio
macchina e la esegue.
34
 Il compilatore di un linguaggio è un programma che 
 verifica la correttezza sintattica del programma sorgente, sulla base della sintassi
del linguaggio.
 traduce il programma sorgente nel programma oggetto (sulla base della
semantica del linguaggio), il quale potrà successivamente essere distribuito ed
eseguito
I compilatori traducono un intero programma dal linguaggio L al linguaggio macchina
della macchina prescelta, considerando che:
 traduzione ed esecuzione sono due fasi distinte e separate;
 al termine della compilazione, è disponibile la versione tradotta ed eseguibile del
programma;
 la versione tradotta è però specifica di quella macchina. Per macchine diverse, i
compilatori sono diversi
 per eseguire il programma basta avere disponibile la versione tradotta (non è
necessario ricompilare)
Gli interpreti invece traducono e immediatamente eseguono il programma istruzione per
istruzione:
 traduzione ed esecuzione procedono insieme;
 al termine non vi è alcuna versione tradotta del programma originale;
 se si vuole rieseguire il programma occorre anche ritradurlo. Senza interprete, il
programma non si può dunque eseguire.

LINGUAGGI COMPILATI VS INTERPRETATI


In linea generale, per ogni linguaggio di programmazione potrebbe esistere sia un
compilatore che un interprete. Anche se alcuni linguaggi nascono per essere compilati
ed altri per essere interpretati.
Nei linguaggi compilati, il programmatore scrive il programma, lo compila tramite il
programma compilatore, e successivamente distribuisce agli utenti il file eseguibile dal
processore (es., i file .exe). Esempi di linguaggi compilati: Fortran, pascal, Delphi, C++
Nei linguaggi interpretati, il codice sorgente viene tradotto in linguaggio macchina ogni
volta che viene eseguito. La traduzione viene effettuata dall’interprete, che deve essere
presente sul computer dell’utente.
Nei linguaggi interpretati, il programmatore scrive il programma e distribuisce
direttamente il codice sorgente (es. script .R, .swift, ...). Esempi di linguaggi interpretati:
R, Python, Swift, Java.

35

Potrebbero piacerti anche