Prerequisiti | Obiettivi | Programma |
Materiale didattico | Orario delle lezioni | Ricevimento studenti |
Diario delle lezioni | Modalità d'esame |
Vengono presentati alcuni algoritmi fondamentali per problemi di ordinamento, ricerca e selezione, alcuni problemi numerici, evidenziandone le caratteristiche di efficienza attraverso l'analisi di complessità asintotica.
Vengono descritti i principali metodi di codifica dell'informazione.
Alla fine del corso lo studente sarà in grado di:
Da definire
L'esame consiste nello sviluppo di un progetto in linguaggio Java, su un argomento assegnato dal docente, e in un colloquio. Il progetto può essere realizzato in piccoli gruppi (2-3 persone).
Alternativamente, lo studente può optare per la modalità di esame tradizionale, che prevede il superamento di una prova scritta in sostituzione dello sviluppo del progetto. Nella prova scritta si richiede di scrivere o completare un sorgente Java e/o di rispondere a domande su argomenti teorici.
1 marzo 2007 | |
---|---|
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 Esempi di programmi Java I metodi System.out.print e System.out.println Cenni all'uso di variabili, assegnazioni, strutture di controllo if
e while |
Riferimenti al testo | Unità 1: tutta. |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
5/6 marzo 2007 (laboratorio) | |
---|---|
Argomenti | Descrizione dei pacchetti JRE (Java Runtime Environment) e
SDK (Software Development Kit) Editing di programmi Java con Blocco Note Compilazione ed esecuzione da "Prompt dei comandi" usando gli strumenti javac e java del SDK |
Riferimenti al testo | |
Listati ed esercizi proposti | Esercitazione 1 |
torna all'elenco delle lezioni
7 marzo 2007 | |
---|---|
Argomenti | Tipi primitivi: aritmetici, carattere, boolean Dichiarazione di variabili, variabili final Uso di literal Operatori aritmetici Costruzione di espressioni complesse Precedenza tra operatori Conversioni implicite ed esplicite, operatore cast Cenni all'operatore relazionale di uguaglianza == |
Riferimenti al testo | Unità 4 fino a 4.30 compreso, tranne 4.20 e 4.21 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
12/13 marzo 2007 (laboratorio) | |
---|---|
Argomenti | Analisi e correzione di errori sintattici Metodi della classe java.swing.JOptionPane per
l'input/output: showInputDialog e showMessageDialog Conversione da stringhe attraverso i metodi Integer.parseInt ,
Double.parseDouble ...
|
Riferimenti al testo | |
Listati ed esercizi proposti | Esercitazione 2 |
torna all'elenco delle lezioni
14 marzo 2007 | |
---|---|
Argomenti | Istruzione condizionale if ... else ... If nidificati Istruzione composta { ... } Espressioni booleane complesse: operatori && || ! Operatori di preincremento e postincremento ++ ,
predecremento e postdecremento -- |
Riferimenti al testo | Unità 4 da 4.31 alla fine Unità 5 fino alla 5.15 compresa |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
15 marzo 2007 | |
---|---|
Argomenti | Istruzioni di ciclo: l'istruzione while Uso di variabili boolean per il controllo di cicli |
Riferimenti al testo | Unità 6 fino a 6.22 compresa |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
19/20 marzo 2007 (laboratorio) | |
---|---|
Argomenti | Uso del ciclo while Ricerca di massimo e minimo di un insieme |
Riferimenti al testo | |
Listati ed esercizi proposti | Esercitazione 3 |
torna all'elenco delle lezioni
21 marzo 2007 | |
---|---|
Argomenti | Sviluppo di algoritmi: approccio top-down Istruzione di ciclo for , analogie con istruzione while Istruzione di ciclo do ... while , differenze rispetto
all'istruzione while |
Riferimenti al testo | Unità 6 da 6.23 a 6.48 (comprese) |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
22 marzo 2007 | |
---|---|
Argomenti | Introduzione agli array monodimensionali: dichiarazione,
allocazione ed uso Inizializzazione di array La proprietà .length di arrayInput e output di array Istruzione break; Istruzioni di assegnazione con modifica += -= *= /= %= Ricerca sequenziale in un array disordinato |
Riferimenti al testo | Unità 7 fino a 7.17 (compresa) ed esercizi |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
26/27 marzo 2007 (laboratorio) | |
---|---|
Argomenti | Semplici esercizi su arrays |
Riferimenti al testo | |
Listati ed esercizi proposti | Esercitazione 4 |
torna all'elenco delle lezioni
28 marzo 2007 | |
---|---|
Argomenti | Nomi di array come riferimenti: assegnazione tra array
I metodi |
Riferimenti al testo | Unità 3: da 3.4 a 3.16 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
29 marzo 2007 | |
---|---|
Argomenti | Overloading di metodi Definizione e uso di variabili locali Ambito di visibilità di variabili, mascheramento di variabili Durata delle variabili Parametri array: passaggio per riferimento |
Riferimenti al testo | Unità 3: 3.17 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
2/3 aprile 2007 (laboratorio) | |
---|---|
Argomenti | Definizione e uso di metodi static su array
|
Riferimenti al testo | |
Listati ed esercizi proposti | Esercitazione 5 |
torna all'elenco delle lezioni
4 aprile 2007 | |
---|---|
Argomenti | Concetto di problema, istanza, algoritmo |
Riferimenti al testo | |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
11 aprile 2007 | |
---|---|
Argomenti | Misure di complessità: le notazioni asintotiche O(),
Omega() e Theta() Esempi di classi di funzioni Uso delle notazioni asintotiche per esprimere limitazioni superiori, esatte o inferiori della complessità di algoritmi L'algoritmo di ricerca binaria su array ordinati Analisi della complessità dell'algoritmo di ricerca binaria |
Riferimenti al testo | Cormen, Leiserson, Rivest, pagg. 21-26 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
16/17 aprile 2007 (laboratorio) | |
---|---|
Argomenti | Uso di metodi di oggetti String
|
Riferimenti al testo | |
Listati ed esercizi proposti |
Soluzione alla Esercitazione 6 (da consultare solo dopo aver provato a risolvere il problema) |
torna all'elenco delle lezioni
18 aprile 2007 | |
---|---|
Argomenti | Introduzione alla programmazione a oggetti Principio dell'information hiding Da variabile-tipo a oggetto-classe Variabili membro e metodi membro Privatezza delle variabili membro Definizione della classe
Definizione della classe
|
Riferimenti al testo | Unità 3: da 3.18 a 3.41 (compreso). Molti argomenti saranno ripresi nelle lezioni seguenti |
Listati proposti |
|
Esercizi proposti |
|
torna all'elenco delle lezioni
19 aprile 2007 | |
---|---|
Argomenti | Definizione di una classe Pila Uso del parametro implicito |
Riferimenti al testo | |
Listati proposti | Definizione di una classe
Una versione migliorata è mostrata nella classe
|
torna all'elenco delle lezioni
23/24 aprile 2007 (laboratorio) | |
---|---|
Argomenti | Accesso a file di testo |
Listati ed esercizi proposti | Esercitazione 7: accesso a file di testo. Nella stessa pagina è disponibile una soluzione alla esercitazione |
torna all'elenco delle lezioni
26 aprile 2007 | |
---|---|
Argomenti | Chiamata di metodi Eccezioni: eccezioni controllate e non controllate Gestione delle eccezioni (costrutto Posizionamento della gestione delle eccezioni La classe |
Riferimenti al testo | Unità 9: tutta escluso 9.16, 9.17 e 9.18 |
Esercizi proposti | Modificare il programma fornito con la soluzione della
esercitazione 7, facendo in modo che
venga scritto nel file di output, oltre a numero, somma e media dei valori presenti,
anche il numero di righe che non rappresentano valori numerici corretti. Suggerimento:
gestire l'eccezione Scrivere un programma Java che legge da tastiera una sequenza di interi nel formato xxx;xx;xxxx;...;xxdi cui non si conosce a priori il numero di interi, e stampa il numero di interi, la loro somma e la loro media. Suggerimento: utilizzare la classe StringTokenizer , e riutilizzare la classe Sequenza
definita nella soluzione dell'esercitazione 7
|
torna all'elenco delle lezioni
2 maggio 2007 | |
---|---|
Argomenti | Definizione di sottoclassi, |
Riferimenti al testo | Unità 3: da 3.42 alla fine. |
Esercizi proposti | Definire una sottoclasse della classe Definire una classe |
torna all'elenco delle lezioni
3 maggio 2007 | |
---|---|
Argomenti | Esercitazione sulla definizione ed uso di classi. Overloading di costruttori: chiamata di un altro costruttore attraverso
Soluzione dell'esercizio proposto nella lezione precedente:
Versioni migliorate:
|
torna all'elenco delle lezioni
7/8 maggio 2007 (laboratorio) | |
---|---|
Argomenti | Classi geometriche |
Listati ed esercizi proposti |
torna all'elenco delle lezioni
9 maggio 2007 | |
---|---|
Argomenti | Introduzione alla ricorsione. Esempio di algoritmo ricorsivo per il calcolo del fattoriale. L'algoritmo di Euclide per il calcolo del Massimo Comun Divisore
Analisi di complessità dell'algoritmo MCD di Euclide. Introduzione al Merge Sort Fusione di due array ordinati in un array ordinato. |
torna all'elenco delle lezioni
10 maggio 2007 | |
---|---|
Argomenti | L'algoritmo Merge Sort
Analisi di complessità del Merge Sort. |
torna all'elenco delle lezioni
14/15 maggio 2007 (laboratorio) | |
---|---|
Argomenti | Introduzione agli applet |
Listati ed esercizi proposti | Esercitazione 9: Definizione di un applet che visualizza oggetti grafici |
torna all'elenco delle lezioni
16 maggio 2007 | |
---|---|
Argomenti | Analisi della complessità computazionale di algoritmi ricorsivi. Soluzione di equazioni di ricorrenza attraverso il teorema principale (senza dimostrazione) Studio della complessità dell'algoritmo di ricerca binaria attraverso il teorema principale |
Riferimenti al testo | Cormen, Leiserson, Rivest (pagine indicate) |
torna all'elenco delle lezioni
17 maggio 2007 | |
---|---|
Argomenti | L'algoritmo di ordinamento quick sort Complessità computazionale del quick sort nel caso migliore e nel caso peggiore |
Riferimenti al testo | Cormen, Leiserson, Rivest (pagine indicate) |
torna all'elenco delle lezioni
21/22 maggio 2007 (laboratorio) | |
---|---|
Argomenti | Introduzione alla programmazione a eventi: intercettare click e movimenti del mouse in un applet |
Listati ed esercizi proposti | Esercitazione 10: Definizione di un applet che intercetta click e movimenti del mouse |