Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © The McGraw-Hill Companies srl Organizzazione del computer
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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/ milioni di byte di memoria che possono essere trasferiti al doppio della velocità normale Un byte corrisponde a 8 bit Un bit è 0 o 1
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 Memorizza 200 miliardi di byte di dati. Sono utili un valore RPM elevato e un tempo di ricerca ridotto. 0,009 secondi è la media
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 x pixel
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 Microprocessore per la visualizzazione di immagini con 64 milioni di byte di memoria. Una quantità di memoria maggiore supporta più colori e una risoluzione più elevata
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 Legge i DVD 16 volte più velocemente di un'unità DVD di base. Può contenere fino a 8 miliardi di byte di dati
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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ò leggere e scrivere CD. Può contenere 650 milioni di byte di dati Legge 48 volte più veloce e scrive 24 volte più veloce di un'unità di base
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © 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 © The McGraw-Hill Companies srl Rete domestica
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Dorsali
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © The McGraw-Hill Companies srl Output dell'esempio
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © 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 © 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 © The McGraw-Hill Companies srl Java e Internet
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © 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 © 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 © 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 © 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 © 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 © The McGraw-Hill Companies srl Principi Astrazione Incapsulamento Modularità Gerarchia
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © 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 © The McGraw-Hill Companies srl Principi Astrazione Incapsulamento Modularità Gerarchia Grado oppure ordinamento degli oggetti
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © The McGraw-Hill Companies srl Processo di soluzione dei problemi Che cos'è?
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © 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 © 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 © 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 © The McGraw-Hill Companies srl Processo di soluzione dei problemi
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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