Sei sulla pagina 1di 34

Introduzione

La disponibilità degli elaboratori ha reso praticamente utilizzabili


molti metodi matematici di largo uso scientifico e tecnico che
comportano tanti calcoli da renderli impraticabili manualmente.

La rapidità di calcolo rende risolvibili problemi in tempo reale


(calcolandone la soluzione entro una scadenza predefinita), p.e.
le previsioni del tempo o il calcolo del moto di un missile).

Gli elaboratori ad usi generali consentono di risolvere più


problemi con una stessa macchina; istruendola
(“programmandola”) opportunamente, è possibile risolvere
problemi sia analitici, anche vasti (astronomici, topografici, di
simulazione…), che logici (calcolo simbolico, traduzioni
automatiche, gioco degli scacchi…).
Informatica

Informatica (information automatique): la scienza che si occupa


del trattamento automatico dell’informazione utilizzando
opportune macchine (gli elaboratori) non necessariamente
elettroniche.

Informazione: dati che, interpretati secondo convenzioni


predefinite, hanno un significato.

L’informatica è una disciplina sia teorica che pratica (comprende


gli aspetti manuali necessari alla programmazione
dell’elaboratore).
modello di Von Neumann - 1

La struttura di un elaboratore ad usi generali deriva dalla


necessità di rendere il procedimento di calcolo completamente
automatico; esso contiene (modello di Von Neumann):
 una unità aritmetica in grado di eseguire calcoli;
 una memoria che “ricordi” sia i dati su cui si deve operare
che le operazioni da compiere su di essi;
 una o più unità di ingresso per la immissione dei dati e delle
operazioni;
 una o più unità di uscita per comunicare la soluzione
calcolata
 una unità di controllo che le coordina;
 un opportuno canale (il bus di sistema) con cui le unità
scambiano informazioni.
modello di Von Neumann - 2
Risoluzione di un problema - 1

La soluzione di un problema mediante elaboratore deve essere


preceduta da una fase di analisi, che ne determina il
procedimento risolutivo (algoritmo1);
questo verrà poi tradotto in una sequenza di operazioni
elementari (il programma) comprensibili ed eseguibili da un
esecutore elementare (elaboratore).

Ogni operazione coinvolge uno o due operandi e produce un


risultato intermedio o finale.

Operandi e risultati saranno contenuti nell’unità di memoria,


costituita da una sequenza di celle numerate progressivamente.

Per selezionare un numero contenuto nella memoria dovremo


fornirle l’indirizzo (il nome numerico) della cella che lo contiene.

1
Sequenza di istruzioni elementari definite con precisione, di lunghezza finta e
eseguibile in un tempo finito.
Risoluzione di un problema - 2

Per compiere una qualunque operazione dovremo quindi


indicare all’elaboratore sia l’istruzione da eseguire che, in
generale, gli indirizzi in memoria dei due operandi e del
risultato.

L’insieme di queste quattro informazioni opportunamente


rappresentate costituisce una istruzione dell’elaboratore.

La soluzione del problema comporta l’esecuzione del


programma per il calcolo, cioè di una opportuna sequenza
(spesso lunghissima) di tali operazioni, usualmente
immagazzinata in memoria assieme ai dati.

La lunghezza del programma spesso viene contenuta con


artifici, ad esempio ripetendo ciclicamente una stessa sequenza
di istruzioni su dati diversi finché non si verifica una opportuna
condizione (p.e. l’eguaglianza di due numeri).
Lo studio di un caso - 1
Illustriamo il procedimento con lo studio di una semplice caso
concreto: risolviamo il problema di tabulare la funzione
Y=x2+3

dove la x varia con passi di ampiezza h predefinita fra i valori x0 e xf


assegnati. Per tabulare un punto occorrerà:
1. calcolare x2 (il prodotto x*x);
2. sommare 3;
3. stampare il valore di x;
4. stampare il valore di y;
5. calcolare il valore della successiva ascissa;
6. per ascissa calcolata non superiore a xf andare a 1)
e ripetere il calcolo per un nuovo punto, altrimenti
7. terminare l’esecuzione.

