A mia madre Gerardina, a mio padre Raffaele
Perché, per prima, si pensa a chi non c’è più
A mia moglie Antonietta
Il mio presente
A mio figlio Raffaele, a mia figlia Ilary
Il futuro
Ai miei studenti
Perché è per loro che ho scritto
Intro
Dopo numerosi anni di insegnamento ho deciso di scrivere quelle che io chiamo
dispense per facilitare lo studio di una materia così articolata e complessa come
l’Informatica; un testo che fosse tagliato per il corso di studi cui vi avvicinate, che
riportasse il necessario, eliminasse il superfluo e che, soprattutto, parlasse la lingua
del docente. La mia esperienza di studente informatico, ormai molto lontana, mi porta
a ritenere che disporre di una dispensa scritta dallo stesso docente che tiene il corso è
la miglior cosa per lo studente, che non è costretto a gestire appunti e libro,
linguaggio del docente e linguaggio del libro, difficoltà per individuare cosa fare,
cosa non fare, cosa approfondire; a questo si unisce il vantaggio di non dover
prendere quasi mai appunti durante le lezioni in classe, evitando di distrarsi dalla
comprensione degli argomenti, sempre piuttosto complessi: seguire e capire, scrivere
poco o niente.
Apro una parentesi per dirvi che ancora oggi sono uno studente informatico,
perché questa disciplina evolve con una velocità enorme e bisogna sempre
aggiornarsi per evitare di diventare, come i computer, “obsoleti”.
Allo sviluppo di tutto il lavoro ho applicato il principio che mi porta a trattare in
maniera esaustiva un argomento nell’ambito dello stesso capitolo, anche quando la
trattazione degli argomenti fa riferimento ad anni di corso diversi. In questo modo
questa dispensa potrà, almeno spero, essere utile anche in seguito, per esempio per
semplici esami universitari o pubblici concorsi, etc. Alcuni capitoli sono, pertanto,
trasversali rispetto al corso che vi accingete a seguire e gli argomenti presenti in essi
saranno trattati nel corso di più anni.
E cominciamo con la prima lezione; vi invito:
• ad arrivare in orario a scuola,
• a seguire le lezioni con attenzione,
• a studiare,
• a rispettare le persone e le cose,
• a fare sempre il vostro dovere,
perché non fare il proprio dovere, prima o poi, si ritorce contro di noi come un
boomerang; fare il nostro dovere aiuta gli altri ed il dovere degli altri aiuta noi.
Seguire le mie indicazioni è semplice, basta fare proprio il concetto espresso da
quattro semplici parole:
Gi altri siamo noi
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Capitolo 1.
Informazione ed informatica
1.1. Informazione e …
L’informazione può essere definita come l’acquisizione di una nuova
conoscenza.
Io mi chiamo Mauro, sono nato il 25/12/1978 e sono cresciuto molto, infatti la
mia altezza è 196 centimetri; il mio codice fiscale è BNCMRA78F25D998V e non so
cantare ma, comunque, ascoltate: “volare oh oh, cantare oh oh oh”, forse è meglio
che smetta; se venite a casa vi faccio vedere il film della mia prima comunione
(capirai che divertimento!) e …. cosa volete sapere? Se ho figli? Ovviamente la
risposta sarà un ‘si’ oppure un ‘no’; questa, per finire, è una mia foto.
Cari ragazzi, avete acquisito un bel po’ di nuove
conoscenze! Vi serviranno? Certo, ma solo per capire il concetto
di informazione e di dato. Le informazioni che avete acquisito
sono, come evidente, di tipo diverso: Alfabetiche, data,
numeriche, alfanumeriche, audio, film, sì/no, foto.
L’informazione viene rappresentata mediante i dati. Il mio nome è
l’informazione, il dato che la rappresenta in un caso specifico può essere ‘Mauro’.
Abbiamo già capito che i dati possono essere di diversi tipi; all’inizio erano
essenzialmente numerici e booleani o logici (SI/NO oppure 0/1) poi i computer
hanno cominciato a trattare anche lettere dell’alfabeto dando così origine ai tipi
alfabetici e alfanumerici: il computer diventa elaboratore elettronico in quanto
capace non solo di calcolare ma anche di elaborare informazione non numerica. Da
qualche decennio l’elaboratore elettronico riesce a gestire anche grafici, foto, audio e
persino filmati divenendo così un sistema di elaborazione in grado di trattare dati
multimediali. I tradizionali tipi di dati vengono così affiancati da altri molto più
efficaci per la rappresentazione dell’informazione. L’elaboratore diventa un
complesso sistema di elaborazione perché deve disporre, innanzitutto, di una
maggiore e più veloce capacità di elaborazione e di altri e più sofisticati dispositivi in
grado di trattare i nuovi tipi di dati.
Cosa ne facciamo dell’informazione? Una domanda alla quale è possibile
rispondere con esempi che evidenzino la grande importanza che l’informazione
assume oggi nella nostra vita:
• la nostra ricchezza o povertà (quella economica) dipende dal conto in banca
ovvero dall’informazione che ne rappresenta il saldo contabile;
Capitolo 1: Informazione ed informatica
7
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• una buona o cattiva informazione può condizionare le nostre scelte quotidiane
in termini di semplici acquisti o esprimere un giudizio politico;
• si pensi ad Internet ed al ruolo sempre più importante che essa assume nella
quotidianità;
• la stessa lezione che ogni giorno ci consente di crescere insieme
professionalmente e umanamente si basa sullo scambio continuo di
informazioni;
• e, per finire, si pensi agli elenchi telefonici, alla nostra rubrica personale, ai
numeri memorizzati sul nostro telefonino, agli SMS, alle comunicazioni
telefoniche, etc. .
Il trattamento dei dati e dell’informazione può essere riassunto nei seguenti
punti essenziali:
1. Acquisizione: è la fase di raccolta delle informazioni;
2. Archiviazione: è la fase in cui l’informazione viene memorizzata per poter
eventualmente essere riutilizzata in seguito;
3. Elaborazione: è la fase più importante e quella che più ci interessa;
l’elaborazione dell’informazione produce nuova informazione, che può, a sua
volta, essere elaborata;
4. Trasmissione: l’informazione va trasmessa tra soggetti e/o macchine.
L’informazione viene acquisita in tanti modi: attraverso la comunicazione
vocale, dalla lettura, attraverso i mezzi di comunicazione di massa, etc. .
L’archiviazione dell’informazione è importante perché ci consente di non
perderla e poterla riutilizzare in tempi successivi; quando l’uomo non conosceva la
scrittura, l’informazione veniva tramandata da padre in figlio attraverso la
‘memoria’; successivamente l’informazione fu riportata su supporti cartacei; oggi si
utilizzano sempre più spesso i sistemi di elaborazione volgarmente detti computer.
Per l’elaborazione dell’informazione vi propongo un banalissimo esempio: la
mamma va al mercato e compra 1 KG di peperoni a € 0.70/KG, ½ KG di patate a €
1.20/KG, 2 KG di pomodori a € 1.50 e ½ KG di zucchine a € 3.00/KG; elaborando
queste informazioni posso concludere che ……… questa sera mangerò una bella
‘ciambottella’ e che faceva bene a non comprare le zucchine perché un po’ care (in
realtà a me la ‘ciambottella’ piace senza le zucchine). E’, questa, già una forma di
elaborazione ma, chiaramente, l’esempio, quello vero, è un altro. Con una semplice
elaborazione, costituita da pochi calcoli, riesco a sapere che la mamma ha speso €
5.80; se sapessi anche (acquisizione) che la mamma aveva in tasca € 50,00, posso
elaborare l’informazione ottenuta al passo precedente e concludere che alla mamma
restano € 44.20; posso comunicare l’informazione a papà che si complimenta con la
mamma per aver saputo preparare una cena per 8 persone con soli € 5.80 (a dire il
vero non è che sia sazio!); il papà è scrupoloso e pignolo ed annota tutte le spese su
Capitolo 1: Informazione ed informatica
8
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
un taccuino (archiviazione) ed a fine mese ne calcola il totale (di nuovo
elaborazione).
L’informazione in passato veniva trasmessa vocalmente o a gesti, oggi si
utilizzano mezzi molto più potenti tra i quali telefono, fax, TV, Radio e, soprattutto,
Internet.
Si intuisce come il trattamento1 dell’informazione sia radicalmente cambiata nel
corso dei tempi; oggi il trattamento dell’informazione avviene quasi sempre in
maniera automatica ovvero con sistemi elettronici; nasce così una nuova scienza:
l’Informatica; la parola informatica nasce dalla contrazione dei termini
Informazione ed automatica e, quindi, è la scienza che studia il trattamento
automatico dell’informazione ovvero le tecniche e gli strumenti automatici per
acquisire, archiviare, elaborare e trasmettere l’informazione; un’altra scienza,
che moltissimi vantaggi porta alla gestione dell’informazione ed in particolare alla
sua trasmissione, è la telecomunicazione; per questo oggi spesso si parla anche di
ICT, Information and Communication Tecnology.
Lo strumento utilizzato per l’elaborazione automatica dei dati era inizialmente
chiamato computer ma, come già detto in precedenza, il termine più adatto è, oggi,
sistema di elaborazione perché è costituito da un insieme di parti interconnesse ed
interagenti e non calcola ma elabora.
Questo strumento si distingue da tutti gli altri che conosciamo quali TV, radio,
elettrodomestici, calcolatrici, etc., perché esso è costituito da due componenti:
Hardware e Software. L’hardware è la struttura fisica del sistema mentre il
software è costituito dai programmi che l’hardware è in grado di eseguire.
Ma cosa è un programma? Un programma è un insieme di istruzioni
opportunamente correlate tra loro che, eseguite da una macchina, consente il
trattamento dell’informazione; avrò modo in seguito di ritornare sull’argomento e
approfondirne il concetto.
Il programma viene memorizzato all’interno del sistema in una memoria per cui
per poter eseguire elaborazioni diverse non è necessario cambiare macchina o
intervenire sul suo hardware ma semplicemente realizzare un nuovo programma che
effettui l’elaborazione voluta. Per questo motivo gli elaboratori elettronici sono detti
general purpose ovvero per scopi generali; con una radio ascoltiamo, con la TV
vediamo, con la lavatrice laviamo, etc., ma un computer è utilizzabile per tantissimi
scopi diversi: lo stesso sistema di elaborazione può essere, infatti, utilizzato da
qualsiasi professionista, dallo studente, per motivi ludici, dall’azienda, da un qualsiasi
ente, etc.; quello che cambia non è l’hardware ma solo il software utilizzato, perché le
problematiche ovvero il tipo di elaborazione richiesto da persone così diverse sarà,
ovviamente, completamente diverso.
1
Trattamento dell’informazione: acquisizione, archiviazione, elaborazione e/o trasmissione dell’informazione.
Capitolo 1: Informazione ed informatica
9
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
1.2. Rappresentazione dell’informazione
1.2.1. Generalità
Un sistema di elaborazione si basa su una logica estremamente semplice: la
logica binaria. La logica binaria fa uso, per la rappresentazione dell’informazione,
solo di due simboli: 0 e 1, ai quali ci riferiremo con il termine bit, contrazione di
binary digit (cifra binaria); spesso ci riferiremo ad essa come logica booleana
costituita dai concetti vero e falso (TRUE/FALSE). In effetti ho detto qualcosa di
molto importante che ancora, probabilmente, vi sfugge; in altri termini ho detto che
tutto quello che viene trattato dall’elaboratore è binario. Allora vi chiederete come è
possibile che un nome o un cognome, il prezzo di un articolo o migliaia di
informazioni relative, per esempio, alla nostra scuola, possano essere rappresentate
correttamente con un alfabeto costituito solo da 0 e 1. Ancora più difficile è
immaginare come una foto, un film e, in genere, una informazione multimediale
possa essere correttamente gestita utilizzando solo 0 ed 1, ovviamente miliardi di 0 ed
1 ma sempre e solo due simboli.
E allora procedo con ordine e comincio dando alcune definizioni:
• Alfabeto: insieme di simboli;
• Parola: successione di simboli di un alfabeto;
• Frase: insieme di parole;
• Grammatica o Sintassi: regole per scrivere correttamente le frasi.
Per esempio, l’alfabeto italiano è costituito dalle lettere da “A” a “Z” e “Cane” è
una parola scritta su tale alfabeto; la grammatica ci consente di stabilire che la frase
“il cane mangia la carne” è corretta, mentre non lo è “il cane e bello”.
L’alfabeto utilizzato dal computer è {0, 1}, così una parola scritta su tale
alfabeto non è altro se non una successione di 0 e 1. Un raggruppamento di 8 bit è
detto BYTE.
Ma perché la logica dei computer è binaria ovvero perché i progettisti hanno
ritenuto opportuno realizzare i sistemi di elaborazione con una logica così semplice?
La risposta non risiede nel fatto che era impossibile realizzare elaboratori con una
logica diversa e più complessa come quella decimale (cifre 0-9) alla quale siamo
abituati ma per motivi ben più importanti. La rappresentazione di un bit richiede la
progettazione di elementi bistabili ovvero aventi due stati stabili di cui uno
rappresenta lo 0 e l’altro l’1; per esempio un elemento bistabile è l’interruttore
(spento/acceso) oppure una lampadina o un componente elettronico come un
condensatore (carico/scarico). Gli elementi bistabili offrono i seguenti vantaggi:
• Facilità costruttiva;
Capitolo 1: Informazione ed informatica
10
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• Facilità di integrazione: i moderni circuiti integrati contengono centinaia
di milioni di componenti bistabili;
• Velocità: un elemento bistabile può solo cambiare stato e lo fa in maniera
estremamente veloce;
• Affidabilità: un elemento bistabile può lavorare per anni senza incidenza
di guasti;
• Costo: il costo è molto basso.
Nei paragrafi successivi vedremo come sia possibile rappresentare una gran
quantità di informazioni utilizzando l’alfabeto binario.
1.2.2. Rappresentazioni numeriche
In questo paragrafo vedremo come è possibile rappresentare i numeri con diversi
sistemi di numerazione. Il sistema di numerazione al quale siamo abituati fin da
bambini è a base 10 o decimale ovvero è un sistema che rappresenta tutti i numeri
utilizzando 10 simboli detti cifre. Questo sistema di numerazione è di tipo
posizionale ovvero ciascuna cifra ha un valore intrinseco ed un altro che dipende
dalla posizione occupata nell’ambito del numero; il peso è dato da una potenza la cui
base è 10 ed il cui esponente dipende dalla posizione della cifra nell’ambito del
numero. Ad esempio:
1918,5 = 1*103+9*102+1*101+8*100+5*10-1
in effetti i pesi sono quelli che già dalle scuole elementari chiamavamo unità,
decine, centinaia, etc. per la parte intera e decimi, centesimi, millesimi, etc. per la
parte frazionaria.
L’attuale sistema di numerazione posizionale ha origini arabe.
A questo punto vi faccio una domanda che vi potrà stupire: perché si utilizzano
10 cifre per scrivere i numeri? Gli studiosi, che hanno cercato di rispondere a questa
domanda, si sono dati questa unica risposta: forse perché abbiamo 10 dita. In effetti
nel passato vi sono stati anche altri sistemi di numerazione, tra questi vi ricordo
quello romano, che non era posizionale anche se vi era un accenno di posizionalità:
VI=6 mentre IV=4.
Allora è possibile numerare anche con un numero minore o maggiore di 10
simboli o cifre ovvero utilizzare sistemi di numerazione a base diversa dal 10; in
pratica, però, ci limiteremo a considerare la base 2 o binaria, la base 8 o ottale e la
base 16 o esadecimale per i motivi che esporrò in seguito.
Se è chiaro che in base 2 si utilizzano le cifre o i simboli {0, 1}, che in base 8 si
usano le cifre o i simboli {0, 1, 2, 3, 4, 5, 6, 7} non è chiaro come si risolve il
problema delle cifre per la base 16 o esadecimale; in questo caso, oltre alle dieci
Capitolo 1: Informazione ed informatica
11
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
cifre, si utilizzano anche le prime 6 lettere dell’alfabeto, per cui in base 16 le cifre o i
simboli utilizzati sono {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}, dove le lettere da
A ad F corrispondono ai valori decimali da 10 a 15. Nella seguente tabella riporto la
corrispondenza, tra le basi citate, per le sedici cifre esadecimali:
Esadecimale Binario Ottale Decimale
0
0
0
0
1
1
1
1
2
10
2
2
3
11
3
3
4
100
4
4
5
101
5
5
6
110
6
6
7
111
7
7
8
1000
10
8
9
1001
11
9
A
1010
12
10
B
1011
13
11
C
1100
14
12
D
1101
15
13
E
1110
16
14
F
1111
17
15
Considerato che un numero può essere rappresentato con basi diverse, sarà
necessario, d’ora in poi e dove possano sorgere dubbi, specificare la base del sistema
di numerazione, che seguirà, come pedice, il numero stesso; così 12310 è in base 10,
1238 in base 8, 12316 in base 16 e 1011012 in base 2; sarebbe ovviamente un errore
123212. Per i numeri che non sono seguiti dal pedice rappresentante la base del
sistema di numerazione, si intenderà, ovviamente, la base 10.
Ma se è possibile utilizzare sistemi diversi, sarà necessario individuare formule
che consentano di passare dalla rappresentazione di un numero dato in una base a
quella equivalente di un’altra base perché è evidente che lo stesso numero vedrà
variata la sua rappresentazione nel passare da una base all’altra ma non il suo valore.
Più che di formule si parla di procedure di calcolo dette algoritmi di cui parlerò
approfonditamente nei capitoli successivi ma ritengo opportuno dare almeno la
Capitolo 1: Informazione ed informatica
12
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
definizione di algoritmo: Un algoritmo è un insieme ben coordinato di istruzioni
che a partire da dati iniziali fornisce dati finali o risultati.
Per convertire un numero dato in base 10 ad una qualsiasi altra base “b” si
utilizzano 2 algoritmi: uno per convertire la parte intera ed un altro per la parte
frazionaria.
L’algoritmo per convertire la parte intera è costituito dai seguenti passi:
i.
Si divide il numero dato per la base b di arrivo;
ii.
Si continua a dividere il quoziente per la base b di arrivo finchè il quoziente
diventa zero;
iii.
La rappresentazione in base b del numero in base 10 è data dal numero formato
dai resti presi dall’ultimo al primo.
Esempio: Convertire 15810 in base 2, 8 e 16.
158 : 2
0 79 : 2
1 39 : 2
1 19 : 2
1
9:2
1
4:2
0 2:2
0 1:2
1 0
Per cui 15810 = 100111102.
158 : 8
6 19 : 8
3 2:8
2 0
Per cui 15810 = 2368
158 : 16
14 9 : 16
9 0
Per cui 15810 = 9E16.
Capitolo 1: Informazione ed informatica
13
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
La conversione della parte frazionaria fa uso del seguente algoritmo:
i.
Si moltiplica la parte frazionaria per la base b di arrivo;
ii.
Si isola la parte intera;
iii.
Si continua a moltiplicare la parte frazionaria finchè non si verifica una
delle seguenti condizioni:
1. la parte frazionaria diventa zero: la conversione è perfetta;
2. il valore della parte frazionaria è uguale ad una precedente; allora il
numero è, ovviamente, periodico;
3. ci si ferma dopo un numero prefissato di passi: in questo caso,
riconvertendo il numero ottenuto di nuovo nella base di partenza, si
ottiene un valore leggermente inferiore.
iv.
La rappresentazione in base b del numero in base 10 è data dal numero
frazionario formato dalle parti intere isolate prese in ordine naturale.
Esempio: Convertire 0.9510 in base 2, 8 e 16.
.95 * 2 = 1
.9 * 2 = 1
.8 * 2 = 1
.6 * 2 = 1
.2 * 2 = 0
.4 * 2 = 0
.8
STOP
Per cui 0.9510 = 0.111100; in questo caso, un numero non periodico in base 10
diventa periodico in base 2.
.95 * 8 = 7
.6 * 8 = 4
.8 * 8 = 6
.4 * 8 = 3
.2 * 8 = 1
.6
STOP
Per cui 0.9510 = 0.746318.
Capitolo 1: Informazione ed informatica
14
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
.95 * 16 = 15
.2 * 16 = 3
.2
STOP
Per cui 0.9510 = 0.F316.
Le conversioni da una base b qualsiasi alla base 10 è molto più semplice ed è
sufficiente applicare la seguente formula polinomiale:
∑ci*bi
con –m <= i <= n
dove:
b: base del sistema di numerazione;
ci: cifre costituenti il numero dato in base b e i la sua posizione;
n+1: numero di cifre costituenti la parte intera del numero dato in base b;
m: numero di cifre decimali.
Come al solito un esempio chiarirà la formula: convertire 236.748 in base 10.
c2 c1 c0 c-1 c-2
2
3
6
7
4
per cui, applicando la formula polinomiale, si ottiene:
2
1
0
236.748 = c2 * b + c1 * b + c0 * b + c-1 * b
0
*8 +7*8
-1
+4*8
-2
-1
+ c-2 * b
-2
2
1
=2*8 +3*8 +6
= 128 + 24 + 6 + 0.875 + 0.0625 = 158.937510.
Analogamente per A3C.2F16 si ottiene:
A3C.2F16 = A * 162 + 3 * 161 + C * 160 + 2 * 16-1 + F * 16-2 = 10 * 256 + 3 * 16
+ 12 * 1 + 2 * 16-1 + 15 * 16-2 = 2620,1835937510.
La conversione di numeri binari costituiti da pochi bit è estremamente semplice
perché è sufficiente sommare le potenze del 2 corrispondenti ai bit 1; per esempio,
per 101100 si ottiene 44=22+23+25.
Ho limitato la trattazione delle basi alle basi 10, 2, 8 e 16 e la scelta non è
casuale. La base 10 è quella che abbiamo utilizzato fin dalle scuole elementari ed è
l’unica conosciuta dalla quasi totalità delle persone. La base 2, ovviamente, assume
importanza per gli informatici perché il computer, come detto, è binario. Il sistema
binario, però, ha un inconveniente: sono necessarie molte cifre anche per
Capitolo 1: Informazione ed informatica
15
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
rappresentare numeri piccoli; per esempio 125410=100111001102. Le basi 8 e 16 sono
particolari perché potenze di 2 (8=23 e 16=24). Le conversioni da base 2 a base 8 e 16
e viceversa possono essere realizzate in maniera immediata ovvero un numero in base
8 o 16 può essere letto direttamente in base 2; con le basi 8 e 16, pertanto, è come se
scrivessi in binario ed utilizzo un numero assai ridotto di cifre ed esattamente 1/3 per
l’ottale e 1/4 per l’esadecimale; si capirà come un byte può essere rappresentato con
esattamente 2 sole cifre binarie.
La conversione da base 2 a base 8 (16) avviene in maniera estremamente
semplice raggruppando le cifre binarie in gruppi di 3 (4) bit a partire dal punto
decimale e procedendo verso sinistra per la parte intera e verso destra per la parte
decimale aggiungendo, eventualmente, zeri non significativi; ciascun gruppo di 3 (4)
cifre è convertito nella corrispondente cifra ottale (esadecimale).
Esempio: convertire 1000110.101012 in base 8 e 16.
001 000 110.101 0102 = 106.528
0100 0110.1010 10002 = 46.A816
Anche la conversione da base 8 (16) a base 2 è piuttosto semplice in quanto è
sufficiente trasformare ciascuna cifra ottale (esadecimale) in un gruppo di 3 (4) bit
così 38 = 0112 (316 = 00112).
Esempio: convertire 106.528 e 46.A816 in base 2
106.528 = 001 000 110.101 0102
46.A816 = 0100 0110.1010 10002
In effetti la conversione avviene mentalmente, ovvero si legge in binario sia
l’ottale che l’esadecimale e viceversa. Provate con i seguenti numeri:
1000011001.11100012 111111000010101.10000111012 11110101011.1010012
561.0138 324.078 564.1238
A1E.C316 4BD7.8316 3F8.C516
1.2.2.1. Le quattro operazioni binarie
In questo paragrafo vedremo come siano semplici le 4 operazioni fondamentali
in binario.
L’operazione di addizione è estremamente semplice, basta solo capire che
1+1=0 con il riporto di 1 e che, per esempio, 1+1+1=1 con il riporto di 1 e
1+1+1+1=0 con il riporto di 10 e così via.
L’operazione di sottrazione, come tutte le operazioni inverse, è un po’ più
complicata ma basta solo capire che 0-1 non si può e che 0, dopo aver ricevuto un
prestito dalla cifra immediatamente a sinistra, diventa 10 e così via.
Capitolo 1: Informazione ed informatica
16
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
L’operazione di moltiplicazione vi farà scompisciare dal ridere (scherzo!)
perché la terribile tavola pitagorica, che tanti problemi ci ha procurato quando, da
bambini, dovevamo imparare le tabelline, diventa estremamente semplice anzi troppo
semplice perché si riduce alla tabellina dello 0 e dell’1 che non credo debba riportare!
Così moltiplicare per 1 significa riscrivere il moltiplicando e moltiplicare per 0
significa spostarsi a sinistra di una ulteriore posizione.
Anche l’operazione di divisione piuttosto complicata, soprattutto quella a più
cifre, diventa incredibilmente semplice perché il divisore o non divide il dividendo
oppure lo divide 1 sola volta; ovvio, è la logica binaria!
Ritengo comunque opportuno riportare un esempio per ciascuna operazione, il
resto verrà fatto in classe e vedrete come le quattro operazioni in binario siano
estremamente semplici.
1011011 +
111 =
1100010
1011000 111 =
1010001
10100 *
1001 =
10100 +
10100===
10110100
11110111 : 101=
101
110001
0101
101
0000111
101
010
Capitolo 1: Informazione ed informatica
17
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
1.2.2.2. Fixed e Floating point
Nei paragrafi precedenti siamo riusciti a rappresentare in binario numeri dati in
base 10, ma resta ancora da capire come si possano rappresentare i numeri negativi e
con parte frazionaria perché i simboli “ . ”, “ + ” e “ – ” non possono essere utilizzati
in binario; sento una vocina che dice “perché?”, datevi la risposta. In effetti la
rappresentazione precedente è detta binaria assoluta perché rappresenta solo i
numeri positivi.
La rappresentazione fixed point (virgola fissa) consente di rappresentare i
numeri interi positivi e negativi ed è caratterizzata da:
• Lunghezza fissa: tutti i valori sono rappresentati con lo stesso numero di
cifre binarie;
• Si cambia segno, ovvero si passa dal positivo al negativo,
complementando (complementare: scambiare 1 con 0 e viceversa) ed
incrementando (incrementare: aggiungere 1): in questo modo il bit più
significativo (quello a sinistra) diventa bit del segno (0 per i numeri
positivi e 1 per i negativi); questa tecnica è nota con il nome di
complemento a 2. La tecnica del complemento a 1 cambia segno solo
complementando;
• Con n bit i numeri in base 10 rappresentabili vanno da -2n-1 a +2n-1-1; per
esempio, con 16 bit si rappresentano i numeri compresi tra -216-1 a +216-1-1
ovvero tra -32768 e +32767.
Esempio: rappresentare in fixed point 8 bit il numero -6210.
6210 = 1111102 = 001111102
ho aggiunto 2 zeri non significativi a sinistra
per normalizzare la lunghezza
Cambio segno: 00111110 complementato 11000001 e incrementato
11000010;
per cui -6210 = 110000102 fixed point 8 bit
Si noti che 11000102 è pari a 9810 se si utilizza la binaria assoluta; per poter
correttamente interpretare una sequenza di bit, pertanto, è assolutamente necessario
sapere il tipo di rappresentazione che si utilizza.
Esempio: convertire 101010102 fixed point 8 bit in base 10;
posso subito dire che il numero è negativo e lo trasformo in positivo
complementando ed incrementando ottenendo prima 01010101 e poi 01010110 che,
trasformato con la formula polinomiale in base 10, diventa 8610, per cui il numero in
fixed point 8 bit 101010102 = -8610 .
Se il numero dato in base 2 è positivo, ovvero il bit del segno è 0, allora è
sufficiente applicare la formula polinomiale vista in precedenza.
Capitolo 1: Informazione ed informatica
18
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Per concludere il paragrafo è necessario introdurre i concetti di overflow e
extent o carry. Si consideri la seguente addizione di 2 numeri fixed point 8 bit:
01010100+
01000100=
10011000
si noti che i due addendi sono positivi (bit del segno 0) mentre il risultato è
negativo (bit del segno 1); in questo caso si verifica un errore di overflow segnalato
dal sistema con un messaggio di errore che interrompe l’esecuzione dell’operazione.
Ma perché questo errore? I due addendi trasformati in base 10 corrispondono a
8410 e 6810 la cui somma è 15210; con 8 bit i numeri in base 10 rappresentabili vanno
da -27 e +27-1 ovvero tra -128 e +127 ed allora ecco l’overflow: il risultato supera le
capacità di rappresentazione della macchina; in altri termini la somma dei due numeri
fixed point 8 bit non è rappresentabile in fixed point 8 bit.
Si consideri la seguente somma:
11010100+
11000100=
1 10011000
come si può notare il risultato presenta una cifra in più detta extent che non
altera il risultato corretto dell’operazione costituito dagli altri 8 bit. I due addendi, in
questo caso, sono negativi così come il risultato costituito dagli 8 bit più a destra.
Verifichiamo quanto detto trasformando tutto in decimale:
Primo addendo: 110101002 = -4410
Secondo addendo: 110001002 = -6010
Risultato: 100110002 = -10410 corretto!
Per poter rappresentare tutti i numeri, manca solo la parte frazionaria e, quindi,
la necessità di eliminare il punto decimale, separatore della parte intera da quella
frazionaria. Per fare questo, si utilizza la rappresentazione floating point (virgola
mobile) che fa uso della notazione scientifica. La notazione scientifica rappresenta i
numeri mediante la mantissa e l’esponente; la mantissa è costituita dalle cifre del
numero mentre l’esponente è appunto l’esponente di una potenza la cui base è la base
del sistema di numerazione. Per esempio, il numero 152.18 può essere rappresentato
in notazione scientifica come 1.5218 x 102 oppure 15218 x 10-2 oppure 0.15218x103;
appare evidente da questo esempio che un qualsiasi numero può essere rappresentato
in notazione scientifica in infiniti modi; tra questi se ne sceglie uno detto notazione
scientifica normalizzata che, in genere, ha la parte intera zero2 e la prima cifra
2
In genere le calcolatrici scientifiche normalizzano con parte intera costituita da una sola cifra diversa da zero ad
eccezione del caso in cui il valore sia zero.
Capitolo 1: Informazione ed informatica
19
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
decimale diversa da zero (se il valore del numero da rappresentare è diverso da zero).
Così la rappresentazione di 152.18 in notazione scientifica normalizzata sarà unica:
0.15218 x 103.
Se fissiamo le seguenti regole:
• La lunghezza della mantissa è fissa;
• La lunghezza dell’esponente è fissa;
• La parte intera, essendo sempre 0, viene eliminata;
• La base è quella del sistema di numerazione in uso e, quindi, può essere
sottintesa.
otteniamo che per rappresentare un qualsiasi numero non abbiamo bisogno della
virgola, del separatore tra mantissa ed esponente e della base.
Per esempio se la mantissa è lunga 6 e l’esponente 2 il numero 152.18 viene
rappresentato in floating point come 15218003; si noti l’aggiunta di uno zero a destra
nella mantissa, immediatamente prima dell’esponente, per poter normalizzare la
lunghezza a 6; in questo caso l’aggiunta viene fatta a destra perché, a differenza della
fixed point, questi zeri sono non significativi perché decimali finali (ricordatevi che si
sottintende 0.) .
Con le stesse ipotesi:
Floating point
Valore
19800004
1980
-89745802
-89.7458
548000-05
0.00000548
25400012
254000000000
Nel terzo esempio compare un valore negativo ed il segno in binario, come
visto, è un problema ed un altro problema è costituito dal segno della mantissa.
Entrambi questi problemi sono stati risolti, in binario utilizzando una notazione
scientifica normalizzata così composta:
SM Mantissa
Esponente
Dove SM è il segno della mantissa ovvero del numero: 0 se positivo, 1 se
negativo e Esponente è la rappresentazione fixed point dell’esponente, che risolve il
problema del segno.
Esempio: si rappresenti in floating point 32 bit, mantissa 24 bit ed esponente 8
bit, il numero -152.1810 .
Capitolo 1: Informazione ed informatica
20
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Il primo passo è quello di convertire 152.18 in base 2 con gli algoritmi descritti
in precedenza ovvero divisioni successive per la parte intera e moltiplicazioni per la
parte decimale; tralasciando i calcoli:
152.1810 = 10011000.00101112
quindi si normalizza:
152.1810 = 10011000.00101112 = 0.10011000001011100000000 x 28
o, meglio:
152.1810 = 10011000.00101112 = 0.10011000001011100000000 x 101000
ed infine:
1 10011000001011100000000 00001000
Ingegnoso, non c’è che dire, la virgola è sparita! L’esponente consente di
tenerne memoria facendo fluttuare a destra (se positivo) o a sinistra (se negativo) la
virgola virtualmente presente all’inizio di ciascuna mantissa. Pensate per qualche
minuto a quanto possa essere poi difficile sommare, sottrarre, moltiplicare e dividere
numeri così rappresentati e, se ancora non vi è chiaro il “castello” costruito con i
mattoncini 0 e 1, pensate a qualcosa di ancora più complicato: le funzioni
logaritmiche ed esponenziali, la trigonometria e ………….. “basta professò! Per
carità ci basta il prof. Ciardulli!”
Esperti informatici e matematici hanno realizzato migliaia di algoritmi
estremamente complessi che consentono ai moderni sistemi di elaborazione di
acquisire dati variegati, ridurli in “polpette”, memorizzarli, elaborarli e trasmetterli.
Per le ipotesi fatte, una qualsiasi mantissa binaria sarà del tipo 0.1 ….., ed è
facile capire che una tale mantissa avrà un valore decimale compreso tra ½ ed 1 (1
escluso) per cui il concetto di overflow per la notazione scientifica si applica
all’esponente che, di fatti, rappresenta l’ordine di grandezza del numero; ho detto,
quindi, che l’errore di overflow si verifica solo quando si superano le capacità di
rappresentazione dell’esponente. In maniera analoga si introduce il concetto di
underflow, situazione di errore che si verifica con numeri molto piccoli, ovvero
quando l’esponente ha un valore al di sotto del più piccolo esponente rappresentabile.
In generale i sistemi informatici utilizzano rappresentazioni binarie assolute a 8
bit, fixed point a 16, 32 e 64 bit e floating point a 32 e 64 bit. Perché tante
rappresentazioni? Non sarebbe sufficiente la floating point 64 bit? Pur non entrando
in dettagli, è evidente che operare su due numeri floating point richiede un tempo
sicuramente maggiore che per numeri fixed point e non è sicuramente necessario
dettagliare per capire che l’occupazione dello spazio in memoria è chiaramente
differente. Il trattamento di numeri floating point richiede tempi fino a decine di volte
superiori a quelli necessari per un fixed point. Allora se devo rappresentare l’età di
una persona o il numero di studenti di una classe è sufficiente un assoluto 8 bit,
Capitolo 1: Informazione ed informatica
21
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
mentre per il numero di studenti di un Istituto o degli abitanti di una città ho bisogno
di un fixed point (quale tra 16 e 32 bit?) e, infine, per il prezzo di un articolo mi serve
un floating point, altrimenti addio centesimi!
E’ stato abbastanza semplice capire come i numero in base 10 possano essere
convertiti in altre basi e, soprattutto, rappresentati in binario; ma tutto questo non è
sufficiente perché i dati, come visto ad inizio capitolo, assumono forme
completamente diverse dai numeri, almeno nella loro forma esteriore perché, e questo
ormai l’abbiamo capito, all’interno del nostro computer tutto diventa binario, anche
se e nonostante la conoscenza delle conversioni numeriche questo può sembrare
ancora difficile da comprendere.
1.2.3. Rappresentazione alfanumeriche
Nei paragrafi precedenti abbiamo visto come sia possibile rappresentare dati
numerici utilizzando la base 2. Ad inizio capitolo, però, abbiamo visto che i dati
spesso assumono forme tutt’altro che numeriche. Il passo successivo, pertanto, sarà
quello di rappresentare dati alfanumerici mediante l’alfabeto binario e questo
risulterà ancora più semplice che per i dati numerici.
Ad inizio capitolo ho definito l’alfabeto e le parole scritte su un alfabeto, ebbene
approfondendo il discorso posso dire che esiste un alfabeto esterno ed uno interno.
L’alfabeto esterno è costituito dai simboli da noi utilizzati ed è costituito dalle lettere
maiuscole e minuscole dell’alfabeto, dalle 10 cifre, dai segni di punteggiatura, da
simboli speciali, etc. . L’alfabeto interno è quello utilizzato dalla macchina e, come
già detto, è binario ovvero costituito solo dai due simboli 0 ed 1. E’ pertanto
impossibile codificare i simboli dell’alfabeto esterno mediante quelli dell’alfabeto
interno, semplicemente perché questi ultimi sono in numero inferiore. La soluzione
adottata è estremamente semplice e fa uso di un’operazione di codifica che associa a
ciascun simbolo dell’alfabeto esterno una parola scritta sull’alfabeto interno. Un
codice, pertanto, non è altro se non una tabella che fa corrispondere una
combinazione di bit, in genere 8, ad un simbolo dell’alfabeto esterno. I codici più
utilizzati sono il codice ASCII (American Standard Code for Information
Interchange) e l’EBCDIC (Extended Binary Coded Decimal Interchange Code)
riportati nelle seguenti tabelle:
Capitolo 1: Informazione ed informatica
22
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Codice ASCII 7 bit
Dec Hex Simbolo Dec Hex Simbolo Dec Hex Simbolo Dec Hex Simbolo
0
00
NUL
32
20
space
64
40
@
96
60
`
1
01
SOH
33
21
!
65
41
A
97
61
a
2
02
STX
34
22
"
66
42
B
98
62
b
3
03
ETX
35
23
#
67
43
C
99
63
c
4
04
EOT
36
24
&
68
44
D
100
64
d
5
05
ENQ
37
25
%
69
45
E
101
65
e
6
06
ACK
38
26
$
70
46
F
102
66
f
7
07
BEL
39
27
‘
71
47
G
103
67
g
8
08
BS
40
28
(
72
48
H
104
68
h
9
09
HT
41
29
)
73
49
I
105
69
i
10
0A
LF
42
2A
*
74
4A
J
106
6A
j
11
0B
VT
43
2B
+
75
4B
K
107
6B
k
12
0C
FF
44
2C
,
76
4C
L
108
6C
l
13
0D
CR
45
2D
-
77
4D
M
109
6D
m
14
0E
SO
46
2E
.
78
4E
N
110
6E
n
15
0F
SI
47
2F
/
79
4F
O
111
6F
o
16
10
DLE
48
30
0
80
50
P
112
70
p
17
11
DC1
49
31
1
81
51
Q
113
71
q
18
12
DC2
50
32
2
82
52
R
114
72
r
19
13
DC3
51
33
3
83
53
S
115
73
s
20
14
DC4
52
34
4
84
54
T
116
74
t
21
15
NAK
53
35
5
85
55
U
117
75
u
22
16
SYN
54
36
6
86
56
V
118
76
v
23
17
ETB
55
37
7
87
57
W
119
77
w
24
18
CAN
56
38
8
88
58
X
140
78
x
25
19
EM
57
39
9
89
59
Y
121
79
y
26
1A
SUB
58
3A
:
90
5A
Z
122
7A
z
27
1B
ESC
59
3B
;
91
5B
[
123
7B
{
28
1C
FS
60
3C
<
92
5C
\
124
7C
|
29
1D
GS
61
3D
=
93
5D
]
125
7D
}
30
1E
RS
62
3E
>
94
5E
^
126
7E
~
31
1F
US
63
3F
?
95
5F
_
127
7F
DE
Il codice ASCII, inizialmente a 7 bit, è stato successivamente ampliato a 8 bit
per poter codificare un maggior numero di caratteri, tra questi alcuni nazionali ovvero
una serie di valori del codice corrispondono, a seconda della nazione, a simboli
diversi.
Capitolo 1: Informazione ed informatica
23
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Estensione del codice ASCII
DEC
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Simbolo
Ç
ü
é
â
ä
à
å
ç
ê
ë
è
ï
î
ì
Ä
Å
É
æ
Æ
ô
ö
ò
û
ù
ÿ
Ö
Ü
ø
£
Ø
×
ƒ
DEC
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Simbolo
á
í
ó
ú
ñ
Ñ
ª
º
¿
®
¬
½
¼
¡
«
»
_
_
_
¦
¦
Á
Â
À
©
¦
¦
+
+
¢
¥
+
DEC
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
Simbolo
+
+
+
ã
Ã
+
+
¦
+
¤
ð
Ð
Ê
Ë
È
i
Í
Î
Ï
+
+
_
_
¦
Ì
_
DEC
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
Simbolo
Ó
ß
Ô
Ò
õ
Õ
µ
þ
Þ
Ú
Û
Ù
ý
Ý
¯
´
±
_
¾
¶
§
÷
¸
°
¨
·
¹
³
²
_
SPAZIO
In questa tabella estesa sono ripetuti più volte alcuni segni (+ - _ ), già contenuti
nella tabella standard; si tratta di combinazioni non assegnate a simboli standard ed in
genere utilizzati per caratteri grafici oggi poco utilizzati.
Il codice ASCII è quello attualmente utilizzato dai personal computer.
I caratteri corrispondenti ai primi 31 valori del codice ASCII sono cosiddetti
non stampabili ed utilizzati per il controllo delle periferiche; per esempio, per
Capitolo 1: Informazione ed informatica
24
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
cambiare il carattere di stampa (SI: Shift In, SO: Shift Out) o avanzare di un rigo (LF:
Line Feed) o di una pagina (FF: Form Feed).
Si noti come il codice 32 corrisponde allo spazio così come i codici da 48 a 57
rappresentano le cifre; le lettere maiuscole dell’alfabeto hanno codici da 65 a 90 e le
minuscole da 97 a 122.
Non tutti i caratteri del codice ASCII sono presenti sulla tastiera del nostro PC,
per questo per i caratteri assenti si può utilizzare il tasto <ALT> di sinistra in
combinazione con il tastierino numerico: si digita il codice ASCII sul tastierino
numerico tenendo abbassato il tasto <ALT> e, al suo rilascio, viene visualizzato il
corrispondente carattere.
Capitolo 1: Informazione ed informatica
25
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Codice EBCDIC
Dec Hex Simbolo Dec Hex Simbolo Dec Hex Simbolo Dec Hex Simbolo
0
00
NUL
32
20
64
40
1
01
SOH
33
21
65
2
02
STX
34
22
3
03
ETX
35
4
04
5
05
6
06
7
07
8
space
96
60
-
41
97
61
/
66
42
98
62
23
67
43
99
63
36
24
68
44
100
64
37
25
LF
69
45
101
65
38
26
ETB
70
46
102
66
39
27
ESC
71
47
103
67
08
40
28
72
48
104
68
9
09
41
29
73
49
105
69
10
0A
42
2A
74
4A
[
106
6A
|
11
0B
VT
43
2B
75
4B
.
107
6B
,
12
0C
FF
44
2C
76
4C
<
108
6C
%
13
0D
CR
45
2D
ENQ
77
4D
(
109
6D
_
14
0E
SO
46
2E
ACK
78
4E
+
110
6E
>
15
0F
SI
47
2F
BEL
79
4F
|!
111
6F
?
16
10
DLE
48
30
80
50
&
112
70
17
11
49
31
81
51
113
71
18
12
50
32
82
52
114
72
19
13
51
33
83
53
115
73
20
14
52
34
84
54
116
74
21
15
53
35
85
55
117
75
22
16
54
36
86
56
118
76
23
17
55
37
87
57
119
77
24
18
CAN
56
38
88
58
120
78
25
19
EM
57
39
89
59
121
79
‘
26
1A
58
3A
90
5A
!]
122
7A
:
27
1B
59
3B
91
5B
$
123
7B
#
28
1C
IFS
60
3C
92
5C
*
124
7C
@
29
1D
IGS
61
3D
93
5D
)
125
7D
‘
30
1E
IRS
62
3E
94
5E
;
126
7E
=
31
1F
IUS
63
3F
95
5F
^
127
7F
"
HT
DEL
BS
SYN
EOT
NAK
SUB
Capitolo 1: Informazione ed informatica
26
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Dec Hex Simbolo Dec Hex Simbolo Dec Hex Code Dec Hex Simbolo
128
80
160
A0
192
C0
{
224
E0
129
81
a
161
A1
130
82
b
162
131
83
c
132
84
133
~
193
C1
A
225
E1
A2
s
194
C2
B
226
E2
S
163
A3
t
195
C3
C
227
E3
T
d
164
A4
u
196
C4
D
228
E4
U
85
e
165
A5
v
197
C5
E
229
E5
V
134
86
f
166
A6
w
198
C6
F
230
E6
W
135
87
g
167
A7
x
199
C7
G
231
E7
X
136
88
h
168
A8
y
200
C8
H
232
E8
Y
137
89
i
169
A9
z
201
C9
I
233
E9
Z
138
8A
170
AA
202
CA
234
EA
139
8B
171
AB
203
CB
235
EB
140
8C
172
AC
204
CC
236
EC
141
8D
173
AD
205
CD
237
ED
142
8E
174
AE
206
CE
238
EE
143
8F
175
AF
207
CF
239
EF
144
90
176
B0
208
D0
}
240
F0
0
145
91
j
177
B1
209
D1
J
241
F1
1
146
92
k
178
B2
210
D2
K
242
F2
2
147
93
l
179
B3
211
D3
L
243
F3
3
148
94
m
180
B4
212
D4
M
244
F4
4
149
95
n
181
B5
213
D5
N
245
F5
5
150
96
o
182
B6
214
D6
O
246
F6
6
151
97
p
183
B7
215
D7
P
247
F7
7
152
98
q
184
B8
216
D8
Q
248
F8
8
153
99
r
185
B9
217
D9
R
249
F9
9
154
9A
186
BA
218
DA
250
FA
155
9B
187
BB
219
DB
251
FB
156
9C
188
BC
220
DC
252
FC
157
9D
189
BD
221
DD
253
FD
158
9E
190
BE
222
DE
254
FE
159
9F
191
BF
223
DF
255
FF
Capitolo 1: Informazione ed informatica
\
27
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
1.2.3.1. La codifica UNICODE
I codici visti in precedenza ed altre codifiche, che non ho ritenuto opportuno
riportare, hanno numerosi limiti perché non sono indipendenti:
• dalla piattaforma hardware e/o software, con riferimento soprattutto ai sistemi
operativi di cui parleremo in seguito;
• dall’applicazione, ovvero i programmi applicativi e di base con particolare
riferimento ai data base, di cui parleremo in seguito;
• dalla lingua, lingue nazionali diverse hanno set di caratteri diversi.
Il problema principale risiede nella lunghezza a 8 bit del codice, che consente di
rappresentare solo 256 caratteri, insufficienti per le esigenze di tante nazionalità, ma,
anche se si considera una sola lingua come l’Italiano, 256 caratteri sono insufficienti
per rappresentare tutti i simboli di cui si ha bisogno se, per esempio, si considerano
anche quelli tecnici, matematici, ingegneristici, etc. .
I sistemi di codifica tradizionali, inoltre, creano problemi perché assegnano allo
stesso carattere un codice diverso oppure lo stesso codice per caratteri diversi.
Da queste esigenze nasce il codice UNICODE, che attribuisce a ciascun
simbolo, indipendentemente dalla piattaforma, dall’applicativo e dalla lingua, un
codice numerico identificativo univoco. Lo standard UNICODE è stato adottato dai
principali leader del mercato informatico mondiale, è supportato dalla maggior parte
dei sistemi operativi, dei data base e dei WEB Browser.
Nasce così lo Unicode Consortium, un consorzio senza fini di lucro al quale
aderiscono aziende leader del settore informatico e che si propone di sviluppare,
standardizzare e promuovere l'uso del codice Unicode; il sito web del consorzio è
accessibile mediante il seguente indirizzo (URL: Unique Resource Locator):
http://www.unicode.org/
L’Unicode, oltre ai caratteri di cui ai codici visti in precedenza, codifica alfabeti
nazionali occidentali, latini, greci, ebraici, arabi, cirillici, alfabeti nazionali
orientali, ricchi di simboli come il Giapponese e il Cinese, simboli tecnici, etc.; ho
scaricato per voi da Internet il codice UNICODE completo che, ovviamente, non
riporto, ma vi consiglio di darci uno sguardo che risulterà sicuramente interessante; il
file da consultare è “UNICODE CodeCharts.pdf”, salvato nella stessa cartella
condivisa sul server dal quale copiate questi appunti.
Un codice UNICODE è compreso tra 0 e 1.114.111 = (216 * 17)-1
corrispondente all’esadecimale 10FFFF. Per l’UNICODE sono stati definiti, per il
momento, 3 standard a 8, 16 e 32 bit detti UTF-8, UTF-16 e UTF-32 (Unicode
Transformation Formats).
Capitolo 1: Informazione ed informatica
28
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
1.2.4. Rappresentazioni numeriche Packed e Zoned
I numeri possono essere rappresentati anche in modalità packed e zoned facendo
uso del codice adottato dal sistema di elaborazione. La rappresentazione ZONED fa
uso di un byte per rappresentare ciascuna cifra del numero mentre con la packed due
cifre sono impacchettate in un solo byte; per il segno ed il punto decimale la zoned fa
uso di un ulteriore byte mentre la packed fa uso di un semibyte (4 bit).
Per esempio, facendo uso del codice ASCII, la
+12352 è:
rappresentazione zoned di
Decimale
+
Binario
00101011 00110001 00110010 00110011 00110101 00110010
Esadecimale
2B
1
2
31
3
32
5
33
35
2
32
Con la rappresentazione packed si usa la codifica BCD (Binary coded decimal),
che assegna ad ogni cifra decimale la corrispondente rappresentazione binaria
assoluta a 4 bit, al segno “+” 1100 ed al segno “-“ 1101; così la rappresentazione
packed di +12352 è la seguente:
Decimale
+1
Binario
11000001 00100011 01010010
Esadecimale
C1
23
23
52
52
1.2.5. Rappresentazioni numeriche: Confronto
In questo breve paragrafo voglio riportare le semplici differenze tra le
rappresentazioni fixed/floating point, dette binarie, e la zoned/packed, dette
decimali, anche se queste considerazioni oggi hanno perso buona parte della loro
valenza in quanto la stampa dei dati procede in maniera grafica e non più a caratteri
come una volta. Mi rendo conto di aver detto qualcosa di piuttosto oscuro ma, se siete
interessati, possiamo discuterne in classe ed approfondire concetti che ormai fanno
parte della storia dell’informatica.
Le rappresentazioni binarie, come evidente, ottimizzano lo spazio. Con
riferimento ai tempi necessari per la loro elaborazione dirò che, mentre le
rappresentazioni binarie sono più convenienti per le operazioni aritmetiche, quelle
decimali si prestano meglio alle operazioni di Input/Output ovvero di immissione e
Capitolo 1: Informazione ed informatica
29
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
stampa ma, probabilmente, oggi non è più così e sempre meno o sono quasi del tutto
inutilizzate le rappresentazioni decimali.
1.3. Conclusioni
A questo punto, se io vi chiedessi cosa rappresenta la successione binaria
“1010001001001010” voi non potreste rispondere perché devo dirvi anche quale tipo
di rappresentazione sto utilizzando; in binario assoluto sarebbe il valore 41546
mentre in fixed point 16 bit -23990 e, infine, se sono due caratteri del codice ASCII
corrispondono alla stringa3 “óJ”. Naturalmente si tratterebbe di altri valori se floating
point, packed o zoned ma potrebbero essere anche due note o un pixel colorato, etc. .
Il concetto assomiglia molto alla relazione esistente tra i tipi dei file ed i programmi
che li elaborano: ………. e infine tutto diventa binario, è il trattamento
dell’informazione che la rende diversa.
Al di là di tutti i concetti importanti riportati in questo capitolo, è opportuno
sottolineare un aspetto estremamente semplice: Tutti i dati, per quanto complessi
possano essere, possono essere rappresentati con alfabeti molto semplici e quando
utilizzo la parola semplice mi riferisco all’alfabeto e non alla rappresentazione che è
tutt’altro che semplice. D’altra parte, ad inizio capitolo, ho parlato anche di dati
multimediali e, ve lo assicuro, rappresentare in binario una canzone o, addirittura, un
film non è cosa semplice ma, e qui ci siamo arrivati, possibile.
Il bit è il “mattoncino” con il quale costruire il castello delle nostre informazioni.
Esempi di mattoncini che consentono la realizzazione di grandi opere ve ne posso
dare tantissimi; per esempio con i mattoni, quelli veri, si costruiscono le case, i
palazzi, le città; ed ancora, immaginate cosa si è riusciti a scrivere negli anni con 26
lettere dell’alfabeto, 10 cifre ed un gruppuscolo di segni di punteggiatura; e non
finisce qui perché con solo 7 note ……………. ; allora non è importante la grandezza
del mattoncino ma come lo si riesce ad utilizzare e la quantità di cui possiamo
disporre!
Vi renderete conto ancora meglio del concetto appena espresso quando
comincerete a programmare utilizzando mattoncini che chiameremo istruzioni per
realizzare programmi anche di una certa complessità.
E’ evidente che non posso, né ritengo opportuno riportare le codifiche adottate
per la rappresentazione di foto, audio o film, anche se in seguito ritornerò
sull’argomento e, più precisamente, quando vi parlerò della compressione dati ma un
piccolo accenno è possibile. Per esempio una foto può essere divisa in tanti punti detti
pixel, contrazione di picture element, e, per ognuno di essi, è possibile memorizzare,
opportunamente codificato in binario, il colore; per esempio, con 8 bit posso
memorizzare fino a 28=256 colori, con 16 216=65.536 colori con 24 224=16.777.216; i
3
Stringa: successione di caratteri.
Capitolo 1: Informazione ed informatica
30
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
PC attuali utilizzano 32 bit per memorizzare il colore di ciascun pixel. In questo
modo una immagine su uno schermo, che utilizzi una risoluzione pari a 1024x768
pixel, occuperà 1024x767x32=25.165.824 bit pari a 3.145.728 byte ovvero 3MB.
Allora una foto è memorizzata in binario come una mappa a matrice di punti
colorati detta Bit Map e, infatti, una tipologia di file contenenti foto ha estensione
.BMP .
Ed un film? E’ una successione di foto detti frame; ma allora è facile (!!!!!!!!!)
memorizzare un film perché so come memorizzare una foto ed è sufficiente
memorizzare centinaia di migliaia di foto.
Infine per la musica sarà sufficiente codificare le sette note? Per la gestione
dell’audio i moderni sistemi di elaborazione utilizzano un opportuno convertitore
analogico/digitale, quello che tutti conosciamo come scheda audio.
La rappresentazione binaria di qualsiasi tipo di informazione è possibile grazie
alla rivoluzione digitale in atto; per capire bene cosa intendo, è necessario dare delle
definizioni.
Una grandezza si dice analogica quando l’insieme dei suoi possibili valori è
infinito mentre è digitale quando tale insieme è finito; si dice, in genere, che una
grandezza analogica può variare con continuità mentre una digitale varia in maniera
discreta.
Per esempio i colori in natura sono infiniti, la musica è analogica. Con
riferimento agli orologi, quello analogico ha le lancette mentre quello digitale ha un
display per visualizzare l’ora ed i minuti; ebbene, si può dire che l’orologio analogico
segna sempre l’ora esatta perché la lancetta dei minuti attraversa, in maniera
continua, tutti i punti della circonferenza; l’orologio digitale, invece, tra un minuto e
l’altro, non segna l’ora esatta. Qualcuno potrebbe suggerire di visualizzare anche i
secondi ma non cambia nulla: tra un secondo e l’altro l’ora non sarebbe esatta. Altro
esempio è quello di un poligono regolare che, con un numero sufficiente di lati,
approssima una circonferenza. Ho detto la parola magica “approssima” che, in
maniera del tutto generale, sta ad indicare che qualsiasi grandezza analogica può
essere approssimata con una digitale. Ad esempio e con riferimento ai colori, il
nostro occhio vede non più di un milione di colori, per cui se ne scegliamo, in
maniera opportuna, un milione tra gli infiniti disponibili in natura, non perdiamo
assolutamente niente; se abbassate il numero dei colori visualizzati dal vostro PC a
256=28, le vostre foto appariranno poco chiare mentre con 65536=216 colori saranno
apprezzabili mentre con 16.777.216=224 saranno eccellenti e, in tutti i casi, il numero
dei colori non è infinito.
Con la musica ha cominciato Philips alcuni anni fa, producendo il CD-DA
(Compact Disk-Digital Audio) e, successivamente, anche foto e film sono stati
digitalizzati; si pensi alla TV satellitare, al digitale terrestre, ai DVD-Video, agli
MP3, etc. .
Capitolo 1: Informazione ed informatica
31
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
In altri termini, foto, audio, film e qualsiasi altra forma di informazione, viene
rappresentata mediante una successione di valori o simboli o qualsiasi altra codifica
digitale.
I vantaggi del digitale possono essere così riassunti:
• Nessun deterioramento della qualità: la qualità digitale è nota e si pensi alle
copie ed ai film di molti anni fa, per i quali è stato necessario il restauro; pensate
alle copie di video cassette o audio cassette: la qualità della copia è sempre
inferiore all’originale. Il tempo e le copie deteriorano l’analogico. Il digitale non
teme né il tempo né le copie: la copia della copia della copia …………….. della
copia è perfettamente uguale all’originale;
• Facilità di elaborazione: il digitale può essere gestito da un computer con tutti i
vantaggi che conoscete;
• Migliore trasferibilità: facilità di trasferimento da un supporto all’altro e mediante
sistemi di comunicazione (Internet);
• Interattività: possibilità di interagire con la sorgente dell’informazione;
• Trasportabilità: Foto, audio e film sono oggi trasportabili con memorie digitali
molto piccole.
Il computer è il fulcro di questa rivoluzione ed è il digitale per eccellenza
perché fa uso di solo due cifre: 0 e 1.
Concludo il capitolo con questa citazione di un anonimo:
Ci sono solo 10 tipi di persone, quelli che comprendono il binario e quelli
che non lo comprendono.
……………… e voi a quale categoria appartenete?
1.4. Esercizi
1.
Date esempi di trattamento dell’informazione nei seguenti ambiti:
a) Scuola;
b) azienda;
c) ospedale;
d) banca;
e) campionato di calcio di serie A;
f) biblioteca;
g) anagrafe cittadina.
2.
Convertire nelle altre basi i seguenti numeri:
a) 85.510; 234.8710; 6543.36510; 1548.95610;
b) 101111011.1012; 11111100000.11012; 1101000001.0012; 101110101.010112;
Capitolo 1: Informazione ed informatica
32
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
c) 45.68; 251.258; 654.768; 76892.1538;
d) A3.C916; C6D.4F16; 8BE5.23716; BA1C.E2F16 .
3.
Eseguire le seguenti operazioni binarie:
a) 101000 + 11010; 101011 + 111; 1010111111 + 1111;
b) 101000 * 11010; 101011 * 111; 1010111111 * 1001;
c) 101000 -11010; 101001 - 111; 1010110101 - 1111;
d) 101000 : 1101; 10101101 : 111; 1010111111 : 1111;
4.
Rappresentare in fixed point 16 bit i seguenti numeri:
a) 8510; -23410; 3850010;
b) 458; -6548;
c) A316; -C6D16 .
5.
Rappresentare in floating point 16+8 bit i seguenti numeri:
a) -85.510; 234.8710;
b) -45.68; 251.258;
c) -A3.C916; C6D.4F16 .
6.
Rappresentare in packed e zoned i seguenti numeri:
a) 8510; -23410; 3850010;
b) 458; -6548;
c) A316; -C6D16 .
7.
Rappresentare mediante il codice ASCII le seguenti parole:
Computer; STAMPANTE; mouse; tastIERA.
Capitolo 1: Informazione ed informatica
33
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Capitolo 2.
Algoritmi e approccio
alla programmazione
2.1. Definizione e proprietà
Algoritmo è sinonimo di procedura di calcolo anche se oggi gli algoritmi sono
utilizzati più in generale per l’elaborazione dell’informazione così come definita nei
capitoli precedenti.
Un algoritmo è un insieme ben coordinato di istruzioni che a partire da dati
iniziali fornisce dati finali o risultati.
Dati iniziali
Algoritmo
(input o ingresso)
Dati finali
(output o uscita)
Chi esegue le istruzioni di un algoritmo è detto “esecutore” ed in particolare un
algoritmo è detto programma quando l’esecutore è un sistema di elaborazione dati
volgarmente detto computer. Chi, invece, realizza l’algoritmo è in genere detto
programmatore ma sulle figure professionali torneremo in seguito.
Se, per esempio, si vuole realizzare un algoritmo che risolva l’equazione di
secondo grado individuiamo:
• Dati iniziali: a, b e c ovvero i coefficienti dell’equazione;
• Dati finali: le soluzioni x1 e x2 oppure l’unica soluzione ovvero il
messaggio che non esistono soluzioni;
• L’algoritmo:
o Calcolare il delta;
o Se positivo calcolare x1 e x2;
o Se nullo calcolare x1=x2;
o Se negativo inviare messaggio “non esistono soluzioni”.
Il concetto di algoritmo è, in effetti, molto più generale e non si applica solo
all’elaborazione delle informazioni; per esempio, quando si acquista un mobile, le
istruzioni per il suo montaggio sono un algoritmo. Anche le fasi per la realizzazione
di una torta possono essere descritte come un algoritmo i cui dati iniziali sono gli
Capitolo 2: Algoritmi e approccio alla programmazione
34
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
ingredienti, l’algoritmo è costituito dalle fasi della lavorazione e i dati finali sono
rappresentati dalla fumante torta.
Un algoritmo deve godere delle seguenti proprietà:
i.
Efficacia: un algoritmo deve terminare la sua esecuzione fornendo i
risultati corretti per qualsiasi combinazione dei dati in ingresso;
ii.
Finitezza: L’algoritmo deve essere costituito da un numero finito di
istruzioni scelte da un insieme finito e l’esecuzione di ognuna di esse deve
impiegare un tempo finito; anticipo che nonostante tali caratteristiche, un
algoritmo, per errore di realizzazione, potrebbe non terminare la propria
esecuzione;
iii.
Definitezza: assenza di ambiguità ovvero garanzia che lo stesso algoritmo
eseguito da esecutori diversi in tempi diversi sugli stessi dati iniziali
fornisce sempre gli stessi risultati;
iv.
Effettività: le istruzioni che costituiscono l’algoritmo devono essere
effettivamente eseguibili.
Un aspetto molto importante di un algoritmo è l’efficienza ovvero la sua bontà
determinata in base a due parametri: il tempo e lo spazio. Con riferimento allo spazio
dirò subito che questo parametro oggi ha perso molta della sua importanza, in quanto
i moderni elaboratori hanno memoria a sufficienza mentre in passato non era così e il
programmatore spesso doveva ottimizzare lo spazio affinché l’algoritmo potesse
essere correttamente eseguito.
Molta importanza, invece, ha il tempo misurato in passi e non così come siamo
abituati ovvero in secondi, minuti o ore. La complessità di tempo di un algoritmo è
il numero di passi che esso deve compiere per produrre i risultati; si tratta di una
funzione matematica che lega i passi alla cosiddetta taglia dell’input. La complessità
di tempo è in genere determinata nel caso migliore (numero minimo di passi),
peggiore (numero massimo di passi) e medio (media aritmetica dei casi precedenti).
Tornerò sull’argomento quando realizzeremo i primi algoritmi.
2.2. Rappresentazione
Un algoritmo va rappresentato ovvero c’è la necessità di descrivere senza
ambiguità l’elenco delle istruzioni che lo costituiscono e la loro sequenza ovvero
l’ordine di esecuzione.
In generale non si utilizza il linguaggio naturale così come negli esempi
precedenti perché tutti i linguaggi naturali sono o possono essere ambigui. Ci sono
numerosi formalismi per la scrittura degli algoritmi, tra questi io scelgo per voi i
diagrammi a blocchi anche se molti informatici li ritengono obsoleti. Al contrario io
Capitolo 2: Algoritmi e approccio alla programmazione
35
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
ritengo siano più visibili e semplici da capire per cui più adatti ad un corso di
programmazione di primo livello come il nostro.
Un diagramma a blocchi è costituito da blocchi e linee del flusso; i blocchi
rappresentano le operazioni da eseguire e le linee del flusso l’ordine con il quale
eseguire le istruzioni. Si utilizzano blocchi di forma geometrica diversa per le diverse
operazioni (input, output, elaborazione, etc.):
Inizio/fine
Input
Linee del flusso
Elaborazione
Connettore
Alternativa
A
Chiamata
esterna
A
Continuazione
Output
Continua
Commento
I connettori sono utilizzati anche per andare a pagina seguente nel caso in cui
l’algoritmo non sia contenibile in una sola pagina. In questo caso, siccome sono
possibili più continuazioni, all’interno del connettore si inserisce una lettera.
Altro metodo per la rappresentazione degli algoritmi è la pseudocodifica ovvero
le istruzioni sono costituite da frasi della lingua inglese. Il nome deriva dal fatto che
questo metodo di rappresentazione è molto vicino ai linguaggi di programmazione
che consentono di tradurre un algoritmo in un programma ovvero renderlo
comprensibile ed eseguibile da una macchina.
Capitolo 2: Algoritmi e approccio alla programmazione
36
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Ritengo opportuno, a questo punto, definire il termine linguaggio di
programmazione di cui si parlerà in maniera molto approfondita in seguito. Un
linguaggio di programmazione è un linguaggio artificiale e non naturale come le
lingue; vengono definiti opportunamente per risolvere i problemi dell’elaborazione
dei dati e, come i linguaggi naturali, hanno un alfabeto, le parole scritte su tale
alfabeto, le frasi e un insieme di regole grammaticali detto sintassi per scrivere
correttamente le istruzioni.
2.3. Formati, variabili e costanti, espressioni
Prima di passare alla realizzazione degli algoritmi, è necessario parlare del
formato delle istruzioni; per ogni istruzione i linguaggi di programmazione, di cui si
parlerà in seguito, riportano il formato che, in maniera semplificata, riassume
l’insieme delle regole per poter correttamente scrivere l’istruzione ovvero in modo
tale che essa, sintatticamente corretta, sia riconoscibile ed eseguibile dal sistema. I
formati delle istruzioni sono scritte utilizzando le seguenti convenzioni:
[]
Opzionalità
|
Alternativa
…
Ripetitività
MAIUSCOLO
Parole chiavi che vanno scritte così come riportate
minuscolo
Scelte del programmatore
Le scelte del programmatore devono sempre essere conformi alle regole del
linguaggio; per esempio, il nome di una variabile deve rispettare le regole imposte dal
linguaggio.
Esempi:
[ON|OFF]
indica l’alternativa opzionale tra le parole ON e OFF;
ON|OFF
indica l’obbligatorietà della scelta tra le parole ON e OFF;
File1[,file2]… Indica l’obbligatorietà di “file1” seguita da nessuno, uno o più
valori analoghi separati da virgole e scelti dal programmatore.
Secondo il seguente formato:
DIM nomevar[,nomevar]… as tipo [,nomevar[,nomevar]… as tipo]…
le seguenti istruzioni sono sintatticamente corrette:
DIM a as int32
Capitolo 2: Algoritmi e approccio alla programmazione
37
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
DIM a, b, totale as int16, x as string, delta, x1, x2 as double
mentre le seguenti istruzioni sono errate:
DIM a; b as int16
DIM a, b as int16. x as string
Ed è arrivato il momento di realizzare il primo algoritmo che consente di
determinare l’area di un triangolo.
Dati Iniziali: Base B e altezza H.
Dati finali: Area A.
Algoritmo:
Inizio
DIM A, B, H AS SINGLE
B,H
Pseudocodifica
Dim a, b, h as single
Input b,h
A=b*h/2
Print a
End
A=B*H/2
A
fine
Capitolo 2: Algoritmi e approccio alla programmazione
38
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Questo altro algoritmo, invece, consente di stampare il più grande di due
numeri.
Dati Iniziali: A, B.
Dati finali: Il più grande.
Algoritmo:
Pseudocodifica
Inizio
Dim a,b as double
Input a,b
DIM A, B AS DOUBLE
A, B
V
If a > b then
Print a
Else
Print b
End if
F
A>B
A
B
End
fine
Oppure:
Inizio
DIM A, B, MAX AS DOUBLE
Dim a, b, max as double
Input a,b
A, B
V
F
A>B
Max=A
Pseudocodifica
Max=B
If a > b then
Max=a
Else
Max=b
End if
Print max
Max
End
fine
Capitolo 2: Algoritmi e approccio alla programmazione
39
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Analizziamo gli algoritmi.
A, B, H, Max sono variabili; una variabile è un’entità il cui valore può
cambiare nel corso dell’elaborazione o in elaborazioni successive ed è caratterizzata
da:
• Nome: il nome consente di distinguere una variabile dall’altra, deve
cominciare con una lettera dell’alfabeto, non deve superare, in genere,
i 256 caratteri ma si sconsiglia di superare i 15 caratteri, si possono
utilizzare lettere e cifre ed il segno di sottolineatura “_”; i nomi non
sono case-sensitive ovvero non c’è distinzione tra maiuscole e
minuscole. Esempi:
Nomi corretti: X, X1, totale, somma, supercalifragilistichespiralidoso;
Nomi scorretti: 1X, X+Y, A?;
• Tipo: il tipo dipende dal contenuto della variabile e può essere
numerico se contiene un numero, stringa o alfanumerica se contiene
una qualsiasi successione di caratteri, data se contiene una data, etc.;
• Valore: è il valore della variabile in un certo istante.
Una costante, invece, non può variare il suo valore nel corso dell’elaborazione;
esempi di costanti numeriche sono 5, 18, 123.765 mentre “Totale fattura” è un
esempio di costante alfanumerica.
Il nome di una variabile deve essere mnemonico ovvero ricordare il ruolo che la
variabile ha nell’ambito del programma; in un algoritmo che risolva l’equazione di
secondo grado, per esempio, DELTA potrebbe essere il nome della variabile
contenente b^2-4*a*c e X1, X2 i nomi delle soluzioni mentre, per l’algoritmo che
elabora una fattura, nomi di variabili potrebbero essere Totale_Fattura, Imponibile,
IVA etc.
Una variabile va sempre dichiarata con una apposita istruzione, spesso DIM, e,
prima del suo utilizzo, bisogna sempre assegnarle un valore mediante una
operazione di assegnazione, di input o altro che vedremo in seguito; quando ad una
variabile è assegnato un valore, il precedente valore è definitivamente perso.
La dichiarazione deve precedere l’utilizzo della variabile ed è legata al tipo
della variabile. In Visual Basic.NET (d’ora in poi VB.NET) si utilizza l’istruzione
DIM per dichiarare una variabile:
DIM nomevar[,nomevar]… as tipo, [nomevar[,nomevar]… as tipo]…
Alcuni tipi di dati disponibili in VB.NET sono i seguenti:
Tipo
Contenuto
Note
BYTE
Numerico
Binario assoluto 8 bit: valori da 0 a +28-1
Capitolo 2: Algoritmi e approccio alla programmazione
40
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
INT16
Numerico
Fixed point 16 bit: valori da -215 a +215-1
INT32
Numerico
Fixed point 32 bit: valori da -231 a +231-1
INT64
Numerico
Fixed point 64 bit, valori da -263 a +263-1
SINGLE
Numerico
Floating point 32 bit
DOUBLE
Numerico
Floating point 64 bit
STRING
Caratteri
Lunghezza variabile
CHAR
Carattere
Contiene un sol carattere UNICODE (codifica a 16
bit)
BOOLEAN
Logico
TRUE o FALSE (Vero o Falso)
DATE
Data
Contiene una data
OBJECT
Oggetto
Oggetto come definiremo in seguito
Bisogna evitare di “mischiare” le variabili nelle espressioni, per esempio:
DIM a,b as INT16, c,d as STRING
C=a+b non è valida
A=a+b è valida
A=b+d non è valida
Vedremo successivamente come il linguaggio di programmazione ci consenta di
effettuare conversioni tra i tipi di dati.
Max=A è l’istruzione di assegnazione.
Il formato dell’istruzione di assegnazione è il seguente:
Variabile = Espressione
dove “variabile” è un corretto nome di variabile e “espressione” una espressione,
per il momento numerica, ottenuta utilizzando parentesi (solo tonde), variabili,
costanti ed i seguenti operatori aritmetici:
+
per la somma
-
per la sottrazione
*
per la moltiplicazione
/
per la divisione
\
per la divisione intera
mod
per il resto
^
per l’elevamento a potenza
Le regole di precedenza utilizzate sono identiche a quelle della matematica.
Capitolo 2: Algoritmi e approccio alla programmazione
41
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Le espressioni seguenti sono corrette:
A=B*C-A
I=I+1
TOTALE=((A+B)*5+K)*F
Mentre le seguenti sono errate:
A+B=C
1A=C+K
A=((B+3)*6
SOMMA=K:5
PRODOTTO=5A
Nelle espressioni possono anche essere utilizzate le funzioni. Una funzione
informatica non si discosta molto dalla sua definizione matematica. Una funzione è
una legge che associa ad ogni elemento di un insieme, detto dominio, un elemento di
un altro insieme detto codominio: y=f(x). In generale, però, una funzione informatica
può lavorare su nessun, uno o più argomenti (funzioni a più variabili).
Ritengo opportuno riportare subito i formati di alcune funzioni matematiche:
ABS(espressione): Restituisce il valore assoluto;
INT(espressione): Restituisce la parte intera;
SQRT(espressione): Restituisce la radice quadrata.
così l’assegnazione X=SQRT(Y) assegna a X il valore della radice quadrata di
Y.
Queste funzioni sono riferite come funzioni standard del linguaggio perché in
seguito vedremo anche le funzioni definite dal programmatore.
In genere faremo poco uso delle funzioni sostituite dai metodi e dalle proprietà
delle classi che tratterò durante lo studio del linguaggio di programmazione.
Sicuramente più complessa è l’istruzione riportata nel rombo detta alternativa.
L’alternativa consente di eseguire un gruppo di istruzioni piuttosto che altre. Di
fondamentale importanza per una corretta gestione delle alternative è il concetto di
espressione logica o predicato o, semplicemente, test. Una espressione logica, al
contrario di quelle numeriche che possono avere infiniti valori, può essere solo vera
(TRUE) o falsa (FALSE) cosicché in una alternativa ci sono solo due possibilità: una
per vero e l’altra per falso.
Il formato per un predicato è il seguente:
Espressione OperatoreRelazione Espressione
Capitolo 2: Algoritmi e approccio alla programmazione
42
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Dove “espressione” è stata definita in precedenza e OperatoreRelazione
può essere:
=
Uguale
>
Maggiore
<
Minore
<>
Diverso
<=
Minore o uguale
>=
Maggiore o uguale
Per esempio:
8>7 è vero
3>5 è falso
5>5 è falso
5>=5 è vero
7<>7 è falso
Adesso la comprensione dei diagrammi riportati in precedenza dovrebbe essere
chiara così come, per esercizio, potreste provare a realizzare un algoritmo che risolva
l’equazione di secondo grado che, volutamente, non vi espongo.
2.3.1. Approfondimento: dichiarazione di costanti
Le costanti possono essere utilizzate direttamente nei programmi senza essere
dichiarate; in alcuni casi, però, è opportuno dichiarare anche le costanti. In genere le
costanti possono essere dichiarate con l’istruzione CONST:
Const name [ As type ] = initexpr [,name [ As type ] = initexpr]…….
Per esempio
Const pigreco as double=3.14159265358979, euro=1936.27
definisce la costante pigreco alla quale viene assegnato il valore
3.14159265358979 e la costante euro il cui valore è 1936.27; nello sviluppo
dell’algoritmo potranno essere utilizzati i nomi delle costanti anziché i corrispondenti
valori con evidenti vantaggi. Il valore di una costante non può essere cambiato
durante l’esecuzione dell’algoritmo così, per esempio, una qualsiasi assegnazione che
cambiasse il valore di pigreco e euro genererebbe un errore di programma la cui
esecuzione terminerebbe in maniera anomala.
Capitolo 2: Algoritmi e approccio alla programmazione
43
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
2.4. Iterazione o ciclo
Una struttura fondamentale per la risoluzione dei problemi è quella iterativa.
Una iterazione consente l’esecuzione di un gruppo di istruzioni per un certo numero
di volte. Le strutture iterative più diffuse sono WHILE, REPEAT e FOR.
Iterazione di tipo WHILE:
Inizializzazione
Pseudocodifica
Test di
uscita
F
V
Inizializzazione
WHILE test
Istruzioni
END WHILE
Istruzioni
e
Modifica del test di uscita
Iterazione di tipo REPEAT:
Inizializzazione
Pseudocodifica
Istruzioni
e
Modifica del test di uscita
F
Inizializzazione
REPEAT
Istruzioni
UNTIL test
Test di
uscita
V
Capitolo 2: Algoritmi e approccio alla programmazione
44
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Iterazione di tipo FOR:
Inizializzazione
Pseudocodifica
For Var=espr1 to espr2 [step espr3]
FOR Var=espr1 to espr2 [STEP espr3]
Istruzioni
NEXT Var
Istruzioni
Next Var
L’insieme delle istruzioni che vengono eseguite più volte è detto “corpo del
ciclo”, il test “test di uscita” e l’inizializzazione contiene le istruzioni preparatorie
all’iterazione.
Come si vede l’iterazione di tipo WHILE esce dal ciclo per falso mentre con
REPEAT si esce per vero ed i test di uscita sono, rispettivamente, all’inizio ed alla
fine; ciò consente di eseguire almeno una volta il corpo del ciclo con REPEAT
mentre con WHILE potrebbe anche non essere eseguito.
Il ciclo di tipo FOR, invece, è un ciclo a conteggio dove lo STEP indica
l’incremento della variabile di controllo Var ogni volta che si esegue l’istruzione
NEXT. Così il valore iniziale di Var è espr1 e viene incrementata di espr3 ad ogni
NEXT e si esce dal ciclo quando Var>espr2. Una variante è rappresentata dallo step
negativo che consente l’uscita quando Var<espr2. Se lo STEP viene omesso, viene
assunto uguale a 1.
Ritengo opportuno dare un esempio dello stesso algoritmo realizzato con
ciascuno dei tre cicli.
Si realizzi un algoritmo che sommi i numeri interi compresi tra 1 ed N; ad
esempio se N=5 allora si deve sommare 1+2+3+4+5=15.
Dati Iniziali: N.
Dati finali: 1+2+ … + N
Analisi: L’algoritmo è facilmente realizzabile mediante l’utilizzo di un
semplice ciclo.
Capitolo 2: Algoritmi e approccio alla programmazione
45
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Algoritmo sviluppato con il ciclo WHILE:
Inizio
DIM N, I AS INT32, S AS INT64
N
I=1
S=0
Pseudocodifica
dim n, i as int32, s as int64
I<=N
V
S=S+I
I=I+1
F
Input N
I=1
S=0
While I<=N
S=S+I
I=I+1
End while
Print S
End
S
Fine
Documentazione variabili:
N: Dato in ingresso;
I: Contatore;
S: Somma corrente e finale.
Capitolo 2: Algoritmi e approccio alla programmazione
46
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Algoritmo sviluppato con il ciclo REPEAT:
Inizio
DIM N, I AS INT32, S AS INT64
N
I=0
S=0
Pseudocodifica
dim n, i as int32, s as int64
Input N
I=0
S=0
REPEAT
S=S+I
I=I+1
Until I>N
Print S
End
S=S+I
I=I+1
F
I>N
V
S
Fine
Documentazione variabili:
N: Dato in ingresso;
I: Contatore;
S: Somma corrente e finale.
Capitolo 2: Algoritmi e approccio alla programmazione
47
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Algoritmo sviluppato con il ciclo FOR:
Inizio
DIM N, I AS INT32, S AS INT64
Pseudocodifica
dim n, i as int32, s as int64
N
Input N
S=0
S=0
For I=1 to N
S=S+I
For I=1 to N
Next I
Print S
S=S+I
End
NEXT I
S
Fine
Documentazione variabili:
N: Dato in ingresso;
I: Contatore;
S: Somma corrente e finale.
Se, per esempio, si richiedeva la somma dei soli numeri dispari compresi tra 1
ed N ovvero 1+3+5+ … +N, allora, nel caso del ciclo FOR, è sufficiente utilizzare
l’istruzione “FOR i=1 TO n STEP 2”.
Capitolo 2: Algoritmi e approccio alla programmazione
48
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
2.5. Si fa sul serio
State calmi e non vi preoccupate anche se da questo momento in poi gli
algoritmi e la programmazione si complicano ma, d’altra parte, programmare non è
cosa semplice.
2.5.1. Programmazione strutturata
La programmazione strutturata ha come obiettivo l’utilizzo disciplinato delle
strutture di controllo. Lo scopo principale è quello di realizzare algoritmi
comprensibili. La comprensibilità degli algoritmi è un problema da non
sottovalutare; il programmatore che ha realizzato un programma potrebbe, dopo un
certo tempo, avere difficoltà a capire la logica del suo stesso lavoro, figuriamoci cosa
succede se bisogna modificare il lavoro degli altri come spesso capita alle aziende
produttrici di software, le cosiddette software house. Utilizzare poche e semplici
strutture, pertanto, ne facilita la comprensione e, quindi, la modifica in caso di
necessità; tornerò sull’argomento e lo approfondirò in seguito.
Gli studiosi Bohm e Jacopini hanno dimostrato che tutti gli algoritmi sono
realizzabili utilizzando solo tre strutture: sequenza, alternativa ed iterazione.
Sequenza:
Una sequenza è un insieme
istruzioni per le quali
definito un unico punto
ingresso ed un unico punto
uscita.
Pseudocodifica
Istruzioni
di
è
di
di
Istruzioni
Alternativa:
V
Una alternativa è la possibilità di
eseguire un gruppo di istruzioni
(sequenza) piuttosto che altre.
Si noti comunque un unico punto di
ingresso ed un unico punto di
uscita.
F
Test
Pseudocodifica
Sequenza A
Sequenza B
IF test THEN
Sequenza A
ELSE
Sequenza B
END IF
Capitolo 2: Algoritmi e approccio alla programmazione
49
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Iterazione:
Inizializzazione
Test di
uscita
F
V
Istruzioni
e
Modifica del test di uscita
Una
iterazione
consente
l’esecuzione di un gruppo di
istruzioni (sequenza) per un certo
numero di volte.
Con riferimento all’intera struttura,
si noti comunque un unico punto di
ingresso ed un unico punto di
uscita
Pseudocodifica
Inizializzazione
WHILE test
Istruzioni
END WHILE
Le tre strutture vanno realizzate così come sopra riportate senza alcuna
eccezione; per esempio l’uscita dal ciclo WHILE non può avvenire per VERO.
Spesso ci troviamo di fronte ad algoritmi non strutturati per i quali dobbiamo trovare
una versione equivalente strutturata. Il concetto di equivalenza tra algoritmi è
estremamente semplice: due algoritmi sono equivalenti se risolvono lo stesso
problema.
Per esempio il seguente algoritmo non è strutturato in quanto il ciclo ammette
due uscite:
Capitolo 2: Algoritmi e approccio alla programmazione
50
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Sequenza A
V
Test 1
Sequenza D
F
V
F
Test 2
Sequenza B
Sequenza C
L’algoritmo equivalente strutturato è il seguente:
Capitolo 2: Algoritmi e approccio alla programmazione
51
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Sequenza A
Test=Vero
F
Test
V
F
V
Test 1
V
Sequenza B
Test 2
F
Sequenza C
Sequenza D
Test=Falso
Test=Falso
2.5.2. Modularità
L’approccio modulare alla risoluzione di un problema ne semplifica molto la
soluzione. I problemi, nella maggioranza dei casi, sono piuttosto complessi e difficili
da risolvere se non procedendo ad una sua suddivisione in sottoproblemi più
semplici. A loro volta i sottoproblemi possono essere suddivisi in altri sottoproblemi
ancora più semplici e così via fino ad ottenere una struttura gerarchica di
Capitolo 2: Algoritmi e approccio alla programmazione
52
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
sottoproblemi facilmente risolvibili. La risoluzione di ciascun sottoproblema concorre
alla soluzione del problema generale ovvero le singole e molteplici soluzioni vengono
integrate in modo da risolvere il problema iniziale. Nella risoluzione dei singoli
problemi si utilizzano due tecniche: Bottom-Up e Top-Down. Con la tecnica bottomup si procede alla realizzazione degli algoritmi a livello inferiore (sottoproblemi) e
poi via via verso quelli a livello più alto. La tecnica Top-Down, invece, procede
risolvendo i problemi a livello superiore e poi quelli a livello più basso.
Ad esempio, se si vuole determinare il fattoriale del massimo di tre numeri, il
problema può essere scomposto in due sottoproblemi: Calcolo del massimo e calcolo
del fattoriale:
Calcolo fattoriale del max di 3
numeri
Calcolo del massimo di 3 numeri
Calcolo del fattoriale
Trattasi di un esempio piuttosto banale ma, d’altra parte, il problema iniziale è
tutt’altro che complesso.
Altri esempi saranno dati in seguito appena le conoscenze acquisite ci
consentiranno di risolvere problemi più complessi.
Mi direte che pur suddividendo il problema, alla fine realizzate comunque
l’algoritmo come un’unica successione di istruzioni perdendo, così, la visione delle
soluzioni dei singoli sottoproblemi e allora io vi dico che dovete pazientare per poter
conoscere gli strumenti che tutti i linguaggi di programmazione mettono a
disposizione del programmatore affinché il progetto possa essere realizzato in
maniera rigorosamente modulare anche con l’apporto di più programmatori, nel senso
che ognuno di essi risolverà uno o più sottoproblemi.
L’approccio modulare alla risoluzione dei problemi sarà, pertanto, ripreso più
avanti quando tratterò i sottoprogrammi; adesso si è voluto solo suggerire l’approccio
modulare alla risoluzione dei problemi come tecnica mentale generale da utilizzare
sempre per una corretta e semplice risoluzione dei problemi.
Capitolo 2: Algoritmi e approccio alla programmazione
53
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
2.5.3. Complessità di tempo ed utilizzo dello switch
Si consideri il seguente problema:
Input: N, intero e positivo.
Output: Stabilire se N è primo.
Soluzione 1:
Analisi: Si contano i divisori di N diversi da 1 e se stesso; se il numero di tali
divisori è zero, il numero è primo.
Diagramma:
Capitolo 2: Algoritmi e approccio alla programmazione
54
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Inizio
DIM N, I AS INT64, D AS INT32
N
I=2
D=0
F
I<N
V
V
F
N MOD I = 0
D=D+1
I=I+1
V
N “ è primo
D=0
F
N “ non è primo”
”
Fine
Capitolo 2: Algoritmi e approccio alla programmazione
55
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Documentazione variabili:
I: Contatore;
D: Conta i divisori di N.
Esercizio: pseudocodificare l’algoritmo.
La complessità di tempo di questo algoritmo, sia nel caso migliore che in quello
peggiore, è N-2. Si può fare meglio? Sì.
Soluzione 2.
Analisi: Si cerca un divisore di N diverso da 1 e se stesso e appena lo trovo
concludo che N non è primo.
Diagramma:
Capitolo 2: Algoritmi e approccio alla programmazione
56
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Inizio
DIM N, I AS INT64, SW AS BYTE
SW AS Boolean
N
I=2
SW=0
SW=False
I <= N/2
F
I<N
I <= SQRT(N)
V
V
F
N MOD I = 0
SW=1
SW=True
I=N
I=I+1
V
N “ non è primo
SW=1
”
SW
F
N “ è primo
”
Fine
Capitolo 2: Algoritmi e approccio alla programmazione
57
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Documentazione variabili:
N: Dato in ingresso;
I: Contatore;
SW: Switch.
Esercizio: pseudocodificare l’algoritmo.
Si noti l’utilizzo di una variabile SW abbreviazione di switch (interruttore)
utilizzata, in questo caso, per tenere memoria della presenza di un divisore; così, al
termine dell’algoritmo, SW varrà 1 se è stato trovato un divisore e 0 altrimenti
consentendomi pertanto di stabilire se N è primo oppure no.
Una soluzione molto più elegante, rappresentata nel diagramma con i commenti,
fa uso di una variabile logica. SW è definita boolean e non byte, per cui il suo valore
può essere TRUE o FALSE. L’ultima alternativa, in questo caso, viene codificata
semplicemente con
IF SW Then
La comprensione di questa soluzione è estremamente semplice.
La complessità di tempo, in questo caso, è variata perché diversa nei casi
migliore e peggiore. E’ facile intuire, infatti, che nel caso in cui N sia pari,
l’algoritmo compie un sol passo mentre nel caso peggiore, ovvero quando il numero è
primo, il numero di passi è ancora N-2 come nella soluzione precedente.
Questo algoritmo è ancora migliorabile; se, infatti, si considera che dopo N/2
non ci sono più divisori di N la soluzione riportata in rosso nel diagramma precedente
porta la complessità nel caso peggiore a N/2-1.
Si riesce ancora a migliorare se si considera che se esiste un divisore di N
maggiore della sua radice quadrata (SQRT), ne esiste anche uno minore di tale radice.
Per questo motivo la soluzione in verde è senz’altro la migliore. In questo caso
possiamo così concludere con la complessità di tempo:
Caso migliore: N pari, numero di passi 1;
Caso peggiore: N primo, numero di passi SQRT(N)-1
Caso medio: (1 + (SQRT(N)-1))/2=SQRT(N)/2
Questo esempio mette in evidenza come è assolutamente importante cercare
sempre una soluzione efficiente al problema; nel nostro caso si ritenga il valore di N
superiore ad 1.000.000 e si facciano le opportune considerazioni.
In genere per la complessità di tempo si utilizza l’operatore “ordine di”
abbreviato in O( ) che considera solo l’ordine di grandezza della complessità di
tempo trascurando costanti e utilizzando solo il termine più significativo. Nei nostri
esempi siamo passati dalla complessità O(N) a O(N/2), considerata comunque O(N),
a O(SQRT(N)). Per esempio, se la complessità di tempo di un algoritmo è 3N2+5N si
Capitolo 2: Algoritmi e approccio alla programmazione
58
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
dice che essa è O(N2) o quadratica mentre per 5N3+7N+2N è O(2N) o esponenziale.
Gli algoritmi esponenziali sono praticamente intrattabili nel senso che, nonostante la
enorme velocità dei sistemi di elaborazione, il tempo necessario misurato in modo
tradizionale (ore, giorni, etc.) sarebbe eccessivo. Si deve pertanto cercare di realizzare
sempre algoritmi con complessità di tempo lineare in quanto anche la complessità
quadratica richiede tempi piuttosto lunghi.
2.5.4. Modalità di risoluzione degli esercizi
Nel risolvere gli esercizi si seguano i seguenti passi:
1. Descrizione dei dati in ingresso;
2. Descrizione dei dati in uscita;
3. Analisi;
4. Realizzazione del/dei diagrammi;
5. Codifica;
6. Verifica;
7. Documentazione.
E’ opportuno, inoltre, determinare sempre la complessità dell’algoritmo nei casi
migliore e peggiore.
Sulle fasi necessarie per la risoluzione dei problemi tornerò in seguito per
ulteriori e necessari approfondimenti.
Ritengo opportuno solo dare qualche semplice indicazione sulla fase di verifica
o debugging. In questa fase occorre scegliere in maniera opportuna i dati di prova,
quelli iniziali naturalmente; in genere occorre testare l’algoritmo su più di una serie
di dati di prova per poter concludere che l’algoritmo è corretto. Molto importante è
individuare e testare i cosiddetti casi particolari che impareremo ad individuare di
volta in volta.
Per esempio, per l’algoritmo che risolve l’equazione di secondo grado sarà
opportuno considerare il caso in cui il delta è positivo, negativo e nullo oltre ai casi
particolari a=0, b=0 e c=0, in tutto 6 casi.
Per l’algoritmo dato in precedenza occorrerà considerare almeno il caso N primo
e N non primo oltre ai casi particolari N=1, N=2 (e anche N=3?).
Non è importante il numero delle prove effettuate ma la qualità dei dati di prova.
E’ inutile testare l’algoritmo precedente per 10 volte su numeri non primi se poi
dimentichiamo di testare il caso N primo.
Capitolo 2: Algoritmi e approccio alla programmazione
59
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
L’operazione di debugging è molto importante perché, in caso di errori non
individuati, si rilascia all’utilizzatore un software non efficace le cui conseguenze
sono facilmente immaginabili.
In genere l’operazione di debugging consente di accertare la presenza di
errori ma non di accertarne l’assenza. In altre parole e come già detto, mestiere
ingrato e difficile quello del programmatore che non può mai avere la certezza di aver
scritto un software assolutamente perfetto. Sì perché è possibile che l’errore ci sia e
non siamo stati in grado di individuarlo.
2.6. Il primo compito in classe
Il 24/10/2005 viene svolto il primo compito in classe distinto per file come da
tradizione; ritengo opportuno riportarne la soluzione completa e vi ricordo che la
cartella “Primo compito in classe” contenuta nella directory condivisa sul server
contiene la soluzione in VB.NET.
2.6.1. Fila sinistra
1. Descrivere un algoritmo che, ricevuti in input N numeri interi, determini
la media aritmetica dei pari e dei dispari escluso lo zero e conti gli zeri.
2. Descrivere un algoritmo che, ricevuta in input una successione di N
numeri, conti i pari e stabilisca la prima e l’ultima posizione di tali valori.
3. Descrivere un algoritmo che, ricevute in input N coppie di valori (A, B),
conti le coppie in cui A e B sono pari.
Opzionale: determinare la posizione della prima e dell’ultima coppia pari.
Per tutti gli esercizi è assolutamente obbligatorio descrivere i dati in ingresso
ed in uscita, riportare una breve analisi ed il diagramma a blocchi.
2.6.1.1. Esercizio 1
Input: N, N numeri
Capitolo 2: Algoritmi e approccio alla programmazione
60
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Output: Media aritmetica dei pari, dei dispari e numero degli zeri.
Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale contare e
sommare i numeri pari e dispari escludendo e contando gli zeri. Una stampa finale
fornirà i risultati voluti.
Questo il diagramma:
Capitolo 2: Algoritmi e approccio alla programmazione
61
L’Informatica per i miei studenti – Volume 1
Capitolo 2: Algoritmi e approccio alla programmazione
Prof. Bianco Mauro
62
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Documentazione variabili:
N: Numeri da gestire;
A: Numero corrente in input;
I: Contatore;
Nd: Conta i numeri dispari;
Np: Conta i numeri pari;
Z: Conta gli zeri;
Sp: Somma dei pari;
Sd: Somma dei dispari;
Mp: Media dei pari;
Md: Media dei dispari.
2.6.1.2. Esercizio 2
Input: N, N numeri.
Output: Contare i pari e stabilire la posizione del primo e dell’ultimo.
Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale contare i pari e
stabilire la posizione del primo e dell’ultimo numero pari.
Questo il diagramma:
Capitolo 2: Algoritmi e approccio alla programmazione
63
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
INIZIO
Dim N, I , P, Pp, Up as Int16, A as Int64
N
I = 1, P = 0
F
I <= N
V
A
V
F
A Mod 2=0
P=P+1
Up = I
V
P=1
F
Pp = I
I=I+1
V
F
P=0
“Nessun
P, Pp, Up
numero pari”
FINE
Capitolo 2: Algoritmi e approccio alla programmazione
64
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Documentazione variabili:
N: Numeri da gestire;
A: Numero corrente in input;
I: Contatore;
P: conta i numeri pari;
Up: ultima posizione;
Pp: prima posizione.
2.6.1.3. Esercizio 3
Input: N, N coppie.
Output: Contare le coppie pari e stabilire la posizione della prima e dell’ultima.
Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale individuare le
coppie pari e stabilire la posizione della prima e dell’ultima.
Questo il diagramma:
Capitolo 2: Algoritmi e approccio alla programmazione
65
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
INIZIO
Dim N, I, C, Up, Pp as Int16, A, B, as Int64
N
I=1, C=0
F
I<= N
V
A,B
V
F
A Mod2=0
V
F
B Mod2=0
C=C+1
Up = I
V
F
C=1
Pp = I
I=I+1
V
F
C=0
“Nessuna coppia
pari”
C, Pp, Up
“Coppie pari: “ C
“Posizione prima coppia pari: “ Pp
“Posizione ultima coppia pari: “ Up
FINE
Capitolo 2: Algoritmi e approccio alla programmazione
66
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Documentazione variabili:
N: Coppie da gestire;
A, B: Coppia corrente in input;
I: Contatore;
C: conta le coppie pari;
Up: ultima posizione;
Pp: prima posizione.
2.6.2. Fila destra
1. Descrivere un algoritmo che, ricevuti in input M numeri interi, determini
la media aritmetica dei positivi e dei negativi e conti gli zeri.
2. Descrivere un algoritmo che, ricevuta in input una successione di M
numeri, conti i positivi e stabilisca la prima e l’ultima posizione di tali
valori.
3. Descrivere un algoritmo che, ricevute in input M coppie di valori (X, Y),
conti le coppie in cui X e Y sono di segno contrario.
Opzionale: determinare la posizione della prima e dell’ultima coppia di
segno contrario.
Per tutti gli esercizi è assolutamente obbligatorio descrivere i dati in ingresso
ed in uscita, riportare una breve analisi ed il diagramma a blocchi.
2.6.2.1. Esercizio 1
Input: M, M numeri
Output: Media aritmetica dei positivi, dei negativi e contare gli zeri.
Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale contare e
sommare i numeri positivi e negativi escludendo e contando gli zeri. Una stampa
finale fornirà i risultati voluti.
Questo il diagramma:
Capitolo 2: Algoritmi e approccio alla programmazione
67
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Inizio
Dim M, I, Cp, Cn, Z as Int16, A, Sp, Sn as Int64
M
I=1 SN=0 SP=0 CP=0 CN=0 Z=0
F
I<=M
V
A
V
F
A>=0
V
SN=SN+A
F
A=0
SP= SP+A
Z=Z+1
CN=CN+1
CP= CP+1
I=I+1
F
CP=O
V
“Nessun numero positivo”
“Media
positivi:” Sp/Cp
A
Capitolo 2: Algoritmi e approccio alla programmazione
68
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
A
F
CN=0
“Media
negativi:”
Sn/Cn
V
“Nessun numero
negativo”
“Zeri:” Z
FINE
Documentazione variabili:
M: numerica gestire;
A: Numero corrente in input;
I: Contatore;
SN: somma dei numeri negativi;
SP: somma dei numeri positivi;
CN: contatore numeri negativi;
CP: contatore numeri positivi;
Z: contatore zeri.
Capitolo 2: Algoritmi e approccio alla programmazione
69
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
2.6.2.2. Esercizio 2
Input: M, M numeri.
Output: Contare i positivi e stabilire la posizione del primo e dell’ultimo.
Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale contare i positivi
e stabilire la posizione del primo e dell’ultimo.
Questo il diagramma:
Capitolo 2: Algoritmi e approccio alla programmazione
70
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Inizio
Dim M, I, P, Up, Pp as Int16, A as Int64
M
I=1
P=0
F
I <= M
V
A
V
A>0
F
UP = I
P=P+1
V
P=1
F
PP = I
I=I+1
F
P=0
V
“Nessun numero
positivo”
P,PP, UP
Fine
Capitolo 2: Algoritmi e approccio alla programmazione
71
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Documentazione variabili:
M: Numeri da gestire;
A: Numero corrente in input;
I: Contatore;
P: conta i numeri pari;
Up: ultima posizione;
Pp: prima posizione.
2.6.2.3. Esercizio 3
Input: M, M coppie.
Output: Contare le coppie con elementi di segno opposto e stabilire la posizione
della prima e dell’ultima.
Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale individuare le
coppie di segno opposto e stabilire la posizione della prima e dell’ultima.
Questo il diagramma:
Capitolo 2: Algoritmi e approccio alla programmazione
72
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
INIZIO
Dim M, I, CO, PC, UC as Int16, X, Y as Int64
M
I=1
CO=0
F
I <= M
V
X, Y
V
F
X>0
V
V
F
Y<0
F
X=0
F
CO=CO+1
Y>0
V
CO=CO+1
UC = I
UC=I
V
F
CO=1
V
PC = I
F
CO=1
PC=I
I=I+1
F
CO=0
V
“Nessuna coppia
di segno opposto”
CO, PC, UC
FINE
Capitolo 2: Algoritmi e approccio alla programmazione
73
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Documentazione variabili:
M: Coppie da gestire;
X, Y: Coppia corrente in input;
I: Contatore;
CO: conta le coppie di segno opposto;
PC: Posizione prima coppia;
UC: Posizione ultima coppia.
2.7. Operatori logici
Si voglia determinare se una terna di valori numerici interi G, M ed A
costituiscono una data corretta. In questo caso è evidente che la correttezza del giorno
dipende dal mese perché, per esempio, la data 31/03/2005 è corretta mentre non lo
sono 31/04/2005 e 30/02/2005. Ci si rende conto, pertanto, che per verificare la
correttezza del giorno devo individuare il mese, ma per fare questo ho bisogno di 12
alternative diverse. La realizzazione di tale algoritmo, pertanto, risulta alquanto
difficoltosa per il proliferare delle alternative. Una soluzione molto più semplice è
ottenibile utilizzando gli operatori logici che, lavorando su predicati, ovvero su
valori Vero e Falso, restituiscono a loro volta un valore di verità. Gli operatori logici
più utilizzati sono AND, OR, XOR e NOT. Il funzionamento di questi operatori è
evidenziato dalle seguenti tavole di verità nelle quali A e B sono espressioni o
variabili logiche:
A B A AND B A OR B A XOR B
V V
V
V
F
V F
F
V
V
F V
F
V
V
F F
F
F
F
A NOT A
V
F
F
V
L’operatore NOT è unario ovvero lavora su un sol predicato e ne cambia il
valore di verità.
Capitolo 2: Algoritmi e approccio alla programmazione
74
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Per capire il funzionamento di questi operatori ritengo opportuno fornire la
soluzione all’esercizio proposto ad inizio paragrafo.
Input: G, M, A interi
Output: Verificare se G, M ed A costituiscono una data corretta.
Analisi: L’anno A è ritenuto corretto se positivo; il mese M, ovviamente, è
corretto se compreso tra 1 e 12; la correttezza del giorno è invece più complessa
perché richiede di stabilire il numero di giorni del mese in esame e, nel caso Febbraio
(M=2), se l’anno è bisestile.
Diagramma.
Capitolo 2: Algoritmi e approccio alla programmazione
75
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
INIZIO
Dim G, M, A, MAXG as byte
M, G, A
V
F
M>=1 AND
M<=12
“Mese errato”
V
F
A>0
V
“Anno errato”
F
M=4 OR M=6 OR
M=9 OR M=11
MAXG=30
V
V
A MOD 4=O
M=2
F
F
MAXG=31
MAXG=29
V
MAXG=28
G>=1 AND
G<= MAXG
F
“Data corretta”
“Giorno errato”
FINE
Capitolo 2: Algoritmi e approccio alla programmazione
76
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Documentazione variabili:
G, M, A: Dati in ingresso, la data da controllare;
MAXG: Numero massimo giorni mese in input.
Come si vede, l’utilizzo degli operatori AND e OR ha semplificato molto
l’algoritmo.
2.8. Array: Vettori e matrici
Le variabili utilizzate fino ad ora sono dette variabili semplici o dati elementari
perché possono contenere un solo valore. In genere i dati elementari si aggregano tra
di loro creando strutture denominate strutture informative o strutture dati.
L’argomento sarà trattato in maniera approfondita nei prossimi capitoli ma ora ho la
necessità di introdurre le due più semplici strutture dati, i vettori e le matrici, per
poter continuare a realizzare algoritmi, naturalmente sempre più complessi.
Il vettore è la struttura dati più semplice perché costituito da una collezione di
elementi ognuno dei quali accessibile mediante un indice; l’indice di un elemento è la
sua posizione nell’ambito del vettore:
V0
V1
V2
………………. Vi
………………. Vn-2
Vn-1 Vn
L’indice può essere specificato mediante una espressione numerica intera, per
cui, ovviamente, si può anche utilizzare una semplice costante o una variabile.
Un vettore è caratterizzato dalla dimensione che rappresenta il numero massimo
di elementi che esso potrà contenere. In genere il primo elemento è in posizione 0,
vettori a base 0, oppure 1, vettori a base 1. Il linguaggio di programmazione
VB.NET utilizza vettori a base 0; in altri linguaggi è possibile modificare la base
utilizzando persino valori negativi. Salvo diverso avviso, d’ora in poi tratterò vettori e
matrici a base 0.
Per esempio istruzione:
DIM V(10) as INT16, W(N) as STRING
dichiara il vettore V() costituito da 11 elementi interi ed il vettore W costituito
da N+1 elementi di tipo stringa. Ci si può riferire all’intero vettore con V() e ad un
suo elemento racchiudendo l’indice tra parentesi così V(0) è il primo elemento, V(1)
il secondo, V(i) l’i-esimo, V(10) o W(N) l’ultimo. L’indice di un vettore deve essere
compreso tra 0 ed N dove N è la dimensione del vettore:
DIM A(N), il generico elemento è A(i) 0<=i<=N
Capitolo 2: Algoritmi e approccio alla programmazione
77
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Una matrice può essere considerata una estensione del concetto di vettore; gli
elementi sono disposti su righe e colonne, così, per individuare un singolo elemento,
è necessario utilizzare due indici: l’indice di riga e l’indice di colonna; in altri
termini la matrice ha due dimensioni:
A0 0
A0 1
……………….. A0 n-1
A0 n
A1 0
A1 1
……………….. A1 n-1
A1 n
………...
Ai j
………….
Am-1 0 Am-1 1 ……………….. Am-1 n-1 Am-1 n
Am 0
Am 1
……………….. Am n-1
Am n
L’istruzione
DIM A(M,N)
dichiara una matrice costituita da (M+1)*(N+1) elementi distribuiti su M+1
righe ed N+1 colonne il cui generico elemento è:
A(i,j)
0<=i<=M, 0<=j<=N
All’intera matrice ci si riferisce con A(,).
Una matrice avente un numero di righe pari al numero di colonne (M=N) è detta
quadrata. Nelle matrici quadrate si individuano le diagonali principale e secondaria
costituite, rispettivamente, dagli elementi per i quali i=j e i+j=N, dove i è l’indice di
riga, j l’indice di colonna e N l’ordine della matrice ovvero il numero di righe e
colonne.
Il numero delle dimensioni può essere anche più di due ottenendo così matrici a
tre A(,,), quattro A(,,,) e così via dimensioni.
In informatica tali strutture dati sono dette array e, secondo quanto esposto, un
array ad una dimensione è un vettore, a due dimensioni una matrice, a tre dimensioni
una matrice a tre dimensioni e così via.
2.8.1. Esempi di programmazione
Caricare un array significa assegnare un valore a ciascun suo elemento. I due
algoritmi seguenti caricano un vettore ed una matrice bidimensionale.
Capitolo 2: Algoritmi e approccio alla programmazione
78
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Inizio
DIM N, I AS INT16
N
DIM V(N) AS INT64
Pseudocodifica
I=0
(I=1 se base 1)
F
I<=N
Dim n, i as int16
Input n
Dim v(n) as int64
I=0 (I=1 se base 1)
While I<=N
Input v(i)
I=I+1
End while
End
V
V(I)
I=I+1
Fine
Documentazione variabili:
N: Dimensione del vettore;
V(): Vettore;
I: indice.
Come si può notare è necessario un ciclo per poter assegnare a ciascun elemento
del vettore un valore. La complessità di tempo è, pertanto, N+1 ovvero O(N).
Capitolo 2: Algoritmi e approccio alla programmazione
79
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Inizio
DIM M, N, I, J AS INT16
M, N
DIM A(M,N) AS INT64
Pseudocodifica
Dim m, n, i, j as int16
Input m, n
Dim a(m,n) as int64
I=0
(I=1 se base 1)
F
I<=M
V
J=0
(J=1 se base 1)
F
J<=N
i=0 (i=1 se base 1)
While i<=m
j=0 (j=1 se base 1)
While j<=n
Input a(i,j)
j=j+1
End while
i=i+1
End while
End
V
A(I,J)
J=J+1
I=I+1
Fine
Documentazione variabili:
M,N: Dimensioni matrice;
Capitolo 2: Algoritmi e approccio alla programmazione
80
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
A(,): Matrice;
I, J: indici.
In questo caso, il caricamento richiede due cicli uno nell’altro e la complessità di
tempo è (m+1)*(n+1) ovvero O(m*n).
2.8.2. Ordinamento di vettori
Un vettore è ordinato crescente (decrescente) se ogni suo elemento è maggiore
(minore) di quello che lo precede. Posso farvi numerosi esempi di strutture dati
ordinate: l’elenco telefonico, un vocabolario, l’elenco dei nominativi degli studenti di
una classe, le fatture commerciali ordinate su data e numero, etc. .
L’ordinamento risolve un problema molto importante nell’elaborazione dei dati:
semplifica la ricerca; un elenco telefonico o un vocabolario non ordinato
alfabeticamente sarebbe praticamente inutilizzabile.
Ci sono numerosi algoritmi di ordinamento, alcuni molto semplici da realizzare,
ma con alta complessità di tempo, e altri molto più complessi che, però, riducono il
tempo necessario per eseguire l’operazione di ordinamento:
1. Bubblesort
¾ Confrontare ciascun elemento del vettore con il successivo ed eventualmente
scambiarli di posizione se non risultano ordinati;
¾ Dopo aver completato il confronto di tutte le coppie contigue di elementi del
vettore, ritornare al passo precedente se è stato effettuato almeno uno scambio
altrimenti il vettore è ordinato.
La complessità di tempo di questo algoritmo è pari a O(n2), dove n è la
dimensione del vettore, e si verifica tutte le volte che il minimo si trova in
ultima posizione (perché?).
2. Quicksort
Un miglioramento dell’algoritmo precedente prevede che al passo successivo non
si confronti il primo elemento con il secondo e così via, ma si parte dal
confronto degli ultimi due elementi e, al passo successivo, di nuovo dai primi
due e così via fino a quando non si effettuano scambi; si tratta di un piccolo
miglioramento che non modifica sostanzialmente la complessità di tempo.
3. Selezione
Un altro algoritmo si basa sull’idea di determinare il minimo del vettore e
scambiarlo con il primo elemento, quindi ripetere l’operazione su un vettore
Capitolo 2: Algoritmi e approccio alla programmazione
81
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
ridotto ovvero trovando il minimo a partire dal secondo elemento e così via.
Anche questo algoritmo ha una complessità di tempo quadratica.
Realizzate tutti e tre gli algoritmi eventualmente persone diverse ne realizzano,
previo accordo, uno solo di quelli proposti.
Ci sono algoritmi di ordinamento molto veloci con complessità di tempo pari a
O(n * log2n).
2.8.3. Ricerca binaria.
Una ricerca sequenziale verifica la presenza di un valore in una struttura, per
esempio un vettore, confrontando dal primo all’ultimo gli elementi della struttura con
quello cercato. Una ricerca sequenziale su una struttura ordinata non sfrutta, pertanto,
l’ordinamento esistente; pensate alla ricerca di una parola sul vocabolario partendo
dalla prima pagina e procedendo in maniera rigorosamente sequenziale; in effetti la
nostra ricerca in un vocabolario è molto più veloce e dopo solo pochi passi si arriva
alla pagina contenente il termine da cercare.
Se volessi cercare un elemento in un vettore disordinato non avrei altra soluzione
se non quella di procedere in maniera sequenziale e la complessità di tempo sarebbe
O(n) con n dimensione del vettore. Se, invece, il vettore è ordinato posso effettuare la
cosiddetta ricerca binaria o dicotomica, confrontando il valore da cercare con
l’elemento centrale del vettore, quindi spostare la ricerca nella metà di destra o di
sinistra a seconda che il valore da cercare sia maggiore o minore a meno che i due
elementi non siano uguali, nel qual caso la ricerca si conclude con esito positivo. Se,
invece, continuando a dividere l’intervallo di ricerca, questo diventa vuoto, allora
concludo che il valore cercato non è presente nel vettore. Questo algoritmo ha una
complessità pari a O(log2n).
Si noti che, per esempio, log2 1.000 = 10, log2 1.000.000 = 20,
log2 1.000.000.000=30, così per cercare un valore tra mille sono sufficienti solo 10
passi, tra un milione solo 20 passi e addirittura solo 30 confronti sono necessari per
individuare un valore tra un miliardo. Se non ci credete possiamo fare un piccolo
giochino: voi pensate un numero tra 1 e 1.000.000.000 ed io ve lo indovino con solo
30 domande, ovviamente ogni volta voi mi direte se il numero da me scelto è
maggiore, minore o uguale a quello pensato.
2.9. Sottoprogrammi
Nell'ambito di un programma non banale accade che una stessa parte di
programma debba essere eseguita più volte ed in punti diversi; sorge, quindi, la
Capitolo 2: Algoritmi e approccio alla programmazione
82
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
necessità di scrivere più volte lo stesso pezzo di programma. Gli svantaggi sono
evidenti:
- Duplicazione del codice;
- Impossibilità di riutilizzare parti di codice in progetti futuri;
- Una eventuale modifica ad una di tali parti dovrà essere ripetuta in tutti i punti
in cui tale parte è presente.
La risposta eccellente a tali problematiche e ad altre, di cui parleremo in seguito,
è fornita dai sottoprogrammi; i termini subroutine, procedura, modulo e routine
sono sinonimi di sottoprogramma.
Un sottoprogramma consiste in una porzione di codice distinta o distinguibile
da quello che chiameremo Programma principale o chiamante al quale si
aggancia per mezzo di una o più chiamate. Il programma principale effettua,
pertanto, solo una chiamata al sottoprogramma il quale, completata la sua
esecuzione, mediante una istruzione del tipo RETURN, ritorna il controllo al
chiamante ed esattamente all'istruzione successiva alla chiamata.
Chiamante
Chiama 1
Sottoprogramma
R1
Istruzioni
Chiama 2
R2
Fine Sottoprogramma
Chiama 3
R3
L'esecuzione in punti diversi di un sottoprogramma avviene con una sola
istruzione chiamante e tutto appare come se il modulo sia presente in più punti nel
Capitolo 2: Algoritmi e approccio alla programmazione
83
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
chiamante.
Un sottoprogramma può a sua volta chiamare un'altra procedura e così via fino
ad un certo numero di volte dipendente dal linguaggio di programmazione in uso.
Così i termini principale e sottoprogramma lasciano spesso il posto a chiamante e
chiamato. Il modulo principale, che consente l'avvio dell'esecuzione di un
programma, è detto Programma principale e si differenzia dagli altri moduli
perchè è l'unico (non in tutti i linguaggi di programmazione) che può essere attivato
direttamente dall'utente, mentre gli altri moduli possono essere soltanto richiamati
da chiamanti.
L'indipendenza del solo codice tra chiamante e chiamato non è sufficiente a
garantire una riutilizzabilità della procedura nell'ambito dello stesso programma ed
in programmi diversi ma tale indipendenza deve essere allargata anche alle variabili
utilizzate dal chiamante e dal chiamato.
Si pensi al calcolo delle disposizioni di N oggetti su M posti che comporta il
calcolo dei seguenti tre fattoriali: N!, M! ed (N-M)! .
Il calcolo del fattoriale può essere effettuato da un modulo separato, ma tale
modulo deve effettuare tale calcolo in tre punti diversi del programma principale e
su tre valori diversi; si pensi anche alla possibilità di riutilizzare il modulo, in
seguito, in altri programmi per i quali il valore di cui calcolare il fattoriale è
assolutamente imprevedibile.
L'idea è quella di progettare un modulo per il calcolo del fattoriale di, per
esempio, X con risultato in FX; il cerchio si chiude se si riesce a disporre di una
tecnica che consenta di associare a X ed FX i valori reali di cui calcolare il fattoriale
ed in cui restituire il risultato.
Si pensi, inoltre, a cosa potrebbe succedere se il modulo utilizzasse la variabile
I, per il ciclo FOR necessario per il calcolo del fattoriale, e che questa variabile sia
contemporaneamente in uso, con altri scopi, nel programma principale. Sento
qualcuno che risponde: "Non utilizzo variabili omonime!" Controrisposta: "E la
riutilizzabilità futura?"
In realtà un sottoprogramma ben progettato può essere utilizzato senza alcuna
modifica in altri programmi; l'indipendenza del codice viene estesa anche alle
variabili.
Per spiegare tale indipendenza occorre dare la definizione di ambiente di un
modulo come dell'insieme di tutte le variabili utilizzate e dei corrispondenti
valori. Si tratta quindi di chiarire il legame esistente tra l'ambiente del chiamato e
quello del chiamante.
Tali ambienti possono essere completamente disgiunti o congiunti oppure
intersecarsi su un sub-set di variabili. Negli ambienti disgiunti variabili aventi lo
stesso nome, nel chiamante e nel chiamato, sono variabili distinte, mentre in
ambienti congiunti sono la stessa variabile. La maggior parte dei linguaggi di
Capitolo 2: Algoritmi e approccio alla programmazione
84
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
programmazione hanno ambienti disgiunti ma la gestione delle variabili è, in genere,
molto più complessa; le variabili, infatti, possono essere così classificate:
¾ Locali: Una variabile locale viene dichiarata all’interno di un sottoprogramma ed
il suo valore è perso al termine dell’esecuzione di quest’ultimo;
¾ Private: Una variabile privata è comune solo ad un certo numero di
sottoprogrammi;
¾ Globali: Sono variabili comuni a tutti i sottoprogrammi del progetto a meno che,
nell’ambito di un sottoprogramma, non venga ridichiarata; in un tal caso in questo
sottoprogramma sarà locale;
¾ Statiche: Una variabile statica è locale ma conserva il proprio valore tra una
chiamata e l’altra.
L’area di visibilità di una variabile, quindi, dipende da come essa è dichiarata,
dove per area di visibilità si intende un insieme di sottoprogrammi per i quali una
certa variabile è comune.
Premesso che la gestione degli ambienti può variare da linguaggio di
programmazione a linguaggio, diciamo subito che la disgiunzione completa degli
ambienti, tranne che per alcune variabili, X ed FX nell'esempio, è senz'altro la
soluzione migliore. Del tutto in generale, tale situazione è resa possibile grazie alla
cosìddetta tecnica del passaggio dei parametri:
¾ I parametri formali sono quelli utilizzati dalla procedura (X, FX);
¾ I parametri attuali sono quelli di volta in volta specificati
dell'attivazione della procedura ((N,FN) o (M,FM) o .....).
al
momento
I parametri formali si vestono ed assumono il ruolo dei parametri attuali. Si
noti, nell'esempio, una sola coppia di parametri formali e tante di attuali; quante? ma
ovvio, quante sono le chiamate.
Siamo così arrivati alla possibilità di avere variabili del chiamante e del
chiamato con nome diverso che sono la stessa variabile.
Così i parametri formali, X ed FX nell'esempio, sono delle variabili fittizie,
prive di qualsiasi contenuto, che, di volta in volta, si "vestono" delle variabili
attuali.
Il passaggio dei parametri può avvenire secondo due modalità: per riferimento
e per valore.
Il passaggio per riferimento consente al parametro formale di ricevere
l'indirizzo di memoria del corrispondente attuale per cui, in questo caso, le due
variabili sono la stessa variabile pur avendo nomi diversi; ne segue che una
qualsiasi variazione del parametro formale si riflette nel parametro attuale
nel programma chiamante.
Il passaggio per valore consente al parametro formale di ricevere solo il valore
del corrispondente attuale per cui, in questo caso, le due variabili non sono la stessa
Capitolo 2: Algoritmi e approccio alla programmazione
85
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
variabile; ne segue che il valore iniziale del parametro formale è quello dell'attuale
al momento della chiamata ma una qualsiasi variazione del parametro formale
non si riflette nel parametro attuale nel programma chiamante.
Nell'esempio citato, il parametro attuale corrispondente a X può essere
passato per valore ma quello relativo a FX deve essere passato per riferimento
altrimenti il programma chiamante è impossibilitato a ricevere il risultato del
calcolo del fattoriale così come determinato dalla procedura.
Le variabili indicizzate, vettori e matrici, vengono passate per riferimento
ovvero al chiamato arriva l'indirizzo del primo elemento e la lunghezza comune e tali
informazioni sono sufficienti per correttamente gestire il parametro attuale
indicizzato; per valore, invece, sarebbe necessario duplicare in locazioni del
chiamato tutti gli elementi del parametro attuale con evidente perdita di spazio e di
tempo.
Il
programma
chiamante
specifica, nell’istruzione che chiama il
sottoprogramma, i parametri attuali con un elenco di variabili e, analogamente, il
modulo chiamato specifica un elenco di variabili in numero e tipo corrispondenti
a quelli attuali.
A solo scopo documentativo i parametri sono classificati in:
- Input: Il chiamato utilizza il valore del parametro attuale senza effettuarne
alcuna modifica; il passaggio può avvenire sia per valore che per riferimento,
meglio per valore (nell'esempio X);
- Output: Il chiamato non utilizza il valore del parametro attuale ma ne
modifica il valore allo scopo di restituire un risultato. Il passaggio deve avvenire
per riferimento (nell'esempio FX);
- Input/Output (I/O): Il chiamato utilizza il valore del parametro attuale e lo
modifica. Il passaggio deve avvenire per riferimento. E' il caso in cui si progetta il
modulo per il calcolo del fattoriale con un solo parametro che costituisce sia il
valore di cui calcolare il fattoriale sia il risultato.
Un particolare sottoprogramma è una funzione definita dall'utente; l’unica
differenza consiste nel fatto che al nome della funzione è associato un valore; le
funzioni definite dall'utente, pertanto, possono essere utilizzate nell'ambito di un
programma allo stesso modo di quelle standard ossia semplicemente specificandone
il nome nell'ambito di una espressione o di qualsiasi altra istruzione che ne richieda
l'utilizzo.
Una programmazione modulare che faccia uso di un gran numero di moduli
costituiti da poche istruzioni porta ad innumerevoli vantaggi:
¾ facile messa a punto;
¾ riutilizzabilità del codice;
¾ possibilità di lavorare in gruppi;
Capitolo 2: Algoritmi e approccio alla programmazione
86
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
¾ una meno difficoltosa manutenzione, ovvero tutte le modifiche successive, che
sarà necessario apportare ad un progetto per mutate esigenze, miglioramenti,
eliminazione di errori, etc..., richiederanno tanto meno sforzo quanto più esso è
modulare e ben documentato.
Tutti questi vantaggi vengono ripresi e migliorati dalla programmazione orientata
agli oggetti di cui vi parlerò nel prossimo anno.
Per poter realizzare e ben documentare un sottoprogramma è opportuno seguire i
seguenti passi:
1. Compilare un modulo di documentazione;
2. Realizzare il diagramma a blocchi;
3. Codificare;
4. Debugging;
5. Completamento del modulo di documentazione.
In generale programmatori facenti parte di un gruppo di lavoro utilizzano una
modulistica standard cartacea o elettronica per documentare il lavoro prodotto in
modo tale da uniformare la documentazione prodotta durante la realizzazione di un
progetto informatico.
In genere, per ciascun sottoprogramma che si realizza, nella documentazione
occorre riportarne il nome, cosa fa, come lo fa (analisi), una descrizione completa
dei parametri e delle altre variabili utilizzate, in dettaglio:
¾ Informazioni di carattere generale: nome del sottoprogramma, nome del file
che lo contiene, nome del programmatore, data, breve descrizione, codice di
versione, ecc.;
¾ Analisi: breve analisi sull’algoritmo risolutivo;
¾ Descrizione parametri: descrizione dettagliata di tutti i parametri con
l’indicazione del nome e del tipo, delle modalità di passaggio, etc.;
¾ Descrizione altre variabili utilizzate: descrizione di tutte le altre variabili
utilizzate specificandone nome, area di visibilità, tipo, etc.;
¾ Note: altre informazioni che si ritiene opportuno fornire.
La vostra preparazione sarà completa dopo le dovute esercitazioni, la visione
degli esempi contenuti nelle cartelle “Sottoprogrammi 1”, “Sottoprogrammi 2”,
“SUB Function” e “STATIC” a loro volta contenute nella cartella condivisa sul
server e gli esercizi che svolgerete.
In precedenza ho accennato alla modularità come un approccio mentale alla
risoluzione dei problemi; alla luce di quanto esposto in questo paragrafo, invece, la
programmazione modulare comincia ad apparire come una vera e propria
metodologia per la risoluzione dei problemi. In pratica, ciascun sottoproblema verrà
risolto con un sottoprogramma; i sottoprogrammi verranno sviluppati in maniera
Capitolo 2: Algoritmi e approccio alla programmazione
87
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
indipendente e, molto spesso, da programmatori diversi; la soluzione completa del
problema passa attraverso una corretta gestione delle chiamate ai sottoprogrammi
realizzati.
2.9.1. Ricorsività
Parlare di ricorsività in questo momento mi sembra piuttosto prematuro ma
senz’altro il posto più giusto nell’ambito della mia piccola ma non troppo dispensa; si
consideri, infatti, che è passato meno di un anno da quando avete cominciato a
studiare questa senz’altro difficile arte della programmazione. Vi sembra eccessivo
il termine arte? Vi assicuro che sono in molti ad utilizzarlo.
Una procedura è definita ricorsiva quando chiama se stessa; con un
maggiore livello di dettaglio, vi dico che ci sono due tipi di ricorsività:
• Ricorsività diretta: un sottoprogramma chiama se stesso;
• Ricorsività indiretta: un sottoprogramma è richiamato da un altro a livello
inferiore; mi spiego con un esempio: A chiama B, B chiama A; analogamente, A
chiama B, B chiama C, C chiama D, ………., KK chiama ZZ e ZZ chiama …
indovinate un po’?
Ormai vi state abituando ma ritengo opportuno tranquillizzarvi dicendovi che vi
farò vedere almeno un esempio in laboratorio e qualcuno lo realizzerete voi il
prossimo anno scolastico.
2.10. Programmazione modulare: esempio
Siamo pronti per un esempio più significativo sulla programmazione modulare,
trattata nei paragrafi precedenti.
Si voglia risolvere il seguente problema:
Riportare in un vettore B() i fattoriali degli elementi primi di un vettore A().
Soluzione:
Input: N, V().
Output: B() contenente i fattoriali degli elementi primi di A().
Analisi: si scompone il problema secondo il seguente schema gerarchico:
Capitolo 2: Algoritmi e approccio alla programmazione
88
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Riportare fattoriali
degli elementi primi
di A() in B()
Carica vettore A()
Riporta fattoriali
Verifica primo
Stampa vettore B()
Calcola fattoriale
Come si può notare, il sottoproblema “Riporta i fattoriali” è stato ulteriormente
suddiviso in due sottoproblemi: “Verifica primo” e “calcola fattoriale”.
Ciascun sottoproblema sarà risolto realizzando un sottoprogramma e,
opportunamente gestite le chiamate, si arriva alla soluzione del problema proposto. A
questo punto non resta che realizzare i sottoprogrammi in maniera indipendente, uno
per ciascun studente, e, quindi, organizzarli in un unico programma; se non ci riuscite
non vi preoccupate, lo faremo insieme in laboratorio; successivamente scrivete un
programma identico che lavori su una matrice anziché su un vettore, riutilizzando,
ovviamente, i sottoprogrammi già realizzati.
Spero che questa politica dei piccoli passi possa giovare alla vostra formazione
anche se mi rendo conto che questa trattazione vi potrà apparire frammentata perché
sono costretto a riprendere ed approfondire i concetti in maniera discontinua;
sull’argomento della programmazione modulare, infatti, tornerò ancora in seguito.
Dico sempre ai miei allievi che studiare l’informatica, all’inizio, è come realizzare un
puzzle i cui tasselli, spesso, non vengono inseriti al loro posto in maniera sequenziale
ma sparsa, la bellezza del puzzle sarà evidente solo quando esso sarà completo. Dopo
qualche mese, pertanto, sarà chiaro solo il “guaio” in cui vi siete cacciati scegliendo il
corso programmatori ma alla fine del triennio, quando tutti i tasselli saranno al loro
posto, molti misteri di questa complicata materia vi saranno chiari e spero possa
servirvi per la vita e per il lavoro. Sì, non solo per il lavoro, ma anche per la vita
perché l’Informatica allena il cervello ed un cervello allenato è utile in qualsiasi
circostanza.
Capitolo 2: Algoritmi e approccio alla programmazione
89
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
2.11. Un po’ di filosofia: la tesi di Church
Alcuni studiosi si sono chiesti cosa sia l’effettivamente computabile ovvero
quando una funzione è calcolabile. Da qui la necessità di individuare l’insieme di
tutte le funzioni effettivamente computabili. Si tratta di un concetto astratto e non è
semplice trovare una risposta. Si sono così definiti vari strumenti per computare
funzioni: Linguaggi di programmazione, funzioni matematiche, macchine virtuali,
etc. Ciascuno di questi formalismi definisce un insieme di funzioni computabili e
avendone dimostrato l’equivalenza, lo studioso Church arrivò alla seguente
conclusione:
L’insieme delle funzioni effettivamente computabili è quello definito dalla
macchina di Touring (o qualsiasi altro formalismo per l’equivalenza di cui innanzi).
La macchina di Touring è ideale ed è costituita da un nastro infinito ed una
testina che, muovendosi sul nastro, può leggere o scrivere simboli di un alfabeto.
Quando arriverete in quinta e se parteciperemo alla gara di Informatica presso
l’Università di Pisa, imparerete ad utilizzare la macchina di Touring.
2.12. Esercizi
Dati elementari
1.
INPUT: 2 numeri A e B
OUTPUT: Stampa ordinata di A e B.
2.
Descrivere un algoritmo che risolva una equazione di secondo grado.
3.
Descrivere un algoritmo che ricevuti in input 3 numeri stampi il minimo.
4.
Descrivere un algoritmo che verifichi se B divide A.
5.
INPUT: A, B,C
OUTPUT: Stampa ordinata di A,B e C
6.
INPUT: A,B e C
OUTPUT: Verificare se A,B e C possono essere lati di un triangolo.
7.
INPUT: A,B e C, lati di un triangolo.
OUTPUT: Verificare se il triangolo è equilatero, isoscele o scaleno.
8.
INPUT: N numeri
OUTPUT: Somma degli N numeri.
9.
Descrivere un algoritmo che effettui la somma dei primi N numeri interi.
10.
Descrivere un algoritmo che determini il minore di N numeri.
Capitolo 2: Algoritmi e approccio alla programmazione
90
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
11.
INPUT: N
OUTPUT: Somma dei numeri pari e dispari minori di N.
12.
INPUT: N >= 0
13.
Descrivere un algoritmo per il calcolo di X^N usando l'operatore "*".
14.
Determinare il maggiore di N valori numerici.
15.
Descrivere un algoritmo per il calcolo di M*N usando l'operatore "+".
16.
INPUT: N
17.
Realizzare un algoritmo che determini il numero primo più vicino a X.
18.
Realizzare un algoritmo che determini i primi n numeri primi.
19.
Descrivere un algoritmo che calcoli il valore finale di una somma S depositata in banca
al tasso di interesse del R% annuo dopo N anni.
20.
Fornire un algoritmo che calcoli il coefficiente binomiale.
21.
Descrivere un algoritmo che determini il M.C.D. di due numeri interi e positivi.
22.
Descrivere un algoritmo che riduca una frazione ai minimi termini.
23.
Input: due frazioni, A/B e M/N.
Output: La loro somma, differenza, prodotto e rapporto.
24.
Descrivere un algoritmo che determini il m.c.m di due numeri interi e positivi.
25.
Determinare le prime n terne pitagoriche.
26.
I primi due numeri di Fibonacci sono 0 e 1; i successivi sono dati dalla somma dei due
che lo precedono: 0, 1, 1, 2, 3. 5, 8, 13 e così via. Realizzare un algoritmo che generi i
primi n numeri di Fibonacci.
27.
INPUT:Data (Giorno,mese,anno)
OUTPUT:Verificare se la data è corretta.
28.
INPUT: Data
OUTPUT: Data relativa al giorno successivo.
29.
INPUT: Data
OUTPUT: Data relativa al giorno precedente.
30.
Descrivere un algoritmo che ha in input una successione di N numeri e stabilisce quante
volte accade che un numero è maggiore del precedente, quante volte è minore e quante
uguale.
OUTPUT: N!
OUTPUT: Stabilire se N è primo.
Capitolo 2: Algoritmi e approccio alla programmazione
91
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
31.
INPUT:N
OUTPUT:Verificare se N è una data corretta nella forma GGMMAA.
32.
Una banca effettua operazioni di quattro tipi (1-4) diversi e percepisce per ciascuna di
esse il seguente compenso:
tipo 1 € 1.00, tipo 2 € 2.00, tipo 3 € 3.50, tipo 4 € 6.00
Progettare un algoritmo che, nell'ambito di una giornata, riceva i tipi delle operazioni
effettuate e fornisca, a fine giornata, ricevendo quale tipo il valore 9, gli incassi ed il
numero di operazioni effettuate in totale e per ciascun tipo.
33.
Descrivere un algoritmo che, ricevute in input il numero degli abitanti di M città,
stabilisca:
• Quante città hanno fino a 100.000, tra 100.001 e 1.000.000 e più di 1.000.000 di
abitanti;
• La città col maggior numero e quella con il minor numero di abitanti nonchè la loro
posizione nella successione in input;
34.
Descrivere un algoritmo che, ricevuti in input tre numeri M, N e P interi positivi,
calcoli il fattoriale del più grande dei tre.
35.
Descrivere un algoritmo che, ricevuti in input tre numeri A, B e C interi positivi,
calcoli la somma dei primi X numeri interi, con X il più piccolo tra i tre numeri
immessi.
36.
Descrivere un algoritmo che, ricevuta in input una sequenza di N numeri interi e
positivi, determini se il loro massimo è un numero primo.
37.
Descrivere un algoritmo che, ricevuta in input una sequenza di N numeri interi e
positivi, determini se il loro minimo è un numero perfetto.
38.
INPUT: Due numeri interi e positivi.
OUTPUT: Stabilire se sono primi tra loro.
39.
Descrivere un algoritmo che, ricevuti in input N numeri interi, determini la media
aritmetica dei pari e dei dispari escluso lo zero e conti gli zeri.
40.
Descrivere un algoritmo che, ricevuta in input una successione di N numeri, conti i pari
e stabilisca la prima e l’ultima posizione di tali valori.
41.
Descrivere un algoritmo che, ricevute in input N coppie di valori (A, B), conti le
coppie in cui A e B sono pari e determini la posizione della prima e dell’ultima coppia
pari.
42.
Descrivere un algoritmo che, ricevute in input M coppie di valori (X, Y), conti le
coppie in cui X e Y sono di segno contrario e determini la posizione della prima e
dell’ultima coppia di segno contrario.
43.
Descrivere un algoritmo che, ricevuta in input una successione di N numeri interi e
positivi, conti i numeri perfetti.
44.
Descrivere un algoritmo che, ricevuta in input una successione di N numeri interi e
Capitolo 2: Algoritmi e approccio alla programmazione
92
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
positivi, conti i numeri primi.
45.
Descrivere un algoritmo che, ricevute in input N coppie di valori (A, B), conti le
coppie in cui A e B sono primi tra loro.
46.
Descrivere un algoritmo che, ricevuta in input una successione di N numeri interi e
positivi, determini la somma dei fattoriali dei numeri primi.
47.
Visualizzare la tavola pitagorica di ordine N.
Vettori
48.
Caricare e stampare un vettore di N elementi.
49.
INPUT: A() e B() lunghi N
OUTPUT: C() dato da C(i) = A(i)+B(i).
50.
INPUT: A()
OUTPUT: B() dato da B(i) = 2*A(i).
51.
INPUT: A()
OUTPUT: A() così modificato: A(i) = A(i)*i.
52.
INPUT: A() e B() lunghi N
OUTPUT: A() dato da A(i) = min{A(i),B(i)}.
53.
INPUT: A()
OUTPUT: A() modificato secondo l'assegnazione:
A(i)=A(i)*3 se A(i) è pari
A(i)=A(i)*2 se A(i) è dispari
54.
INPUT: A(),B() e C() lunghi N
OUTPUT: D(), D(i) = max {A(i),B(i),C(i)}.
55.
INPUT: A()
OUTPUT: Prodotto degli elementi di posto pari e dispari.
56.
INPUT: A()
OUTPUT: Il suo minimo.
57.
Descrivere un algoritmo che inverta un vettore su se stesso (e in un altro vettore).
58.
INPUT: A()
OUTPUT: Il massimo ed il minimo di A().
59.
INPUT: X() e Y() lunghi N
OUTPUT: W() così definito:
W(i) = x(i)*y(i) se X(i) e Y(i) entrambi diversi da zero
W(i) = i
negli altri casi.
60.
INPUT: W() e K
OUTPUT: Quante volte K è presente in W().
Capitolo 2: Algoritmi e approccio alla programmazione
93
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
61.
INPUT: V() e K
OUTPUT: In 3 vettori, gli elementi di V() minori, maggiori e uguali a K.
62.
INPUT:V()
OUTPUT: 2 vettori contenenti gli elementi pari e dispari di V()
63.
INPUT: A(), K
OUTPUT A() così modificato:
A(i)=A(i)*i se i<k
A(i)=A(i)/i se i>k
A(i)=A(i) se i=k
64.
INPUT: W() e K
OUTPUT: In 2 vettori gli elementi di W() multipli e sottomultipli di K.
65.
Descrivere un algoritmo che, ricevute in input le altezze di N persone, stabilisca:
• L'altezza media;
• Quante persone hanno l'altezza maggiore, minore o uguale alla media;
• L'altezza massima e minima e le relative posizioni nella successione data in
input.
66.
INPUT: V() e K
OUTPUT: Posizione di K in V().
L'algoritmo deve ciclare ed uscire quando l'utente darà 0 in input per K.
67.
INPUT: V()
OUTPUT: Max e min di V(); scambiare il minimo col primo elemento ed il massimo
con l'ultimo.
68.
INPUT: V().
OUTPUT: Il fattoriale della somma del minimo e del massimo del vettore.
69.
INPUT: V().
OUTPUT: L'elemento che si discosta meno dalla media aritmetica e quello che si
discosta di più.
70.
INPUT: V().
OUTPUT: La posizione del più piccolo numero pari nonchè quanti sono gli eventuali
elementi ad esso uguali.
71.
Descrivere un algoritmo che, ricevuti in input il vettore V(), costituito da M elementi, e
due numeri X e Y, con X<Y, determini quanti elementi del vettore sono minori di X,
quanti compresi tra X e Y e quanti maggiori di Y nonchè le loro rispettive somme.
72.
Descrivere un algoritmo che, caricati due vettori V() e W() costituiti, rispettivamente,
di M e N elementi, determini quanti elementi di V() sono maggiori del minimo di W().
73.
INPUT: V(). OUTPUT: Determinare la media aritmetica degli elementi di posto pari,
degli elementi di posto dispari e di tutti gli elementi.
74.
Input: V(N), X.
Output: W() dato da V() privo dell’elemento in posizione X.
Capitolo 2: Algoritmi e approccio alla programmazione
94
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
75.
Input: V(N), X, Y e X<=Y.
Output: W() dato da V() privo degli elementi dalla posizione X a Y.
76.
Input: V(N), E, X.
Output: W() dato da V() con E inserito in posizione X.
77.
Input: V(N) ordinato crescente, E.
Output: W() dato da V() con E nella posizione che gli compete secondo l’ordinamento
crescente.
78.
Descrivere un algoritmo che, a fine mese, ricevuti gli incassi giornalieri di un negozio,
fornisca in uscita:
• L'incasso mensile;
• Il giorno in cui si è incassato di più ed il relativo incasso;
• Il giorno in cui si è incassato di meno ed il relativo incasso;
• La media aritmetica degli incassi giornalieri.
Si consideri il mese di trenta giorni.
79.
Descrivere un algoritmo che, caricati due vettori A() e B(), determini quanti elementi di
B() sono minori del prodotto degli elementi di A().
80.
INPUT: A() e B()
OUTPUT: Unione.
81.
INPUT: A() e B()
OUTPUT: Intersezione.
82.
Descrivere un algoritmo che, ricevuti in input il vettore V() di M elementi ed un
numero K, determini quanti elementi di V() sono primi con K.
83.
INPUT: A() e B() ordinati crescenti.
OUTPUT: Il vettore X(), ordinato crescente, ottenuto dalla fusione dei primi due.
84.
Descrivere un algoritmo che riceva in input un vettore e determini quante volte in esso è
presente il suo stesso massimo e quante volte il suo stesso minimo nonchè le ultime
posizioni in cui si trovano il massimo ed il minimo.
85.
INPUT: V().
OUTPUT: stabilire quanti numeri primi sono in esso contenuti e, tra questi, il
massimo ed il minimo.
86.
Progettare un algoritmo che, ricevuta in input un importo da pagare, restituisca i tagli ed
il numero di banconote/monete necessarie.
87.
Progettare un algoritmo che legga successivamente dei numeri e li inserisca in un
vettore (inizialmente vuoto) solo se non sono già presenti. In caso contrario scrivere un
messaggio del tipo "numero gia presente all'i-esimo posto".
88.
Descrivere un algoritmo che, ricevuti in input i tre vettori A(L), B(M) e C(N),
visualizzi gli elementi di A() presenti in B() e non in C().
Capitolo 2: Algoritmi e approccio alla programmazione
95
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
89.
Descrivere un algoritmo che, caricato il vettore A(), costituito da M elementi interi,
stabilisca se esiste in esso almeno un numero perfetto.
90.
Descrivere un algoritmo che, ricevuto in input un vettore V() costituito da M elementi
interi e positivi, riporti in un secondo vettore W() gli elementi perfetti di V(). Si stampi
il vettore W() dall'ultimo elemento al primo.
91.
Descrivere un algoritmo che, ricevuto in input un vettore V() costituito da M elementi
interi e positivi, riporti in un secondo vettore W() i fattoriali degli elementi primi di V().
Si stampi il vettore W() dall'ultimo elemento al primo.
92.
Slittamento di un vettore: si realizzi un algoritmo che slitti gli elementi di un vettore di
X posizioni in avanti ed azzeri tutti gli elementi precedenti la posizione X.
93.
Rotazione di un vettore: si realizzi un algoritmo che slitti gli elementi di un vettore di X
posizioni in avanti e riporti in testa gli ultimi X.
94.
Input: V(M), W(N), X.
Output: Il vettore A() i cui primi X elementi sono presi da V(), seguiti da tutti gli
elementi di W() quindi i restanti di V(). Opportune considerazioni per casi particolari.
95.
Descrivere un algoritmo che, ricevuti in input i tre vettori V(M), W(N) e X(P), conti gli
elementi comuni.
96.
INPUT: Un vettore contenente molti zeri e numeri positivi;
OUTPUT: Vettore compattato ottenuto sostituendo a zeri consecutivi un numero
negativo pari al numero di zeri individuati.
97.
Scompattare il vettore compattato di cui all'esercizio precedente.
98.
Ordinamento di un vettore:
INPUT: V();
OUTPUT: V() ordinato crescente.
99.
Ricerca binaria:
INPUT: V() ordinato crescente, K;
OUTPUT: Verificare se K è presente in V().
Matrici
100.
Fornire un DaB per caricare e stampare una matrice di ordine M*N.
101.
INPUT : M(,) quadrata
OUTPUT : La somma di tutti gli elementi, degli elementi della diagonale principale e
degli elementi della secondaria.
102.
INPUT : A(,) quadrata
OUTPUT : B(,) trasposta di A(,).
103.
INPUT : M(,)
OUTPUT : Minimo e massimo e rispettivi indici.
Capitolo 2: Algoritmi e approccio alla programmazione
96
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
104.
Descrivere un algoritmo che, ricevuta in input la matrice A(,) ed un numero K,
determini quanti elementi di A(,) sono maggiori di K, quanti uguali a K e quanti minori
di K.
105.
INPUT : M(,)
OUTPUT : La somma di tutti gli elementi, degli elementi dispari, dei pari e dei primi.
106.
Si progetti un programma che, ricevuta in input una matrice quadrata A(,) di ordine M,
determini la media aritmetica di tutti gli elementi, degli elementi della diagonale
principale e secondaria.
107.
INPUT: A(,).
OUTPUT: La posizione del più piccolo numero pari nonchè quanti sono gli eventuali
elementi ad esso uguali.
108.
INPUT: M(,)
OUTPUT : Riga e colonna per le quali è massima la somma degli elementi.
109.
INPUT:M(,), K
OUTPUT: Indici di riga il cui prodotto degli elementi è K.
110.
INPUT:M(,), K
OUTPUT: Indici di colonna la cui somma degli elementi è K.
111.
INPUT : A(,) e B(,)
OUTPUT : Intersezione di A(,) e B(,).
112.
INPUT : M(,)
OUTPUT : Determinare dapprima le somme di ciascuna riga e ciascuna colonna,
quindi stampare.
113.
INPUT : M(,) quadrata di ordine N
OUTPUT : ordinare le righe di M(,)
114.
INPUT: M(,) quadrata
OUTPUT: Verificare se esiste una riga la cui somma degli elementi è uguale alla
somma degli elementi della diagonale principale.
115.
Come il precedente con colonne e diagonale secondaria.
116.
INPUT : M(,) quadrata
OUTPUT : Stabilire se M(,) è simmetrica.
117.
Descrivere un algoritmo che, caricata la matrice A(,), costituita da MxN elementi interi
positivi, stabilisca quanti numeri primi sono in essa contenuti e, tra questi, il massimo.
118.
Descrivere un algoritmo che, ricevuta in input la matrice A(,), quadrata di ordine M,
stampi i fattoriali degli elementi positivi, interi e non appartenenti alla diagonale
secondaria della matrice.
119.
Descrivere un algoritmo che, ricevuta in input la matrice A(,) di ordine MxN ed il
Capitolo 2: Algoritmi e approccio alla programmazione
97
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
numero X, stampi gli indici delle righe nelle quali il numero X compare almeno 3 volte.
120.
Descrivere un algoritmo che, ricevuta in input la matrice A(,) di ordine MxN, ed un
numero X determini la riga della matrice in cui X compare più volte e quante volte e
quella in cui X compare meno volte e quante volte.
121.
Costruire la matrice A(,) di ordine M*N nella quale A(i,j) = i! + j!.
122.
Descrivere un algoritmo che, nella prima fase, carichi una matrice A(,) di ordine Mx2
che riporta nella prima colonna gli importi e nella seconda la corrispondente aliquota
IVA. Nella seconda fase l'algoritmo riceve in input un valore rappresentante una
aliquota IVA e calcola la somma degli importi relativi a tale aliquota.
Opzionale: La seconda fase deve essere ciclica e concludersi quando l'utente fornisce il
valore 0 per l'aliquota.
123.
Descrivere un algoritmo che, nella prima fase, carichi una matrice A(,) di ordine Mx2
che riporta nella prima colonna gli importi e nella seconda la corrispondente aliquota
IVA. Nella seconda fase l'algoritmo calcola e stampa le somme degli importi divisi per
aliquote.
124.
Descrivere un algoritmo che, ricevuti in input il vettore W() di N elementi e la matrice
A(,) di ordine MxN, stabilisca se il vettore è presente in una riga della matrice.
125.
Descrivere un algoritmo che, ricevuta in input la matrice W(,) quadrata di ordine M,
determini quanti elementi di W(,) sono perfetti e, di questi, quanti appartengono alla
diagonale principale e quanti alla secondaria.
126.
Descrivere un algoritmo che, ricevuta in input la matrice W(,) di ordine MxN, determini
se in essa esistono due colonne i cui prodotti degli elementi siano uguali.
127.
Descrivere un algoritmo che, ricevuti in input il vettore V() di M elementi e la matrice
B(,) di ordine MxN, stabilisca se il vettore è presente in una colonna della matrice.
128.
Descrivere un algoritmo che, ricevute in input le matrici A(,) e B(,),
rispettivamente, MxN e PxQ, visualizzi gli elementi comuni.
129.
Descrivere un algoritmo che, ricevuta in input una matrice quadrata, conti le righe la
cui somma degli elementi è uguale a quella degli elementi della diagonale secondaria.
130.
Progettare un algoritmo che, ricevute in input n coppie costituite dall’importo da pagare
ed il loro numero (quanti importi tutti uguali da pagare), restituisca i tagli ed il numero
di banconote/monete necessarie.
Capitolo 2: Algoritmi e approccio alla programmazione
di
ordine,
98
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Capitolo 3.
Hardware
3.1. Sistemi, automi, processi e modelli
Un sistema è un insieme di parti interconnesse ed interagenti che
costituiscono una unica entità. Una parte di un sistema può, a sua volta, essere un
sistema detto sottosistema, ovvero un sistema può essere incorporato all’interno di
un sistema più ampio detto ecosistema. Spesso i termini sistemi e sottosistemi
vengono sostituiti dai termini microsistemi e macrosistemi.
Le parti di un sistema concorrono al raggiungimento di uno scopo così come,
per esempio, un sistema di elaborazione, volgarmente detto computer, serve per
l’elaborazione dell’informazione ed un sistema stereofonico per ascoltare la musica;
il corpo umano è un sistema e noi stessi, in classe, costituiamo un sistema, che ci
consente lo scambio di informazioni allo scopo di apprendere.
Un sistema riceve dall’ecosistema input e/o sollecitazioni e restituisce output:
Sistema
Input
Output
I sistemi possono essere collegati tra loro secondo diverse modalità:
• Seriale: L’output di un sistema costituisce l’input di un secondo sistema;
Input
Sistema 1
Sistema 2
Output
Un esempio di sistemi sequenziali, è costituito dalla catena di montaggio, nella
quale un semilavorato di un settore costituisce materia prima per un altro settore e
così via fino al prodotto finito.
• Parallelo: due sistemi condividono l’input
Input
Capitolo 3: Hardware
Sistema 1
Output
Sistema 2
Output
99
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Nella nostra aula ognuno di voi è un sistema e riceve lo stesso input: la mia
spiegazione.
• Retroazione o feedback: L’output di un sistema influenza l’input di un altro .
Input
Sistema 1
Output
Sistema 2
Nell’esempio precedente, qualcuno di voi potrebbe interrompere e chiedermi di
ripetere. Altro esempio è il caso di una persona che ascolta musica da un sistema HiFi
e regola il volume se questo non è di suo gradimento.
I sistemi sono anche classificati come statici, che non evolvono nel tempo, e
dinamici; deterministici, in cui l’output dipende solo dall’input, per cui questo sarà
sempre uguale, anche in tempi diversi, in corrispondenza dello stesso input, e
probabilistici in cui svariate cause possono portare a risultati diversi in
corrispondenza dello stesso input. I sistemi di elaborazione sono sistemi
deterministici mentre, per esempio, il sistema borsistico è probabilistico.
I sistemi autonomi, ricevuto l’input dall’uomo, sono in grado di eseguire i loro
processi in totale autonomia. Questi sistemi vengono visti come scatole nere alle
quali l’uomo è interessato solo all’input ed all’output e non alle trasformazione
effettuate dal sistema per passare dall’uno all’altro. Una macchina così fatta e che sia
deterministica, è indicata con il termine automa; in particolare un automa è definito
come una macchina costituita da:
• Un insieme finito di possibili input;
• Un insieme finito di possibili output;
• Un insieme finito di stati interni;
• Una funzione, detta di transizione, che consente il passaggio della macchina da
uno stato all’altro in funzione dell’input e dello stato in cui si trova;
• Una funzione che definisce l’output.
Un esempio di automa è un juke-box o una macchina che distribuisce bibite; in
ambito informatico ha rilevante interesse la macchina di Touring.
L’insieme delle azioni compiute da un sistema per raggiungere il suo
obiettivo è detto processo. In particolare, un processo è sequenziale quando le
operazioni vengono eseguite una dopo l’altra ovvero non è possibile eseguire una
istruzione se non al completamento della precedente, mentre dicesi parallelo se più
istruzioni possono essere eseguite contemporaneamente.
Un processo può, pertanto, essere definito come l’insieme delle azioni che il
sistema deve compiere per passare dall’input all’output.
Capitolo 3: Hardware
100
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
In un sistema di elaborazione, un processo è la fase di esecuzione di un
programma.
Molto spesso, invece di realizzare un sistema, lo si rappresenta con un
formalismo matematico detto modello. Per esempio, prima di realizzare una nuova
auto se ne descrivono e verificano le caratteristiche con un modello matematico,
realizzato mediante un computer, quindi e se ritenuto opportuno se ne realizza un
prototipo e solo successivamente, effettuati tutti i test, si passa alla produzione in
serie.
I modelli matematici sono molto utilizzati, ad esempio per le previsioni
meteorologiche.
3.2. Sistema di elaborazione
Un sistema di elaborazione è, ovviamente, un insieme di parti interconnesse ed
interagenti. In maniera immediata, un sistema di elaborazione può essere considerato
come costituito da due parti: l’Hardware ed il Software. In maniera più dettagliata,
esso è costituito da unità centrale di elaborazione, memorie di massa, dispositivi
periferici, software di base, software applicativo, etc.; in questo e nei prossimi
capitoli approfondirò il trattamento di questi componenti. Il sistema di elaborazione è
spesso chiamato computer, elaboratore elettronico o semplicemente elaboratore
ma il termine più appropriato è senz’altro sistema di elaborazione.
3.3. La macchina di Von Neumann
John Von Neumann (Budapest-1903; Washington-1957) fu il primo a
realizzare un sistema di calcolo basato sull’idea di programma memorizzato. In
questo sistema, infatti, il programma, opportunamente codificato in binario, veniva
memorizzato all’interno di una memoria che poteva contenere anche i dati da
elaborare. In pratica non vi era differenza tra dati e istruzioni che li elaborano,
entrambi codificati in binario e memorizzati all’interno della stessa memoria. Ancora
oggi i moderni elaboratori, pur se tecnologicamente diversi, lavorano secondo i
concetti della macchina di Von Neumann memorizzando dati e programmi all’interno
di una memoria.
Lo schema generale della macchina di Von Neumann è riportato nella seguente
figura:
Capitolo 3: Hardware
101
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
RAM
Input
CPU
CU
Output
ALU
In questo schema le frecce indicano il verso del flusso dei dati.
La sezione INPUT consente il collegamento dei dispositivi di INPUT, necessari
per l’immissione dei dati.
La sezione OUTPUT consente il collegamento dei dispositivi di OUTPUT,
necessari per l’emissione dei risultati.
La CPU è la Central processing Unit (Unità Centrale di Elaborazione) e
costituisce l’organo più importante in un sistema di elaborazione; essa è costituita
dalla Control Unit (Unità di controllo), che sovrintende al corretto funzionamento
del sistema controllandone tutti i componenti, e dalla Arithmetic and Logic Unit
(Unità Aritmetica e Logica) che effettua tutti i calcoli, aritmetici e logici.
La Random Access Memory (Memoria ad Accesso Casuale), detta anche
memoria centrale, è il deposito dove dati e istruzioni dei programmi da eseguire
vengono memorizzati. Essa è costituita da una serie di celle numerate; l’indirizzo di
una cella è definito come la sua posizione nell’ambito della memoria e ne consente
l’univoca individuazione.
3.4. I moderni sistemi di elaborazione
Lo schema concettuale ed estremamente semplificato di un moderno sistema di
elaborazione è riportato nella seguente figura:
Capitolo 3: Hardware
102
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
BUS
CPU
RAM
DMA
Interfacce
Dispositivi
periferici
di Input
Dispositivi
periferici
di Output
Dispositivi
periferici
di I/O
In questo schema ritroviamo gli stessi componenti della macchina di Von
Neumann con qualche piccola differenza. Nei paragrafi successivi parlerò in dettaglio
delle parti che compongono un moderno sistema di elaborazione.
3.4.1. BUS
Il BUS è il corridoio ideale che consente il trasferimento dei dati tra i
componenti del sistema. In altri termini non esistono collegamenti diretti tra un
dispositivo e l’altro ma tutti si “affacciano” sul BUS e possono trasmettere o ricevere
informazioni; è evidente che il bus può essere utilizzato da un sol dispositivo alla
volta per scambiare informazioni da e per la CPU. Il controllo del BUS è a totale
carico della CPU, che di volta in volta consente un unico trasferimento di dati.
In effetti esistono 3 BUS:
• BUS di dati: è il bus utilizzato per il trasferimento dei dati; i dati scambiati con la
CPU viaggiano su tale BUS;
• BUS di controllo: su questo BUS la CPU invia i segnali di controllo ai vari
dispositivi che costituiscono il sistema; insieme al bus dei dati, consente un
corretto scambio di informazioni, consentendo la specifica di chi, come e cosa
trasferire;
Capitolo 3: Hardware
103
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• BUS degli indirizzi: su questo bus viaggia l’indirizzo della cella di memoria da
leggere o da scrivere.
Numerosi sono i tipi di BUS, che sono stati utilizzati nel corso dell’evoluzione
dei sistemi di elaborazione; essi si diversificano per la velocità di trasferimento dei
dati e per il numero di bit che riescono a far viaggiare contemporaneamente detto
parallelismo:
• BUS ISA, EISA, VESA: non sono più utilizzati; il primo è stato realizzato nella
versione a 8 e 16 bit, il secondo è detto Extented ISA ed il terzo, a 32 bit, è stato
utilizzato per un periodo di tempo assai limitato;
• BUS PCI: BUS a 32 bit ancora in uso ma che vedrà la sua graduale sostituzione
con il PCI Express;
• AGP: BUS ancora in uso ma che sarà anch’esso sostituito dal PCI Express; si
tratta di un BUS locale ovvero utilizzato da un solo dispositivo. Ho detto in
precedenza che il BUS è condiviso ovvero utilizzato da più periferiche anche se
uno solo di essi lo può utilizzare in un certo istante; ebbene il BUS AGP ha la
caratteristica di essere dedicato all’interfaccia dello schermo, la cosiddetta scheda
video; questa scelta è stata necessaria con l’avvento della multimedialità che,
soprattutto con i film, aumenta lo scambio di dati tra la CPU e lo schermo;
• PCI Express: BUS di ultima generazione che andrà a sostituire sia il bus PCI che
l’AGP; si tratta di un bus con uno o più canali seriali indipendenti ognuno dei
quali può arrivare ad una velocità di trasferimento dati pari a 533 Mb/sec. A
seconda del numero di canali, si parla di BUS PCI-E x1, PCI-E x4, PCI-E x16.
3.4.2. CPU
La CPU è senz’altro l’organo più importante di un sistema di elaborazione e, da
sola, costituisce il 70% della potenza di calcolo di un Personal Computer (PC).
Essa è costituita dalla CU e dalla ALU. La CU ha il compito di controllare
l’intero sistema ed eseguire le istruzioni del/i programma/i in esecuzione. Le
istruzioni eseguibili dalla CU fanno parte di un linguaggio di programmazione
binario detto linguaggio macchina ed ogni istruzione fa riferimento ad un
microprogramma memorizzato in maniera permanente all’interno della CU.
L’esecuzione di una istruzione in linguaggio macchina comporta, pertanto,
l’esecuzione di un microprogramma costituito da microistruzioni.
Nella CU troviamo, inoltre, i cosiddetti registri. Un registro è una piccola
memoria in grado di memorizzare pochi bit in numero variabile, in genere, da 8 a 64.
I registri principali che si ritrovano in una CU sono:
Capitolo 3: Hardware
104
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• Registro P, Program Counter (Contatore di programma): contiene l’indirizzo
della cella di memoria (RAM) contenente la prossima istruzione da eseguire;
• Registro IR, Instruction Register (Registro istruzione): contiene l’istruzione in
esecuzione;
• Registro S di stato: i bit di cui è costituito memorizzano lo stato del sistema o
meglio dell’esecuzione dell’istruzione in corso; per esempio, un bit è l’extend di
cui ho parlato nel capitolo 1 a proposito della rappresentazione binaria fixed point,
e rappresenta il carry o riporto di una operazione aritmetica; un altro bit
rappresenta l’overflow.
Il lavoro della CU è estremamente semplice; all’inizio viene forzato, all’interno
del registro P, l’indirizzo della prima istruzione del programma da eseguire quindi
l’esecuzione dell’istruzione e del programma passa attraverso le seguenti 3 fasi:
1. Fase di fetch: l’istruzione da eseguire, il cui indirizzo è contenuto nel registro P,
viene trasferita dalla memoria al registro IR;
2. Fase di decode: è la fase di decodifica e di interpretazione dell’istruzione che
consiste nell’individuazione delle microistruzioni da eseguire;
3. Fase di execute: è la fase di esecuzione vera e propria durante la quale viene
modificato il valore del registro P, inserendo in esso l’indirizzo della prossima
istruzione da eseguire e così, alla fine dell’esecuzione dell’istruzione in corso, si
torna alla fase 1 fino all’esecuzione di una istruzione del tipo ‘END’ che termina
l’esecuzione del programma.
In questo la CU è un automa che esegue sempre le stesse operazioni cambiando
stato durante l’esecuzione delle istruzioni del programma.
L’ALU, invece, è coinvolta nelle operazioni di calcolo e nelle operazioni
logiche (AND, OR, etc.). L’ALU, analogamente alla CU, contiene una serie di
registri detti accumulatori contenenti gli operandi coinvolti dall’istruzione in corso
ed il risultato della stessa. Gli operandi vengono trasferiti in questi registri leggendoli
dalla memoria e sempre in quest’ultima viene scaricato il risultato.
Le moderne CPU integrano, oltre alla CU ed all’ALU, anche la cache memory;
la cache memory è una memoria elettronica con tempi di lettura/scrittura paragonabili
a quella della CPU. In altre parole sto dicendo che la RAM, pur essendo molto
veloce, ha tempi di lavoro più alti rispetto alla CPU, per cui i dati sui quali la CPU
opera vengono letti/scritti nella cache memory e, quest’ultima, dialoga con la
memoria centrale.
Le caratteristiche fondamentali di una CPU sono il parallelismo di bit, ovvero
il numero di bit che essa riesce a trattare contemporaneamente, e la velocità di
esecuzione delle istruzioni.
Per il parallelismo di bit si è passati da CPU a 8 bit alle moderne CPU a 64 bit
mentre per la velocità di elaborazione si utilizza il MIPS (Millions instructions per
second) ed altri parametri; tra questi quello legato al clock. Il clock è un generatore
Capitolo 3: Hardware
105
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
di impulsi; la CPU comincia l’esecuzione di una istruzione in presenza di un segnale
di clock e passa alla successiva al successivo impulso. E’ evidente che maggiore è il
numero di impulsi tanto maggiore sarà la velocità di esecuzione. La velocità del clock
è detta frequenza ed è misurata in impulsi al secondo; in particolare oggi si
utilizzano il MHZ (Mega Hertz) ed il GHZ (Giga Hertz) che corrispondono,
rispettivamente, ad un numero di impulsi pari a 106/sec e 109/sec.
Il tempo di esecuzione di una istruzione, pertanto, è molto basso, per cui occorre
introdurre i seguenti nuovi sottomultipli del secondo:
Millisecondo: 1 msec=10-3sec;
Microsecondo: 1 µsec=10-6sec;
Nanosecondo: 1 nsec=10-9sec;
Picosecondo: 10-12sec;
Femtosecondo: 10-15sec.
In pratica, però, oggi la tecnologia offre la tecnica Pipeline che assomiglia
molto alla logica della catena di montaggio. Il sistema è in grado di eseguire l’execute
dell’istruzione in corso contemporaneamente alla fetch della successiva. Se si pensa
di aumentare le fasi necessarie per l’esecuzione di una istruzione allora le istruzioni
in esecuzione potrebbero essere tante quante le fasi ed ognuna di esse è in una fase
diversa di esecuzione. Questo, ovviamente, velocizza l’esecuzione dei programmi. In
questa tecnica, però, assume un ruolo importante il cosiddetto predictor che ha il
compito di prevedere, con una certa sicurezza, l’istruzione successiva che sarà nota
solo alla fine di quella che la precede. Un fallimento di tale previsione rende inutile la
parte già eseguita dell’istruzione successiva.
Una particolare CPU è il microprocessore. Un microprocessore è una CPU
miniaturizzata costituita da un solo circuito integrato detto chip. Inizialmente
l’elettronica disponeva di componenti quali transistor, resistenze, condensatori,
etc., che, opportunamente collegati, realizzavano un circuito capace di svolgere una
funzione logica oppure costituire una piccola memoria. Lo scenario attuale è
completamente diverso in quanto il componente elementare è il circuito integrato
prodotto in un’unica serie di operazioni e che rende indistinguibili gli elementi che lo
compongono. Un circuito integrato è, in genere, grande quanto la capocchia di un
fiammifero ma viene inserito all’interno di un contenitore plastico o ceramico più
grande munito di piedini che ne facilitano il collegamento agli altri componenti del
sistema. I vari circuiti integrati, insieme ad un numero assai limitato di altri
componenti, vengono inseriti su una scheda che ne consente il collegamento ed il
dialogo.
Attraverso le cosìddette scale di integrazione (SSI-Small Scale Integration,
MSI-Medium Scale Integration, LSI-Large Scale Integration, , VLSI-Very Large
Scale Integration, HVLSI-High Very Large Scale Integration, etc.) si è passati da
circuiti integrati costituiti da qualche centinaio di componenti agli attuali in grado di
integrare oltre 100 milioni di componenti. L’attuale tecnologia usa componenti della
Capitolo 3: Hardware
106
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
grandezza di 90 nanometri dove 1nm=1x10-9m; altra unità di misura molto utilizzata
è il micron, 1 µm=1x10-6m; per questo motivo ci si riferisce a queste tecnologie con
il termine nanotecnologie.
La storia dei microprocessori comincia negli anni settanta del secolo scorso
quando si realizzarono i primi microprocessori a 4 bit per poi passare al mitico Z80
a 8 bit. Quando sulla scena mondiale, negli USA, compare l’azienda Intel
(www.intel.com), attualmente la più grande azienda produttrice di microprocessori, si
comincia a creare un vero monopolio oggi spezzato solo in parte dall’azienda AMD
(www.amd.com).
La seguente tabella mostra l’evoluzione dei processori Intel:
Nome processore
Frequenze in MHZ
Parallelismo di bit
8088
4.77/8/10
8
8086
10MHZ
16 interno/8 sul bus
80286
10/12/16/20 MHZ
16
80386
16/20/33/40
32 interno/16 su bus ISA
80486
25/33/..../66/100/133
32 int./16 su bus ISA - 32
su VLB prima e PCI dopo
PENTIUM
60/75/100/..../200/233
32 interno/16 su bus ISA 32 su PCI
PENTIUM II
233/266/..../450
32 int./16 su bus ISA-32
PCI/AGP
PENTIUM III
500/..../1100
32 int./16 su bus ISA-32
PCI/AGP
PENTIUM IV
1300/1400/…./2000/3000
32 int./16 su bus ISA-32
PCI/AGP
PENTIUM IV 630
2800/.../3600
64 bit
BUS PCI/PCI Express
PENTIUM IV D (Duo)
2800/3000/.../3600
64 bit / Dual core
BUS PCI/PCI Express
Pentium CORE 2 DUO
1800, 2000, ...., 2660
64 bit / Dual core
BUS PCI/PCI Express
Pentium CORE 2 QUAD
2400
64 bit / Quadruple core
BUS PCI/PCI Express
......... e continua
Capitolo 3: Hardware
107
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
La produzione di AMD è stata caratterizzata, nella sua fase iniziale, dalla
realizzazione di processori completamente compatibili ed analoghi per prestazioni a
quelli di Intel; successivamente AMD ha prodotto i processori cosìddetti ATHLON,
DURON, e, attualmente, SEMPRON e ATHLON 64 a 64 bit.
Per velocizzare l’esecuzione dei programmi, abbiamo visto in precedenza
l’adozione di tecniche come la pipeline. Il passo successivo è stato quello di
realizzare sistemi multiprocessor, con più di un processore, che consentono
l’esecuzione contemporanea di più istruzioni prese anche da programmi diversi, la
cosiddetta multiprogrammazione di cui parlerò molto più avanti. L’integrazione dei
circuiti oggi consente di realizzare un unico integrato che, in pratica, è quasi un dual
processor in quanto ne viene duplicato solo una parte ovvero quella denominata
nucleo. Probabilmente in un prossimo futuro avremo microprocessori dual processor
ovvero costituito da due processori completamente distinti.
Una CPU di
ultima
generazione
Il processore
INTEL 8088
Capitolo 3: Hardware
108
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
3.4.3. RAM
La RAM, Random Access Memory, è la memoria centrale del sistema; la RAM
è una memoria operativa nel senso che dati e programmi, per poter essere elaborati,
devono essere trasferiti in essa. Si tratta di una memoria elettronica di
lettura/scrittura con una discreta capacità e tempi di accesso, ovvero di
lettura/scrittura, molto bassi.
La memoria centrale è organizzata in celle costituite da uno o più byte; ogni
cella, come detto, è univocamente individuata mediante il suo indirizzo che è la
posizione occupata nell’ambito della memoria; gli indirizzi vanno da zero ad n, dove
n è la dimensione della memoria. Le operazioni effettuabili sono quelle di lettura e
scrittura di una cella.
Le caratteristiche fondamentali di una RAM sono la capacità ed il tempo di
accesso ovvero di lettura/scrittura di una cella. Dico subito che il tempo di
lettura/scrittura sono dell’ordine di qualche miliardesimo di secondo mentre la
capacità varia da sistema a sistema.
La capacità è misurata in byte o, meglio secondo i suoi multipli:
Simbolo Leggi
Capacità
KB
Kilo Byte
210 Byte = 1024 Byte
MB
Mega Byte
220 Byte = 1024 KB = 1.048.576 Byte
GB
Giga Byte
230 Byte = 1024 MB = 1.073.741.824 Byte
TB
Tera Byte
240 Byte = 1024 GB = 1.099.511.627.776 Byte
In genere il Kilo, nel sistema metrico decimale, corrisponde a 1000 mentre il
Kilo informatico corrisponde a 1024; questo perché i sistemi informatici sono binari e
1024=210.
I nostri personal computer hanno una memoria centrale che, in genere, non è
mai inferiore ai 256MB fino a qualche GB.
La cache memory, essendo integrata nel processore, ha una capacità molto più
bassa, variabile tra i 256KB e i 2 MB, e, come detto, tempi di accesso molto più bassi
rispetto alla RAM.
In genere “B” sta per byte e “b” sta per bit cosicché, per esempio, 256KB e
256Kb sono, ovviamente, due cose ben diverse.
La RAM è sicuramente un componente importante per il buon funzionamento di
un sistema e per questo, in alcuni casi, la memoria è sottoposta ad un controllo di
buon funzionamento; il controllo più utilizzato è quello di parità.
Capitolo 3: Hardware
109
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Il controllo di parità fa uso, per ciascun byte, di un bit in più, detto bit di parità;
il valore di questo nono bit dipende dai primi 8 ed è impostato a 1 se il numero di bit
con valore 1 è dispari e a zero se tale numero è pari. In questo modo, il numero
complessivo di bit con valore 1, compreso quello di parità, è sempre pari. In fase di
scrittura in memoria viene generato e memorizzato il bit di parità mentre in fase di
lettura viene generato e controllato il bit di parità ovvero si verifica che il numero
complessivo di bit con valore 1 sia pari; nel caso in cui il numero di bit con valore 1 è
dispari il sistema comunica il malfunzionamento della memoria che, in genere, porta
al blocco delle elaborazioni ed alla richiesta di intervento di un tecnico per procedere
alla riparazione. Il controllo di parità, ovviamente, fallisce quando si verificano due
errori in lettura sullo stesso byte, perché il doppio errore non altera la parità.
Il controllo di disparità è analogo perché rende dispari e non pari il numero
complessivo di bit.
Sui sistemi server si tende ad evitare il fermo macchina e si utilizzano tecniche
ancora più sofisticate mediante memorie ECC a correzione di errore; in questo
caso si utilizzano più bit di controllo, in genere almeno 2, che consentono il recupero
dell’errore; il sistema, in pratica, è in grado non solo di rilevare l’errore ma, nel caso,
di correggerlo.
La maggior parte dei PC utilizza memorie senza controllo di parità mentre su
sistemi professionali e server si utilizzano memorie a controllo di parità o a
correzione dell’errore il cui costo, ovviamente, è maggiore.
3.4.4. ROM – Read Only Memory
Un componente importante in un sistema di elaborazione è la ROM (memoria a
sola lettura) che, in genere, contiene software indispensabile all’avvio del sistema e
denominato BIOS (Basic I/O System); si tratta, come evidente, di una memoria a
sola lettura della capacità di non più di 2Mb che contiene in modo permanente
software che esegue le seguenti funzioni:
1. Diagnostica (POST: Power On Self Test): all’avvio del sistema, il software
contenuto nella ROM esegue una auto diagnosi per verificare che i componenti
principali del sistema siano correttamente funzionanti;
2. Setup: un programma che consente di impostare parametri relativi all’hardware,
molto importanti ai fini di un corretto funzionamento del sistema;
3. Boot: programma di boot-strap del sistema operativo; ha il compito di caricare il
sistema operativo, in genere dal primo disco fisso installato nel sistema;
4. Utilità: Programmi di utilità quali diagnostica approfondita di HDD e RAM,
riscrittura della ROM, etc. .
In questo corso avremo modo di approfondire la fase di setup del sistema.
Capitolo 3: Hardware
110
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Una ROM è, pertanto, un componente hardware che contiene in modo
permanente sempre lo stesso software anche se aggiornabile; per questo motivo ci si
riferisce alla ROM ed al BIOS con il termine Firmware che risulta essere la terza
componente di un sistema di elaborazione di minore importanza rispetto all’hardware
ed al software.
Ho detto che la ROM è una memoria a sola lettura ebbene essa è scrivibile solo
per aggiornare in maniera completa il software contenuto; a volte malfunzionamenti
del sistema sono risolti con un aggiornamento del BIOS. Si tratta di un’operazione
molto delicata che, in passato, poteva essere effettuata solo smontando la ROM ed
utilizzando appositi dispositivi di cancellazione (cancellatori di EPROM) e
riscrittura (Programmatori di EPROM). Oggi la tecnologia mette a nostra
disposizione memorie EEPROM (Electronically Erasable Programmable Read
Only Memory) che sono cancellabili e riprogrammabili senza la necessità di
rimuoverle dalla scheda dove sono alloggiate. Qualche tempo fa un virus cancellava
il BIOS con il risultato che, al riavvio, il PC era completamente “morto” ovvero non
riusciva più ad avviare correttamente le fasi di diagnosi e caricamento del sistema
operativo.
3.4.5. Interfacce
Interfacciare è sinonimo di collegare; un’interfaccia, quindi, è una scheda o
un componente elettronico che consente il dialogo ovvero lo scambio dei dati tra
due dispositivi. In genere una interfaccia consente di collegare dispositivi periferici
all’unità centrale in modo da consentirne, mediante operazioni di I/O (Input/Output
=Ingresso/Uscita), lo scambio dei dati; per esempio accettare dati in input da tastiera
o produrre una stampa, scrivere o leggere un floppy disk e così via.
Le interfacce possono essere di INPUT, di OUTPUT oppure di I/O a seconda
che il flusso sia, rispettivamente, verso la CPU, dalla CPU o in entrambe le direzioni.
Le interfacce sono classificate in seriali e parallele a seconda che il flusso dei
dati avvenga un bit alla volta o più bit contemporaneamente. E’ evidente che un
flusso di dati parallelo richiede un canale trasmissivo per ciascun bit mentre una
trasmissione seriale in I/O richiede solo due canali, uno per l’input ed un altro per
l’output. La tendenza attuale è quella di avere solo comunicazioni seriali in quanto,
negli ultimi anni, la velocità di una trasmissione seriale è aumentata tantissimo fino a
rendere inutili i collegamenti paralleli che richiedono un numero superiore di
connessioni, uno per ciascun bit, per il trasferimento dei dati.
Sono disponibili sui nostri personal computer numerose interfacce:
Capitolo 3: Hardware
111
L’Informatica per i miei studenti – Volume 1
Connettore
Nome
Prof. Bianco Mauro
S/P
VGA
I/O Specifiche e note
O
Interfaccia
analogica
utilizzata per il collegamento
del monitor.
O
Interfaccia digitale utilizzata
per il collegamento del
monitor.
O
Interfaccia
multimediale
digitale per i segnali HDTV
fino a 1920x1080 (1080i).
Video
Graphics
Array
DVI
Digital
Video
Interface
HDMI
High
Definition
Multimedia
Interface
Capitolo 3: Hardware
Keyb
S
I
Interfaccia tastiera oggi di
tipo PS/2.
Mouse
S
I
Interfaccia mouse di tipo
PS/2.
USB
S
I/O Universal Serial Bus: è
l’interfaccia più utilizzata;
universale perché consente il
collegamento
di
numerosissime
periferiche
assai diverse tra loro; la
maggior
parte
delle
112
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
periferiche,
infatti,
collegabile via USB.
è
Un’altra
caratteristica
importante, detta Hot Plug, è
la
possibilità
di
collegare/scollegare
periferiche a caldo ovvero
quando il PC è acceso;
2 Connettori USB
Velocità di trasferimento
della versione 1.1: 11Mb/sec;
Velocità di trasferimento
della nuova versione 2.0:
480Mb/sec;
ad una porta USB può essere
collegato un replicatore di
porte, detto HUB USB; gli
HUB USB possono essere
collegati in cascata fino ad un
massimo di 128 porte.
1394
S
I/O Volgarmente detta “Fire
Wire”,
realizzata
per
collegare
dispositivi
domestici
come
le
videocamere digitali; ha una
velocità di trasferimento dei
dati pari a 400Mb/sec e
800Mb/sec con la versione
fire wire 800.
Interfaccia Hot Plug.
Audio
Capitolo 3: Hardware
I/O Interfaccia
per
la
multimedialità che consente
di riprodurre e acquisire suoni
e audio in generale.
113
L’Informatica per i miei studenti – Volume 1
1294
Prof. Bianco Mauro
P
O
Volgarmente
denominata
“Parallela centronics” si è
evoluta fino a diventare di
tipo I/O. Utilizzata dapprima
per il collegamento delle
stampanti, successivamente
ha visto diversificato il suo
utilizzo; è stata, infatti,
utilizzata per collegare hard
disk esterni, scanner, etc.
Oggi, pur essendo presente
sui PC e non sui notebook, è
quasi inutilizzata se non per
collegare vecchie stampanti.
RS232
S
I/O Volgarmente
denominata
“Seriale”. Utilizzata per il
collegamento
di
mouse,
modem, terminali, stampanti
e periferiche a bassa velocità.
Velocità di trasferimento dati
molto bassa tra 300b/sec fino
a 115Kb/sec.
I vecchi PC disponevano di
due porte seriali denominate
COM1: e COM2:; oggi al
massimo ne hanno una che è
praticamente inutilizzata.
I notebook non dispongono
più di questa interfaccia.
Capitolo 3: Hardware
114
L’Informatica per i miei studenti – Volume 1
I/O Interfaccia di rete RJ45
utilizzata per la connessione
in rete dei PC. La velocità è,
in genere, 100Mb/sec, ma
vecchi
PC
utilizzano
interfacce a 10Mb/sec altri,
modernissimi, a 1000Mb/sec.
Rete
S
Game
S
Modem
S
I/O Interfaccia di tipo RJ11
utilizzata per collegamenti
internet e per la trasmissione
e ricezione di fax oltre che per
servizi di segreteria telefonica
e telefonici in genere.
ATA
P
I/O Oggi ribattezzata P-ATA
(Parallel ATA), interfaccia
non disponibile all’esterno e
utilizzata per il collegamento
di dischi rigidi e unità ottiche.
In genere i PC dispongono di
due
interfacce
IDE
denominate
primaria
e
secondaria ad ognuna delle
quali è possibile collegare
fino a due unità riferite come
master e slave per un totale
di 4 unità.
Sinonimi:
IDE
EIDE
ATAPI
2 connettori IDE.
Prof. Bianco Mauro
I
Interfaccia per collegare
controller per giochi quali
Joystick e Joypad. In genere
utilizzata anche per il
collegamento
di
tastiere
musicali
con
interfaccia
MIDI.
Questa interfaccia, almeno
per i dischi rigidi, sta per
essere sostituita con la più
moderna S-ATA.
Capitolo 3: Hardware
115
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Velocità di trasferimento,
variata nel corso del tempo,
raggiunge oggi i 133MB/Sec.
S-ATA
S
I/O Serial ATA: utilizzata per il
collegamento di HD ma in
futuro anche di unità ottiche.
In genere un PC dispone di 2,
4 o anche più interfacce SATA ad ognuna delle quali è
collegabile un sol dispositivo.
4 connettori S-ATA.
L’attuale velocità del S-ATA
è di 150MB/Sec ma le
versioni
successive
arriveranno
a
300
e
600MB/Sec.
E-SATA
2 Connettori
SATA
S
External
I/O Interfaccia SATA esterna, che
consente il collegamento di
dischi SATA contenuti in
appositi box alimentati; si
tratta di una interfaccia che
unisce al vantaggio di
un’altissima velocità, nel
trasferimento dei dati, la
grande
flessibilità
del
supporto esterno.
Può avere numerosissimi
utilizzi tra i quali:
• Aumento della capacità di
memorizzazione dati;
• Copie di back-up;
• Elaborazioni on line;
• Trasporto dati;
• RAID.
Floppy
Capitolo 3: Hardware
P
I/O Interfaccia
per
il
collegamento del dispositivo
116
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
obsoleto floppy disk.
SCSI
P
I/O La maggiore velocità di
trasferimento dati la si ottiene
con interfacce di tipo SCSI
utilizzate dai sistemi server
per interfacciare, soprattutto, i
dischi rigidi.
P/S
I/O Vedi più avanti in questo
stesso paragrafo.
IR
S
I/O Interfaccia ad infrarossi oggi
obsoleta, utilizzata per il
collegamento
di
mouse,
cellulari, etc.; si tratta di
interfaccia senza fili.
Blue-Tooth
S
I/O Interfaccia
di
ultima
generazione a radio frequenza
con distanze fino a 150 metri;
è
utilizzata
per
il
collegamento di palmari,
cellulari, stampanti, macchine
fotografiche digitali, etc. .
WiFi
S
I/O Collegamenti in rete locale
wireless (senza fili) a radio
frequenza.
RAID
Redundant
array
of
independent
disks
Wireless
Fidelity
Capitolo 3: Hardware
117
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Le interfacce P-ATA, S-ATA, SCSI e RAID sono riferite come controller; il
controller ha una maggiore capacità di elaborazione rispetto ad una semplice
interfaccia tanto che ad esse spesso ci si riferisce con il termine sottosistema che sta
ad evidenziare una propria capacità elaborativa. A volte anche l’interfaccia video è
riferita come controller video.
Il controller RAID (Redundant array of independent disks) richiede una
trattazione più articolata; un controller RAID è utilizzato soprattutto dai sistemi
SERVER anche se oggi, considerati i costi piuttosto bassi di un sottosistema RAID
completo, vengono utilizzati spesso anche dai sistemi PC. Il RAID consente di
migliorare le prestazioni e/o la sicurezza dei dati. Il RAID si distingue in livelli:
• Livello 0 o Striping: sono necessari almeno due dischi rigidi che costituiscono un
solo volume; l’algoritmo di lettura/scrittura dei dati consente un miglioramento
delle prestazioni, in genere si dimezzano i tempi di accesso; questo sistema ha un
grosso inconveniente perché un guasto ad uno qualsiasi dei dischi dello stripe o
catena provoca la perdita di tutti i dati, anche quelli presenti sui dischi
funzionanti;
• Livello 1 o Mirroring: si utilizza un numero pari di dischi, di cui una metà è
l’esatta copia degli altri; la ridondanza dei dati così ottenuta aumenta la sicurezza
dei dati in quanto un guasto ad un qualsiasi disco non causa perdita di dati e non
solo, il sistema riesce a continuare a lavorare utilizzando il disco funzionante
corrispondente; questo sistema fa parte di una serie di soluzioni hardware riferite
con il termine fault tolerant (tolleranza del guasto). Questa tecnica spesso
consente anche l’aggiunta e la rimozione di dischi a caldo, secondo una
tecnologia detta hot plug, ovvero senza spegnere il sistema ed è utilizzata in tutti i
Capitolo 3: Hardware
118
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
casi in cui è importante garantire il buon funzionamento del sistema 24 ore su 24,
si pensi ai WEB Server, Mail Server, etc. ;
• Livello 5: La ridondanza dei dischi non porta ad raddoppio del loro numero ma ad
utilizzarne uno in più, detto disco di parità, con il quale sarà possibile ricostruire i
dati presenti in uno qualsiasi degli altri dischi che dovesse rompersi; ovviamente
ha un costo minore del livello precedente;
• Livello 10 e 0+1: offre contemporaneamente le prestazioni dei livelli 0 e 1; in
questo caso occorrono almeno 4 dischi, 2 per lo striping e 2 per il mirroring; la
differenza tra il livello 10 e 0+1 è molto sottile: il livello 10 fa uno striping di
dischi in raid 1 mentre il livello 0+1 fa un raid di due stripe;
• JBOD (Just a Bunch of Disks): Simile al livello 0, unisce più dischi fisici in un
unico disco logico o volume ma senza migliorarne le prestazioni; è una semplice
concatenazione di dischi; non dovrebbe neanche essere considerato tra i sistemi
RAID perché non migliora né le prestazioni, né la sicurezza.
Spesso in un sistema RAID sono presenti dischi hot spare, collegati e non
utilizzati, ma adoperati in sostituzione di uno rotto, a volte automaticamente e
immediatamente al momento del guasto.
Esistono controller RAID di tipo IDE, SATA o SCSI che consentono l’utilizzo
di dischi con le corrispondenti interfacce.
3.4.6. DMA
Il DMA, Direct Memory Access, è un componente elettronico che consente ai
dispositivi periferici, attraverso le loro interfacce, di leggere e scrivere nella memoria,
anche una grande quantità di dati, senza l’intervento della CPU che, così, è libera ma
non ferma perché esegue istruzioni di altri programmi secondo una tecnica chiamata
multiprogrammazione, che, come già detto, verrà trattata molto più avanti.
3.4.7. Main Board
I vari componenti di cui vi ho parlato possono scambiare dati tra di loro perché
trovano collocazione su una scheda elettronica detta Scheda Madre o Main Board
(M/B). Le foto seguenti rappresentano una moderna M/B ed il suo cosiddetto layout,
grafico che rappresenta gli slot, le interfacce, i bus e quanto altro disponibile su di
essa.
Capitolo 3: Hardware
119
L’Informatica per i miei studenti – Volume 1
Capitolo 3: Hardware
Prof. Bianco Mauro
120
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Nel layout della M/B sono ben visibili il socket 775, dove trova sistemazione la
CPU, gli alloggiamenti per la memoria di tipo DDR-2 o DDR-3, gli slot PCI-E e
PCI, i connettori SATA, USB, etc. .
La figura seguente mostra il retro della M/B, ricca di connettori, che sono le
interfacce di cui vi ho appena parlato.
Capitolo 3: Hardware
121
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Appare evidente come quasi tutte le interfacce sono integrate sulla scheda
madre. Non sempre è stato così; in passato, spesso, occorreva aggiungere una scheda
per poter disporre di una nuova interfaccia; tale scheda veniva inserita negli appositi
slot ISA, PCI etc.; spesso anche la scheda video è integrata sulla scheda madre. Il
responsabile della gestione dell’INPUT/OUTPUT, attraverso le interfacce, è il
cosiddetto chipset che, dopo la CPU, è senz’altro uno dei componente più importanti;
nel nostro caso si tratta del chipset Intel ICH9R.
3.4.8. Dispositivi periferici
I dispositivi periferici sono quelli che, attraverso le interfacce cui si collegano,
consentono lo scambio dei dati con la CPU e/o la memoria; alcuni di questi
dispositivi, quali tastiera, mouse, video, etc., interfacciano direttamente l’utente
consentendogli di immettere i dati da elaborare e riceverne i risultati .
I dispositivi periferici sono classificati in:
• INPUT: periferiche per l’immissione dei dati quali tastiera, mouse, etc.;
• OUTPUT: periferiche per l’emissione di risultati quali monitor, stampante, etc.;
• INPUT/OUTPUT (I/O): dispositivi di ingresso/uscita; a questa categoria
appartengono le memorie di massa, i floppy disk, pen disk, etc. .
Capitolo 3: Hardware
122
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
3.4.8.1. Tastiera e mouse
La tastiera ed il mouse sono dispositivi di input di uso molto comune per cui
non ritengo necessario descriverli in dettaglio.
Per le tastiere, mi limito a dire che sono disponibili versioni nazionali che, con
riferimento ai tasti, hanno disposizione, numero e simboli che cambiano da nazione a
nazione; si veda una forte analogia con il codice ASCII. Non ritengo necessario
perdere tempo in altre discussioni ma vi invito a porre domande sull’utilizzo di quei
tasti la cui funzione vi è sconosciuta.
Per il mouse dico solo che ne sono disponibili sul mercato di tipo meccanico
(obsoleti), ottico, con e senza filo (Wireless) di collegamento al PC; i tasti disponibili
sono, in genere, programmabili ovvero ad essi può essere assegnata una funzione
diversa da quella standard. Una caratteristica del mouse è la risoluzione misurata in
dpi – dot per inch (punti per pollice) che fa riferimento all’accuratezza del mouse
ovvero al numero di punti individuati dal mouse in un pollice; è chiaro che una
risoluzione maggiore si trasforma in una maggiore precisione del mouse.
3.4.8.2. Monitor
Il monitor è il dispositivo di output di uso più comune. Numerose sono le
caratteristiche peculiari di un monitor ma ritengo opportuno riportarne solo alcune.
Innanzitutto la tecnologia che oggi offre tre tipi di monitor:
• CRT - Catode Ray Tube (Tubo a raggi catodici): sono i monitor tradizionali di
grande ingombro la cui vendita è notevolmente diminuita e, probabilmente, la loro
produzione è in via di cessazione;
• LCD – Liquid Cristall Display (Display a cristalli liquidi): si tratta di una
tecnologia che ha quasi sostituito la precedente; i monitor hanno un ingombro
assai ridotto e, soprattutto, sono meno nocivi per la salute dell’utilizzatore;
• Plasma: Tecnologia emergente.
Altre caratteristiche fondamentali di un monitor sono la grandezza, la
risoluzione ed il numero di colori.
La grandezza di un monitor è misurata in pollici (1” = 2.54 cm) e fa riferimento
alla sua diagonale; sono oggi disponibili monitor da 9” a 23” e oltre anche se i più
diffusi sono senz’altro i 17”. Ho detto che la misura fa riferimento alla diagonale ma
non è sufficiente per avere la “forma” del monitor; a tal proposito si utilizza il
Capitolo 3: Hardware
123
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
rapporto tra i due lati (orizzontale/verticale) e sono oggi disponibili monitor del tipo
4/3, 16/9 e 16/10.
L’immagine visualizzata da un monitor è costituita da numerosissimi punti detti
pixel o dot pitch ognuno dei quali ha un proprio colore; più è piccolo il pixel e tanto
maggiore è il loro numero, tanto migliore sarà la qualità dell’immagine. La grandezza
del pixel, in genere, è variabile tra 0.23 e 0.28 mm mentre il numero complessivo di
pixel è detto risoluzione, indicata con un prodotto tra il numero di pixel orizzontali e
quello verticale. Sono oggi disponibili numerosissime risoluzioni ma, le principali
sono: 640x480 (VGA), 800x600 (SVGA), 1024x768 (XGA), 1280x1024 (SXGA).
Sono disponibili risoluzioni ancora maggiori per schermi di grande formato.
E’ utile dare un cenno al termine VGA (Video Graphic Array) introdotto ad
opera dell’azienda IBM molti anni fa; prima dello standard VGA erano disponibili
standard (CGA, EGA, Hercules) con risoluzioni molto basse, qualità dell’immagine
molto scadente e, addirittura, senza il supporto del colore ovvero B/N. La VGA
introduceva il concetto di video analogico 640x480 in grado di visualizzare un
numero infinito di colori; la qualità dell’immagine visualizzata fa un enorme balzo in
avanti. Successivi miglioramenti di questo standard hanno portato alle attuali
risoluzioni e migliore qualità dell’immagine come detto in precedenza.
Il numero di colori che può assumere ciascun pixel è praticamente infinito con
lo standard VGA e con quello emergente digitale detto DVI che arriva a 224=
16.777.216 colori; entrambi fanno uso del sistema RGB (Red-Green-Blue) che forma
tutti i colori con solo tre detti fondamentali.
Naturalmente ci sono altre caratteristiche che differenziano i monitor quali le
normative per la sicurezza sul lavoro e, a tal proposito, ne ricordo una: la
certificazione TCO che, nei vari anni, ha visto la TCO95, TCO99 e TCO03.
3.4.8.3. Videoterminali
Un videoterminale è costituito da un monitor ed una tastiera per cui è un
dispositivo di I/O; i video terminali, oggi quasi in disuso, sono utilizzati per il
collegamento a grandi sistemi di elaborazione in grado di lavorare per centinaia di
utenti contemporaneamente secondo una tecnica denominata multiutente di cui
parlerò molto più avanti. Il videoterminale non ha una propria capacità elaborativa
ma solo la logica per scambiare dati con l’unità centrale cui è collegato per cui il/i
programmi sono in esecuzione contemporaneamente o, meglio concorrentemente,
sul sistema centrale.
Capitolo 3: Hardware
124
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
3.4.8.4. Stampanti e Plotter
La stampante è senz’altro tra i dispositivi di output più importanti.
C’erano una volta le stampanti seriali e parallele; le stampanti seriali
stampavano un carattere alla volta mentre le parallele più caratteri della stessa riga
quasi contemporaneamente. Oggi la tecnologia offre stampanti per punti ovvero
l’elemento atomico non è più il carattere ma il punto; sono evidenti i vantaggi di una
tale trasformazione: una migliore qualità di stampa che arriva fino alla cosiddetta
stampa fotografica che tutti conosciamo.
Potrei di nuovo dire c’era una volta la classificazione tra stampanti ad impatto e
non; con le stampanti ad impatto, gli organi di stampa toccano la carta mentre per
quelle a non impatto …… indovinate un po’!
Tecnologicamente abbiamo i seguenti tipi di stampanti:
• Aghi: fino ad alcuni anni fa rappresentavano la fascia di mercato più diffusa
mentre oggi sono poco utilizzate perché ad impatto, quindi rumorose, lente per la
stampa grafica e impossibilità della stampa a colori, con qualche eccezione che vi
racconterò a lezione, ma che offrono qualche vantaggio quale un basso costo di
esercizio e la possibilità di stampare più copie mediante l’utilizzo di carta
carbone o carta speciale chimica.
I costi vanno da circa 200,00 € ai 3.000,00 € .
• Ink Jet (Getto di inchiostro): rappresentano le stampanti più diffuse perché hanno
un costo di acquisto molto basso e una qualità di stampa fotografica; la tecnologia
utilizzata è detta CMYK (Cian-Magent-Yellow-blacK) perché fa uso di solo 4
colori fondamentali. Sono disponibili stampanti con tecnologia single ink, ovvero
con un contenitore di inchiostro separato per ogni colore a differenza di altre che
utilizzano una cartuccia per il nero ed un’altra per gli altri tre colori fondamentali:
ciano, magenta e giallo. Alcune stampanti gestiscono più di 4 colori base
arrivando fino ad un massimo di 8 colori.
I costi vanno da circa 40,00 € ai 3.000,00 € .
• Laser B/N: Stampanti che utilizzano una polvere nera molto sottile detta toner
per ottenere stampe di altissima qualità ma in scala di grigio;
I costi vanno da circa 100,00 € ai 5.000,00 € .
• Laser Colore: stampanti che utilizzano, in genere, 4 toner di colore diverso
(Nero, Magenta, Ciano e Giallo) per stampe a colori di qualità fotografica.
I costi vanno da circa 300,00 € ai 7.000 ,00 € .
•
Altre tecnologie, quali il trasferimento termico, hanno fasce di mercato
trascurabili.
Altre caratteristiche fondamentali delle stampanti sono:
Capitolo 3: Hardware
125
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
1. Velocità di stampa: la velocità di stampa è senz’altro una delle caratteristiche più
importanti per una stampante. Alcuni anni fa essa era misurata in caratteri al
secondo mentre l’unità di misura universalmente adottata oggi è quella delle
pagine al minuto (ppm). La velocità va da qualche pagina al minuto per le
stampanti più lente a oltre 30 ppm in quelle più veloci. A volte la stampa
fotografica di una sola pagina in formato A4 può richiedere fino ad alcuni minuti;
2. Risoluzione: è il numero di punti stampati in un pollice, l’unità di misura è detta
dpi–dot per inch; ovviamente maggiore è la risoluzione e tanto migliore sarà la
qualità di stampa. Le stampanti attuali hanno risoluzioni variabili tra i 100 e i 4800
dpi;
3. Supporto: il supporto è il foglio di carta sul quale la stampante scrive e si
distingue per:
• Formato carta: il formato carta fa riferimento alle dimensione del foglio
gestibile dalla stampante. Tutte le stampanti sono in grado di gestire formati
diversificati. Uno standard internazionale classifica i formati carta in A4
(21x29,7 cm.), il formato più diffuso ed i suoi multipli A3, A2, A1 A0, doppio
A0, etc. e sottomultipli A5, A6, etc.; per avere le dimensioni corrispondenti
basta applicare la regola che raddoppia la dimensione più piccola per i
multipli mentre dimezza la più grande per i sottomultipli così che il foglio A3
ha dimensioni 42x29,7 , A2 42x59,4 , A5 21x14,85 A6 10.50x14,85 e così via
con la possibilità di arrotondare all’intero. Naturalmente le stampanti possono
gestire anche formati non standard; per ciascuna stampante, sono specificate
dal produttore la minima e la massima dimensione del foglio gestibile.
Quando il formato supera l’A3 si parla di stampanti di grande formato o
plotter; in passato i plotter utilizzavano una o più penne per tracciare disegni
su formati carta molto grandi; oggi i plotter, invece, utilizzano le stesse
tecnologie delle stampanti e, in particolare, quella a getto d’inchiostro;
• Tipologie: la tipologia del foglio utilizzato si riferisce alla superficie del foglio
e si distingue in carta normale, fotografica, lucida, buste, glossy, adesivi,
etc. ; alcune stampanti oggi sono in grado di scrivere direttamente anche
supporti CD e DVD cosiddetti printable;
• Grammatura: la grammatura della carta è un indice del suo spessore. Invece
di misurare lo spessore della carta, si utilizza stabilire il peso di un foglio pari a
1 mq. E’ evidente che ad una maggiore grammatura corrisponde un foglio di
maggiore spessore. La grammatura più diffusa è pari a 80gr/mq ma sono
disponibili grammature assai diversificate. In genere le stampanti sono in grado
di gestire supporti da circa 60gr/mq fino a 260 gr/mq;
4. Stampa senza bordi: molte stampanti sono in grado di stampare il foglio intero,
che, così, si presenta, una volta stampato, senza il classico rettangolo bianco
esterno; questa caratteristica è molto apprezzata nelle stampe fotografiche;
Capitolo 3: Hardware
126
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Naturalmente questo elenco non è esaustivo, ma credo di aver riportato tutte
quelle importanti caratteristiche che consentono di orientarvi nel panorama odierno
delle stampanti.
3.4.8.5. Scanner
Lo scanner è un dispositivo di INPUT in grado di trasferire immagini o testo da
supporti cartacei. La principale caratteristica di uno scanner è la risoluzione che,
analogamente a quella descritta per i monitor, è il numero di punti che lo scanner
riesce a leggere; in altri termini l’immagine da scandire è discretizzata in un certo
numero di punti dei quali lo scanner individua il colore e lo trasferisce al sistema. La
risoluzione, in questo caso, è misurata in dpi - dot per inch (punti per pollice); tutti
gli scanner consentono l’acquisizione con diverse risoluzioni, stabilite dall’utente, da
un minimo, in genere, di 100x100 dpi fino a 4800x4800 dpi raggiunta dagli scanner
più sofisticati. La maggior parte degli scanner riesce a interpolare i pixel individuati
per raggiungere risoluzioni ancora maggiori. Interpolare significa, attraverso
opportuni algoritmi, stabilire il colore di un pixel intermedio tra due letti dallo
scanner. Per questo spesso si riferisce alla risoluzione ottica e quella interpolata.
Altre caratteristiche importanti:
• il formato, ovvero la dimensione massima del foglio da scandire e, in genere, è
data dal formato A4 ma ci sono anche scanner A3 e scanner di grande formato A2
e successivi;
• la velocità di scansione;
• la possibilità di leggere i negativi quali le diapositive;
• il costo;
• la disponibilità di un caricatore automatico degli originali che consente
l’acquisizione di più pagine senza l’intervento dell’operatore.
3.4.8.6. Multifunzione
Una multifunzione, come dice il nome stesso, è un dispositivo in grado di
assolvere a più di un compito; nella sua massima configurazione, un multifunzione
consente di stampare, scandire, fotocopiare, ricevere e spedire fax, leggere
memorie per fotocamere e stampare direttamente da macchine fotografiche digitali
o memorie senza l’ausilio del PC. Il sistema multifunzione più semplice integra le
funzioni di una stampante, di uno scanner e di una fotocopiatrice.
Capitolo 3: Hardware
127
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
3.4.8.7. Fotocamere e videocamere digitali
La rivoluzione digitale non poteva trascurare foto e film; anche le fotocamere e
videocamere sono divenute digitali e memorizzano i dati, in questo caso foto e
filmati, su apposite memorie o, per le videocamere, su cassette DV (Digital Video) o
DVD.
Le caratteristiche fondamentali di una fotocamera sono la risoluzione, ovvero il
numero di pixel memorizzati al momento dello scatto, e lo zoom, funzionalità simile
a quella di un binocolo in grado di “avvicinare” il soggetto da fotografare.
Le moderne macchine fotografiche hanno risoluzioni che vanno da 1M pixel
fino a 10M pixel.
Le memorie utilizzate hanno una capacità che va da 128MB a qualche GB, sono
molto piccole, in genere quanto una moneta, e di diversi formati: SD-Secure digital,
CF-Compact Flash, XD picture card, MMC-Multi media Card, etc. .
Le fotocamere digitali si collegano quasi sempre alla porta USB mentre le
videocamere alla porta fire wire.
3.4.8.8. Memorie di massa
Come detto la memoria centrale è operativa ed ha tempi di accesso molto bassi;
questa memoria ha, però, due limitazioni: la capacità che, per quanto notevole, è
insufficiente per contenere una grande quantità di dati e la volatilità che le fa perdere
il contenuto al momento dello spegnimento del sistema. Si rende pertanto necessario
ricorrere ad altri tipi di memoria che garantiscono stabilità e capacità superiori; tali
memorie sono dette memorie di massa proprio in considerazione della notevole
capacità di immagazzinamento dei dati. A questa categoria appartengono numerosi
dispositivi tecnologicamente raggruppabili in tre grosse categorie:
• Magnetici: Memorizzano i dati magnetizzando la superficie del supporto
contenente l’informazione; appartengono a questa categoria i dischi rigidi, i
floppy disk e i nastri magnetici;
• Ottici: l’informazione è memorizzata facendo uso di un laser che incide la
superficie del disco; tale operazione, su alcuni supporti, è irreversibile per cui tali
supporti non risultano essere riscrivibili. Appartengono a tale categoria i CD ed i
DVD;
• Flash RAM o memory flash: sono dispositivi esclusivamente elettronici che si
caratterizzano per la facile trasportabilità ed una buona capacità; appartengono a
questa categoria i PEN DISK, detti anche USB disk, Flash disk e PEN DRIVE.
Capitolo 3: Hardware
128
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
In funzione delle modalità di accesso ai dati, invece, le memorie di massa
possono essere così classificate:
• Memorie ad accesso uniforme: Tutte le celle hanno lo stesso tempo di accesso; a
questa categoria appartiene la RAM e, in genere, le memorie elettroniche;
• Memorie ad accesso diretto: il tempo necessario per l’accesso all’informazione
richiesta dipende dalla sua posizione rispetto agli organi di lettura/scrittura; a
questa categoria appartengono i dischi rigidi e, in genere, le cosiddette memorie
rotanti;
• Memorie ad accesso sequenziale: l’accesso ad una informazione è possibile solo
scorrendo in maniera rigorosamente sequenziale tutte le precedenti; a tale
categoria appartengono i nastri magnetici.
Il tempo di accesso è, in genere, definito come il tempo intercorrente tra
l’istante in cui si chiede l’informazione e quello in cui essa è raggiunta dagli organi di
lettura. Il tempo di trasferimento è il tempo necessario, ad accesso avvenuto, per
trasferire l’informazione al dispositivo che l’ha richiesta. Il tempo di
lettura/scrittura o di risposta è dato dalla somma tra il tempo di accesso e quello di
trasferimento. Quasi sempre il tempo di trasferimento è trascurabile perché la velocità
di scambio dati sul bus o attraverso il DMA avviene a velocità molto alte (Vedi
interfacce).
Ritengo opportuno chiarire la differenza tra DRIVE e supporto; l’informazione
è memorizzata sui supporti (floppy disk, CD, DVD, etc.) mentre il drive è il
dispositivo che legge e/o scrive l’informazione sul supporto. Così il CD è il supporto
che contiene l’informazione mentre il lettore CD è il drive che lo legge mentre il
masterizzatore è in grado anche di scriverlo.
3.4.8.8.1. Dischi magnetici
La memoria di massa con i tempi di accesso più bassi e la più grande capacità è
senz’altro il disco rigido o Hard Disk. Un disco rigido è costituito da uno o più
supporti di forma circolare detti “piatti” agganciati allo stesso asse rotante che
consente loro di ruotare in maniera solidale; ogni piatto dispone di due testine, una
per ogni superficie, e la stessa testina è in grado di leggere o scrivere l’informazione;
tutte le testine sono agganciate allo stesso asse e si muovono anch’esse in maniera
solidale:
Capitolo 3: Hardware
129
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
2 TESTINE PER PIATTO
Le testine sono agganciate allo
stesso asse e si muovono in maniera
solidale
Superfici :
Superiore
e
Inferiore
I piatti sono agganciati allo stesso
asse e ruotano in maniera solidale
Le testine riescono a leggere e scrivere l’informazione senza toccare la
superficie del piatto in maniera tale da evitarne l’usura.
Ciascun piatto è diviso in tracce e ogni traccia in settori, tra un settore e l’altro
vi è una zona inutilizzata denominata gap:
Traccia
Settore
Gap
Capitolo 3: Hardware
130
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
La logica del disco è quella di leggere o scrivere un settore, in genere costituito
da 512Byte.
Ciascun settore è raggiungibile dalla testina di lettura/scrittura grazie al
movimento rotatorio dei piatti e quello trasversale delle testine che si infilano tra i
piatti.
Il tempo di accesso, nel caso dei dischi rigidi, è dato dalla somma del tempo di
posizionamento e di latenza. Il tempo di posizionamento è il tempo impiegato dalla
testina per raggiungere la traccia contenente il settore da leggere. Il tempo di latenza,
invece, è legato alla velocità di rotazione del disco ed è quello necessario affinché,
raggiunta la traccia, il settore da leggere/scrivere passi sotto la testina. Questi tempi
sono, in genere, dell’ordine di pochi millesimi di secondo.
Ed è arrivato il momento di dare le cifre.
I moderni dischi rigidi sono costituiti da piatti del diametro di 3”1/2 e 2”1/2
utilizzati, questi ultimi, dai computer portatili.
Le velocità di rotazione sono pari a 4200 o 5400 giri/min per i dischi da 2”1/2
mentre i dischi da 3”1/2 arrivano anche a 7200 giri/min e 10K giri/min. Per i dischi
con interfaccia SCSI si arriva a 10K e 15K giri/min.
Le capacità variano da 40 GB a 1 TB (1024 GB).
I costi vanno da circa 50,00 € a 350,00 €.
Da alcuni anni i dischi rigidi dispongono della tecnologia SMART (SelfMonitoring Analysis and Reporting Technology), che fornisce un avviso all’utente
di guasto imminente del disco rigido. Questa tecnologia consente, pertanto, di
sostituire il disco prima che si guasti definitivamente con conseguente perdita dei
dati. Il danno economico maggiore provocato dalla rottura del disco rigido è dovuto
alla perdita dei dati e non certo al costo della sua sostituzione, che è del tutto
trascurabile. Ci sono aziende specializzate per il recupero dei dati da dischi rigidi
guasti ma il costo di una tale operazione può essere anche di decine di migliaia di
euro.
3.4.8.8.2. Floppy Disk
I floppy disk, ormai obsoleti, hanno caratteristiche analoghe ai dischi rigidi;
sono costituiti da un solo piatto di materiale plastico flessibile di diametro pari a 2,5”.
La loro capacità è pari a 1,44MB o, in pochi casi, 2,88MB; la capacità assai ridotta e
la scarsa affidabilità rendono il supporto oggi praticamente quasi inutilizzato.
Il floppy disk ha comunque fatto la storia delle memorie di massa; nei primi PC
non erano disponibili Hard Disk per cui l’unica memoria di massa era rappresentata
Capitolo 3: Hardware
131
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
da floppy disk del diametro di 5”1/4 ed una capacità pari a 160KB; si sono susseguiti
supporti da 360KB, 720KB e, infine, 1,44MB e 2,88MB.
3.4.8.8.3. CD e DVD
I CD ed i DVD utilizzano una tecnologia completamente diversa per la
lettura/scrittura dei dati; si tratta di supporti ottici letti e scritti mediante laser.
Introdotti nel 1976 dalla Philips quali supporti digitali per la musica e denominati
CD-DA (Compact Disc Digital Audio), sono stati successivamente utilizzati come
memorie a sola lettura denominati CD-ROM (Compact Disc Read Only
Memory).La capacità iniziale era di 74 minuti di audio corrispondenti a 650MB di
dati, mentre oggi il supporto più diffuso è di 80 minuti pari a 700MB ma ne esistono
di capacità superiore poco standardizzata e, quindi, poco utilizzata.
La tecnologia ha progredito velocemente riuscendo a fornire i supporti
registrabili e riscrivibili utilizzando un drive chiamato masterizzatore.
Ma non ci si poteva fermare e si è arrivati ai DVD (Digital Versatile Disc) la
cui capacità è di 4,7GB e 8,5GB. Si distinguono DVD-ROM e DVD Video
contenenti FILM.
Sui supporti registrabili, il processo di masterizzazione ne altera la superficie,
rendendo così impossibile la cancellazione e/o la riscrittura; pur tuttavia tali supporti
sono scrivibili più volte fino al riempimento, mantenendo o meno il contenuto
precedente secondo una tecnica denominata multisessione.
La seguente tabella elenca i supporti disponibili attualmente sul mercato e le
loro principali caratteristiche:
Supporto
Capacità
Descrizione
CD-R
700 MB, 80 minuti
Registrabile. Può essere
scritto più volte fino al
riempimento ma non è
cancellabile.
CD-RW
700 MB, 80 minuti
Riscrivibile. Può essere
letto, cancellato e riscritto
più volte, come un
normale floppy disk.
La capacità effettivamente
utilizzabile è di poco oltre
i 500MB.
Capitolo 3: Hardware
132
L’Informatica per i miei studenti – Volume 1
DVD-R, DVD+R
Prof. Bianco Mauro
4,7 GB
Come CD-R.
Per i DVD esistono due
standard
mondiali
(denotati con + e -) portati
avanti da due diverse
organizzazioni che, non
riuscendo a raggiungere un
accordo, hanno condotto
ricerche indipendenti che
hanno portato a due
diverse soluzioni.
DVD-RW, DVD+RW
4,7 GB
Come CD-RW.
DVD+DL
8,5 GB
Come CD-R.
Layer.
DL=Dual
Questi, invece, i drive disponibili:
Drive
Descrizione
Lettore CD
Legge CD-R, CDR-W.
Ormai in fase di fine produzione.
Lettore DVD
Legge tutti i supporti; quelli di ultima
generazione anche i DL.
Masterizzatore CD
Legge e scrive CD-R, CD-RW.
Masterizzatore DVD
Legge e scrive tutti i supporti ad
eccezione dei DL.
Masterizzatore DVD DL
Legge e scrive tutti i supporti.
Capitolo 3: Hardware
133
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
I masterizzatori DVD attualmente in
commercio sono di tipo DL.
Naturalmente si sono succeduti, nel corso del tempo, altri drive quali, ad
esempio, i masterizzatori che supportavano solo i CD-R, i masterizzatori DVD+ e
DVD-. La tecnologia ha fornito a getto continuo soluzioni migliorative con
riferimento, per esempio, alla velocità di masterizzazione passata da 2x a circa 52x
per i CDR e da 1x a 16x per i DVD+/-R; la velocità di riferimento 1x corrisponde a
150KB/sec per i CD e 1.135KB/sec per i DVD. Famose sono le tecnologie di
scrittura burn proof e samless link: queste due tecnologie hanno come obiettivo
quello di evitare il fallimento del processo di masterizzazione con conseguente
perdita del supporto; in precedenza, infatti, il processo di masterizzazione non poteva
essere interrotto e, nel caso, il supporto era irrimediabilmente rovinato ed
inutilizzabile mentre, con le tecnologie di cui innanzi, una interruzione del processo
non compromette l’esito finale della masterizzazione.
Uno sguardo al futuro: sono da poco in commercio masterizzatori di ultima
generazione che utilizzano la tecnologia BD (Blu-ray Disc) con capacità del supporto
che arriverà addirittura a 200GB.
3.4.8.8.4. Nastri magnetici
Il nastro magnetico è un dispositivo ad accesso sequenziale ed è costituito da
un nastro di plastica ricoperto di materiale magnetizzabile e avvolto su una bobina.
L’informazione è scritta sul nastro su piste longitudinali, in genere 8 + 1 per il
controllo di parità; ogni byte viene letto in maniera trasversale sulle 8 piste.
Attualmente sono utilizzati supporti di tipo DAT (Digital Audio Tape).
La capacità di un nastro dipende dalla sua lunghezza e dalla densità con la
quale l’informazione è registrata. La densità è il rapporto tra la quantità di
informazione registrata e lo spazio utilizzato e, per i nastri, è misurata in KB/inch.
Capitolo 3: Hardware
134
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
L’informazione su un nastro è, in genere, organizzata in volumi sequenziali e la
presenza del gap è necessaria, come per i dischi, per separare un’informazione da
un’altra. I nastri sono utilizzati esclusivamente per le copie di back-up ovvero per
memorizzare, a scopo precauzionale, i dati presenti sui dischi rigidi in modo da
poterli ripristinare in caso di guasto di quest’ultimi. L’utilizzo dei nastri per questo
scopo è sicuramente vantaggioso perché hanno una grande capacità, dell’ordine di
qualche centinaia di GB, un costo assai ridotto e si dimostrano molto veloci in
elaborazioni sequenziali, come quella di copiare dati provenienti da altri supporti.
Per le copie di back-up, molti utenti preferiscono supporti quali CD e DVD,
almeno nei casi in cui i dati da copiare sono contenibili su 1 o, al massimo, tre/quattro
CD o DVD.
Ritornerò sulla gestione delle copie durante l’ultimo anno di corso.
3.4.8.8.5. Pen Disk, MP3, foto album
I Pen Disk sono, in ordine di tempo, le ultime memorie ad essere state inventate
e per questo ci si riferisce ad esse con numerosi nomi quali USB Disk, chiavette
USB, Flash disk, Pen drive.
Le caratteristiche fondamentali di un pen disk sono la discreta capacità,
attualmente da 128MB a 4GB, e la facile trasportabilità, dovuta al peso irrisorio,
qualche decina di grammi, ed alle ridotte dimensioni, che ne consentono la custodia,
senza alcun impiccio, persino nel portafoglio; si tratta, pertanto, di una memoria da
portare sempre con sé.
Sono in commercio pen disk in grado di leggere i file MP34; questi dispositivi,
di fatto, stanno sostituendo i lettori portatili di CD e stereo cassette.
Prodotti analoghi sono i foto album portatili che, muniti di un piccolo display
LCD, consentono la memorizzazione e la visualizzazione di moltissime foto e/o la
visione di filmati.
3.4.8.8.6. Confronto tra le memorie di massa
Dopo aver visto tanti tipi di memorie di massa ci si chiede come mai una tale
diversificazione; ebbene questi dispositivi, pur avendo tutti lo stesso scopo ovvero
quello di memorizzare dati, hanno specificità diverse.
4
La codifica MP3 consente la compressione dei file audio mantenendo una discreta qualità; la compressione dati
consente di ridurre la grandezza dei file. Non mi dilungo molto perché la compressione sarà trattata in maniera
approfondita il prossimo anno.
Capitolo 3: Hardware
135
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
I dischi rigidi costituiscono la memoria di massa più veloce e con la maggiore
capacità; sono utilizzati per archiviare tutti i dati utilizzati dall’utente, i programmi ed
il sistema operativo. Nei dischi rigidi, però, il drive ed il supporto costituiscono
un’unica unità non estraibile. Esistono dei dispositivi detti slitte, che consentono di
estrarre il disco rigido dal sistema e dei contenitori con interfaccia USB ma sono
piuttosto grandi, pesanti e non sempre hot plug.
I Floppy disk hanno il vantaggio dell’estraibilità del supporto ma, come detto,
sono ormai quasi del tutto inutilizzati.
I CD ed i DVD si caratterizzano per l’estraibilità del supporto e la tecnologia
non più magnetica ma ottica. Sono i supporti esterni più utilizzati perché leggibili su
tutte le macchine, con una notevole capacità ed una grande affidabilità.
I nastri magnetici sono utilizzati da piccole e medie aziende, enti e grandi
organizzazioni al solo scopo di effettuare copie di back-up. Quasi mai i nastri sono
utilizzati da utenze domestiche.
I pen disk si caratterizzano per la loro praticità: sono molto piccoli, utilizzabili
con connessioni hot plug su tutti i PC tramite l’interfaccia USB, hanno velocità di
trasferimento dati e capacità apprezzabili. Il pen disk è utile per il trasporto dati e, in
genere, viene sempre portato con sé dall’utilizzatore, perché facilmente contenibile
persino nel portafoglio.
3.4.8.9. Gruppi di continuità (UPS)
I gruppi di continuità o UPS (Uninterruptible power supply) risolvono un
problema essenziale per il corretto spegnimento del sistema. In caso di assenza di
alimentazione elettrica, l’UPS garantisce, tramite apposite batterie, una corretta
alimentazione al sistema per un certo numero di minuti dipendente dalla tipologia del
gruppo di continuità. L’obiettivo non è quello di lavorare in assenza di alimentazione
elettrica ma quello di evitare lo spegnimento improvviso del sistema, così molti
gruppi forniscono una autonomia limitata e sufficiente per procedere al corretto
spegnimento del sistema di elaborazione.
La maggior parte dei gruppi di continuità svolgono anche altre funzioni quali, ad
esempio, la stabilizzazione e la “pulizia” dell’alimentazione elettrica, la protezione
della linea telefonica e della rete dati.
Capitolo 3: Hardware
136
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
3.4.8.10. Videoproiettore e tavoletta grafica
I videoproiettori consentono di proiettare l’immagine proveniente da un PC o
da una fonte video (TV, videoregistratore, etc.) su uno schermo o direttamente su una
parete. Le caratteristiche fondamentali di un videoproiettore sono la risoluzione e la
luminosità misurata in ansi lumen; una maggiore luminosità consente la visione
dell’immagine senza necessariamente oscurare l’ambiente in cui si proietta. I moderni
videoproiettori hanno una risoluzione XGA o superiore e luminosità a partire da 800
ansi lumen.
La tavoletta grafica è un dispositivo di input che consente l’immissione di dati
grafici mediante una penna trascinata su un’apposita superficie. Le caratteristiche
Capitolo 3: Hardware
137
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
fondamentali di una tavoletta grafica sono la risoluzione e la grandezza. Sono oggi
disponibili tavolette dal formato A6 ad A3 o anche più.
L’uso combinato del videoproiettore e di una tavoletta grafica di dimensioni A0
o superiore consente oggi di disporre di lavagne elettroniche, che si rivelano molto
utili nella didattica. Il nostro laboratorio linguistico dispone di tale tecnologia.
3.4.8.11. Schede tecniche
Nei paragrafi precedenti ho riportati soltanto le caratteristiche principali dei
dispositivi periferici; un elenco esaustivo sarebbe piuttosto lungo, ma ritengo
opportuno riportare schede tecniche più complete almeno per alcuni prodotti
disponibili sul mercato. Le pagine seguenti vanno solo lette e lo scopo è quello di
stimolare una discussione in classe che possa ampliare le vostre conoscenze. Questo
ciclo di lezioni, peraltro, si concluderà con la lettura di brochure di prodotti riportati
nei pieghevoli pubblicitari, che voi procurerete, distribuiti da negozi di informatica.
Notebook
SCHEDA TECNICA
Processore
Intel Core 2 Duo T5750
2 Mb di cache Livello 2; clock 2.00 GHz; velocità del bus 667 MHz FSB
Capitolo 3: Hardware
138
L’Informatica per i miei studenti – Volume 1
Ram
Hard disk
Cd/dvd
Schermo
(pollici)
Connettività
Sistema
operativo
Grafica
Audio
Webcam
Software
Prof. Bianco Mauro
supporta Intel 64 architecture
4GB (2x2GB) Dual-channel DDR2 SDRAM
Il notebook è dotato di 2 slot in totale, tutte e due occupate
250GB Hard disk S-ATA
Masterizzatore DVD Super Multi (+/-R +/-RW) con supporto Double Layer
Lettore di supporti digitali integrato 6-in-1 card reader, supporting Secure Digital™ (SD),
MultiMediaCard (MMC), MultiMediaCard Plus (MMCplus™), Memory Stick® (MS), Memory
Stick PRO™ (MS PRO), xD-Picture Card™ (xD)
Display 16" con CineCrystal TFT LCD
Risoluzione 1366 x 768 pixel
high-brightness (220-nit)
Visualizzazione multi-window con GridVista
Visualizzazione 16:9
Tempo di risposta 8 ms high-def
60% color gamut
WLAN: Intel® Wireless WiFi Link 4965AGN (dual-band quad-mode 802.11a/b/g/Draft-N) Wi-Fi
CERTIFIED® network connection, supporting SignalUp™ with InviLink™ Nplify™2 wireless
technology
LAN: Gigabit Ethernet, Wake-on-LAN ready
WPAN: Bluetooth® 2.0+EDR (Enhanced Data Rate)
Modem: 56K ITU V.92 with PTT approval, Wake-on-Ring ready
Windows Vista Home Premium
NVIDIA GeForce 9500M GS con fino a 1280 MB di TurboCache(512 MB di GDDR2 VRAM
dedicata, fino a 768 MB di memoria di sistema condivisa)
Supporta la tecnologia HD NVIDIA PureVideo, la tecnologia OpenEXR High Dynamic-Range
(HDR), Shader Model 4.0, Microsoft® DirectX® 10
Supporto DualView
MEPG-2/DVD acceleration, decoding
WMV9 (VC-1) and H.264 (AVC) decoding
HDMI™ (High-Definition Multimedia Interface) con HDCP (High-bandwidth Digital Content
Protection) support
Arcade™ Deluxe con tecnologie CinemaVision™ e ClearVision™
Dolby Home Theater® audio enhancement ottimizzato di secondo generazione, con tecnologie
Dolby® Digital, Dolby® Digital Live, Dolby® Pro Logic® IIx, Dolby® Headphone, Dolby®
Natural Bass and Dolby® Sound Space Expander
Due casse stereo incorporate e un booster Tuba CineBass booster che supporta gli effetti a bassa
frequenza
Supporto audio alta definizione
Supporto per casse digitali S/PDIF
Compatibile MS-Sound
Tecnologia PureZone con 2 microfoni stereo incorporati con tecnologie beam forming, echo
cancellation, and noise suppression
Crystal Eye webcam integrata
supporta la tecnologia potenziata PrimaLite™
Video Conference Manager software con tecnologia Video Quality Enhancement (VQE) con
H.264 video compression, supporta la risoluzione 640 x 480 per le video chiamate on line con
drag-and-drop Picture-in-Picture (PIP) interactivity
Empowering Technology ( ePower, eAudio, eDataSecurity, eRecovery, eSettings Management)
. Arcade Deluxe featuring Cinema, Album, Music, HomeMedia
. InstantOn Arcade
. Bio-Protection
. Crystal Eye
. GridVista
. Launch Manager
. GameZone
. Video Conference Manager featuring Video Quality Enhancement (VQE)
. McAfee Internet Security Suite 60-day trial version (o equivalente)
. Adobe® Reader®
. CyberLink® PowerDirector® trial version
. NTI Media Maker™
Capitolo 3: Hardware
139
L’Informatica per i miei studenti – Volume 1
Sicurezza
Interfacce
Tastiera e
dispositivi di
puntamento
Test di
qualità e
affidabilità
Batteria
Dimensioni
Peso
Prof. Bianco Mauro
. Microsoft® Works 9.0 con Office Home e Student 2007 Trial
Soluzione Bio-Protection fingerprint, con accesso Windows®, protezione computer,
FingerLaunch, ProfileLaunch, MusicLaunch, password bank, MyLaunch, FingerNav
Slot per blocco Kensington
HDD Password BIOS per utente e amministratore
1x slot ExpressCard™/54
6-in-1 card reader (SD™, MMC, MMCplus™, MS, MS PRO, xD)
4x porte USB 2.0
1x porta HDMI™ con supporto HDCP
1x porta Consumer infrared (CIR)
1x porta external display (VGA)
1x jack uscita cuffi/casse con supporto S/PDIF
1x jack per microfono
1x jack ingresso linea
1x porta Modem (RJ-11)
1x porta Ethernet (RJ-45)
1x jack ingresso DC per adattore AC
Tastiera a 88/89-tasti con layout del cursore a "T" invertita, escursione tasti 2.5 mm (minima)
Dispositivo di puntamento touchpad con lettore fingerprint Bio-Protection, con controllo funzioni
FingerNav a 4 vie
12 tasti funzione, tasto cursore a 4 vie, 2 tasti Windows®, controlli hotkey, tastiera numerica
incassata, supporto linguaggi internazionali, tasti indipendenti per US dollar e Euro
Tasto Empowering
Tasti accesso facilitato: WLAN, Internet, email, Bluetooth®* (manufacturing option)
CineDash media console, comprende
• Arcade™
• Volume meter
• Menu navigation(enter/back/left/right)
• Media control (play/pause, stop, previous, next, fast forward, rewind)
• Mute and hold keys
Controllo remoto Media Center opzionale
Temperature & humidity test
Free drop test
Acoustics test
Weight and Pressure tests
Spillage test
Shock and Vibration tests
Electrostatic discharge immunity test
MTBF (Mean Time Between Failure) test
Hinge life test
Keyboard-switch life test
6-cell Ioni di Litio
Sino a 3.2-ore di durara batteria con 8 celle e grafica dedicata
Tecnologia QuicCharge™:
• 80% ricarica in 1 ora
• 2-ore ricarica rapida a sistema
spento
f• 3-ore ricarica sistema in uso
385 x 275 x 43.6/39.3 mm
3.5 kg
Capitolo 3: Hardware
140
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Personal
Computer
SCHEDA TECNICA
Processore
Ram
Hard disk
Scheda grafica
Sistema
operativo
Unita ottiche
Lan
Interfacce i/o
Tastiera &
mouse
Software
Monitor
Certificazioni
Alloggiamenti
Dimensione
Garanzia
Audio
Altro
Cabinet
Alimentatore
Floppy disk
Intel Core 2 Quad Q6600 (2.40GHz FSB 1066MHz, 8MB Cache),
Chipset Intel Q35 + ICH9DO
2 GB DDRII 667 MHz espandibile fino a 8GB
2 X 320GB SATA II 7200 RPM
NVIDIA 8600GS 512MB
Windows Vista® Business Autentico multilingua (UK+DE+FR+NL+IT)
masterizzatore dvd dual layer
Ethernet 10/100/1000
LAN: gigabit Ethernet
Dieci porte USB 2.0 (quattro anteriori; sei posteriori)
porte tastiera e mouse PS/2
porta parallela
porta seriale
porta Ethernet (RJ-45)
porta VGA
DVI
HDTV
otto porte audio (2 frontali, 6 retro)
inclusi
Intel Active Management Technology (AMT) 3.0
Empowering Technology (eDataSecurity1, eLock, eRecovery, eSettings, ePerformance
Management)
LANScope v3.5
Norton Internet Security 2007
Adobe Reader 8.1
CyberLink PowerDVD
NTI CD-Maker Gold
Microsoft Office Ready 2007
Non incluso E' possibile abbinare qualsiasi modello della gamma
CE,FCC,BSMI, CCC, UL, cUL, ETL, Nemko, Energy Star
tre alloggiamenti da 5,25"
Sei alloggiamenti da 3,5" (2 esterni, 4 interni) BR/>
185,9 (H) x 447.4 (L) x 484,2 (P) mm
3 anni di cui il primo on site
Audio incorporato 7.1 canali ad alta definizione
Il CD di Ripristino non è incluso fisicamente ma caricato direttamente sull' Hard Disk
Mini Tower
300 W
integrato
Capitolo 3: Hardware
141
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Monitor
SCHEDA TECNICA
Dimensione (pollici)
Risoluzione std.
Frequenza std.
Dot pitch
Multimediale
Contrasto
Certificazione
Pannello
Luminosità
Colori visualizzabili
Tempo di risposta
Angolo di visuale
(orizz/vert)
Dati elettrici
Connettività
Plug & play
Osd
Alimentazione
Inclinazione
Kensington-lock
Vesa standard
19"/48 cm
1280 x 1024
60 Hz
0.294 x 0.294 mm
sì - Audio incorporato 1,5 W RMS x 2 altoparlanti stereo
800:1
Marchio CE, EMC, FCC-B, UL, CSA, Energy Star, SEMKO, TÜV/GS, TÜV Ergo,
TCO '03
Polarizzatore antiriflesso
Striscia verticale RGB
300 cd/m²
16,7 M
5 msec
Angolo visuale (orizzontale) : 176 gradi
Angolo visuale (verticale) : 170 gradi
Dot Rate video : 140 MHz
Frequenza scansione orizzontale : 30 - 83 kHz
Frequenza scansione verticale : 56 - 75 Hz
Ingresso segnale Analogico (VGA) , DVI-D , Ingresso audio PC
Uscita audio Audio stereo (jack da 3,5 mm) 1 x
USB 1 x USB 2.0
Composite sync, Sincronizzazione separata, Sync su verde
Impedenza ingresso video : 75 ohm
Impedenza ingresso sincronizzazione : 2,2k ohm
Livelli segnale ingresso video : 0,7 Vpp
DDC CI, sRGB, Windows 98/ME/2000/XP/Vista
Praticità migliorata : OSD (On-screen Display), SmartManage attivato, SmartControl II
Comandi monitor : Automatici, Controllo luminosità, Sinistra/Destra, Menu (OK),
Accensione/spegnimento, Su/Giù
Lingue OSD : Inglese, Francese, Tedesco, Italiano, Spagnolo, Russo, Portoghese
Conforme con : Energy Star
Consumo : < 36W (tipico)
Off Mode : < 1 W
Alimentazione : Incorporata, 100-240 Vca, 50/60 Hz
Da -5° a 20°
Blocco Kensington compatibile
100 x 100 mm
Capitolo 3: Hardware
142
L’Informatica per i miei studenti – Volume 1
Dimensioni
Peso
Colore
Accessori inclusi
Condizioni di esercizio
Prof. Bianco Mauro
Imposta larghezza (con supporto) 422 mm
Imposta altezza (con supporto) 411,2 mm
Imposta profondità (con supporto) 198,8 mm
Peso prodotto (+ supporto) 5,86 Kg
Silver ( Argento )
Cavo di alimentazione CA, Cavo VGA
MTBF : 50.000 ore
Umidità relativa : 20% - 80%
Intervallo di temp. (funzionamento) : Da 5° C a 40° C
Intervallo di temp. (immagazzinamento) : Da -20° C a 60° C
Multifunzione
SCHEDA TECNICA
Tecnologia
Tipologia
Formato
Carta
Velocità Copia
(cpm)
Velocità
Stampa (ppm)
Capacità
Cassetti (ff)
Modalità
Alim. Carta
Supporti di
stampa
Funzione
stampante
Inkjet a 6 inchiostri, microugelli con gocce da 2 pl minimo, testina di stampa FINE e PgR "Clear
Ink"
Stampa, scansione, copiatura, fax e ADF fronte/retro da 35 pagine. Stampa diretta da fotocamera,
scheda di memoria e telefono cellulare con display LCD a colori da 4,5 cm.
Alimentatore automatico: A4, B5, A5, Letter, Legal, Buste (formato DL o Commerciale 10), 10 x
15 cm, 13 x 18 cm, 20 x 25 cm, carta di credito (54 x 86 mm)
Cassetto: A4, B5, A5, Letter, Buste (formato DL o Commerciale 10), 10 x 15 cm, 13 x 18 cm, 20
x 25 cm
Velocità di copia documento a colori: Circa 22 sec.
Velocità copia foto 10x15cm senza bordi :Circa 45 sec.
Velocità di copia in bianco e nero Fino a 28 cpm
Velocità di copia a colori:Fino a 23 cpm
Velocità copia foto 10x15cm senza bordi Circa 37 sec.¹ Velocità di copia in bianco e nero Fino a
31 cpm Velocità di copia a colori Fino a 24 cpm
Velocità di stampa fotografica (secondi):Senza bordi 10 x 15 cm: ca. 43 secondi (Standard)
Velocità di stampa monocromatica Fino a 28 ppm (Max.), 11 ppm (Standard)
Velocità di stampa a colori: Testo e grafica: fino a 23 ppm (Max.), 10 ppm (Standard)
Alimentatore posteriore: max. 20 fogli (MP-101, SG-201)
Cassetto frontale: max. 150 fogli (carta comune)
Alimetazione della copia tramite piano fisso Authomatic Document Feeder (ADF)
Carta comune, PP-101/PP-201, SG-201, MP-101, FA-PR1, buste, SW-201
Risoluzione di stampa:Fino a 4800 x 1200 dpi
Stampa su DVD/CD:Non disponibile
Stampa fronte-retro Selezionabile automaticamente con Photo Paper Plus Fronte-Retro, Super
White Paper o carta comune nei formati A4, B5, A5, Letter e 13 x 18 cm
Stampa senza bordi Sì (formati A4, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm e Carta di credito)
Interfaccia fotocamera e connettività Porta Direct Print: stampa diretta da fotocamere e
videocamere compatibili PictBridge.
Stampa diretta da scheda di memoria CompactFlash®, Microdrive, Memory Stick®, Memory
Stick Pro™, SD Memory Card®, MultiMediaCard™, MultiMedia Card Plus™ e SDHC Memory
Card.
Capitolo 3: Hardware
143
L’Informatica per i miei studenti – Volume 1
Funzione
scanner
Funzione
copiatrice
Funzione fax
Prof. Bianco Mauro
xD-PictureCard™ ¹, Memory Stick Duo™ ¹, Memory Stick PRO Duo™ ¹, Memory Stick Micro™
¹, RS-MMC™ ¹, miniSD™ ¹, microSD™ ¹, miniSDHC™ ¹ e microSDHC™ ¹. Funzionalità:
stampa multiselezione (selezione di varie immagini e vario numero di stampe per ogni immagine),
stampa indice delle foto, stampa tutte le foto, stampa DPOF, stampa layout, stampa adesivi,
stampa su DVD/CD (con sup. stampabile), stampa con informazioni sullo scatto EXIF, foglio
indice delle foto, diapositive, stampa data e numero file
Altre funzioni Ottimizzazione dell'immagine per stampa diretta da scheda di memoria: correzione
automatica delle immagini, Vivid Photo, Photo Optimizer PRO, riduzione del rumore,
illuminazione dei visi, luminosità, contrasto, sfumatura di colore, seppia/simulazione di
illustrazione, riduzione degli occhi rossi, Image Optimizer, ritaglio Funzioni del driver: Photo
Optimizer PRO (solo Windows), Image Optimizer (solo Windows), Photo Noise Reduction, Vivid
Photo.
Scanner piano e adattatore ADF, scanner a colori CIS
Alimentazione automatica dei documenti Fronte/retro automatico fino a 35 pagine
Film Scanning Non disponibile
Risoluzione ottica 4800 x 9600 dpi (piano di copiatura) Fino a 600 x 600 dpi (ADF)
Risoluzione digitale Fino a 19200 x 19200 dpi (solo piano di copiatura)
Profondità scansione cromatica 48 / 24 bit (RGB, 16 / 8 bit per colore)
Scala dei grigi 16 bit / 8 bit
Compatibilità TWAIN / WIA (Windows XP / Windows Vista)
Larghezza effettiva di scansione A4/LTR
OCR in bundle Sì (ScanSoft OmniPage SE OCR)
Push-scan, Multi-Scan, creazione ed elaborazione PDF*, deretinatura, maschera di contrasto,
correzione fotografica (correzione sbiadimento, correzione grana, riduzione polvere e graffi,
correzione controluce, tonalità automatica), correzione ombra dei margini, testo (OCR) Con MP
Navigator EX
Copia colore Sì
Velocità di copia documento a colori:Circa 22 sec.
Velocità copia foto 10x15cm senza bordi:Circa 45 sec.
Velocità di copia in bianco e nero: Fino a 28 cpm
Velocità di copia a colori Fino a 23 cpm
Copie multiple 1- 99 copie
Zoom 25 – 400% con incrementi del 1% e rapporti preimpostati
Altre funzioni Intensità automatica (copia AE), regolazione manuale dell'intensità, copia ripetuta
dell'immagine, copia fronte/retro (solo con carta comune), copia 4 in 1, copia 2 in 1, copia su
adesivi (2, 4, 9, 16), copia senza bordo, copia ripetuta dell'immagine, copia con correzione
sbiadimento, copia con fascicolazione, copia con cancellazione della cornice
Alimentatore di documenti automatico: fronte e retro automatico fino a 35 pagine
Fax standalone Sì
PC fax Win: Win: tramite fax-modem (in MFP) Mac: non disponibile
Mac: non disponibile
Fax a colori (omologato ITU-T.30E) Sì
Velocità di trasmissione mono/colore Monocromia: ca. 3 sec./pag. (33,6 kbps) (in base a
impostazioni predefinite utilizzando tabella ITU-T No1)
Colore: ca. 1 min./pag. (33,6 kbps) (in base a impostazioni predefinite utilizzando foglio di prova
fax a colori standard )
Monocromia: MH, MR, MMR Colore: JPEG
Risoluzione fax Monocromia: 8 linee/mm x 3,85 linee/mm (Standard), 8 linee/mm x 7,7 linee/mm
(Fine) Colore: 200 x 200 dpi
Scala dei grigi Monocromia: 256 livelli Colore: 24 bit (pieno colore) (RGB, 8 bit per colore)
Alimentatore automatico documenti Fino a 35 pagine (lato singolo)
Selezione veloce 8 selezioni rapide a un tasto
Selezione codificata 100 posizioni programmabili
Selezione a gruppi 107 gruppi
Riselezione Riselezione manuale, automatica
Commutazione automatica FAX/TEL Sì (manuale)
Collegamento segreteria telefonica Sì
Ricezione remota Sì
Trasmissione sequenziale:Sì
Correzione automatica errori (ECM) Sì, compatibile ITU-T T.30
Microtelefono No
Capitolo 3: Hardware
144
L’Informatica per i miei studenti – Volume 1
Velocità
modem
Memoria fax
Rapporti di
servizio fax
Interfacce
Sistemi
operativi
supportati
Software
incluso
Condizioni di
funzionamento
Silenziosità
Alimentazione
e consumo
Dimensioni
Peso
Durata
cartucce
Prof. Bianco Mauro
Polling Non disponibile
Velocità modem 33,6k / 31,2k / 28,8k / 26,4k / 24k / 21,6k / 19,2k / 16,8k / 14,4k / 12k / 9,6k /
7,2k / 4,8k / 2,4 kbps (riduzione automatica)
Memoria FAX Circa 250 pagine (in base al foglio di prova fax a colori )
Rapporto attività, elenco numeri di telefono (selezione rapida, codificata, gruppi), elenco dati
utente, elenco memoria, TX (rapporto di trasmissione), RX (rapporto di ricezione)
USB 2.0 Hi-Speed
Ethernet: IEEE802.3u (100BASE-TX), IEEE802.3 (10BASE-T), 10/100 Mbps (commutazione
automatica).
Interfaccia cellulare / PDA Stampa fotografica tramite PictBridge
Windows Vista / Windows XP SP2 / Windows 2000 Professional SP4 Mac OS X da v.10.3.9 a
v.10.5.
MP Navigator EX, Easy-PhotoPrint EX, Solution Menu, Nuance Communication OmniPage SE
(software OCR), NewSoft Presto! PageManager (solo Windows)
Temperatura Ambiente operativo: 5° - 35° C
Umidità Umidità operativa: 10 - 90% RH (senza condensa)
Stampa: ca. 33 dB(A), durante la stampa nella modalità di massima qualità su carta Photo Paper
Plus Semi-Gloss
Copiatura: ca. 36,6 dB(A) durante la copiatura nella modalità di massima qualità su Photo Paper
Plus Semi-Gloss
Fonte CA 100-240V, 50/60Hz
Consumo Standby: ca. 6,5 W (quando la lampada di scansione è spenta)
Spenta: circa 1,6 W
Copiatura: circa 26 W
Massimo istantaneo: circa 70 W
L x P x A) 500 × 535 × 257 mm
Circa 16,6 kg
Tecnologia Single Ink: 6 serbatoi d'inchiostro separati (PGI-9PBK, PGI-7 BK, PGI-9 Y, PGI-9 M,
PGI-9 C, PGI-9 Clear) .
Durata cartuccia nero Nero: 505 pagine (PGI-5BK), 5.025 pagine* (CLI-8BK) Nero: 4.065 foto*
(PGI-5BK), 1.345 foto (CLI-8BK) * Resa supplementare stimata
Durata cartucce colore Ciano: 890 pagine (CLI-8C); magenta: 665 pagine (CLI-8M); giallo: 710
pagine (CLI-8Y) Ciano: 437 foto (CLI-8C); magenta: 301 foto (CLI-8M); giallo: 329 foto (CLI8Y)
Hard Disk
SCHEDA TECNICA
Capacità
Velocità
Interfaccia
750Gb
300 Mbytes/sec
Serial ATA II
Capitolo 3: Hardware
145
L’Informatica per i miei studenti – Volume 1
Formato
(pollici)
Rpm
Buffer
Seek
Prof. Bianco Mauro
3,5"
7200
16 Mb
Random read seek time : <8.5 msec
Random write seek time : <10.0 msec
22 pin serial ata
101,6 x 26,1 x 146,99
Connettore
Dimensione
(L x A x P)
mm
Peso
0,72 Kg
Masterizzatore
SCHEDA TECNICA
Standard
Interfaccia
Tipologia
Versione
Software Inclusi
Velocità di
trasferimento
DVD±R/±RW/DL/-RAM/BD-R/BD-RE
S-ATA
Interno
Retail
Si
Scrittura
BD-R (SL/DL) 2x, 4x CLV, 6x CAV / 2x, 4x CLV
BD-RE (SL/DL) 2x CLV
DVD-R 1x, 2x, 4x CLV, 8x ZCLV, 8x, 12x, 16x PCAV
DVD-R DL 2x, 4x CLV
DVD-RW (SL/DL) 1x, 2x, 4x, 6x CLV / Non supportato
DVD-RAM 2x, 3x ZCLV, 5x PCAV
DVD+R 2.4x, 4x CLV, 8x ZCLV, 8x, 12x, 16x PCAV
DVD+R DL 2.4x, 4x CLV
DVD+RW (SL/DL) 2.4x, 4x, 6x CLV, 8x ZCLV / Non supportato
CD-R 4x, 8x, 16x CLV, 24x, 32x, 40x PCAV
CD-RW 4x, 10x, 16x CLV, 24x ZCLV
Lettura
BD-ROM (SL/DL) 6x / 4.8x CAV
BD-R (SL/DL) 6x / 4.8x CAV
BD-R (SL LTH) 3.8x CAV
BD-RE (SL/DL)
BDMV (AACS Compliant Disc) 4.8x CAV
HD DVD-ROM (SL/DL) 3x / 3x CAV
HD DVD-R (SL/DL) 3x / 3x CAV
HD DVD-Video (AACS Compliant Disc) 3x CAV
DVD-ROM (SL/DL) 16x / 8x CAV
DVD-R (SL/DL) 12x / 8x CAV
DVD-RW (SL/DL) 10x CAV / Non supportato
DVD+R (SL/DL) 12x / 8x CAV
Capitolo 3: Hardware
146
L’Informatica per i miei studenti – Volume 1
Tempo di accesso
Buffer
Media supportati
Funzione LightScribe
Dimensioni (l x a x p)
Peso
Sistemi operativi
supportati
Prof. Bianco Mauro
DVD+RW (SL/DL) 10x CAV / Non supportato
DVD-RAM 2x, 3x ZCLV, 3x-5x PCAV
DVD-Video (CSS Compliant Disc) (SL/DL) 8x CAV
CD-R/RW/ROM 40x CAV
CD-DA (DAE) 40x CAV
8cm CD 10x CAV
Video CD 40x CAV
BD-ROM 170 ms typ
DVD-ROM 180 ms typ
DVD-RAM (Ver.2.2) 190 ms typ.
CD-ROM 170 ms typ.
CD, DVD 2 MB, BD 4 MB
BD-ROM (SL/DL),BD-R (SL/DL),BD-RE (SL/DL),HD DVD-ROM (SL/DL),HD
DVD-R (SL/DL), DVD-ROM (SL/DL), DVD-R SL , DVD-R DL, DVD-RW SL, DVDRAM, DVD+R SL, DVD+R DL, DVD+RW, CD-ROM, CD-ROM XA, CD-I, Photo-CD
Multi-Session, Video CD,CD-Audio Disc, CD-Extra, CD-Text, CD-R, CD-RW
Pixel Resolution : 600 [DPI]
Colore : greyscale
146 x 41.3 x 185 mm
850 g
Windows XP Home Edition, Professional, Media Center Edition
Main Board
SCHEDA TECNICA
Socket/slot
Formato
Velocità bus
Chipset
Controller
Raid
AGP
Slot Memorie
LGA775 socket for Intel Core2 Extreme/Core2 Quad/ Core2 Duo/Pentium dual-core/Celeron
dual-core /Celeron Processors
Compatible with Intel 05B/05A/06 processors
Intel 45nm multi-Core CPU
ATX Form Factor, 30,5cm x 24,5cm
1600/1333/1066/800 MHz
NVIDIA nForce 790i Ultra SLI
0/1/0+1/5
PCI-Express 16X
4 x DIMM, Max. 8 GB, DDR3 2000*/1800*/1600*/1333/800 Non-ECC,Un-buffered Memory
Dual channel memory architecture - supports NVIDIA SLI-ready technology
*Overclock speed
**Refer to user manual for the Memory QVL(Qualified Vendors Lidts).
***When installing total memory of 4GB capacity or more, Windows 32-bit operation system
may only recognize less than 3GB. Hence, a total installed memory of less than 3GB is
recommended.
Capitolo 3: Hardware
147
L’Informatica per i miei studenti – Volume 1
Slot di
espansione
Storage
Lan
Audio
Ieee 1394
Usb
Caratteristiche
di overclock
Caratteristiche
speciali
I/o su pannello
posteriore
I/o su
connettori
interni
Prof. Bianco Mauro
2 x PCIe 2.0 x16 ,support NVIDIA SLI technology, at full x16, x16 speed(blue)
1 x PCIe x16 ,at x16 speed(middle)
2 x PCIe x1 ( the PCIEx1_1 (black) is compatible with audio slot)
2 x PCI 2.2
Southbridge
1 xUltraDMA 133/100/66/33
6 xSATA 3 Gb/s ports NVIDIA MediaShield RAID Support RAID 0,1,0+1,5,JBOD span cross
Serial ATA drives
JMicron JMB363 PATA and SATA controller
2 xExternal SATA 3.0Gb/s port on back I/O (SATA On-the-Go)
Dual Gigabit LAN, both featuring AI NET2, Support Teaming Technology
SupremeFX II Audio Card
ADI 1988B 8 -Channel High Definition Audio CODEC
Coaxial / Optical S/PDIF out ports at back I/O
Noise Filter
2 x 1394a ports (1 port at back I/O, 1 port onboard)
10 USB 2.0 ports (6 ports at mid-board, 4 ports at back panel)
Extreme Tweaker
Loadline Calibration
2-Phase DDR 3
Intelligent overclocking tools
- CPU Level Up
- Memory Level Up
- AI Gear 3+
- AI Overclocking (intelligent CPU frequency tuner)
- AI Booster Utility
- O.C. Profile: overclocking< configuration-sharing tool
Overclocking Protection
- COP EX (Component Overheat Protection - EX)
- Frequency LED
- Voltiminder LED
- C.P.R.(CPU Parameter Recall)
LCD Poster
Fusion Block System
EL I/O
Onboard Switches: Power / Reset / Cls CMOS (at rear)
EPU (Energy Processing Unit)
Q-Connector
Q-Fan Plus
EZ Flash 2
Q-fan 2
CrashFree BIOS
BIOS Wallpaper
MyLogo3
1 x PS/2 Keyboard
2 x External SATA
1 x IEEE 1394a
2 x LAN(RJ45) port
6 x USB 2.0/1.1
1 x Clr CMOS switch
1 x Optical + 1 x Coaxial S/PDIF Output1 x onboard LED switch
2 x USB connectors supports additional 6 USB 2.0 ports
1 x Floppy disk drive connector
1 x IDE connector
6 x SATA connectors
1 x IEEE 1394a connector
8 x Fan connectors: 1 x CPU / 1 x PWR / 3 x Chassis / 3 x Optional
1 x S/PDIF Out connector
1 x8-pin ATX 12V Power connector
24-pin ATX Power connector
1 x EL I/O Shield Connector
Capitolo 3: Hardware
148
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
1 x En/Dis-able Clr CMOS connector
3 x thermal sensor connectors
Chassis Intrusion connector
System Panel
1 x ROG connector
8Mb AMI Flash ROM, PnP, DMI2.0, WfM2.0, SM BIOS 2.4, ACPI 2.0a, Multi-language BIOS
WOL by PME, WOR by PME, WOR by Ring, Chasis Intrusion, PXE
LCD Poster
Optional Fan
SupremeFX II Audio Card
3 in 1 Q-Connector Kit
UltraDMA 133/100/66 cable
Floppy disk drive cable
3-way SLI bridge
SLI bridge
SATA cables
SATA power cables
2-port USB2.0 + IEEE 1394a module
EL I/O Shield
Thermal sensor cables
DIY Pedestal
Fusion Block System Accessory
Cable Ties
Manuale d'uso
Support Disc
The hottest DX10 Game: Company of Heroes: Opposing Fronts
Support DVD:
- Drivers and applications
PC Probe II
Update
AI Suite
Futuremark 3DMark 06 Advanced Edition
Kaspersky Anti-Virus
Bios
Gestibilità
Accessori
Cd di
supporto
Fotocamera digitale
SCHEDA TECNICA
Risoluzione
Sensore
(MegaPixels)
Dimens. lcd
(pollici)
Tipo
Memoria
Zoom
Foto: Large: 4.000 x 3.000 pixel, Middle1: 3.264 x 2.448 pixel, Middle2: 2.592 x 1.944 pixel,
Middle3: 1.600 x 1.200 pixel, Small: 640 x 480 pixel, Wide: 4.000 x 2.248. Video: L1 1.024 x 768
pixel (15 fps), L2 640 x 480 pixel (30/15 fps), M 320 x 240 pixel (30/15 fps), S 160 x 120 pixel
(15 fps) (a rallentatore), 640x480 (0.5/1 fps) (playback)
Sensore CCD da 1/7” e 12,1 Megapixel. Processore DIGIC III con tecnologia iSAPS
LCD P-Si TFT da 3.0'' 230.000 Pixels con copertura del 100% e regolazione della luminosità su 15
livelli.
Slot di espansione per schede di tipo Secure Digital (SD), Secure Digital High-Capacity (SDHC) o
MultiMedia Card (MMC). Viene fornita nella confezione una scheda da 32MB
6x Ottico
Capitolo 3: Hardware
149
L’Informatica per i miei studenti – Volume 1
Peso (g)
Interfaccia
Mirino
Sensibilità iso
Messa a fuoco
Distanza di
messa a fuoco
Esposizione
Bilanciamento
del bianco
Obiettivo
Stabilizzatore
di immagine
Flash
Portata flash
Otturatore
Modalità di
scatto
Registrazione
video
Formati file
Altre
caratteristiche
Alimentazione
La confezione
comprende
Dimensioni (l
x a x p) mm
Garanzia
Manuale
Prof. Bianco Mauro
320 gr.
USB 2.0 Hi-Speed (Mini-B, PTB); Uscita A/V audio-video PAL/NTSC
Ottico zoom a immagine reale con correzione diottrica
Automatico e manuale (High ISO Auto, 80, 100, 200, 400, 800, 1600)
TTL, AiAF a 9 punti con rilevamento viso, 1 punto AF (qualsiasi posizione disponibile o fissa
centrale), disponibile blocco AF On/Off, messa a fuoco singola o continua, bracketing di messa a
fuoco, selezione manuale del punto AF con FlexiZone AF/AE, raggio ausiliario di assistenza e
messa a fuoco manuale Face Detection AF/AE/FE e Face Select & Track.
da 1 cm.
Misurazione TTL di tipo valutativa, media pesata al centro e spot (centrale o collegata al punto AF
di rilevamento del volto o alla cornice FlaxiZone AF). Compensazione dell'esposizione: ±2,0 EV
(incrementi di 1/3 stop), bracketing AEB, blocco esposimetrico. 25 modalità di scatto (Auto,
Programma AE, Priorità dei tempi AE, Priorità dei diaframmi AE, Manuale, Personalizzato (2
modalità), Panorama, Video; Special Scene: ritratto, paesaggio, notturno, sport, fogliame, neve,
spiaggia, fuochi artificiali, interni, istantanea notturna, bambini, acquario, sott’acqua, ISO 32005,
accento colore, viraggio colore).
Misurazione TTL. 9 preselezioni (Auto, Luce del giorno, Nuvoloso, Tungsteno, Fluorescente,
Fluorescente high, Flash, Sott’acqua e Personalizzato)
f7.4 - 44.4 Eq. Fotografico: F35 - 210 mm. f2.8 - 4.8. 9 elementi in 7 gruppi (1 elemento asferico
su entrambi i lati)
Assente
Integrato con funzioni Auto, Riduzione occhi rossi automatica, Manuale Flash On/Off.
Compensazione a 3 livelli con il flash interno (13 livelli con Speedlite esterno4), esposizione di
sicurezza, blocco FE, regolazione potenza manuale su 3 livelli, sincronizzazione sulla seconda
tendina.
da 30cm a 4 metri nella posizione grandangolo e da 30 cm. a 2.5 metri in posizione Tele.
15 – 1/2500 sec. (le velocità disponibili dipendono dalla modalità di scatto)
Scatto singolo, Scatto continuo (1.5 fps), Autoscatto.
Si
Foto: JPEG compatibile Exif 2.2; DPOF compatibile v1.1; Video: AVI (Motion JPEG + WAVE
mono); Audio: WAVE mono
Effetti fotografici My Colors (My Colors off, Vivace, Neutro, Seppia, Bianco e Nero, Toni pelle
più chiari, più scuri, Pellicola diapositiva, Blu più vivace, Verde più vivace, Rosso più vivace,
Colore personalizzato)
Batteria ricaricabile agli ioni di litio NB-2LH/NB-2L (fornita NB-2LH con caricabatteria). In
condizioni ottimali è in grado di scattare fino a 240 fotografie o 420 minuti in riproduzione.
Fotocamera, Caricabatterie, Batteria ricaricabile agli ioni di litio (NB-2LH). Cavi di collegamento,
Manuali di istruzione, Software e Driver.
106,4 x 71,9 x 42,5 mm (eccetto le parti sporgenti)
Assistenza diretta .
Documentazione in Italiano
3.4.9. Classificazione dei sistemi di elaborazione
I sistemi di elaborazione sono classificati in funzione delle loro caratteristiche
hardware e software; essi si differenziano, dal punto di vista hardware, soprattutto per
potenza di calcolo, dovuta essenzialmente alle caratteristiche ed al numero dei
processori, e per la capacità di memoria, con riferimento sia a quella centrale che
quelle di massa. Nei moderni elaboratori hanno una grande importanza anche il
Capitolo 3: Hardware
150
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
sottosistema video, soprattutto per applicazioni di grafica avanzata e videogiochi, la
qualità e la quantità di dispositivi periferici collegati e/o collegabili, etc. .
C’erano una volta gli Home Computer, i computer per uso domestico. Oggi, a
causa del continuo ribasso dei prezzi, i PC-Personal Computer sono utilizzati sia
per uso domestico che per uso professionale da aziende, scuole, enti, professionisti,
etc. .
Gli odierni personal computer hanno una notevole capacità di calcolo, memorie
piuttosto grandi e la possibilità di collegare numerosissimi dispositivi periferici, come
visto in precedenza, ma non gestiscono la multiutenza mediante dispositivi terminali.
Un personal computer ben configurato può essere addirittura utilizzato come
Server nell’ambito di una piccola rete locale.
D’altra parte le cosiddette consolle per giochi, quali X-Box di Microsoft e
Playstation di Sony, sono dei veri computer dalle capacità grafiche e di elaborazione
notevoli, almeno per quanto riguarda il software ludico.
Nella fascia immediatamente superiore troviamo i Mini Computer ed i grandi
computer detti Mainframe, che si distinguono per la loro maggiore potenza di
calcolo e capacità di memorizzazione dati. Sono utilizzati come Server da grosse
organizzazioni; si pensi, ad esempio, all’amministrazione finanziaria del nostro stato
che deve memorizzare milioni di dichiarazioni dei redditi ogni anno.
Una menzione a parte va fatta per i Supercomputer, utilizzati nella ricerca
scientifica più avanzata e caratterizzati dalla più grande potenza di calcolo.
Altre categorie di prodotti hanno funzioni simili ai personal computer:
• Palmari, PDA (Personal Digital Assistant) o Pocket PC: piccoli sistemi che
possono essere tenuti nel palmo di una mano; hanno capacità elaborative in grado
di eseguire programmi semplici quali orologio, calcolatrice, calendario, rubrica,
agenda e memorizzazione di appunti, anche vocali o scritti a mano, e programmi
di una certa complessità quali Word e Excel per pocket PC e navigatori
satellitari, mediante l’ausilio di una antenna GPS, che rilava la propria posizione
sulla superficie terrestre. I palmari, in genere, utilizzano il sistema operativo
Windows mobile;
• Smartphone: si tratta di cellulari con possibilità di eseguire semplici programmi
applicativi; spesso invadono il campo dei palmari ed i palmari, a volte, hanno
anche la funzione di telefono cellulare;
• NetBook: una nuova categoria di notebook caratterizzati da dimensioni e peso, in
genere inferiore ad 1 Kg, molto ridotti.
Capitolo 3: Hardware
151
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
3.5. Conclusioni
Fornire un panorama completo della grande varietà dell’hardware è impresa
assai difficile, pur tuttavia in questo capitolo ho trattato l’argomento in maniera
abbastanza approfondita e completa.
La trattazione dell’argomento si concluderà con la visione di componenti e
dispositivi che hanno fatto la storia dell’informatica, breve ma intensa, e delle
attrezzature disponibili nel nostro laboratorio di informatica; infine daremo uno
sguardo all’interno di uno dei PC disponibili nel laboratorio.
Nel corso del capitolo abbiamo potuto vedere come i dispositivi possono essere
meccanici, elettromeccanici ed elettronici.
Un dispositivo meccanico è costituito da parti in movimento azionate da energia
animale o umana. Per esempio, la tastiera è meccanica anche se non manca la parte
elettronica, un trapano manuale, un taglia erba senza motore, etc. .
Un dispositivo elettromeccanico è costituito da parti in movimento azionate
dall’energia elettrica. Ad esempio il disco rigido ha una componente
elettromeccanica, per la rotazione dei piatti e lo spostamento delle testine, un trapano
elettrico o un asciugacapelli, etc. .
Un dispositivo elettronico è in grado di elaborare o memorizzare l’informazione
senza che vi siano parti in movimento; sono ovviamente ed esclusivamente
elettroniche la CPU, la RAM, i pen disk, le calcolatrici non scriventi, etc. .
In uno stesso dispositivo possono essere presenti una o più di tali tecnologie.
Un dispositivo elettronico ha una velocità di elaborazione milioni di volte
superiore a quelli elettromeccanici che, a loro volta, sono di gran lunga più veloci di
quelli meccanici. Si pensi ad una elaborazione che coinvolga la sola CPU e la
memoria centrale quale l’elaborazione su una foto (rotazione, taglio, etc.), ad una che
coinvolga il disco rigido, come il caricamento iniziale del sistema operativo, alla
stampa di una o più pagine e, infine, alla vostra lentezza nello scrivere mediante la
tastiera.
Concludo il capitolo con una citazione di Umberto Eco:
Il computer non è una macchina intelligente che aiuta le persone stupide,
ma è una macchina stupida che funziona solo nelle mani delle persone
intelligenti.
Capitolo 3: Hardware
152
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Capitolo 4.
Il sistema operativo Windows
4.1. Generalità
Questo è uno di quei capitoli definiti trasversali rispetto al corso che vi accingete
a seguire; gli argomenti in esso presenti, infatti, saranno trattati, per la parte iniziale,
durante il primo anno e, per la restante parte, durante il terzo ed ultimo anno del corso
di studio.
Windows è un sistema operativo; parlerò dei sistemi operativi in un altro
capitolo ma ritengo opportuno almeno darne qualche cenno introduttivo. Un sistema
operativo è un software cosiddetto di base ovvero necessario per il funzionamento
del sistema di elaborazione. Le principali funzioni sono quelle di gestione del
sistema, di ottimizzazione delle risorse, di interfacciare l’utente ovvero rendere
semplice l’utilizzo del sistema anche agli utenti meno esperti. Uno dei sistemi
operativi più diffusi al mondo, con centinaia di milioni di installazioni, è Windows,
sviluppato da Microsoft e le cui ultime versioni sono Windows XP e la recentissima
Windows VISTA (Prima edizione gennaio 2007). Questo capitolo vuole essere
soprattutto un riferimento a quella teoria necessaria per poter correttamente utilizzare
il PC mentre per la pratica ci si limiterà ad una sorta di riepilogo del tipo “come si fa
per” e riportare l’utilizzo delle barre degli strumenti e dei menù. Voglio evitare di
riscrivere la guida in linea di Windows, alla quale si invita a ricorrere per qualsiasi
esigenza, per cui questo capitolo vuole essere solo una traccia di quello che si farà in
laboratorio ed un utile riferimento rapido alle operazioni più frequenti. Vi ricordo che
potete avviare la guida in linea di Windows da <start\guida in linea e supporto
tecnico>:
\
4.2. File, cartelle, volumi e unità
Una delle funzioni più importanti del sistema operativo è gestire le memorie di
massa ovvero Hard Disk, CD ROM, DVD, Floppy disk, Pen Disk, etc, di cui si è
parlato nei capitoli precedenti. Abbiamo visto come, per esempio gli hard disk, sono
organizzati fisicamente in tracce e settori; sarebbe impossibile per l’utente poter
gestire il disco rifacendosi alla sua struttura fisica, per questo le memorie di massa
sono organizzate in volumi, cartelle e file. Un file è un insieme di informazioni
omogenee, pensate ad un documento Word o Excel; qualsiasi lavoro realizzate con il
Capitolo 4: Il sistema operativo Windows
153
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
vostro PC, verrà salvato, ovvero memorizzato, in un file (o più file o cartelle); il
sistema distingue i file mediante il loro nome ovvero ad ogni file è assegnato un
nome; ogni volta che, infatti, salvate un documento, vi viene chiesto il nome da
assegnargli.
C’erano una volta i files di programma ed i files di dati; i files di programma
contengono istruzioni eseguibili dal sistema mentre i files di dati costituiscono la
parte passiva e sono l’oggetto dell’elaborazione; concetto estremamente semplice da
capire, visto che abbiamo studiato gli algoritmi. Oggi in effetti non sempre è così
perché anche i files di dati possono contenere “porzioni di codice” dette macro.
Un disco può contenere centinaia di migliaia di file e sarebbe pertanto difficile
poterli distinguere e gestirli organizzandoli solo con il nome. Per questo i file sono
organizzati in cartelle. Una cartella è, pertanto, un contenitore di file e non solo
perché, infatti, una cartella può contenere altre cartelle; così l’organizzazione delle
cartelle è gerarchica e la cartella principale o iniziale è detta radice. Questa semplice
organizzazione si dimostra molto efficiente perché consente di organizzare i file per
gruppi omogenei e, per esempio, in una cartella posso salvare i documenti, in un’altra
le foto e, a sua volta, questa è organizzata in cartelle distinte per anni e così via.
Le cartelle sono contenute nei volumi; un volume è una organizzazione logica
di informazioni, in genere distinte in file e cartelle, e allocata su uno o più dischi o
memorie di massa. In pratica ho detto che un disco può essere diviso in più unità
logiche disgiunte dette volumi o partizioni oppure che un volume può essere
costituito da più dischi fisici ma questa è un’altra storia! (E’ presto per approfondire
ma lo farò).
In genere una unità logica coincide con una unità fisica ovvero un disco è
organizzato in un unico volume ovvero contiene una sola partizione anche se oggi,
con l’aumento notevole della capacità dei dischi, sempre più spesso questi vengono
organizzati in due partizioni o volumi.
Ogni volume o unità logica viene individuato dal sistema mediante una lettera
dell’alfabeto seguita da due punti; così:
• A: indica il volume allocato sul primo floppy disk;
• B: indica il volume allocato sul secondo floppy disk;
• C: indica, in genere, il primo volume o prima partizione del primo disco fisso
e, sempre, il volume di sistema ovvero quello utilizzato dal sistema operativo
per l’avvio e la gestione;
• D:, E:, F: …. indicano, in genere, i volumi successivi sul primo e sui dischi
seguenti, quindi i CD, DVD, masterizzatori, Pen disk, etc…. .
In pratica, fatta eccezione per il volume utilizzato dal sistema e per i due floppy,
a tutti gli altri volumi si può assegnare una lettera qualsiasi e non finisce qui perché ci
sono le unità virtuali ma questa è sempre un’altra storia!
Capitolo 4: Il sistema operativo Windows
154
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Le lettere assegnate ai volumi possono, quindi, cambiare e ciò può generare
qualche confusione; per questo ad ogni volume può essere assegnata una etichetta o
label ovvero una successione di 11 o più caratteri in funzione del file system5 (Oh,
scusate mi è scappato!) . L’etichetta viene assegnata al supporto e non al drive così,
per esempio, un Pen Disk o un CD con etichetta “Foto Gita” vedrà cambiare, da un
PC all’altro, la lettera associata ma non la sua etichetta. Pertanto, un consiglio:
battezzate i vostri Pen Disk.
Per l’organizzazione gerarchica delle cartelle si utilizzano due analogie: La
natura e gli alberi genealogici.
Con riferimento alla natura, abbiamo già parlato della radice e credo sia ovvio il
concetto di ramo così come la denominazione delle cartelle che non contengono altre
cartelle dette foglie.
Con riferimento agli alberi genealogici, invece, si estende agli alberi informatici
il concetto di padre o genitore (parent), fratello, figlio etc. .
Radice
Volume:
Etichetta
Windows
System
System32
Fonts
TerzaProg
Documenti
Documets
and settings
Programmi
Ospite
Prof
Desktop
I nomi di file e cartelle possono essere lunghi fino a 255 caratteri ma si
consiglia di non superare i 15/20 caratteri ed in genere può essere utilizzato qualsiasi
carattere del codice ASCII ad eccezione dei seguenti, che sono utilizzati per scopi
speciali:
Carattere Descrizione
\
Separatore nei percorsi
5
Il file system fa riferimento al modo con il quale il sistema operativo organizza i file e le cartelle sui volumi. In
passato si utilizzavano file system di tipo FAT e FAT32 mentre oggi, pur mantenendo la compatibilità e la possibilità di
utilizzare i vecchi file system, Windows XP, Windows 2000 e Windows per SERVER utilizza il file system di tipo
NTFS.
Capitolo 4: Il sistema operativo Windows
155
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Carattere Descrizione
/
Precede opzione
:
Indicatore di unità
*e?
Caratteri jolly
"
Delimitatore
<e>
Reindirizzamento
|
Piping
.
Separatore tra nome ed estensione
Il nome di un file è costituito da due parti: il nome e l’estensione del nome
costituita, in genere, da tre caratteri e separata dal nome mediante un punto.
L’estensione del nome fa riferimento al contenuto del file; Windows tende a
nascondere le estensioni ed a sostituirle con icone. Ogni programma utilizza proprie
estensioni per individuare i propri file, per cui oggi le possibili estensioni sono
migliaia; queste alcune:
Estensione
Icona
Descrizione
.DOC
Documento di Microsoft Word
.XLS
Foglio di calcolo Microsoft Excel
.MDB
Database Microsoft Access
.PPT
Presentazione Microsoft Power Point
.PUB
File di Microsoft Publisher
.TXT
File di testo
.MP3, .Wav,
.MPEG.
.Mid
File multimediale: audio/video
e altre
.BMP
File bit mapped: mappa di bit (grafico, foto, etc.)
Capitolo 4: Il sistema operativo Windows
156
L’Informatica per i miei studenti – Volume 1
Estensione
Icona
Prof. Bianco Mauro
Descrizione
.JPG
Foto
.DLL
Dynamic Link Library: Estensioni di programma
.INI
File di inizializzazione
Varie
.EXE
Programma
.SYS
File di sistema
.COM
Comando: obsoleti, vecchi programmi MS-DOS
.DRV
Driver di periferica
Non noto
Tutti i file non riconosciuti dal sistema
L’estensione del nome, in pratica, dice al sistema come “trattare” il file ovvero
quale programma deve essere avviato affinché il contenuto del file sia correttamente
gestibile. Se, per esempio, cambiamo l’estensione di un file da Wav a Doc,
lasciandone inalterato il contenuto, il sistema tratterà il file come documento e non
come audio, per cui si riceve un messaggio di errore oppure il testo visualizzato è
completamente incomprensibile. Per questo, mai cambiare l’estensione del nome del
file. Spesso l’icona associata dipende dal programma che gestisce il file. Il tutto è
molto semplice perché il sistema associa a ciascun file un programma che lo gestisce
cosicché quando si apre un file all’elaborazione, il sistema esegue il corrispondente
programma.
Fate molta attenzione ai file .EXE, .DLL, .SYS scaricati da Internet perché
possono contenere virus che determinano malfunzionamenti del sistema e, peggio,
possono cancellare i dati. Non è questo il momento di affrontare il problema della
sicurezza ma, come al solito, …………….. ne parleremo e come se ne parleremo!.
Cosa è necessario, pertanto, per individuare un file? Innanzitutto il suo nome,
ma non basta, occorre sapere anche il nome della cartella che lo contiene che, a sua
volta, può essere contenuta in un’altra cartella e poi un’altra fino, manco a dirlo, al
volume:
Volume:\cartella\........\cartella\file
detto percorso; così “c:\documents and setting\antonio\documenti\relazione.doc”
individua il file relazione.doc contenuto nella cartella documenti di Antonio a sua
volta in “documents and settings” sul disco, scusate, sul volume, C:. Avrete
sicuramente notato il simbolo “\” (back slash) che separa i nomi di cartelle e file.
Capitolo 4: Il sistema operativo Windows
157
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Siccome utilizzerete subito le cartelle condivise in rete6 (che disastro!!!! Ho
nominato cartelle condivise e rete ma ……………. ne parleremo), ritengo opportuno
fornire anche il seguente formato del percorso:
\\nome Server\nome condivisione\cartella\........\cartella\file
nel quale oltre al percorso di cui innanzi compare, preceduto da “\\” il nome di una
macchina in rete e quello di una cartella condivisa.
Il sistema operativo Windows indica con “.” e “..”, rispettivamente, la cartella
corrente e la cartella superiore (padre o parent directory) della corrente.
4.3. Al lavoro: gestione di file e cartelle
Le operazioni più ovvie sui file e le cartelle sono quelle di creazione,
cancellazione, cambio nome, copia, spostamento, etc.; Windows mette a disposizione
degli utilizzatori il programma esplora risorse avviabile con
<start\tutti i programmi\accessori\esplora risorse>
Appena avviato il programma, ci si presenta una finestra divisa in due parti:
quella di sinistra mostra la struttura gerarchica delle risorse del computer mentre
quella di destra evidenzia il contenuto della cartella corrente ovvero quella
selezionata nella parte sinistra; vi dico in maniera esplicita che una sola può essere la
cartella corrente.
Per spiegare la funzionalità di esplora risorse, scelgo di utilizzare la seguente
tabella, il cui titolo potrebbe essere come si fa per:
come si fa per
Selezionare un elemento
Puntare e cliccare
Selezionare più elementi (nella finestra
di destra)
• Tenere abbassato il tasto <CTRL> e
cliccare sugli oggetti da selezionare;
• Puntare e trascinare.
Cancellare elemento/i selezionati
• <Dx> \ Elimina
• <File\Elimina>
• Trascinare sul cestino
• Barra degli strumenti
6
Una rete è costituita da un insieme di sistemi di elaborazione messi in comunicazione tra loro allo scopo di
condividere risorse, per esempio cartelle (dette cartelle condivise), accessibili, così, dagli utenti della rete.
Capitolo 4: Il sistema operativo Windows
158
L’Informatica per i miei studenti – Volume 1
Copiare file da una cartella ad un’altra
Prof. Bianco Mauro
1. Selezionare
2. <Dx>\copia
3. Aprire destinazione
4. <Dx>\incolla
Spostare file da una cartella ad un’altra
1. Selezionare
2. <Dx>\taglia
3. Aprire destinazione
4. <Dx>\incolla
Cambiare la visualizzazione
disposizione delle icone
e
la
Per copiare o spostare file/cartelle è possibile utilizzare il trascinamento
facendo attenzione alle seguenti regole:
1. Se le cartelle di origine e di destinazione sono sulla stessa unità o volume,
allora il sistema sposta (taglia/incolla);
2. Se le cartelle di origine e di destinazione non sono sulla stessa unità o
volume, allora il sistema copia (copia/incolla);
3. Se, durante il trascinamento, si tiene abbassato il tasto <CTRL> allora il
sistema copia (copia/incolla).
Vi suggerisco di provare l’utilizzo del tasto destro del mouse e dello scroll
(rotellina centrale). Il pulsante destro del mouse consente l’accesso al menù
contestuale ovvero dipendente dall’oggetto puntato; in particolare l’ultima voce del
menù contestuale è quasi sempre proprietà e consente di visualizzare l’elenco delle
caratteristiche dell’oggetto puntato.
Molte delle operazioni riportate sono attivabili anche dalla barra dei menù.
Capitolo 4: Il sistema operativo Windows
159
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
4.4. Utility cerca e caratteri jolly
Come visto in precedenza, le cartelle consentono una pratica e logica
archiviazione dei file; il vantaggio più immediato è la facilità con la quale, una buona
organizzazione delle cartelle, consente, successivamente, una rapida individuazione
dei file. Nell’arco di alcuni anni un qualsiasi utente crea, tra documenti, file audio e
video, foto, etc., migliaia se non decine di migliaia di file. Dopo qualche tempo, una
cattiva organizzazione, rende estremamente difficile l’individuazione di uno o più file
che si rende necessario consultare o aprire all’elaborazione. A volte, anche in
presenza di una buona organizzazione, individuare un file risulta difficile.
Tutti i sistemi operativi mettono a disposizione dell’utente una serie di
programmi detti programmi di utilità o semplicemente utility; Windows ci aiuta nella
ricerca di uno o più file con l’utility “Cerca”: <Start>/<Cerca>.
La ricerca di uno o più file può essere fatta specificando dove cercare e secondo
una serie di criteri: il nome, la data di creazione, la dimensione, gli attributi, etc. .
Non ritengo opportuno dilungarmi molto sulla descrizione di questo programma
perché sarà sufficiente una mezz’ora in laboratorio per spiegarvi in maniera
abbastanza completa il suo utilizzo; una semplice lezione pratica è molto più efficace
di numerose pagine descrittive.
Ritengo invece opportuno descrivere l’uso dei caratteri jolly: “*” e “?”. Il loro
funzionamento è identico al jolly nel gioco del ramino o della “matta” nel più famoso
gioco del 7½. Il carattere “?” è un jolly relativo ad una singola posizione mentre “*”
è un jolly ripetitivo a partire dalla sua posizione; non sono stato molto chiaro e lo so
ma con qualche semplice esempio comprenderete l’uso dei jolly.
Quando si cerca un file è possibile specificarne una parte del nome, così, per
esempio, se chiedo al sistema di cercare “rela”, mi vengono elencati tutti i file che
cominciano con “rela”, come “relazione”, oppure contenenti la parola “rela”, come
“correlazione”. Se, invece, voglio tutti i file comincianti con “rela” allora devo
utilizzare la maschera di ricerca “rela*”; con “rela?”, invece, il sistema troverà tutti i
file il cui nome comincia con “rela” ma avente lunghezza 5: “rela1”, “rela2”, “relaz”,
etc., ma non “relazi”.
L’uso del carattere jolly può essere utilizzato indipendentemente per il nome del
file e/o la sua estensione.
In effetti una stringa contenente i caratteri jolly è una cosiddetta maschera di
ricerca ed il sistema, nel caso dell’utility cerca, elenca solo i file che combinano con
tale maschera.
Ritengo utile, per completare la trattazione, fornire esempi di maschere e relativi
risultati:
Capitolo 4: Il sistema operativo Windows
160
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Maschera di ricerca
File individuati (esempi)
rela
Tutti i file con nomi comincianti o contenenti la parola
“rela” ed estensione qualsiasi;
rela*
Tutti i file con nomi comincianti con la parola “rela” ed
estensione qualsiasi;
rela??
Rela12.doc, relazi.bmp;
*.doc
Tutti i file con estensione .doc;
A*.do?
Tutti i file il cui nome comincia con “A” ed estensione
“do” seguita da un qualsiasi carattere (dos, doc, etc. );
*.*
Indovinate un po’!
Utilizzando l’utility cerca di Windows, vi renderete conto che il carattere jolly
“?” funziona in maniera identica al jolly “*”; non è un mio errore ma Windows non
rispetta il ruolo dei jolly.
4.5. Il cestino
Il cestino è, in pratica, una cartella contenente i file cancellati. Il cestino ha lo
scopo di evitare la cancellazione accidentale di file e cartelle. Quando si cancellano
file e cartelle, essi vengono spostati nel cestino dal quale possono essere ripristinati,
ovvero riportati nella loro posizione originaria o in un’altra cartella a scelta
dell’utente mentre la cancellazione dal cestino elimina definitivamente file e
cartelle selezionati.
Per questo sul cestino è possibile utilizzare due nuove operazioni: il ripristino e
lo svuotamento. L’operazione di ripristino riporta nelle posizioni originarie gli
oggetti selezionati mentre lo svuotamento del cestino elimina definitivamente tutti
gli oggetti in esso contenuti. Una possibilità molto comoda è quella di visualizzare
gli oggetti presenti nel cestino per data di eliminazione. In genere il cestino non
viene svuotato ma, all’occorrenza, si selezionano gli elementi da più tempo presenti
nel cestino e li si elimina.
Concludo con le proprietà del cestino accessibili mediante il pulsante Dx del
mouse che consentono di:
• assegnare la percentuale di spazio riservata al cestino e calcolata sulla
capacità del disco;
Capitolo 4: Il sistema operativo Windows
161
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• disattivare la funzionalità del cestino 7;
• richiedere o meno una conferma di cancellazione;
• configurare i volumi in maniera indipendente.
Le unità rimovibili, ad esempio floppy disk e usb disk, non hanno cestino,
per cui una qualsiasi cancellazione è definitiva.
4.6. Collegamenti e associazioni
Collegamenti e associazioni offrono all’utilizzatore una grande flessibilità.
Abbiamo visto in precedenza come copiare un file o una cartella ma, molto spesso,
invece di copiare è più utile “collegare” un’icona ad una cartella. Un collegamento è
un riferimento ad un oggetto e si comporta come l’oggetto cui si riferisce. E’ la
possibilità di disporre di un riferimento ad un oggetto in più punti all’interno del
nostro sistema occupando pochissimo spazio. Sto dicendo, per esempio, che
trascinando un file su un’icona che rappresenta un collegamento ad una cartella,
questo viene spostato o copiato nella cartella cui il collegamento si riferisce. E’
possibile avere collegamenti a qualsiasi oggetto, per esempio una stampante o una
unità oppure ad un programma. In genere molti collegamenti vengono aggiunti sul
desktop, in modo da poter avere accesso rapido a tutti quegli oggetti che utilizziamo
più spesso, ma un collegamento può essere inserito all’interno di qualsiasi cartella.
Da notare che un collegamento è completamente differente da una copia dell’oggetto.
La copia occupa lo stesso spazio dell’oggetto originale dal quale è completamente
distinta mentre un collegamento, in pratica un file con estensione .LNK, occupa
pochissimo spazio, in genere meno di 1 KB; se si cancella il collegamento o lo si
rinomina o lo si sposta, l’oggetto originale non subisce alcuna modifica.
Un collegamento può essere creato mediante il pulsante destro del mouse con
copia e, quindi, incolla collegamento oppure mediante nuovo collegamento e
sfogliando le risorse del computer per individuare l’oggetto da collegare.
Il sistema può eseguire solo programmi, per esempio file con estensione .exe, ed
allora nessuna azione dovrebbe essere eseguita quando si attiva, mediante un doppio
click, un file di dati; per esperienza, però, sappiamo che quando si attiva un file
.DOC, si avvia Microsoft WORD mentre per un .WAV si avvia un software per
l’ascolto della musica. Tutto questo è comodo perché, per esempio, consente
l’immediata gestione di un file di dati scaricato da Internet e non costringe l’utente ad
avviare ogni volta il programma corretto per poter gestire un certo tipo di file. Tutto
questo è possibile grazie alle associazioni tra le estensioni dei nomi di file, tipi di
file, ed i programmi. E’ possibile visionare le associazioni, modificarle, aggiungerne
di nuove o eliminarle mediante la voce di menù <Stumenti\opzioni cartella\tipi di
7
Attenzione: in questo caso le cancellazioni saranno definitive.
Capitolo 4: Il sistema operativo Windows
162
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
file> in esplora risorse. Si sconsiglia di modificare le associazioni, a meno che non si
è sicuri che un certo tipo di file possa essere correttamente gestito dal programma che
gli stiamo associando. Un altro modo per poter associare un programma ad un file in
maniera definitiva o momentanea, ovvero per una sola esecuzione, consiste nel
puntare il file ed utilizzare la voce <apri con> accessibile dal menu contestuale al
quale, come detto, si accede con il pulsante destro del mouse.
Quando si attiva, mediante un doppio click, un file non associato ad alcuna
applicazione, windows presenta l’elenco dei programmi installati nel sistema e ne
impone una scelta; avviare, in questo caso, il programma sbagliato porta ad una
cattiva o impossibile elaborazione del file. Ma chi crea le associazioni? Ho già detto
che l’utente può modificare, creare o cancellare le associazioni, ma, in genere,
qualsiasi installazione di un nuovo software crea nuove associazioni; per esempio,
l’installazione di Microsoft WORD associa i file .DOC a WinWord.exe.
4.7. Navigare in Internet
Lo scopo di questo paragrafo è riportare semplici suggerimenti per una corretta
navigazione in Internet. Ritengo comunque opportuno dare almeno una prima
semplice definizione di Internet: Internet è una rete geografica ovvero un insieme
di sistemi di elaborazione comunque sparsi nel mondo e messi in comunicazione
tra loro; l’argomento sarà approfondito in quinta quando parlerò in maniera
approfondita delle reti di computer.
Navigare in internet significa accedere alle pagine del WEB o WWW (World
Wide WEB) pubblicate da aziende, enti, privati, etc. Queste pagine sono memorizzate
su macchine SERVER raggiungibili mediante la rete telefonica mondiale. Le pagine
sono organizzate in siti secondo la tecnica dell’ipertesto. Un sito è l’insieme delle
pagine pubblicate da un qualsiasi soggetto, come detto prima azienda, ente, privato
etc. Un ipertesto è un testo all’interno del quale compaiono riferimenti, detti link o
puntatori, ad altre parti del testo; in effetti oggi si parla di Ipermedia perché le
pagine WEB contengono anche animazioni, foto, musica, film e quant’altro.
Un sito o una sua pagina è raggiungibile, ovvero visualizzabile dagli utenti del
WEB, mediante la specifica dell’indirizzo detto URL (Unique Resource Locator);
la pagina iniziale di un sito è detta Home page; è evidente, pertanto, che ogni
sito ha un indirizzo univoco. Gli indirizzi hanno la forma:
protocollo:\\indirizzo
il protocollo, in genere http, è l’insieme delle regole per poter correttamente
visualizzare le pagine mentre l’indirizzo univoco individua il sito o la pagina ed è
organizzato in livelli.
Capitolo 4: Il sistema operativo Windows
163
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Ad esempio, l’indirizzo del sito della nostra scuola è http://www.itcgbruno.it
dove “itcgbruno” è stata scelto dalla scuola ed è pubblicato sul WWW come parte del
dominio di primo livello it; questo suffisso, sempre presente negli indirizzi, indica il
tipo di organizzazione detta authority che gestisce l’assegnazione degli URL. Nel
nostro caso il sito della nostra scuola è stato assegnato dall’ authority italiana.
I suffissi più utilizzati sono:
Suffisso Descrizione
Esempio
.it
www.itcgbruno.it
Siti italiani
.de, .fr... Siti tedeschi, francesi, etc.
www.nutella.de
.com
Siti commerciali
www.fiat.com
.org
Siti di organizzazioni
www.fao.org
.biz
Siti commerciali
www.netek.biz
.edu
Sito educativo (scuole, università, etc.)
www.lib.lsu.edu
.net
Organizzazioni in rete
www.campani.net
.tv
Siti TV
www.la7.tv
Così, per visitare un sito, occorre conoscerne l’indirizzo; a volte gli indirizzi
sono piuttosto complessi e difficili da ricordare; per questo si hanno a disposizione i
preferiti ed i motori di ricerca.
I preferiti costituiscono l’elenco dei siti da noi più visitati e consentono di
sostituire all’indirizzo un nome o riferimento mnemonico; sono gestibili mediante il
menù preferiti, possono essere aggiunti mediante <preferiti\aggiungi a preferiti> e
organizzati in cartelle (Preferiti/organizza preferiti); così possiamo richiedere la
visualizzazione di un sito già visitato ed aggiunto ai preferiti semplicemente
ricercandolo tra essi.
Se si conosce l’indirizzo del sito da visitare, è sufficiente digitarlo nella barra
degli indirizzi oppure se è stato inserito nei preferiti basta semplicemente selezionarlo
nel relativo elenco; se, però, non si conosce l’indirizzo ma solo l’informazione che ci
interessa, ad esempio auto usate, musica leggera, Garibaldi, etc., allora si utilizzano i
motori di ricerca o lo strumento cerca. I motori di ricerca sono raggiungibili come
qualsiasi altro sito; i più diffusi motori di ricerca sono www.google.it, www.virgilio.it,
www.lycos.it, www.altavista.it, www.msn.it etc. . Per effettuare una ricerca basta
digitare la/le parola/e cercata/e oppure una frase racchiusa tra apici (“fiat punto”).
Per poter navigare bisogna disporre di un software di navigazione detto
browser. Uno dei browser più diffusi è Internet Explorer della Microsoft del quale
riporto la barra degli strumenti:
Strumento Funzione
Capitolo 4: Il sistema operativo Windows
164
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Ritorna alla pagina precedente;
Ritorna alla pagina successiva;
Termina l’operazione di scaricamento della pagina; utile, insieme al
pulsante aggiorna, quando la pagina tarda ad essere visualizzata;
Ricarica la pagina corrente richiedendone il suo re-invio al server; si
utilizza quando la pagina non è visualizzata correttamente;
Visualizza la pagina iniziale; è possibile cambiare la pagina iniziale, che
è anche quella visualizzata all’avvio del browser, dal menù
<strumenti\opzioni internet>;
Avvia il motore di ricerca;
Visualizza i preferiti;
Visualizza la cronologia; la cronologia è l’elenco dei siti visitati nelle
ultime settimane;
Stampa la pagina visualizzata.
4.8. Utilità del sistema
Un sistema operativo mette a disposizione dell’utilizzatore una serie di
programmi di utilità, che svolgono le cosiddette operazioni ausiliarie
all’elaborazione dei dati, quali copie di sicurezza, ottimizzazione delle risorse,
individuazione di errori, aggiornamenti, ecc.
Il sistema operativo Windows non si sottrae a questa regola, anzi fornisce
all’utilizzatore anche alcuni semplici programmi applicativi quali il browser Internet
Explorer per la navigazione in Internet, il gestore della posta elettronica outlook
express, Windows Media Player quale lettore multimediale per file audio, CD, video,
ecc., il programma di word processing WordPad, la calcolatrice, ecc.; di questi ultimi
ritengo, ovviamente, di fare a meno di scrivere anche un sol rigo; se vi interessa,
potete imparare da soli il loro funzionamento utilizzando la guida in linea.
Sui programmi di utilità, invece, ritengo opportuno scrivere qualcosa, anche se
potete tranquillamente utilizzare la loro guida in linea; per alcuni di essi, infatti,
ritengo opportuno dare tutte quelle informazioni, in genere non comprese nella guida,
Capitolo 4: Il sistema operativo Windows
165
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
che ne rendono più semplice la comprensione ed una conoscenza che non si ferma al
mero utilizzo del software.
4.8.1. Scandisk
Il programma di utilità scandisk consente di individuare e correggere errori
logici e fisici sui supporti di memoria quali hard disk, floppy disk, ecc.; questa utility
si avvia accedendo, mediante il pulsante destro del mouse, al menù contestuale del
volume che si vuole controllare, quindi <proprietà/strumenti>:
Scandisk individua e corregge errori logici causati da spegnimenti irregolari del
sistema, cadute di alimentazione, errori del sistema operativo, ecc. Due dei problemi
individuati e corretti da scandisk sono i riferimenti incrociati, ovvero due file allocati
su uno o più cluster comuni, ed i cluster persi, ovvero che risultano occupati nella
FAT ma nessun file punta ad essi. Nel primo caso la parte comune viene duplicata ed
assegnata in maniera indipendente ai due file mentre nel secondo caso scandisk
ripristina i cluster come spazio libero oppure crea dei file con nomi FILEn.chk, dove
n parte da 0001 e si incrementa per ogni file creato; tali file vengono, in genere,
registrati nella radice del volume controllato ed è a cura dell’utilizzatore verificarne il
contenuto ed eventualmente procedere ad una loro cancellazione oppure
ridenominazione. L’utente può decidere, di volta in volta, a quale correzione
procedere oppure lasciare la decisione al sistema.
Lo scandisk approfondito consente di verificare la bontà della superficie dei
dischi magnetici ed è avviato solo se richiesto dall’utente; si tratta di un’operazione
che richiede un tempo piuttosto alto e, in caso di rilevamento di errori fisici su uno o
più settori, il sistema tenta un recupero dei dati allocati su di essi ed eventualmente li
copia in una zona non difettosa; i settori risultati danneggiati vengono “marcati”
come guasti e non più utilizzati dal sistema.
Capitolo 4: Il sistema operativo Windows
166
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Vi consiglio di utilizzare raramente il controllo approfondito e, comunque,
sempre nei casi in cui si ricevano informazioni su errori di I/O, lettura/scrittura, su
disco; nel caso in cui vengano individuati uno o più settori difettosi, vi consiglio di
ripetere l’operazione dopo qualche giorno e, se il sistema continua a trovare nuovi
settori difettosi, è opportuno procedere alla sostituzione del disco.
Il sistema operativo, in genere, esegue uno scandisk automatico all’avvio,
quando rileva errori logici in lettura/scrittura o quando lo spegnimento non avviene in
modo corretto. E’ ormai chiara l’importanza che rivestono le memorie di massa
nell’ambito di un sistema di elaborazione; un guasto al disco rigido comporta, quasi
sempre, la perdita dei dati; è possibile recuperare i dati, o parte di essi, da un disco
danneggiato rivolgendosi ad aziende specializzate, ma il costo di tale operazione è, in
genere, molto alto e a volte proibitivo per le economie di chi ha perso i dati.
Da alcuni anni la tecnologia SMART, Self-Monitoring, Analysis, Reporting
Technology, consente di predire un possibile guasto al disco rigido e di avvisare
l’utilizzatore che, così, può procedere alla sua sostituzione, prima che si guasti
definitivamente, con conseguente perdita dei dati. La tecnologia SMART coinvolge,
ovviamente, i dischi rigidi, il BIOS del sistema ed il sistema operativo; quando le
prestazioni del disco degradano, perché le operazioni di lettura/scrittura avvengono
con tempi pù alti o comunque con difficoltà, il firmware del disco rigido avverte il
BIOS di un possibile deterioramento delle superfici del disco e, quindi, un messaggio
viene inviato all’utente che, ovviamente, provvede alla sostituzione del disco.
4.8.2. Defrag
La frammentazione è l’allocazione non contigua dei file sulle memorie di
massa; la frammentazione, aumentando gli spostamenti della testina sui dischi rigidi
e, quindi, il tempo di posizionamento durante la lettura dei dati da un file
frammentato, rallenta le prestazioni del sistema. Defrag elimina la frammentazione
riscrivendo, in pratica, l’intero disco in modo tale che tutti i file siano allocati in
maniera fisicamente contigua e che lo spazio libero sia tutto alla fine del volume.
Prima di avviare l’operazione, è possibile analizzare il volume per verificare
l’opportunità di procedere alla deframmentazione, che richiede molto tempo ed anche
qualche raro rischio di perdita dati dovuta ad eventuali interruzioni accidentali; per
questo vi consiglio di eseguire questa operazione raramente e solo in casi di
necessità.
L’operazione di deframmentazione può essere avviata come già descritto per lo
scandisk oppure da <Start/Tutti i programmi/Accessori/Utilità del sistema/Utilità di
deframmentazione dischi>.
Capitolo 4: Il sistema operativo Windows
167
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
4.8.3. Backup
Ormai abbiamo già perfettamente capito la grande importanza dei dati, per cui
essi vanno protetti da qualsiasi causa che ne possa determinare la perdita totale o
parziale. Anche i PC di casa contengono dati importanti: si pensi alle foto o alla
musica oltre che ai documenti; ebbene sempre è opportuno copiare, a scopi
precauzionali, i dati su supporti esterni, dai quali eventualmente ripristinarli in caso di
necessità.
Potete copiare i dati semplicemente utilizzando esplora risorse e le operazioni di
Copia/Incolla, ma le copie vanno effettuate con cadenza giornaliera e non è possibile
procedere ogni giorno alla copia completa del disco rigido perché richiederebbe
troppo tempo. Per poter effettuare copie giornaliere senza impiegare un tempo
eccessivo, è necessario utilizzare un programma specifico opportunamente
pianificato, ovvero in grado di procedere alla copia ad intervalli di tempo regolari e
senza intervento dell’operatore. Anche se disponiamo di un RAID è opportuno
procedere alla copia su supporti esterni per evitare i rischi derivanti, per esempio, da
furti o incendi.
Per poter comprendere la pianificazione del backup, occorre parlare degli
attributi dei file; i file possono avere uno o più attributi o proprietà; in effetti, con
riferimento al backup, l’unico attributo che interessa è quello di archivio, ma ritengo
opportuno riportare tutti gli attributi dei file:
¾ A - Archive: l’attributo di archivio viene assegnato automaticamente ad un file
quando subisce una modifica;
¾ H – Hidden: un file con l’attributo di nascosto non viene riportato nell’elenco del
contenuto di una cartella; è possibile modificare le impostazioni in modo da
poterli vedere da gestione risorse in
<Strumenti/Opzioni/Visualizzazione/visualizza file e cartelle nascosti>;
¾ S - System: un file con l’attributo di sistema è nascosto e non può essere
cancellato; è possibile modificare le impostazioni in modo da poterli vedere da
gestione risorse in
<Strumenti/Opzioni/Visualizzazione/nascondi i file protetti di sistema>;
¾ R – Read: i file con attributo di sola lettura non possono essere modificati e
cancellati solo mediante apposita conferma.
L’operazione di backup consente di selezionare i file da copiare: è possibile
selezionare da un singolo file ad un intero volume o, addirittura, più volumi, anche su
sistemi accessibili attraverso i servizi di rete. Una volta selezionati i file da copiare, è
possibile scegliere tra i seguenti tipi di backup:
¾ Completo o normale: vengono copiati tutti i file selezionati, quelli con e senza
l’attributo di archivio; l’attributo di archivio viene tolto;
Capitolo 4: Il sistema operativo Windows
168
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
¾ Differenziale: vengono copiati solo i file selezionati che hanno l’attributo di
archivio; l’attributo di archivio non viene tolto, per cui questi file saranno di
nuovo copiati dal successivo differenziale;
¾ Incrementale: vengono copiati solo i file selezionati che hanno l’attributo di
archivio; l’attributo di archivio viene tolto, per cui questi file non saranno di
nuovo copiati dal successivo incrementale;
¾ Giornaliero: vengono copiati tutti i file selezionati e modificati nel giorno in cui
avviene la copia; si tratta di un backup che comporta qualche rischio se non viene
eseguito tutti i giorni;
¾ Copia: vengono copiati tutti i file selezionati, quelli con e senza l’attributo di
archivio; l’attributo di archivio non viene tolto; si tratta di una copia extra
pianificazione perché non interferisce con quelli pianificati.
Una pianificazione delle copie di backup deve prevedere un backup completo,
per esempio mensile, e un differenziale giornaliero oppure un backup completo ed un
incrementale giornaliero.
L’operazione inversa, che, a causa di una perdita accidentale, riporta i dati dai
supporti esterni, sui quali è avvenuta a suo tempo la copia, al disco rigido, è detta
restore o ripristino. Con il differenziale è possibile ripristinare i dati, in caso di
necessità, disponendo del completo e dell’ultimo differenziale, mentre con
l’incrementale ho bisogno, come è facile intuire, di tutti gli incrementali e,
ovviamente, del completo; a questo svantaggio, l’incrementale offre il vantaggio di
essere più veloce perché copia i file copiati in precedenza solo se questi hanno subito
una modifica; il differenziale, invece, aumenta di giorno in giorno il numero di file
copiati, perché copia tutti i precedenti più quelli che subiscono modifiche. Il restore
corretto, disponendo di un completo e più incrementali, deve procedere ripristinando
il completo seguito da tutti gli incrementali nell’ordine con il quale, a suo tempo,
sono stati realizzati; per questo motivo è necessario numerare i supporti esterni
multipli utilizzati per le copie incrementali.
Il differenziale e tutti gli incrementali non sono più necessari quando si procede
ad una nuova copia completa.
Capitolo 4: Il sistema operativo Windows
169
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Capitolo 1. Informazione ed informatica ................................................................. 7
1.1. Informazione e … .....................................................................................................................7
1.2. Rappresentazione dell’informazione.......................................................................................10
1.2.1. Generalità .............................................................................................................................10
1.2.2. Rappresentazioni numeriche ................................................................................................11
1.2.2.1. Le quattro operazioni binarie ............................................................................................16
1.2.2.2. Fixed e Floating point .......................................................................................................18
1.2.3. Rappresentazione alfanumeriche .........................................................................................22
1.2.3.1. La codifica UNICODE......................................................................................................28
1.2.4. Rappresentazioni numeriche Packed e Zoned .....................................................................29
1.2.5. Rappresentazioni numeriche: Confronto .............................................................................29
1.3. Conclusioni .............................................................................................................................30
1.4. Esercizi....................................................................................................................................32
Capitolo 2. Algoritmi e approccio alla programmazione ..................................... 34
2.1. Definizione e proprietà............................................................................................................34
2.2. Rappresentazione ....................................................................................................................35
2.3. Formati, variabili e costanti, espressioni.................................................................................37
2.3.1. Approfondimento: dichiarazione di costanti........................................................................43
2.4. Iterazione o ciclo.....................................................................................................................44
2.5. Si fa sul serio...........................................................................................................................49
2.5.1. Programmazione strutturata .................................................................................................49
2.5.2. Modularità............................................................................................................................52
2.5.3. Complessità di tempo ed utilizzo dello switch ....................................................................54
2.5.4. Modalità di risoluzione degli esercizi ..................................................................................59
2.6. Il primo compito in classe.......................................................................................................60
2.6.1. Fila sinistra...........................................................................................................................60
2.6.1.1. Esercizio 1.........................................................................................................................60
2.6.1.2. Esercizio 2.........................................................................................................................63
2.6.1.3. Esercizio 3.........................................................................................................................65
2.6.2. Fila destra.............................................................................................................................67
2.6.2.1. Esercizio 1.........................................................................................................................67
2.6.2.2. Esercizio 2.........................................................................................................................70
2.6.2.3. Esercizio 3.........................................................................................................................72
2.7. Operatori logici .......................................................................................................................74
2.8. Array: Vettori e matrici...........................................................................................................77
2.8.1. Esempi di programmazione .................................................................................................78
2.8.2. Ordinamento di vettori .........................................................................................................81
2.8.3. Ricerca binaria. ....................................................................................................................82
2.9. Sottoprogrammi ......................................................................................................................82
2.9.1. Ricorsività ............................................................................................................................88
2.10. Programmazione modulare: esempio....................................................................................88
2.11. Un po’ di filosofia: la tesi di Church.....................................................................................90
2.12. Esercizi..................................................................................................................................90
Capitolo 3. Hardware............................................................................................... 99
3.1. Sistemi, automi, processi e modelli ........................................................................................99
3.2. Sistema di elaborazione ........................................................................................................101
3.3. La macchina di Von Neumann..............................................................................................101
3.4. I moderni sistemi di elaborazione .........................................................................................102
Indice
170
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
3.4.1. BUS....................................................................................................................................103
3.4.2. CPU....................................................................................................................................104
3.4.3. RAM ..................................................................................................................................109
3.4.4. ROM – Read Only Memory ..............................................................................................110
3.4.5. Interfacce............................................................................................................................111
3.4.6. DMA ..................................................................................................................................119
3.4.7. Main Board ........................................................................................................................119
3.4.8. Dispositivi periferici ..........................................................................................................122
3.4.8.1. Tastiera e mouse..............................................................................................................123
3.4.8.2. Monitor ...........................................................................................................................123
3.4.8.3. Videoterminali ................................................................................................................124
3.4.8.4. Stampanti e Plotter ..........................................................................................................125
3.4.8.5. Scanner............................................................................................................................127
3.4.8.6. Multifunzione..................................................................................................................127
3.4.8.7. Fotocamere e videocamere digitali .................................................................................128
3.4.8.8. Memorie di massa ...........................................................................................................128
3.4.8.8.1. Dischi magnetici ......................................................................................................129
3.4.8.8.2. Floppy Disk..............................................................................................................131
3.4.8.8.3. CD e DVD................................................................................................................132
3.4.8.8.4. Nastri magnetici .......................................................................................................134
3.4.8.8.5. Pen Disk, MP3, foto album......................................................................................135
3.4.8.8.6. Confronto tra le memorie di massa ..........................................................................135
3.4.8.9. Gruppi di continuità (UPS) .............................................................................................136
3.4.8.10. Videoproiettore e tavoletta grafica................................................................................137
3.4.8.11. Schede tecniche.............................................................................................................138
3.4.9. Classificazione dei sistemi di elaborazione .......................................................................150
3.5. Conclusioni ...........................................................................................................................152
Capitolo 4. ............................................................................................................... 153
Il sistema operativo Windows ................................................................................ 153
4.1. Generalità ..............................................................................................................................153
4.2. File, cartelle, volumi e unità..................................................................................................153
4.3. Al lavoro: gestione di file e cartelle ......................................................................................158
4.4. Utility cerca e caratteri jolly ................................................................................................160
4.5. Il cestino................................................................................................................................161
4.6. Collegamenti e associazioni..................................................................................................162
4.7. Navigare in Internet ..............................................................................................................163
4.8. Utilità del sistema..................................................................................................................165
4.8.1. Scandisk .............................................................................................................................166
4.8.2. Defrag.................................................................................................................................167
4.8.3. Backup ...............................................................................................................................168
Indice
171