Corso di Fondamenti di Programmazione
(Statistica per le Tecnologie dell'Informazione)
Docente: Paolo Franciosa
anno accademico 2001-2002
Prerequisiti | Contenuti | Programma |
Materiale Didattico | Diario delle Lezioni | Ricevimento Studenti |
Vengono inoltre presentati alcuni algoritmi fondamentali per problemi di ordinamento, ricerca e selezione, evidenziandone le caratteristiche di efficienza.
Alla fine del corso lo studente sarà in grado di scrivere, compilare ed eseguire semplici programmi nel linguaggio Java, consultare la documentazione sulle classi esistenti, riutilizzare classi predefinite. Lo studente sarà in grado di progettare semplici algoritmi e valutarne la complessità computazionale. algoritmi.
Testi consigliati
|
|
Strumenti di programmazione
|
|
Altri link rilevanti
|
Data | 5-3-02 (lezione) |
---|---|
Argomenti |
Introduzione al corso Origini del linguaggio Java Richiami sulla compilazione/interpretazione di un programma in linguaggio evoluto Il ciclo di compilazione Java La Java Virtual Machine Esempio di programma Java I metodi System.out.print e System.out.println
|
Riferimenti al testo | Capitolo 1, fino a 1.10 compreso
Errori comuni 1.1 Errori comuni 1.2 |
Listati | Saluti.java |
Esercizi proposti | AlberoDiNatale.java |
Data | 8 marzo 2002 (lezione) |
---|---|
Argomenti |
Concetto di variabile Tipi di variabili: intere, virgola mobile (reali), carattere, boolean Definizione e inizializzazione di variabili Assegnazione Espressioni aritmetiche Overflow Visualizzazione del contenuto di variabili |
Riferimenti al testo | 2.1, 2.2, 2.5
Errori comuni 2.1 Suggerimenti per la qualità 2.1 Argomenti avanzati 2.1 (cenni) Argomenti avanzati 2.2 (cenni) Argomenti avanzati 2.3 Errori comuni 2.3 |
Listati | Variabili.java |
Esercizi proposti | Distanza.java
Sconti.java |
Data | 12 marzo 2002 (lezione) |
---|---|
Argomenti |
Conversioni esplicite (cast) Concetto di oggetto Definizione e istanziazione di oggetti Es. la classe Rectangle Costruttori della classe Rectangle Metodo contains Metodo intersection Assegnazione tra oggetti (copia riferimento) Visualizzazione di oggetti e conversione a stringa( System.out.println )
|
Riferimenti al testo | Errori comuni 2.1
1.11, 1.12, 2.3 |
Listati | Rettangoli.java |
Esercizi proposti |
Data | 14 marzo 2002 (laboratorio) |
---|---|
Argomenti |
Editing di un sorgente Java con Blocco Note (Saluti.java )Compilazione da DOS (comando javac )Esecuzione di bytecode da DOS (comando java )Descrizione dell'ambiente Java: SDK e JRE Impostazione variabili DOS PATH e JAVA_HOME Esempi di errori sintattici Importazione di classi (comando import )Consultazione della documentazione sulle classi di SDK 1.4.0 |
Riferimenti al testo | |
Listati | |
Esercizi proposti |
Data | 15 marzo 2002 (lezione) |
---|---|
Argomenti |
Metodi statici e metodi membro
La classe String , costanti stringa
Metodi length , substring , concatenazione, toUpperCase , toLowerCase
I metodi statici Integer.parseInt , Float.parseFloat , Double.parseDouble
Input attraverso la classe ConsoleReader
|
Riferimenti al testo | 2.6.1, 2.6.2, 2.6.3, 2.6.4 (esclusa la classe NumberFormat ), 2.7
|
Listati | Stringhe.java
UsaConsoleReader.java ConsoleReader.java |
Esercizi proposti | Vedere testo: P2.3, P2.5, P2.8, P2.12, P2.19 |
Data | 19 marzo 2002 (lezione) |
---|---|
Argomenti |
L'istruzione if ... else
Operatori di confronto Test di uguaglianza tra oggetti: differenza tra == e metodo equals
if in cascata e in sequenza
dangling else
istruzione switch
|
Riferimenti al testo | Capitolo 5 (tutto tranne Argomenti avanzati 5.1, Argomenti avanzati 5.2 e Suggerimenti per la qualità 5.2) |
Listati | Ordina3.java |
Esercizi proposti | Vedere testo: P5.1, P5.2, P5.4, P5.8, P5.9, P5.12, P5.16 |
Data | 21 marzo 2002 (laboratorio) |
---|---|
Argomenti |
Introduzione all'uso dell'ambiente JCreator LE
Editing di sorgenti Java Compilazione, esame dei messaggi di diagnostica Interpretazione e run di classi |
Riferimenti al testo | |
Listati | |
Esercizi proposti |
Data | 22 marzo 2002 (lezione) |
---|---|
Argomenti |
Il ciclo while
Esempi di programmi con cicli Cicli infiniti |
Riferimenti al testo | 6.1, Errori comuni 6.1, Errori comuni 6.2, Suggerimenti per la qualità 6.2 |
Listati | |
Esercizi proposti | RaddoppioRobusto.java Provare ad eseguire questo programma con capitali
iniziali molto piccoli (provare con importi variabili da 5 a 1000) vengono fornite risposte diverse. Spiegare perché.
|
La lezione del 26 marzo 2002 è stata rinviata a causa di interruzione linea ferroviaria |
Data | 4 aprile 2002 (laboratorio) |
---|---|
Argomenti | Ambiente JCreator LE: Definizione delle opzioni di compilazione e della variabile classpath |
Riferimenti al testo | Suggerimenti per la qualità 2.2, |
Listati | |
Esercizi proposti | Verifica se un numero è perfetto |
Data | 5 aprile 2002 (lezione) |
---|---|
Argomenti |
I cicli for e do
Definizione di variabili all'interno di blocchi Uso del break nei cicli
La legge di De Morgan Uso della classe Random per generare sequenze pseudocasuali
Variabili final
|
Riferimenti al testo | 6.2, Suggerimenti per la qualità 6.1, 6.3, Errori comuni 6.2, Errori comuni 6.3, Errori comuni 6.4, 6.5.1, Argomenti avanzati 6.2, Argomenti avanzati 6.3, 6.5.2, 6.6 |
Listati | |
Esercizi proposti |
|
Data | 9 aprile 2002 (lezione) |
---|---|
Argomenti |
Esempi di programmi con cicli nidificati
Arrays: definizione, riferimento agli elementi |
Riferimenti al testo | 11.1, Errori comuni 11.1, Errori comuni 11.2, Argomenti avanzati 11.1, 11.3, 11.3.1, 11.3.2 |
Listati | |
Esercizi proposti |
Data | 11 aprile 2002 (laboratorio) |
---|---|
Argomenti | Esercizi di programmazione in Java:
I metodi showMessageDialog e showInputDialog della classe javax.swing.JOptionPane
Consultazione della documentazione Java |
Riferimenti al testo | Documentazione Java |
Listati | |
Esercizi proposti | Genera coppie di interi casuali in [0..99] e propone all'utente di calcolare somma e prodotto della coppia. Dopo 20 proposte visualizza le percentuali di successo |
Data | 12 aprile 2002 (lezione) |
---|---|
Argomenti |
Copia di arrays: copia riferimento vs. copia elementi attraverso un ciclo
La variabile istanza di array .length
Test di uguaglianza tra arrays: == tra riferimenti vs. ciclo
con == tra elementi
valutazione "lazy" (pigra) di condizioni in && e in ||
Arrays sovradimensionati Intersezione tra arrays non ordinati, sua complessità Ricerca sequenziale Cenni alla ricerca binaria |
Riferimenti al testo | 11.1.2 (escluso System.arraycopy() ), 11.1.3 (escluso System.arraycopy() ), 11.3.1, 11.3.2
|
Listati | |
Esercizi proposti |
La lezione del 16 aprile 2002 è stata annullata a causa dello sciopero generale |
Data | 18 aprile 2002 (laboratorio) |
---|---|
Argomenti |
La classe StringTokenizer :
costruttori, metodi countTokens() , hasMoreTokens() , nextToken()
Definizione ed uso di array bidimensionali |
Riferimenti al testo | 6.5.3, 11.7 |
Listati | |
Esercizi proposti |
Data | 19 aprile 2002 (lezione) |
---|---|
Argomenti |
Ricerca sequenziale su array ordinati e non ordinati
Ricerca binaria in array ordinati Complessità dell'algoritmo di ricerca binaria L'algoritmo bubble sort, versioni migliorate con test di ordinamento e scansioni di lunghezza decrescente Scambio di due variabili |
Riferimenti al testo | 15.6, 15.7, per l'algoritmo bubble sort si rimanda al listato riportato più avanti |
Listati | |
Esercizi proposti |
Data | 23 aprile 2002 (lezione) |
---|---|
Argomenti |
Definizione di classi
Metodi e variabili istanza Accesso public e private
Costruttori Uso di classi: istanziazione di oggetti, invocazione di metodi Esempi di classi: Contatore e MultiInsieme
|
Riferimenti al testo | 3.1, 3.2, 3.3, 3.4, 3.5, Errori comuni 3.1, 3.6, Errori comuni 3.5 |
Listati |
|
Esercizi proposti |
Data | 26 aprile 2002 (lezione) |
---|---|
Argomenti |
Ereditarietà: definizione di sottoclassi, costrutto extends
Variabili istanza e metodi della sottoclasse Sovrascrittura di metodi della superclasse Costruttore della sottoclasse, il costruttore super
Invocazione di metodi sovrascritti dai metodi della sottoclasse con il costrutto super.nomeMetodo accesso alle variabili della superclasse: specifica di accesso protected
|
Riferimenti al testo | 9.1, Errori comuni 9.1, 9.4, 9.5, 9.8, Argomenti avanzati 9.4 |
Listati | |
Esercizi proposti |
Data | 30 aprile 2002 (lezione) |
---|---|
Argomenti |
Categorie di applicazioni Java: applicazioni da console, applet, applicazioni grafiche
Applet: il visualizzatore appletviewer Definizione di applet come sottoclasse di javax.swing.JApplet
Sovrascrittura dei metodi init e paint
Uso della classe grafica java.awt.Graphics2D : i metodi draw , fill , setColor
La classe Color
|
Riferimenti al testo | 4.1, 4.2 (prerequisito), 4.3, 4.4, 4.5, 4.8 |
Listati | |
Esercizi proposti |
|
Data | 2 maggio 2002 (laboratorio) |
---|---|
Argomenti |
Esercitazioni sulla definizione di sottoclassi con metodi statici
Esercitazioni sulla scrittura di applet |
Riferimenti al testo | |
Listati | |
Esercizi proposti |
Data | 3 maggio 2002 (lezione) |
---|---|
Argomenti |
Overloading di metodi e costruttori
Costrutto try catch
Cenni sulle classi Line2D.Double , Rectangle2D.Double , Arc2D.Double , loro uso per la crazione di grafici in un applet
|
Riferimenti al testo | |
Listati | |
Esercizi proposti |
|
Data | 7 maggio 2002 (lezione) |
---|---|
Argomenti |
Passaggio di parametri.
Effetti collaterali nel passaggio di riferimenti a oggetti ed array Introduzione alla ricorsione Metodo ricorsivo per il calcolo del fattoriale Algoritmo Merge Sort |
Riferimenti al testo | |
Listati | |
Esercizi proposti |
Data | 9 maggio 2002 (laboratorio) |
---|---|
Argomenti |
Esercitazioni di programmazione in Java
Implementazione dei metodi init e paint
I metodi getHeight() e getWidth()
|
Riferimenti al testo | |
Listati | |
Esercizi proposti |
Data | 14 maggio 2002 (lezione) |
---|---|
Argomenti |
Introduzione alla complessità computazionale
Concetto di complessità di un algoritmo. Misura della dimensione dell'input Complessità di un algoritmo Notazioni asintotiche O, teta, omega Analisi dell'algoritmo merge sort osservando l'albero di ricorsione |
Riferimenti al testo | Cormen, Leiserson, Rivest[pagg. 21-26] |
Listati | |
Esercizi proposti | Sperimentazione degli algoritmi bubble sort e merge sort: conteggio dei confronti eseguiti dai due algoritmi per ordinare array pseudocasuali di dimensione crescente |
Data | 16 maggio 2002 (laboratorio) |
---|---|
Argomenti |
Istruzione di selezione multipla switch
Esercitazioni di programmazione in Java |
Riferimenti al testo | |
Listati | |
Esercizi proposti |
Data | 17 maggio 2002 (lezione) |
---|---|
Argomenti |
Riepilogo sul concetto di visibilità di variabili e metodi.
Variabili locali, parametri, istanza e static Visibilità di metodi istanza e static Concetto di vita di variabili e oggetti Il garbage collector di JRE |
Riferimenti al testo | |
Listati | |
Esercizi proposti |
Data | 21 maggio 2002 (lezione) |
---|---|
Argomenti |
Analisi di complessità di algoritmi ricorsivi
Equazioni di ricorrenza e loro soluzione tramite il teorema principale Algoritmi di base su array bidimensionali Prodotto di matrici |
Riferimenti al testo | |
Listati | |
Esercizi proposti |
|
Data | 23 maggio 2002 (laboratorio) |
---|---|
Argomenti | Esercitazioni di programmazione in Java |
Riferimenti al testo | |
Listati | |
Esercizi proposti |
|
Data | 24 maggio 2002 (laboratorio) |
---|---|
Argomenti | Esercitazioni di programmazione in Java |
Riferimenti al testo | |
Listati | |
Esercizi proposti |