Questa sequenza di operazioni, da ripetere per tutti i punti da


calcolare, costituisce la descrizione in linguaggio naturale
dell’algoritmo di risoluzione del problema, meglio formalizzato nella
seguente tabella, riempita per le sole operazioni di calcolo:
Lo studio di un caso - 2

Operazione Quantità definita Formula Calcoli


No.
1 xk2 (xk)2 = xk*xk (5)k-1*(5)k-1
2 yk yk = x k 2 + 3 (1)k + 3
3 --- --- ---
4 --- --- ---
5 xk+1 xk+1 = xk + h (5)k-1 + h
6 --- --- ---
7 --- --- ---
Lo studio di un caso - 3

Nel corso dell’elaborazione occorreranno quindi anche delle istruzioni


dirette alla Unità di controllo con scopi differenti (p.e. la stampa di un
valore o la scelta condizionale dell’evolversi del calcolo).

L’ultima istruzione equivale infatti a due istruzioni mutuamente


esclusive eseguite in alternativa (se x è minore di xn vai al passo 1,
altrimenti arresta il calcolo). La sequenza del calcolo dipende dal
risultato precedente.

In generale, per eseguire una operazione occorre specificare quattro


informazioni per una istruzione che coinvolge due operandi:
 Il tipo di operazione;
 Le quantità su cui operare;
 Dove memorizzare il risultato, da utilizzare per calcoli successivi.
Lo studio di un caso - 4

I numeri saranno memorizzati nella memoria centrale della


macchina e specificati nella istruzione con l’ indirizzo della cella
di memoria che li contiene.

L’ istruzione della macchina sarà distinta in un campo di codice


di istruzione e tre campi di indirizzo, dei quali i primi due
specificheranno dove reperire in memoria gli operandi ed il
terzo determinerà la cella di memoria in cui sarà memorizzato il
risultato.
Lo studio di un caso - 5

Anche le istruzioni di controllo della stampa saranno messe in


questo formato a tre indirizzi (il secondo campo indirizzi sarà
non significativo).

L’istruzione di comparazione comparerà i numeri memorizzati


nelle celle di memoria corrispondenti al primo ed al secondo
indirizzo e, se il primo sarà minore del secondo, trasferirà il
controllo alla istruzione del programma specificata dall’indirizzo
3, altrimenti l’esecuzione procederà sequenzialmente.

Trasformiamo la precedente tabella in un programma per la


nostra macchina.
Lo studio di un caso - 6

Assegniamo ogni numero coinvolto nel calcolo ad una cella della


memoria (basterà una memoria a 16 celle):

La quantità 3 nella 11.ma cella;


La quantità h nella 12.ma cella;
La quantità xn nella 13.ma cella;
La quantità x nella 14.ma cella;
La quantità y nella 15.ma cella;
La cella di lavoro nella 16.ma.

Con queste posizioni, completando la tavola precedente con le


operazioni di stampa e comparazione si desume un primo
abbozzo di programma per la macchina:
Lo studio di un caso – 7

Istruzione Codice dell’Istruzione Note


No. Codice Istr. I II III
indir. indir. indir
1 MOLTIP. 14 14 16 (xk)2 = xk*xk
2 SOMMA 16 11 15 yk = xk2 + 3
3 STAMPA 14 --- 1 Stampa xk nella
prima stampante
4 STAMPA 15 --- 2 Stampa yk nella
seconda
stampante
5 SOMMA 14 12 14 xk+1 = xk + h
6 COMPARAZ. 14 13 1 Se x  xk salta
alla prima
istruzione,
altrimenti
7 STOP --- --- --- Termina
l’esecuzione.
Lo studio di un caso - 8

Il codici delle istruzioni saranno posti nella memoria, nelle celle da uno
a sette.

All’avviamento della macchina il codice della istruzione 1 verrà posto


