ANNO SCOLASTICO 2014/2015 CLASSE 3° IC Programma svolto per la materia Informatica 1°) Gli algoritmi e le loro proprietà. Introduzione alla programmazione strutturata. Istruzioni operative e di controllo: sequenza, selezione ed iterazione. Gli strumenti di sviluppo di un programma: editor, assemblatori, compilatori, interpreti, debugger, librerie e guide in linea. 2°) Breve storia e principali caratteristiche del linguaggio Java. Le costanti letterali di tipo booleano, carattere, stringa, intero e reale. La dichiarazione delle variabili di un programma. I tipi primitivi boolean, char, short, int, long, float e double. Le espressioni e gli operatori unari. Gli operatori aritmetici, relazionali e logici: ordine di precedenza e associatività. 3°) Le istruzioni del linguaggio Java: l'istruzione nulla, l'istruzione semplice, la sequenza e l'istruzione if. Le istruzioni switch, while e break. Le istruzioni do-while e for; esempi di cicli annidati. Le istruzioni break e continue. La sintassi generale delle istruzioni del linguaggio Java. 4°) Scrittura sul video e lettura da tastiera di informazioni in linguaggio Java. Promozioni e retrocessioni di tipo; gli operatori di assegnazione. La tabella di traccia dell'esecuzione di un programma. L'API di Java: i package e le classi, gli oggetti e le variabili di tipo riferimento. 5°) L'operatore di concatenazione di stringhe ed i principali metodi della classe String. Esempi di programmi che operano sulle stringhe. Creazione ed inizializzazione di un vettore. Dichiarazione di variabili di tipo riferimento e accesso agli elementi di un vettore. Esempi di programmi che operano sui vettori. 6°) Gli algoritmi di ricerca sequenziale e binaria. Tecniche di ordinamento degli elementi di un vettore: ordinamento per inserimento, per selezione e per scambio. Dichiarazione di costanti simboliche e di vettori a più dimensioni, Rappresentazione in memoria di una matrice in linguaggio Java. 7°) Definizione ed invocazione di metodi statici in linguaggio Java. L'overloading di un metodo statico. I metodi statici di tipo void e le variabili statiche. La ricorsione diretta ed indiretta. Esempi di definizione di metodi ricorsivi in linguaggio Java. Gli algoritmi di ordinamento ricorsivi merge-sort e quick-sort. 8°) Introduzione alla OOP: definizione di oggetti, campi e metodi statici e non statici. Oggetti varianti ed invarianti. L'incapsulamento di oggetti, il concetto di ereditarietà tra classi, la ridefinizione dei metodi ed il polimorfismo. Il costruttore di una classe e le parole chiave this e super. 9°) I modificatori d'accesso private, package, protected e public. I modificatori delle classi, dei campi, dei metodi e dei costruttori di una classe. Le classi astratte e le interfacce. Esempi di definizione ed implementazione di interfacce. Il diagramma delle classi di un programma. 10°) Anomalie di funzionamento di un programma: errori ed eccezioni controllate ed incontrollate. La gerarchia delle eccezioni del linguaggio Java. La clausola throws e le istruzioni throw e try-catch. Lettura e scrittura di file di caratteri in linguaggio Java. ANNO SCOLASTICO 2014/2015 CLASSE 3° IC Laboratorio d'Informatica: 1. I linguaggi di programmazione a basso e ad alto livello compilati ed interpretati: esempio d'implementazione di un programma con il Java Development Kit. 2. L'ambiente di sviluppo integrato Jcreator: sviluppo, in linguaggio Java, di un programma che calcola la circonferenza e l'area di un cerchio. 3. Indentazione ed inserimento di commenti nel testo di un programma: sviluppo, in linguaggio Java, di un programma che calcola le radici di un'equazione di secondo grado. 4. Lo stile di codifica di un programma: sviluppo, in linguaggio Java, di un programma che stampa tutti i numeri da 1 a 999 sia in cifre che in lettere. 5. Sviluppo di un programma che stampa tutti i numeri romani da uno a 999. 6. Sviluppo di un programma che stampa tutti i numeri primi minori di 1000. 7. Sviluppo di un programma che stampa tutti i numeri primi gemelli minori di 1000. 8. Sviluppo di un programma che esegue la moltiplicazione tra due numeri interi con il metodo delle addizioni successive. 9. Sviluppo di un programma che esegue la divisione intera tra due numeri con il metodo delle sottrazioni successive. 10. Sviluppo di un programma che calcola il quadrato di un numero naturale. 11. Sviluppo di un programma che calcola la parte intera della radice quadrata di un numero naturale. 12. Sviluppo di un programma che analizza il contenuto di una stringa di caratteri digitati alla tastiera dall'utente. 13. Sviluppo di un programma che sostituisce tutte le occorrenze di una particolare parola in una stringa. 14. Sviluppo di un programma che esegue la fusione delle parole di due stringhe. 15. Sviluppo di un programma che legge dalla tastiera ed ordina tutti gli elementi di un vettore. 16. Sviluppo di un programma che esegue la fusione di due vettori ordinati. 17. Sviluppo di un programma che calcola i valori massimo, minimo e medio di un vettore di numeri interi. 18. Sviluppo di un programma che esegue l'intersezione di due vettori di numeri interi. 19. Codifica in linguaggio Java degli algoritmi di ricerca sequenziale e binaria. 20. Sviluppo di un programma che prova e confronta le principali tecniche di ordinamento di un vettore. 21. Sviluppo di un programma che ricerca i massimi relativi di una matrice. 22. Sviluppo di un programma che implementa al computer il "gioco del quindici". 23. Soluzione del problema delle torri di Hanoi con la tecnica "divide et impera". 24. Sviluppo di un programma che implementa al computer il "gioco del tris". 25. Sviluppo di un programma che esegue la somma di due matrici. 26. Sviluppo di un programma che esegue il prodotto di due matrici. ANNO SCOLASTICO 2014/2015 CLASSE 3° IC 27. Sviluppo di un programma che risolve un sistema di “n” equazioni lineari in “n” incognite. 28. Sviluppo di una classe che implementa un insieme di metodi sulle matrici quadrate. 29. Implementazione e collaudo della classe "PoligonoRegolare". 30. Implementazione e collaudo della classe "Poligono". 31. Implementazione e collaudo della classe "Triangolo". 32. Implementazione e collaudo della classe "Data". 33. Lettura, elaborazione e scrittura di file sequenziali in linguaggio Java. 34. Fusione di due file sequenziali ordinati in linguaggio Java. Riferimenti bibliografici: 1. G. Callegarin: "Java, Oggetti e Strutture Dati", CEDAM scuola (De Agostini). 2. M. Tarquini, A. Ligi: "Java mattone dopo mattone".HOEPLI Milano. 3. M. Bertacca, A Guidi: "Introduzione a Java", McGraw-Hill Education Italia. 4. C.Horstmann: "Concetti di informatica e fondamenti di Java", APOGEO. 5. T. Cormen et al: "Introduzione agli algoritmi e strutture dati", Mc Graw Hill, 3a edizione. 6. P. Coppola, S. Mizzaro: "Laboratorio di programmazione in Java", APOGEO. Gli insegnanti: Gli alunni: