Volume 1 ridotto - Benvenuto su SICCORP

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. 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
11
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
12
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
13
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
14
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
15
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
\
16
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
1.2.2.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
17
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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 stringa2 “ó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
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.
2
Stringa: successione di caratteri.
Capitolo 1: Informazione ed informatica
18
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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. .
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:
Capitolo 1: Informazione ed informatica
19
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• 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;
c) 45.68; 251.258; 654.768; 76892.1538;
d) A3.C916; C6D.4F16; 8BE5.23716; BA1C.E2F16 .
3.
Rappresentare mediante il codice ASCII le seguenti parole:
Computer; STAMPANTE; mouse; tastIERA.
Capitolo 1: Informazione ed informatica
20
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
21
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
22
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
23
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
24
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
25
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
26
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
27
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
28
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
29
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
30
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
F
Test di
uscita
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
Inizializzazione
REPEAT
Istruzioni
UNTIL test
F
Test di
uscita
V
Capitolo 2: Algoritmi e approccio alla programmazione
31
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
32
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
F
I<=N
V
S=S+I
I=I+1
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
33
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
34
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
35
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
36
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Iterazione:
Inizializzazione
F
Test di
uscita
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
37
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
38
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
39
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
40
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
41
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
D=0
F
N “ non è primo”
”
N “ è primo
Fine
Capitolo 2: Algoritmi e approccio alla programmazione
42
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
43
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Inizio
DIM N, I AS INT64, SW AS BYTE
SW AS Boolean
N
SW=False
I=2
SW=0
I <= N/2
F
I <= SQRT(N)
I<N
V
V
F
N MOD I = 0
SW=1
SW=True
I=N
I=I+1
V
SW=1
”
SW
F
”
N “ non è primo
N “ è primo
Fine
Capitolo 2: Algoritmi e approccio alla programmazione
44
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
45
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
46
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
47
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
48
L’Informatica per i miei studenti – Volume 1
Capitolo 2: Algoritmi e approccio alla programmazione
Prof. Bianco Mauro
49
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
50
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
51
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
52
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
53
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.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à.
Per capire il funzionamento di questi operatori ritengo opportuno fornire la
soluzione all’esercizio proposto ad inizio paragrafo.
Capitolo 2: Algoritmi e approccio alla programmazione
54
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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
55
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
56
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
57
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
58
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
59
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
60
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
61
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
62
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
63
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
64
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
65
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
66
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
67
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
68
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
69
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
70
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
71
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
72
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
73
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
74
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
massimo ed il minimo.
contenuti
e, tra questi, il
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
75
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
76
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
77
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,
78
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:
Input
Sistema
Output
I sistemi possono essere collegati tra loro secondo diverse modalità:
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.
Capitolo 3: Hardware
79
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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:
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.
Capitolo 3: Hardware
80
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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:
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.
Capitolo 3: Hardware
81
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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;
• 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.
Capitolo 3: Hardware
82
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.
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
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.
Una particolare CPU è il microprocessore. Un microprocessore è una CPU
miniaturizzata costituita da un solo circuito integrato detto chip.
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
Capitolo 3: Hardware
83
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.
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;
Capitolo 3: Hardware
84
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.
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
Capitolo 3: Hardware
85
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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:
Connettore
Nome
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).
I
Interfaccia tastiera oggi di
tipo PS/2.
Video
Graphics
Array
DVI
Digital
Video
Interface
HDMI
High
Definition
Multimedia
Interface
Keyb
Capitolo 3: Hardware
S
86
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Mouse
S
USB
S
I
Interfaccia mouse di tipo
PS/2.
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
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;
Velocità di trasferimento
della versione 1.1: 11Mb/sec;
2 Connettori USB
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.
Audio
Capitolo 3: Hardware
I/O Interfaccia
per
la
multimedialità che consente
di riprodurre e acquisire suoni
e audio in generale.
87
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Rete
S
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.
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.
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
External
S
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:
Capitolo 3: Hardware
88
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• Aumento della capacità di
memorizzazione dati;
• Copie di back-up;
• Elaborazioni on line;
• Trasporto dati;
• RAID.
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.
Wireless
Fidelity
Capitolo 3: Hardware
89
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.
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
90
L’Informatica per i miei studenti – Volume 1
Capitolo 3: Hardware
Prof. Bianco Mauro
91
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
92
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
93
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
94
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. 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:
Capitolo 3: Hardware
95
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• 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:
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
Capitolo 3: Hardware
96
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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;
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.4. 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
Capitolo 3: Hardware
97
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.5. 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.
3.4.8.6. 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.
Capitolo 3: Hardware
98
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.7. 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.
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.
Capitolo 3: Hardware
99
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.7.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
100
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
2 TESTINE PER PIATTO
Superfici :
Le testine sono agganciate allo
stesso asse e si muovono in maniera
solidale
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
101
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.7.2. 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.
Capitolo 3: Hardware
102
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.
DVD-R, DVD+R
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.
Capitolo 3: Hardware
103
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
DVD-RW, DVD+RW
4,7 GB
Come CD-RW.
DVD+DL
8,5 GB
Come CD-R. DL=Dual
Layer.
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.
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
Capitolo 3: Hardware
104
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.7.3. 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 MP33; 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.7.4. 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.
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.
3
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
105
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.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
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
Capitolo 3: Hardware
106
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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.
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. .
Capitolo 3: Hardware
107
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
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
108
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
109
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
110
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 system4 (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
4
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
111
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
112
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
113
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
Siccome utilizzerete subito le cartelle condivise in rete5 (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
5
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
114
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
115
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
116
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
117
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
• disattivare la funzionalità del cestino 6;
• 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
6
Attenzione: in questo caso le cancellazioni saranno definitive.
Capitolo 4: Il sistema operativo Windows
118
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
119
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
120
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
121
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
122
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
123
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
124
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
125
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. Rappresentazione alfanumeriche ......................................................................................... 11
1.2.2.1. La codifica UNICODE...................................................................................................... 17
1.3. Conclusioni ............................................................................................................................. 18
1.4. Esercizi .................................................................................................................................... 20
Capitolo 2. Algoritmi e approccio alla programmazione ..................................... 21
2.1. Definizione e proprietà............................................................................................................ 21
2.2. Rappresentazione .................................................................................................................... 22
2.3. Formati, variabili e costanti, espressioni ................................................................................. 24
2.3.1. Approfondimento: dichiarazione di costanti ........................................................................ 30
2.4. Iterazione o ciclo ..................................................................................................................... 31
2.5. Si fa sul serio ........................................................................................................................... 36
2.5.1. Programmazione strutturata ................................................................................................. 36
2.5.2. Modularità ............................................................................................................................ 39
2.5.3. Complessità di tempo ed utilizzo dello switch..................................................................... 41
2.5.4. Modalità di risoluzione degli esercizi .................................................................................. 46
2.6. Il primo compito in classe ....................................................................................................... 47
2.6.1. Fila sinistra ........................................................................................................................... 47
2.6.1.1. Esercizio 1 ......................................................................................................................... 47
2.6.1.2. Esercizio 2 ......................................................................................................................... 50
2.6.1.3. Esercizio 3 ......................................................................................................................... 52
2.7. Operatori logici ....................................................................................................................... 54
2.8. Array: Vettori e matrici ........................................................................................................... 57
2.8.1. Esempi di programmazione ................................................................................................. 58
2.8.2. Ordinamento di vettori ......................................................................................................... 61
2.8.3. Ricerca binaria. .................................................................................................................... 62
2.9. Sottoprogrammi ...................................................................................................................... 62
2.9.1. Ricorsività ............................................................................................................................ 68
2.10. Programmazione modulare: esempio .................................................................................... 68
2.11. Un po’ di filosofia: la tesi di Church..................................................................................... 70
2.12. Esercizi .................................................................................................................................. 70
Capitolo 3. Hardware ............................................................................................... 79
3.1. Sistemi, automi, processi e modelli ........................................................................................ 79
3.2. Sistema di elaborazione .......................................................................................................... 79
3.3. La macchina di Von Neumann................................................................................................ 80
3.4. I moderni sistemi di elaborazione ........................................................................................... 81
3.4.1. BUS ...................................................................................................................................... 82
3.4.2. CPU ...................................................................................................................................... 83
3.4.3. RAM..................................................................................................................................... 83
3.4.4. ROM – Read Only Memory................................................................................................. 84
3.4.5. Interfacce .............................................................................................................................. 85
3.4.6. DMA .................................................................................................................................... 90
3.4.7. Main Board .......................................................................................................................... 90
3.4.8. Dispositivi periferici ............................................................................................................ 93
3.4.8.1. Tastiera e mouse................................................................................................................ 94
3.4.8.2. Monitor.............................................................................................................................. 94
3.4.8.3. Stampanti e Plotter ............................................................................................................ 95
3.4.8.4. Scanner .............................................................................................................................. 97
Indice
126
L’Informatica per i miei studenti – Volume 1
Prof. Bianco Mauro
3.4.8.5. Multifunzione .................................................................................................................... 98
3.4.8.6. Fotocamere e videocamere digitali ................................................................................... 98
3.4.8.7. Memorie di massa ............................................................................................................. 99
3.4.8.7.1. Dischi magnetici ...................................................................................................... 100
3.4.8.7.2. CD e DVD ................................................................................................................ 102
3.4.8.7.3. Pen Disk, MP3, foto album ...................................................................................... 105
3.4.8.7.4. Confronto tra le memorie di massa .......................................................................... 105
3.4.9. Classificazione dei sistemi di elaborazione ....................................................................... 106
3.5. Conclusioni ........................................................................................................................... 107
Capitolo 4. ............................................................................................................... 109
Il sistema operativo Windows ................................................................................ 109
4.1. Generalità .............................................................................................................................. 109
4.2. File, cartelle, volumi e unità.................................................................................................. 109
4.3. Al lavoro: gestione di file e cartelle ...................................................................................... 114
4.4. Utility cerca e caratteri jolly ................................................................................................ 116
4.5. Il cestino ................................................................................................................................ 117
4.6. Collegamenti e associazioni .................................................................................................. 118
4.7. Navigare in Internet .............................................................................................................. 119
4.8. Utilità del sistema.................................................................................................................. 121
4.8.1. Scandisk ............................................................................................................................. 122
4.8.2. Defrag................................................................................................................................. 123
4.8.3. Backup ............................................................................................................................... 124
Indice
127