Capitolo 1
Introduzione
Lucidi relativi al volume:
Java – Guida alla programmazione
James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Per iniziare
 Obiettivo
 Insegnare a programmare in modo efficace
 Abilità e informazioni da acquisire
 Modello mentale del comportamento di computer e reti
 Soluzione dei problemi
 Progettazione orientata agli oggetti
 Java
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB (7200
RPM, tempo di ricerca 9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA GeForce4
MX a 64 MB
 Unità DVD-ROM 16x Max
 Unità CD-RW 48x/24x/48x
 Modem telefonico PCI a 56 Kbps
 Windows XP Home Edition®
 Scheda di rete Fast Ethernet 10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
GeForce4 MX a 64 MB
 Unità DVD-ROM 16x Max
 Unità CD-RW 48x/24x/48x
 Modem telefonico PCI a 56 Kbps
 Windows XP Home Edition®
 Scheda di rete Fast Ethernet
10/100
3,06 miliardi di
operazioni al secondo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
512 milioni di byte di
GeForce4 MX a 64 MB
memoria che possono
 Unità DVD-ROM 16x Max
essere trasferiti al doppio
 Unità CD-RW 48x/24x/48x
della velocità normale
 Modem telefonico PCI a 56 Kbps
 Windows XP Home Edition®
Un byte corrisponde a 8 bit
 Scheda di rete Fast Ethernet
10/100
Un bit è 0 o 1
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
Memorizza 200 miliardi
GeForce4 MX a 64 MB
di byte di dati. Sono
 Unità DVD-ROM 16x Max
utili un valore RPM
 Unità CD-RW 48x/24x/48x
elevato e un tempo
 Modem telefonico PCI a 56 Kbps
di ricerca ridotto.
 Windows XP Home Edition®
0,009 secondi è la media
 Scheda di rete Fast Ethernet
10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
GeForce4 MX a 64 MB
 Unità DVD-ROM 16x Max
 Unità CD-RW 48x/24x/48x
 Modem telefonico PCI a 56 Kbps
 Windows XP Home Edition®
 Scheda di rete Fast Ethernet
10/100
17" sulla diagonale.
Risoluzione fino a
1.280 x 1.024 pixel
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
Microprocessore per
GeForce4 MX a 64 MB
la visualizzazione di
 Unità DVD-ROM 16x Max
immagini con 64 milioni
 Unità CD-RW 48x/24x/48x
di byte di memoria.
 Modem telefonico PCI a 56 Kbps
Una quantità di memoria
 Windows XP Home Edition®
maggiore supporta più colori
 Scheda di rete Fast Ethernet
e una risoluzione più elevata
10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
Legge i DVD 16 volte
GeForce4 MX a 64 MB
più velocemente di
 Unità DVD-ROM 16x Max
un'unità DVD di base.
 Unità CD-RW 48x/24x/48x
Può contenere fino a
 Modem telefonico PCI a 56 Kbps
8 miliardi di byte di dati
 Windows XP Home Edition®
 Scheda di rete Fast Ethernet
10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
Può leggere e scrivere
GeForce4 MX a 64 MB
CD. Può contenere
 Unità DVD-ROM 16x Max
650 milioni di byte di dati
 Unità CD-RW 48x/24x/48x
Legge 48 volte più
 Modem telefonico PCI a 56 Kbps
veloce e scrive 24 volte
 Windows XP Home Edition®
più veloce di un'unità
 Scheda di rete Fast Ethernet
di base
10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
GeForce4 MX a 64 MB
 Unità DVD-ROM 16x Max
 Unità CD-RW 48x/24x/48x
 Modem telefonico PCI a 56 Kbps
 Windows XP Home Edition®
 Scheda di rete Fast Ethernet
10/100
Può inviare o ricevere
fino a 56 migliaia
di bit al secondo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
GeForce4 MX a 64 MB
 Unità DVD-ROM 16x Max
 Unità CD-RW 48x/24x/48x
 Modem telefonico PCI a 56 Kbps
 Windows XP Home Edition®
 Scheda di rete Fast Ethernet
10/100
Sistema operativo
per computer che usa
un'interfaccia grafica
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
 Specifiche del computer
 Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
 SDRAM DDR di 512 MB
 Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
 Monitor LCD 17"
 Scheda grafica NVIDIA
GeForce4 MX a 64 MB
 Unità DVD-ROM 16x Max
 Unità CD-RW 48x/24x/48x
 Modem telefonico PCI a 56 Kbps
 Windows XP Home Edition®
 Scheda di rete Fast Ethernet
10/100
Può inviare o ricevere
dati a due velocità:
10 o 100 milioni
di byte al secondo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Rete domestica
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Dorsali
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Comunicazione di rete

Protocollo di comunicazione
 Set di regole che governa l'invio e la ricezione dei dati

TCP/IP
 Scambio di pacchetti di informazioni su Internet
FTP
 Scambio di file tra computer
SMTP
 Scambio di posta elettronica su Internet
POP
 Scambio di posta elettronica tra il software di lettura e l'ISP
HTTP
 Scambio di file sul WWW
SSL
 Informazioni sulla crittografia dei dati





Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
 Programma
 Sequenza di istruzioni che indica a un computer cosa fare
 Esecuzione
 Svolgimento della sequenza di istruzioni
 Linguaggio di programmazione
 Linguaggio per la scrittura di istruzioni su un computer
 Tipi principali
 Linguaggio macchina
o codice oggetto
 Linguaggio assembly
 Alto livello
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
 Programma
 Sequenza di istruzioni che indica a un computer cosa fare
 Esecuzione
 Svolgimento della sequenza di istruzioni
 Linguaggio di programmazione
 Linguaggio per la scrittura di istruzioni su un computer
 Tipi principali
 Linguaggio macchina
o codice oggetto
 Linguaggio assembly
 Alto livello
Programma a cui
il computer può
rispondere direttamente.
Ogni istruzione è un
codice binario che
corrisponde a un'istruzione
nativa
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
 Programma
 Sequenza di istruzioni che indica a un computer cosa fare
 Esecuzione
 Svolgimento della sequenza di istruzioni
 Linguaggio di programmazione
 Linguaggio per la scrittura di istruzioni su un computer
 Tipi principali
 Linguaggio macchina
o codice oggetto
 Linguaggio assembly
 Alto livello
Linguaggio simbolico
per la codifica delle
istruzioni in linguaggio
macchina
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
 Programma
 Sequenza di istruzioni che indica a un computer cosa fare
 Esecuzione
 Svolgimento della sequenza di istruzioni
 Linguaggio di programmazione
 Linguaggio per la scrittura di istruzioni su un computer
 Tipi principali
 Linguaggio macchina
o codice oggetto
 Linguaggio assembly
 Alto livello
La conoscenza dettagliata
della macchina non è
richiesta. Utilizza un
vocabolario e una
struttura vicini al
problema da risolvere
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
 Programma
 Sequenza di istruzioni che indica a un computer cosa fare
 Esecuzione
 Svolgimento della sequenza di istruzioni
 Linguaggio di programmazione
 Linguaggio per la scrittura di istruzioni su un computer
 Tipi principali
 Linguaggio macchina
o codice oggetto
 Linguaggio assembly
 Alto livello
Java è un linguaggio
di programmazione
di alto livello
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
 Programma
 Sequenza di istruzioni che indica a un computer cosa fare
 Esecuzione
 Svolgimento della sequenza di istruzioni
 Linguaggio di programmazione
 Linguaggio per la scrittura di istruzioni su un computer
 Tipi principali
 Linguaggio macchina
o codice oggetto
 Linguaggio assembly
 Alto livello
Per i programmi da
eseguire, è necessario
"tradurlo"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Traduzione
 Traduttore
 Accetta un programma scritto in un linguaggio di origine e
traduce quel programma in un linguaggio di destinazione
 Compilatore
 Nome standard per un traduttore il cui linguaggio di
origine è un linguaggio di alto livello
 Interprete
 Un traduttore che traduce ed esegue un programma di
origine
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Traduzione di Java
 Processo in due fasi
 Prima fase
 Traduzione da Java in bytecode
 I bytecode sono codice oggetto neutro dal punto di
vista dell'architettura
 I bytecode sono memorizzati in un file con estensione
.class
 Seconda fase
 Un interprete traduce i bytecode in istruzioni macchina e
le esegue
 L'interprete è noto come macchina virtuale Java o JVM
(Java Virtual Machine)
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Attività
 Visualizzare la previsione
I think there is a world market for maybe five computers.
Thomas Watson, IBM, 1943.
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Output dell'esempio
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
DisplayForecast.java
// Autori: J. P. Cohoon e J. W. Davidson
// Scopo: visualizzare una citazione nella finestra della
console
public class DisplayForecast
// metodo main(): punto di ingresso per l'applicazione
public static void main(String[] args)
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
DisplayForecast.java
// Autori: J. P. Cohoon e J. W. Davidson
// Scopo: visualizzare una citazione nella finestra della
console
public class DisplayForecast
// metodo main(): punto di ingresso per l'applicazione
public static void main(String[] args)
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Tre istruzioni costituiscono l'azione del metodo
main()
Il metodo main() è parte della classe
DisplayForecast
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
DisplayForecast.java
// Autori: J. P. Cohoon e J. W. Davidson
// Scopo: visualizzare una citazione nella finestra della
console
public class DisplayForecast
// metodo main(): punto di ingresso per l'applicazione
public static void main(String[] args)
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Un metodo è un frammento di codice denominato
che esegue qualche azione o implementa un
comportamento
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
DisplayForecast.java
// Autori: J. P. Cohoon e J. W. Davidson
// Scopo: visualizzare una citazione nella finestra della
console
public class DisplayForecast
// metodo main(): punto di ingresso per l'applicazione
public static void main(String[] args)
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Un programma applicativo è necessario per
disporre di un metodo public static void chiamato
main()
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Java e Internet
Your machine
Your friend's machine
I think ...
DisplayForecast.java
Java
Compiler
JVM
DisplayForecast.class
DisplayForecast.class
Modem
Modem
Internet
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software per l'ingegneria
 La complessità del software aumenta con i tentativi di
renderne più facile l'utilizzo
 Nascita delle procedure guidate
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
 Obiettivo
 Produzione di software efficace e affidabile,
comprensibile, economico, adattabile e riutilizzabile
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
 Obiettivo
 Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
 Funziona correttamente
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
 Obiettivo
 Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
 A causa della lunga durata sono coinvolte molte
persone
 Creazione
 Debug
 Manutenzione
 Perfezionamento
 Due terzi del costo vanno generalmente oltre la
creazione
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
 Obiettivo
 Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
 Il costo di sviluppo e manutenzione non dovrebbe
superare il vantaggio previsto
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
 Obiettivo
 Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
 Progettare il software in modo che si possano
aggiungere nuove funzioni e capacità
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
 Obiettivo
 Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
 Ha senso a causa dei notevoli costi richiesti per
ottenere componenti flessibili che possono essere
utilizzati in altri prodotti software
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
 Astrazione
 Incapsulamento
 Modularità
 Gerarchia
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
 Astrazione
 Incapsulamento
 Modularità
 Gerarchia
Determina le proprietà e le
funzioni rilevanti, ignorando
i dettagli non essenziali
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
 Astrazione
 Incapsulamento
 Modularità
 Gerarchia
Separa i componenti in aspetti
esterni e interni
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
 Astrazione
 Incapsulamento
 Modularità
 Gerarchia
Costruisce un sistema da
componenti e pacchetti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
 Astrazione
 Incapsulamento
 Modularità
 Gerarchia
Grado oppure ordinamento
degli oggetti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Progettazione orientata agli oggetti
 Scopo
 Promuovere il pensiero sul software così da modellare il
modo in cui si pensa e si interagisce con il mondo fisico
 Comprendendo la specializzazione
 Oggetto
 Proprietà o attributi
 Comportamenti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Programmazione
 Classe
 Termine per un tipo di oggetto software
 Oggetto
 Un'istanza di una classe con
proprietà e attributi specifici
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Programmazione
 Soluzione dei problemi attraverso l'uso di un sistema
informatico
 Massima
 Non è possibile far fare qualcosa a un computer se non si
sa come farlo da soli
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
 Perché è importante?
 A tutti sono assegnate attività da svolgere
Al lavoro
A casa
A scuola
Perché non occuparsene
 Subito
 In modo efficace
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
 Perché interessarsi della
risoluzione dei problemi basata
sul computer (vale a dire della
programmazione)?





Chiarezza
Frontiere della scienza
Proficuità
Necessità
Qualità della vita
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
 Da ricordare
 L'obiettivo non è una soluzione intelligente ma una
soluzione corretta
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
 Accettare
 Il processo è iterativo
Nella soluzione dei problemi, una comprensione
maggiore può richiedere di ricominciare
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
 Soluzioni
 Spesso richiedono un pensiero concreto e astratto
Lavoro di squadra
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
 Che cos'è?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
 Che cos'è?
 Analisi
 Progettazione
 Implementazione
 Verifica
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
 Che cos'è?
 Analisi
 Progettazione
 Implementazione
 Verifica
Determina l'input, l'output e altri componenti del problema
La descrizione dovrebbe essere abbastanza specifica da
consentire di risolvere il problema
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
 Che cos'è?
 Analisi
 Progettazione
 Implementazione
 Verifica
Descrivere i componenti e i processi associati per risolvere il
problema
Diretta e flessibile
Metodo - processo
Oggetto - componente e metodi associati
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
 Che cos'è?
 Analisi
 Progettazione
 Implementazione
 Verifica
Sviluppare soluzioni per i componenti e usare questi componenti
per produrre una soluzione generale
Diretta e flessibile
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
 Che cos'è?
 Analisi
 Progettazione
 Implementazione
 Verifica
Verificare i componenti singolarmente e nell'insieme
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Metodologie di soluzione dei problemi
 Come fare?
 Dipende dal modo di pensare
 Metodo del bricolage
 Metodo pianificato
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Metodologie di soluzione dei problemi
 Come fare?
 Dipende dal modo di pensare
 Metodo del bricolage
 Metodo pianificato
Caratteristiche e aspetti del problema vengono ripetutamente
provati e manipolati secondo il proprio modo di organizzare le
informazioni
Uno sbaglio non è un errore, ma una correzione in attesa di
essere eseguita nel corso naturale della risoluzione del
problema
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Metodologie di soluzione dei problemi
 Come fare?
 Dipende dal modo di pensare
 Metodo del bricolage
 Metodo pianificato
Usa la logica, il formalismo e l'ingegneria insieme a una
metodologia strutturata
La struttura inerente offerta dal metodo pianificato facilita la
correttezza della soluzione
Metodo dominante nell'insegnamento
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Scoprire quanto è possibile fare
 Riutilizzare ciò che è stato
fatto prima
 Prevedere il riutilizzo futuro
 Dividere i problemi complessi
in sottoproblemi
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Scoprire quanto è possibile fare
 Riutilizzare ciò che è stato
fatto prima
 Prevedere il riutilizzo futuro
 Dividere i problemi complessi
in sottoproblemi
Scoprire quali informazioni sono note rispetto al problema
Parlare con chi ha presentato il problema
Determinare quali tentativi hanno avuto successo e quali no
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Scoprire quanto è possibile fare
 Riutilizzare ciò che è stato
fatto prima
 Prevedere il riutilizzo futuro
 Dividere i problemi complessi
in sottoproblemi
Le ricerche possono richiedere diverso tempo e generare delle
domande
Lo sforzo è ripagato da una migliore comprensione
La vera comprensione del problema ne facilita la soluzione
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Scoprire quanto è possibile fare
 Riutilizzare ciò che è stato
fatto prima
 Prevedere il riutilizzo futuro
 Dividere i problemi complessi
in sottoproblemi
Considerare
Tracciare una bozza della soluzione e poi rifinire i suoi
componenti fino a specificare l'intero processo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Scoprire quanto è possibile fare
 Riutilizzare ciò che è stato
fatto prima
 Prevedere il riutilizzo futuro
 Dividere i problemi complessi
in sottoproblemi
Il tempo è prezioso
La correttezza è forse ancor più preziosa
Usare un'infrastruttura esistente funzionante
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Scoprire quanto è possibile fare
 Riutilizzare ciò che è stato
fatto prima
 Prevedere il riutilizzo futuro
 Dividere i problemi complessi
in sottoproblemi
Essere aperti all'utilizzo indiretto di materiali esistenti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Scoprire quanto è possibile fare
 Riutilizzare ciò che è stato
fatto prima
 Prevedere il riutilizzo futuro
 Dividere i problemi complessi
in sottoproblemi
Fare tutte le supposizioni necessarie
Aumentare la probabilità che lo sforzo possa essere applicato
a situazioni future
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Scoprire quanto è possibile fare
 Riutilizzare ciò che è stato
fatto prima
 Prevedere il riutilizzo futuro
 Dividere i problemi complessi
in sottoproblemi
Dividere e conquistare
Risolvere i sottoproblemi e combinarli in una
soluzione generale
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
 Letture
 Testi sulla soluzione dei problemi
George Polya, How to Solve It;
A New Aspect of Mathematical Method,
Princeton Press, 1988
Wayne Wickelgren, How to Solve
Mathematical Problems, Dover Publications, 1995
Paul Zeitz, The Art and Craft of Problem Solving, John
Wiley, 1999
 Esame sociologico dei vari stili di risoluzione dei problemi
Sherry Turkle e Seymour Papert, Epistemological
Pluralism: Styles and Voices Within the Computer
Culture, Signs: A Journal of Women in Culture and
Society, 1990