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