INDICE GENERALE
PREFAZIONE
Introduzione
Accesso alla piattaforma on-line
Gli autori
5. RETI DI CALCOLATORI
5.1.
5.2.
Introduzione alle reti di
calcolatori
XI
XIV
XV
1
2
21
22
23
24
25
25
26
27
27
Cos’è una rete di calcolatori?
2
Classificazione delle reti
2
Reti di calcolatori: evoluzione e costi
3
Trasmissione di dati digitali
3
Reti di calcolatori: prestazioni
4
Rete: un parallelo intuitivo
4
Calcolatore e rete: componenti
5
Canali di comunicazione del segnale
8
Reti a commutazione di circuito
10
Reti a commutazione di pacchetto
10
Servizi orientati alla connessione e non 11
5.4.
Architettura dei protocolli di
rete: la rete locale
6. BASI DI DATI
37
6.1.
38
Protocolli di rete organizzati a livelli
Esempio di architettura dei protocolli
Livelli e integrazione delle reti
Livello fisico: codifica dei dati digitali
Tecnologie per schede di rete: 3
esempi
Comporre segmenti in reti locali
5.3.
Problematiche del livello rete
Livello rete: Internet protocol (IP)
Routing
Indirizzamento IPv4
Reti e sottoreti (subnetwork)
Instradamento (forwarding) dei
pacchetti
Assegnamento di indirizzi IP: DHCP
IPv4 e IPv6
Nomi di dominio e servizio DNS
XI
12
12
13
15
16
18
19
Reti di reti, internetworking
e protocollo IP
21
Reti di reti e internetworking
21
Livello trasporto, applicazioni
e servizi di rete
29
Livello trasporto
Protocolli di livello trasporto
Livello trasporto e livello applicazione
Livello applicazione
Servizi client/server e peer to peer
Cenni sulla sicurezza in rete
Esempio di configurazione TCP/IP
Servizi differenziati e Internet2
29
29
32
33
34
34
35
35
Introduzione alle basi di dati
Informazioni, dati e loro organizzazione 38
6.2.
Modello relazionale dei dati
42
Introduzione
Relazioni e tabelle: idea intuitiva
Modello relazionale: definizioni formali
Relazioni e tabelle
Basi di dati: definizioni formali
Vantaggi del modello relazionale
Informazione incompleta
42
43
43
44
44
44
44
IV
Indice generale
6.3.
6.4.
6.5.
6.6.
6.7.
6.8.
© 978-8808-16760-6
Vincoli d’integrità
47
Errori nei dati
Vincoli di integrità
47
47
Linguaggi di interrogazione
e manipolazione dei dati
50
Linguaggi delle basi di dati
DDL e DML
DDL
Interrogazioni e DML
Meccanismi di base dei DML relazionali
Interrogazioni
50
50
51
51
51
53
SQL: data definition language
55
Introduzione a SQL
Domini elementari
Creazione di tabelle con vincoli
intrarelazionali
Creazione di tabelle con integrità
referenziale
55
55
56
57
SQL: data manipulation
language
59
Introduzione
Manipolazione dei dati con SQL
Interrogazioni SQL su singola tabella
Interrogazioni SQL su più tabelle
Funzioni aggregate
59
59
60
62
62
Software per la gestione
di basi di dati
64
Introduzione
Access
MySQL
64
64
72
Codice SQL per la creazione
di tabelle
75
Codice
Dati da inserire nelle tabelle
Link
75
75
75
7.1.
7.3.
7.4.
7. FONDAMENTI DI ELABORAZIONE
MULTIMEDIALE
7.2.
77
Concetti di base
78
Multimedia
Analogico e digitale
Ciclo di acquisizione e riproduzione
Media e percezione
Segnali e flussi
78
78
79
79
80
Digitalizzazione
Frequenza e ampiezza
Valore di Nyquist
Compressione
80
81
81
82
Audio
84
Suono e sua percezione
Audio digitale
Input e output di audio digitale
Digitalizzazione dell’audio
Audio: campionamento
Audio: quantizzazione
Voce: dimensioni
Musica: dimensioni
Supporti digitali (a tecnologia ottica)
CD
Formati audio
Compressione
Modello percettivo di tipo psico-acustico
Ridondanza stereo
Musica di sintesi: MIDI
Altri formati audio
84
84
84
85
85
86
87
87
87
88
88
89
90
90
90
91
Immagini
92
Bitmap e vettoriale
Bitmap
Palette
True color
Formati
GIF e PNG
JPEG
Errori e correzioni
Immagini vettoriali
Vettori e curve
Join tra curve
Trasformazioni
Immagini vettoriali 2D
Immagini vettoriali 3D
Bitmap vs vettoriale
Input di immagini
Output
Editing di immagini
92
92
93
94
95
95
96
96
97
97
97
98
98
98
98
99
99
100
Video
101
Digitalizzazione del video
Input e output di video digitale
Frequenza di framing
Video: le dimensioni
Come la TV
Compressione
Video: formato MPEG
Tipi di frame
Codificare le differenze
101
101
102
102
102
103
103
105
105
7.5.
7.6.
7.7.
V
Indice generale
© 978-8808-16760-6
MPEG-2
DVD
MPEG-4
DivX
106
106
108
108
Applicazioni multimediali in
rete
109
Introduzione
Protocolli di Internet: un breve
sommario
Come fruire file multimediali in rete
Cosa significa streaming
Come funziona lo streaming
Come funziona il buffer
Pacchetti persi
Streaming: qualità del servizio
Percezione della qualità
Streaming e Web
Applicazioni per lo streaming
Client/server e P2P
Applicazioni P2P per il file sharing
P2P per i multimedia
Esempio: Napster
Esempio di P2P puro: Gnutella
Applicazioni P2P
109
Laboratorio di fotoritocco
116
Introduzione
Ambiente di lavoro
Visualizzazione delle immagini
Creare un’immagine
Importare e salvare un’immagine
Livelli
Creare, unire ed eliminare i livelli
Selezioni di un’immagine
Aliasing, anti-aliasing e sfumature
Strumenti di ritocco pittorico
Strumenti di uso comune
Strumenti artistici
Strumenti di scontorno
Strumenti creativi
Tool artistico-creativi
116
116
117
117
117
118
118
119
119
120
120
120
122
123
123
Editing audio
125
Introduzione
Ambiente di lavoro
Finestra del suono
Creare un suono
Aprire un suono
Importare un suono da CD
Registrare un suono
Salvare e convertire un suono
Selezionare un suono
125
125
126
126
127
127
127
128
129
109
110
110
110
111
111
112
112
112
113
113
113
114
114
114
115
Marker
Inserire e modificare un marker
Eliminare una porzione del suono
Copiare e incollare un suono
Incolla Speciale
Resampling
Normalizzazione del livello
Legami tra il tempo e la tonalità
di un suono
Variare tempo e tonalità di un suono
Pitch
Time stretch
Altre elaborazioni
Alcuni effetti
Altri effetti
Bibliografia
129
129
130
130
130
131
131
132
132
132
133
133
134
134
135
8. LINGUAGGI DI PROGRAMMAZIONE
E SISTEMI SOFTWARE
8.1.
Programmi e linguaggi
di programmazione
Dall’algoritmo al programma
Linguaggi per scrivere programmi
Operazioni di base e costrutti
linguistici
Dati, variabili e assegnamento
Costrutti iterativi
Costrutti condizionali
Procedure
Tipi di dato
Tipi di dato strutturati
Iterazione determinata
Universalità
Esecuzione di programmi
8.2.
8.3.
137
138
138
138
139
139
140
140
141
141
142
142
143
143
Dal linguaggio macchina al
Web
144
I primi calcolatori
Linguaggi di basso livello
Linguaggi di alto livello
Confronto in prospettiva storica
Fattori evolutivi
Era dei mainframe: anni ’40-’60
Era dei mini-computer: anni ’70
Era del PC: anni ’80
Era di Internet: anni ’90
Futuro prossimo: 2000-2010
144
144
145
145
146
146
147
148
150
150
Sintassi
152
Definire un linguaggio
di programmazione
152
VI
Indice generale
Categorie sintattiche, terminali e
regole
Alcuni esempi
Altri esempi: i comandi
Derivazioni
Linguaggi generati da grammatiche
Grammatiche EBNF
Un’altra notazione: i diagrammi
sintattici
Grammatiche regolari
8.4.
L’implementazione di un
linguaggio
Implementare un linguaggio
di programmazione
Che cos’è un interprete?
Che cos’è un compilatore?
La compilazione è un problema
«difficile»
Sequenza di trasformazioni
e rappresentazioni intermedie
Problema della compilazione:
un semplice esempio
Divisione in parole: analisi lessicale
Conversione delle parole in comandi:
analisi sintattica
Significato dei comandi: analisi
semantica
Traduzione: generazione di codice
intermedio
Traduzione: codice intermedio
ottimizzato
Generazione di codice macchina:
selezione delle istruzioni
Tabella dei simboli
Gestione degli errori
Ambienti di sviluppo del codice
8.5.
Metodologie di
programmazione
Metodologie di programmazione
Programmazione imperativa
vs programmazione dichiarativa
Programmazione imperativa
Programmazione dichiarativa
Programmazione funzionale
Linguaggi puri e trasparenza
referenziale
Programmazione logica
Programmazione orientata agli oggetti
Oggetti
Interazione tra oggetti
Classi
© 978-8808-16760-6
152
152
153
153
154
154
8.6.
155
155
157
157
157
157
Incapsulamento dei dati
Sottoclassi ed ereditarietà
Gerarchie di classi
168
169
169
Il software moderno
170
Livelli di un sistema software
Due tipi principali di software
Sistema operativo
Componenti di un sistema operativo
Alcuni sistemi operativi
Software applicativo
Office automation
Sistemi di gestione di basi di dati
(DBMS)
Altri tipi di software applicativo
Tipologie di software
Bibliografia
170
171
171
172
173
174
174
174
175
176
177
158
9. DALL´ALGORITMO AL PROGRAMMA 179
158
9.1.
158
159
159
159
159
9.2.
160
160
160
161
161
9.3.
162
162
162
163
163
164
165
165
166
167
167
168
9.4.
Nozione di algoritmo
180
Nozione di algoritmo
Una ricetta
Ricetta come algoritmo
Moltiplicazione egizia
Azioni elementari
Livello di dettaglio
180
180
181
181
181
182
Calcolabilità
183
Calcolabilità
Problema e algoritmo
Verificare la parità
Automi a Stati Finiti (ASF)
183
183
183
184
Universalità
186
Aggiungere memoria agli automi
Controllare il numero di occorrenze
Macchina di Turing
MdT che controlla il numero
di occorrenze
Tesi di Turing/Church
Esistenza della MdT universale
Problema della terminazione
Problema di corrispondenza di Post
Macchina universale di von Neumann
Universalità e macchina di von
Neumann
186
186
187
Descrizione di algoritmi
191
187
188
188
189
189
189
190
Descrizione di algoritmi
191
Azioni elementari e costrutti linguistici 191
Procedure
192
9.5.
9.6.
9.7.
Esecuzione di procedure
Iterazione illimitata
Chiamate
Condizionali
Esempio
192
192
193
193
194
Dati
195
Dati
Rappresentazione dei dati
Accesso agli elementi di un vettore
Scansione di un vettore
Programma quasi eseguibile
195
196
196
196
197
Tempo di calcolo
198
Tempo di calcolo
Semplificazioni
Crescita di funzioni
Efficienza
Ordinamento (algoritmo inefficiente)
Ordinamento (algoritmo efficiente)
Intrattabilità
Indecidibilità
198
199
200
200
201
201
202
203
Applicazioni degli algoritmi
205
Applicazioni degli algoritmi
Ricerca di una sequenza di caratteri
in un editor di testi
Crittografia digitale a chiave pubblica
Ray tracing
Bibliografia
205
209
10.1. Problem solving algoritmico
211
Risolubilità dei problemi
Esigenza, problema e programma
Linguaggio naturale,
(pseudo)linguaggio e linguaggio di
programmazione
Problemi e azioni primitive
Metodo top down
Metodo bottom up
Generalizzazione del problema
211
213
Descrizione del problema
Casi di prova
Soluzione dei problemi primitivi
con formule
Soluzione dei problemi primitivi
con tabelle
Problemi decisionali con risposta
SÌ/NO
Problemi con risposta multipla
224
225
10.3. Scomposizioni sequenziali
e successive
227
Riscrittura del problema
Scomposizioni sequenziali
in due sottoproblemi
Scomposizioni sequenziali in tre
o più sottoproblemi
Scomposizioni successive
10.4. Scomposizioni condizionali
Predicati di controllo
Scomposizioni condizionali esplicite
Scomposizioni condizionali implicite
Deduzioni e procedimenti di calcolo
10.5. Scomposizioni ricorsive
Ripetizione
Liste
Appartenenza di un elemento
a una lista
Somma degli elementi di una lista
Struttura formale
Grafi e alberi
Percorso in un grafo stradale
(senza cicli)
Percorso in un grafo stradale (con
cicli)
Un semplice problem solver (1)
Un semplice problem solver (2)
Un semplice problem solver (3)
Problem solver generalizzato
Bibliografia
205
206
207
208
10.PROBLEM SOLVING
10.2. Soluzione dei problemi
primitivi
VII
Indice generale
© 978-8808-16760-6
215
217
217
217
217
E. GESTIONE DI DATA BASE
E.1.
E.2.
219
219
220
221
222
E.3.
227
228
230
231
235
235
235
236
237
239
239
239
240
241
242
243
244
245
247
247
248
249
250
251
Ciclo di vita dei sistemi
informativi
252
Ciclo di vita dei sistemi informativi
252
Analisi dei requisiti e
progettazione
254
Studio di fattibilità
Analisi dei requisiti
Progettazione
254
254
255
Implementazione con Access
258
Premessa
258
VIII
Indice generale
E.4.
E.5.
© 978-8808-16760-6
Creazione delle tabelle
Creazione delle relazioni
Maschere di accesso ai dati
Report in Access
Query in Access
Query 1
Query 2
Query 3
Query 4
258
259
260
260
261
261
262
262
262
Implementazione con MySQL
264
Premessa
Realizzazione delle tabelle (1)
Realizzazione delle tabelle (2)
Inserimento dati in MySQL
Query in MySQL
Query 1
Query 2
Query 3
Query 4
264
265
265
266
267
267
267
267
268
Appendice
269
Codice SQL
Bibliografia
269
270
F. CREAZIONE DI PAGINE WEB
271
F.1.
Introduzione
272
HTML
Tag
Editing HTML
Cosa impareremo
272
273
273
274
Gestione di documenti HTML
275
Ambiente di lavoro di NVU
Visualizzazione “Normal”
Visualizzazione “HTML Tags”
Visualizzazione “Source”
Visualizzazione “Preview”
Visualizzazione su browser
Strumenti di composizione
Strumenti di formattazione
Creare una pagina
Salvare una pagina
Aprire una pagina
Gestione di file HTML con editor di
testo
Gestione di file HTML con FrontPage
Gestione file HTML con Dreamweaver
275
275
276
276
276
276
277
277
278
278
279
Struttura della pagina
283
Struttura della pagina
283
F.2.
F.3.
279
280
281
F.4.
F.5.
F.6.
F.7.
Intestazione
La pagina con NVU
Impostare le proprietà della pagina
Struttura con un editor di testi
284
284
284
285
Testo e sua formattazione
288
Elementi testuali
Entità
Intestazioni
Paragrafi
Blocchi di testo
Contenitori
Grassetto e corsivo
Abbreviazioni e acronimi
Citazioni
Testo con NotePad
Testo con FrontPage
Testo con Dreamweaver
Esercitazione
288
288
289
290
292
293
294
295
296
297
298
299
300
Liste e tabelle
301
Liste ordinate
Liste non ordinate
Tabelle
Liste e tabelle con NotePad
Liste e tabelle con FrontPage
Liste e tabelle con Dreamweaver
Esercitazione
301
302
303
305
306
308
309
Collegamenti ipertestuali
310
URL
Link
Link a pagine del sito
Pagina dei link
Link a siti esterni
Link interni
Link agli indirizzi e-mail
Link con NotePad
Link con FrontPage
Link con Dreamweaver
Esercitazione
310
310
311
313
314
314
317
317
319
321
323
Elementi multimediali
324
Elementi multimediali nelle pagine
HTML
Immagini per il Web
Immagini
Audio e video
Immagini con NotePad
Immagini con FrontPage
Immagini con Dreamweaver
Esercitazione
Bibliografia
324
325
325
327
327
327
328
329
329
F.8.
IX
Indice generale
© 978-8808-16760-6
Layout della pagina
330
Presentazione e struttura
Fogli di stile con NVU
Creare un foglio di stile
Posizionamento nella pagina
Regole per la home page
330
331
331
332
334
Regole per la pagina dei link
Regole per il curriculum vitae
Template
Fogli di stile con NotePad
Fogli di stile con FrontPage
Fogli di stile con Dreamweaver
Esercitazione
336
337
340
340
341
341
342