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