Programmazione
M. A. Alberti
Corso di Laurea in Informatica
Università degli Studi di Milano
A.A. 2005/06
Generalità |
Calendario |
Materiale didattico |
Esame e valutazioni |
Link utili |
Bibliografia |
Laboratorio
Il corso di Programmazione è di 12 crediti e si svolge nel 1 semestre.
È accompagnato dal corso di Laboratorio di programmazione, di
6 crediti. L'esame dei due corsi è unico con un unico voto finale.
Il corso ha l'obiettivo di introdurre la programmazione secondo il paradigma
orientato agli oggetti (object-oriented).
In particolare verranno affrontati gli argomenti:
- la pianificazione per la risoluzione di problemi (problem solving)
- il disegno e l'implementazione di programmi
- i concetti della programmazione a oggetti: oggetti, classi, interfacce,
ereditarietà e polimorfismo
- il linguaggio Java
Il programma più dettagliato si trova alla
pagina generale dei corsi di programmazione.
Le lezioni si svolgeranno secondo il
calendario generale del corso;
iniziano lunedì 3 ottobre 2005 e terminano venerdì 20 gennaio 2006.
Le lezioni si svolgono nell'aula V3 della Didatteca di Via Venezian.
Orari e aule.
Di norma il corso di Programmazione si tiene il mercoledì
e il venerdì e il corso di Laboratorio di programmazione il lunedì dalle ore 10.30 alle ore 13.15.
Potranno esserci cambiamenti di cui gli studenti saranno avvisati.
Durante l'anno nel corso di Programmazione verrà richiesto di svolgere
3 compitini e nel corso di Laboratorio di programmazione 3 esercitazioni/progetti,
secondo il seguente calendario:
- 1 compitino: 9 novembre 2005.
- 1 esercitazione: 14 novembre 2005.
- 2 compitino: 14 dicembre 2005.
- 2 esercitazione: 19 dicembre 2005
- 3 compitino: 25 gennaio 2006. In aula 405 del Settore Didattico di Via Celoria. modulo d'iscrizione.
- 3 esercitazione/progetto: pubblicazione il 25 gennaio e consegna il 31 gennaio 2006
Per poter sostenere i compitini e gli esercizi di Laboratorio in aula
occorre iscriversi con gli appositi moduli d'iscrizione resi disponibili
su questa pagina web o su quella corrispondente del Laboratorio entro
le ore 19 di due giorni precedenti alla data
fissata. Chi non risulta iscritto non può sostenere la prova.
Le date potranno subire cambiamenti in funzione dell'andamento del corso,
ma lo spostamento sarà minimo. I compitini e le esercitazioni si
svolgono in un aula da stabilirsi della Didatteca di Via Venezian
nell'orario di lezione.
I risultati dei compitini, come ogni altra informazione circa
eventuali spostamenti di date, saranno resi noti su questa pagina web.
Il testo del III progetto verrà reso noto il giorno 210gennaio 2006 tramite la pagina web del
Laboratorio di programmazione, turno I.
Anche la consegna dei progetti avverrà tramite web, e i risultati saranno resi
noti allo stesso indirizzo.
I lucidi discussi a lezione:
- 3 ottobre: introduzione al corso.
pdf
ppt.
- 5 ottobre: evoluzione del computer.
pdf
ppt.
Introduzione al concetto di algoritmo. Algoritmo di Euclide e sua implementazione.
pdf
ppt.
- 12 ottobre: i linguaggi di programmazione e loro rappresentazione: grammatiche, BNF, tavole sintattiche
pdf
- 14 ottobre: evoluzione dei linguaggi di programmazione.
pdf.
Esempi di programmi in linguaggi diversi: codice
- 19 ottobre: la programmazione strutturata.
pdf.
Il paradigma di programmazione a oggetti.
pdf.
- 21 ottobre: classi e oggetti, protocollo delle classi, invocare metodi.
pdf.
- 24 ottobre: Oggetti, riferimenti, variabili, istruzione assegnamento.
Esempi:
Conto_alla_rovescia,
TestRettangolo,
Geometry,
PianoKeys,
TestRettangolo_2,
Pappagallo,
Saluti e
TestSaluti,
Saluti_2 e
TestSaluti_2.
- 28 ottobre: la classe
String
, prototipi e segnature, overloading dei metodi. Istruzione di selezione if
, if-else
.
Esempi:
MinOfThree
- 2 novembre: tipi di dati.
pdf.
Definire e commentare classi (java docs).
Esempi:
Overflow.java e Precisione.java
- 4 novembre: operatori in Java.
pdf e
tabella delle precedenze.
Numeri pseudo-casuali.
Esempi:
RandomNumbers,
Dado e
TestDado
- 9 novembre: I compitino
- 11 novembre: correzione del I compitino. Istruzioni di selezione, istruzione
switch
.
pdf
Esempi:
Conta_giorni.java.
- 16 novembre: istruzioni di ripetizione
while
, for
. Cicli innestati.
Esempi:
Average.java e
Average2.java,
Palindrome.java.
PalindromeTester.java.
- 18 novembre: istruzione di ripetizione
do-while
. Modelli di cicli per gestire input.
Istruzioni break
e continue
.
pdf.
Esempi:
ReverseNumber.java,
TestInput.java,
TestInput2.java,
TestInput3.java con
DataSet.java,
BreakContinue.java.
- 21 novembre: la classe
StringTokenizer
, classi, campi d'istanza e metodi, flusso di controllo dei metodi.
Esempi:
PigLatin.java con
PigLatinTranslator.java.
ContaMoneta.java,
TestMoneta.java.
- 23 novembre: incapsulamento dei dati e modificatori di visibilità, passaggio di valori ai parametri.
pdf.
Esempi:
TestParametriSemplici.java,
TestParametri.java con
PassaggioParametri.java e
Num.java.
TestMembroStatico.java con
Automobili.java.
- 30 novembre: oggetti strutturati, overloading e promozione dei parametri, costruttori di default.
Esempi:
ContoBancario.java e
TestContoBancario.java,
Frazione.java e
TestFrazione.java,
PromOverloading.java,
RidOverloading.java.
- 2 dicembre: invocazioni di costruttori da costruttori, metodi statici, classi annidate, ordine di inizializzazione di campi di istanza e di campi statici.
pdf.
Esempi:
Fiori.java e
TestFiori.java,
MyClass.java e
CountInstances.java,
OrdineInizializzazione.java e
InizializzazioneStatica.java.
- 14 dicembre: II compitino
- 16 dicembre: interfacce Java. pdf
Esempi:
Cane.java,
Filosofo.java, che implementano l'interfaccia
Parlante.java e la classe
Parlare.java che le usa, implementando riferimenti polimorfici.
- 21 dicembre: gerarchia di classi. pdf
- 11 gennaio: sovrascrittura di metodi. Chiamata al costruttore della superclasse.pdf
Esempi:
Massima.java classe base,
Consiglio.java classe specializzata,
Messaggi.java driver.
Libro.java classe base,
Dizionario.java sottoclasse,
TestDizionario.java driver.
Studente.java classe base,
StudenteDott.java sottoclasse,
Accademia.java driver.
- 13 gennaio: decomposizione di metodi e ereditarietà; classi astratte; polimorfismo.
Esempi:
Figure.java classe base,
Triangle.java,
Box.java e
Diamond.java sottoclassi,
Driver.java driver.
Personale.java classe astratta,
Volontario.java,
Dipendente.java,
Impiegato.java e
Giornaliero.java sottoclassi,
Staff.java le usa tutte per inizializzare un array,
Istituzione.java driver.
Tavola.java composizione di classi e gerarchia.
Cibo.java classe base
Pizza.java sottoclasse
Calorie.java, driver.
- 18 gennaio 2006: ricorsione.
Esempi:
Doppio.java, usata solo per parlare dello stack delle chiamate dei metodi.
NumCifre.java, calcolo del numero delle cifre di un numero sia con metodo iterativo sia ricorsivo.
Fattoriale.java,
Potenza.java,
Pal.java.
- 20 gennaio 2006: eccezioni in Java. pdf.
ProvaCoda.java, driver.
Coda.java, struttura dati che realizza una coda.
CodaVuotaException.java, eccezione sollevata da metodi della struttura dati Coda.
- 23 gennaio 2006: strutture dati in Java. pdf.
Esempi:
Stack_array, implementazione statica di uno stack.
Stack_lista, implementazione dinamica di uno stack.
Postfissa.java, uso di una struttura stack per risolvere un'espressione aritmetica in formato postfisso.
Postfissa_e.java, uso di una struttura stack per risolvere un'espressione aritmetica in formato postfisso, che solleva l'eccezione PostfissaException.java..
- 25 gennaio: III compitino.
- FINE CORSO: buon lavoro a voi!!
Materiale illustrativo ed esercizi:
- Tabella precedenze operatori (html)
- I compitino 9 novembre 2005,
risposte e soluzioni:
TestBool,
TestCiclo,
TestOperatori,
TestStringhe,
TestVendemmia e
Vendemmia.
- II compitino 14 dicembre 2005,
risposte e soluzioni:
Robot e
TestRobot,
Automobile,
ArrayStringhe,
EspressioneBool,
Istruzioni,
InputInArray.
- III compitino 25 gennaio 2006,
risposte e soluzioni:
Vecchia,
Test,
Ackermann,
Potenza,
Arte e
Disegno,
Palindrome con
Stack e
EmptyStackException.
- I appello 8 febbraio 2006,
risposte e soluzioni:
Padre,
A,
Fibonacci,
Parole,
StringArray,
DoWhile.
- II appello 7 aprile 2006,
risposte e soluzioni.
- III appello 15 giugno 2006,
risposte e soluzioni.
- IV appello 12 luglio 2006,
risposte e soluzioni.
- V appello 15 settembre 2006,
risposte e soluzioni.
- VI appello 25 gennaio 2007,
risposte e soluzioni.
Software ed esempi
Per eseguire gli esempi discussi a lezione occorre dotarsi del pacchetto
software
per la gestione dell'input/output associato ai libri di testo dello scorso e di quest'anno. Entrambi i pacchetti forniscono un'astrazione
che nasconde i dettagli tecnici della gestione dell'input/output di Java
facilitando i primi programmi.
I metodi per la gestione dell'input/output dello scorso anno sono
contenuti nella directory Keyboard e sono documenati in la classe Keyboard.
I metodi per la gestione dell'input/output forniti dal libro di quest'anno
sono contenuti nel pacchetto prog.io
e documentati alla pagina.
Il modo più semplice per aggiungere le librerie al vostro ambiente java è quello di:
- scaricare il file corsoAlberti.jar
- salvarlo nella directory specificata dal cammino \jdk\jre\lib\ext\
che inizia nella directory dove avete il Java Development Kit.
Questa cartella è una di quelle in cui il compilatore e
l'interprete Java, durante la traduzione ed esecuzione dei programmi, cercano
le classi delle librerie importate.
- per usare la libreria occorre aggiungere nei vostri programmi
l'istruzione:
import prog.io.*
Trovate diversi esempi sviluppati in classe.
L'esame consiste in una prova scritta, in una prova orale e in un progetto.
3 compitini con esito positivo danno luogo all'esonero dallo scritto.
3 progetti con esito positivo danno luogo all'esonero dal progetto finale.
È assolutamente vietato partecipare agli appelli di programmazione
di due turni differenti. I docenti si riservano di prendere
provvedimenti nel caso ciò accada.
Esiti dei compitini e esoneri
REGISTRAZIONE VOTO
Gli studenti che non devono o non intendono sostenere l'esame orale devono presentarsi per la registrazione del voto con il libretto universitario, il giorno 14 febbraio dalle 10.30 alle 13.00 e dalle 15.00 alle 17.00 nello studio della Prof.ssa Alberti (stanza 231) in Via Comelico 39, II piano. Dopo questa data, sarà possibile registare il voto solo durante il periodo degli esami orali dell'appello di febbraio. Quindi il voto si intende non accettato e gli studenti dovranno rifare la prova scritta ed il progetto in uno degli appelli successivi a quello di febbraio.
Appelli d'esame
Chi non è stato esonerato dalla prova scritta
dovrà sostenere la prova in una delle date sotto indicate:
Si ricorda che per sostenere l'esame in uno degli appelli è
necessario
iscriversi presso i terminali SIFA,
nei tempi e nei modi stabiliti.
FAQ sull'esame
- Domanda 1.
- Si può fare lo scritto in un appello e il progetto in uno diverso?
- Risposta 1.
- Se si supera la prova scritta in un appello si può decidere di preparare il
progetto nell'appello successivo. Se l'esito del progetto fosse negativo,
all'appello successivo va ridato anche lo scritto.
La stessa regola è applicata anche al progetto: la prova positiva vale anche
per l'appello successivo.
- Domanda 2.
- Come si viene esonerati dall'orale?
- Risposta 2.
- Se si è esonerati dalla prova scritta e dal progetto allora viene
proposto un voto e si può essere esonerati dall'orale. I voti proposti
verranno pubblicati su questa pagina. Il voto proposto potrà
essere registrato sul libretto. È sempre possibile presentarsi all'esame
orale per migliorare la votazione.
Inutile dire che potrebbe anche peggiorare la votazione
se si verifica che l'esonero non è dovuto a meriti propri.
- Domanda 3.
- Se si è esonerati da scritto, progetto e va bene la votazione finale
come proposto quando si registra il voto sul libretto?
- Risposta 3.
- Se si decide di farsi registrare il voto proposto, ci si deve presentare
durante una delle date in cui si svolgono gli orali dei due appelli di febbraio e aprile.
Passato l'appello di aprile non è possibile farsi registare il voto
dell'esonero totale.
- Domanda 4.
- Per quanti appelli valgono gli esoneri dallo scritto o dal progetto?
- Risposta 4.
- Gli esoneri valgono per l'appello di febbraio e aprile, poi
decadono. Quindi chi è stato esonerato da una prova, sia scritto o
progetto, può concentrarsi su quella che deve ancora superare
nell'appello in corso e nel successivo. La stessa regola varrà
successivamente per chi, ad esempio all'appello di giugno supera una
delle due prove ma non entrambe: quella che è stata superata varrà
anche per l'appello successivo, di luglio nell'esempio ma non per
quello di settembre.
- Domanda 5.
- Quando si deve sostenere l'esame orale?
- Risposta 5.
- L'esame orale può essere sostenuto solo quando le due prove,
scritto e progetto, sono positive, non prima.
- Deroghe
- A giudizio della Commissione d'esame ci potranno talora essere
deroghe alle regole sopra esposte.
WebCounter
segnala
accessi a queste pagine dal 18 novembre 2005
ultima modifica: 24 luglio 2006, Maria A. Alberti