nella unità di controllo; in conseguenza di ciò, la CU coordinerà il
funzionamento della macchina per prelevare dalla memoria il
contenuto della 14.ma cella, moltiplicarlo per se stesso ottenendo x 12
e memorizzarlo nella 16.ma cella (la locazione di lavoro).

Al completamento, verrà prelevata dalla memoria la seconda


istruzione che guida la macchina a calcolare y1 come somma di
x12(16.ma cella) con 3 (11.ma cella) ponendo il risultato nella 15.ma
cella.

la terza e la quarta istruzione stamperanno i valori di x e y appena


calcolati.

La quinta istruzione calcolerà similmente il valore di x2;


Lo studio di un caso - 9

La sesta istruzione determinerà il successivo evolversi


dell’esecuzione del programma comparando i valori di xk+1
(14.ma cella) e xn (13.ma cella).

Se xk+1 sarà minore di xn occorrerà calcolare un altro punto ed il


calcolo sarà ripetuto per il successivo intervallo (istruzione 1)
altrimenti il calcolo verrà arrestato (passo 7).

Prima di iniziare il calcolo, dovremo introdurre nell’unità di


memoria sia i codici delle istruzioni (celle 1 – 7) che i dati
iniziali ah, h, xn, x0, y0 (celle 11.ma,…, 15.ma).
Lo studio di un caso - 10

Al termine del calcolo per il primo intervallo le celle 14.ma e


15.ma conterranno i valori di x1 e y1; questi serviranno come
dati iniziali per il calcolo relativo al successivo intervallo.

Ripetendo ciclicamente il calcolo potremo calcolare grandi


quantità di dati (determinando cioè un numero anche
arbitrariamente grande di punti della soluzione) con un
programma relativamente piccolo.

La memoria della macchina pronta per eseguire il programma


avrà un aspetto analogo a quello della tabella seguente:
Lo studio di un caso - 11

16 (cella di lavoro)
15 y0
14 x0
13 Xn
12 h
11 3
10
9
8
7 STOP --- --- ---
6 COMPARA 14 13 1
5 SOMMA 14 12 14
4 STAMPA 15 --- 2
3 STAMPA 14 --- 1
2 SOMMA 16 11 15
1 MOLTIPLICA 14 14 16
Lo studio di un caso - 12

I calcolatori attuali sono realizzati con circuiti binari e possono


rappresentare solo quantità binarie (cioè, i loro circuiti
riconoscono solo la presenza o l’assenza di tensione elettrica, di
magnetizzazione o di illuminazione).

Per riuscire a trattare con essi informazioni più complesse


occorre ricorrere a stratagemmi.

Lo stratagemma universalmente utilizzato consiste nello


stabilire un codice binario, cioè nell’associare a uno stato
binario (presenza o assenza di tensione) una cifra binaria (una
quantità logica vero o falso, zero od uno) e poi a sequenze di
cifre binarie dei simboli più “complessi”.

Questo può essere fatto perché una sequenza di n cifre binarie


(bit, binary digit) può assumere 2n configurazioni differenti.
Lo studio di un caso - 13

Configurazione binaria - Stringa di lunghezza n di simboli 0 e 1.


• n bit hanno 2n configurazioni binarie diverse.
Codice binario: funzione dall’insieme delle 2n configurazioni di n
bit ad un insieme di M informazioni (simboli alfanumerici, colori,
eventi, stati interni, ecc.).
 Condizione necessaria per la codifica: 2n>M
Lo studio di un caso - 14

Gli indirizzi di memoria fra 1 e 16 potranno essere associati a


configurazioni di quattro cifre binarie; queste avranno valore
compreso fra 0000 e 1111 (corrispondenti, se interpretate
come numeri binari, a valori decimali fra 0 e 15).

Conveniamo di rappresentare l’indirizzo 1 con la configurazione


0000, l’indirizzo 2 con la configurazione 0001, …, l’indirizzo 16
con la configurazione 1111.

Utilizzando questo codice per gli indirizzi la memoria della


macchina si modificherà come nella tabella seguente:
Lo studio di un caso - 15

1111 (cella di lavoro)


1110 Y0
1101 X0
1100 xn
1011 H
1010 3
1001
1000
0111
0110 STOP --- --- ---
0101 COMPARA 1101 1100 0000
0100 SOMMA 1101 1011 1101
0011 STAMPA 1110 --- 0001
0010 STAMPA 1101 --- 0000
0001 SOMMA 1111 1010 1110
0000 MOLTIPLICA 1101 1101 1111
Lo studio di un caso - 16

Occorre ancora stabilire un codice per poter far “comprendere”


alla macchina i codici di operazione.

Il numero di bit a disposizione per rappresentare i codici


operativi dipende dalla larghezza della cella di memoria (cioè
dal numero di cifre binarie contenuto in ogni cella, detto
ampiezza di parola della memoria).

Per motivi storici, le memorie hanno una ampiezza di memoria


multipla di otto bit (un byte). Supponiamo che la nostra memori
abbia ampiezza di memoria di sedici bit. Per differenza, i codici
operativi saranno rappresentati su quattro bit (anche se ne
sarebbero bastati tre). Adottiamo il codice nella tabella:

0100 0011 0010 0001 0000


MOLTIPLICA SOMMA STAMPA COMPARA STOP
Lo studio di un caso - 17

1111 (cella di lavoro)


1110 y0
1101 x0
1100 Xn
1011 H
1010 3
1001
1000
0111
0110 0000 --- --- ---
0101 0001 1101 1100 0000
0100 0011 1101 1011 1101
0011 0010 1110 --- 0001
0010 0010 1101 --- 0000
0001 0011 1111 1010 1110
0000 0100 1101 1101 1111
Lo studio di un caso - 18
Supponiamo di aver definito anche un codice per la rappresentazione
dei numeri su cui il calcolatore opera (celle da 1010 a 1111); il
programma così codificato può ora essere rappresentato nella
memoria della macchina reale che abbiamo illustrato e che ora può
effettivamente eseguirlo.

Osserviamo che sì è astratto dal modo in cui i dati vengono inseriti


nella macchina; essi vanno quindi introdotti manualmente. Situazioni
di questo tipo si verificavano negli elaboratori elettronici anni ’40.

I calcolatori attuali sono dotati di ulteriori funzionalità che


automatizzano anche questo compito e migliorano grandemente la
fruibilità della macchina eseguendo anche più programmi rapidamente
avvicendati, così da renderli,dal punto di vista dell’utente, in
esecuzione contemporanea.

Questi compiti sono svolti dal software di base, un insieme di


programmi in esecuzione sulla macchina; di esso fa parte il sistema
operativo.
Lo stato dell’arte: classificazione dei sistemi
informatici-1

PDA (Personal Digital Assistant)


Computer di formato palmare, con sistema operativo semplificato e
schermo di dimensioni ridotte; spesso accettano input con penna
ottica.
Notebook Computer
sistemi portatili dedicati ad un utente, con schermo LCD, oggi con
capacità di supportare più attività contemporanee.
Personal Computer:
Sistemi analoghi ai notebook, ma per impiego fisso; in genere con
monitor CRT.
Workstation:
Sistemi analoghi ai PC, ma con prestazioni più elevate. In genere
hanno più processori e supportano grafica ad alta risoluzione.
Lo stato dell’arte: classificazione dei sistemi
informatici-2
Mini-calcolatori:
Macchine capaci di servire decine di utenti contemporaneamente,
collegati con f utenti di PC collegati in rete.
Mainframe:
Macchine più potenti dei mini-computer, capaci di servire anche
molte centinaia di utenti contemporaneamente.
Super-calcolatori:
Calcolatori estremamente veloci, multiprocessore, utilizzati in
ambito scientifico o tecnico per calcoli di complessità estrema su
grandissime moli di dati (simulazione, previsioni del tempo…).
Sistemi distribuiti:
Formati dalla interconnessione di vari calcolatori, di tipo anche
diverso, mediante una rete. Il funzionamento di una macchina può
essere compromesso dal guasto di un’altra macchina remota, anche
non conosciuta.
Personal Computer – 1

 Hanno memoria di massa con disco rigido (hard disk) fisso;


sono dotate di drive per dischetti (floppy disk) estraibili o di
masterizzatore per dischi ottici.

 L'informazione nella memoria di massa e' organizzata in


archivi (o file) caratterizzati da un nome.

 Esistono più famiglie di PC differenti per tipo di processore


(Intel, Macintosh…)
Personal Computer - 2

“IBM-compatibili”: hanno processori della famiglia Intel 80x86:

8086
80286
80386
80486
80586 (pentium)
...
prestazioni

 le prestazioni sono influenzate anche da altri parametri :


frequenza del clock, dimensione RAM, velocità del BUS…
...
 unità di misura delle prestazioni:
MIPS (milioni di istruzioni per secondo)
Mflops (milioni di operazioni floating point per
secondo)
Reti di calcolatori: Reti locali

collegano elaboratori fisicamente vicini (nello stesso ufficio


o stabilimento). L’obiettivo è la condivisione di risorse:

Stampante Stampante
di qualita` ad aghi Disk server

Bus di rete

Workstation Workstation Workstation Workstation Workstation


Reti di calcolatori: Reti geografiche

collegano elaboratori distribuiti su un’area geografica di


dimensioni estese (anche intercontinentali).
printer Rete geografica

Host terminali
Host remoti

PC

mini Host

Rete locale
Linea telefonica

Evoluzione e complessità sia dell'hardware che del


software (protocolli di collegamento).
Architettura dei sistemi informatici

In un calcolatore elettronico si possono individuare due


componenti fondamentali:

 Hardware (i componenti fisici del sistema )

 Software (i programmi che vengono eseguiti dal sistema).

Le due componenti, fra loro mutuamente dipendenti, consento-


no l’elaborazione dei dati in ingresso (input) e la generazione
dei dati in uscita (output) soluzione del problema da risolvere.

Ognuno di questi “strati” è composito (può a sua volta essere


suddiviso in altri).

Abbiamo già esaminato nel corso dello studio del caso


precedente gli elementi fondamentali della parte fisica della
macchina (la componente hardware).
Software
E’ classificabile in due grandi categorie:
 Software di base:
Viene messo a disposizione dal produttore dell’elaboratore.
Comprende tutti i programmi necessari a rendere
praticamente utilizzabile la macchina:
o Il firmware;
o il sistema operativo;
o il software di rete;
o un ambiente di programmazione elementare.
 Software applicativo: comprende tutti i programmi che
l’utente decide di installare sulla propria macchina per
risolvere i problemi di suo interesse.
Può comprendere:
o Software di utilità per lo sviluppo di nuovi programmi;
o Software di produttività personale;
o Altri programmi di cui l’utente sente la necessità
(applicazioni scientifiche, giochi, …)
Applicazioni dell’informatica

L’informatica può essere usata per risolvere una grande


quantità di problemi della vita quotidiana:

 Applicazioni numeriche:
 Applicazioni gestionali
 Servizi telematici;
 Automazione industriale
 Controllo di impianti industriali;
 Applicazioni embedded;
 Realtà virtuale;
 Interfacce utente avanzate
Aree disciplinari dell’Informatica

La ACM (Association for Computing Machinery) ha


individuato nell’informatica dieci aree disciplinari :
 Algoritmi e strutture dati;
 Architettura degli elaboratori;
 Intelligenza artificiale e robotica
 Scienze computazionali;
 Basi di dati e sistemi per il ritrovamento dell’informazione;
 Grafica computerizzata;
 Interazione uomo-elaboratore;
 Sistemi operativi e reti;
 Linguaggi di programmazione;
 Ingegneria del software.