Paolo Boldi

PROGETTO: CARTE (18 Jan 2005)

Appelli di gennaio, febbraio e aprile 2005

Carte

1 - Descrizione

Il progetto consiste nel realizzare un programma per gestire l'estrazione di carte da gioco da un mazzo, con conseguente valutazione del loro valore in una serie di giochi.

2 - Le classi da realizzare

E richiesto di realizzare in JAVA il programma descritto nella sezione precedente utilizzando le seguenti classi:

A parte quanto espressamente richiesto, è lasciata piena libertà sull'implementazione delle singole classi e sull'eventuale introduzione di altre classi, a patto di seguire le regole del paradigma ad oggetti ed i principi di buona programmazione. Si suggerisce di porre particolare attenzione alla scelta dei modificatori relativi a variabili d'istanza e metodi, nonchè alla dichiarazione delle eccezioni che possono venire lanciate dai vari metodi.

Non è richiesto l'utilizzo di particolari modalità grafiche di visualizzazione: è sufficiente una qualunque modalità di visualizzazione basata sulluso dei caratteri.

E invece espressamente richiesto di non utilizzare package non standard di Java (si possono quindi utilizzare java.util, java.io e così via), con l'unica eccezione package prog.io incluso nel libro di testo per gestire l'input da tastiera e l'output a video.

3 - Mescolare il mazzo di carte

Per mescolare il mazzo di carte è possibile ripetere per un certo numero di volte la seguente operazione elementare: scelte due carte a caso all'interno del mazzo, scambiare le loro posizioni. Il seguente algoritmo descrive questa procedura in modo più dettagliato:

Per quanto riguarda le estrazioni a caso, il metodo Math.random() ritorna un valore di tipo double scelto in modo pseudocasuale nell'intervallo tra 0 e 1. Pertanto, fissato un generico valore positivo a, l'espressione Math.random()*a ritornerà un valore di tipo double scelto in modo pseudocasuale tra 0 e a.

E' possibile utilizzare altri algoritmi per mescolare il mazzo di carte, a patto che

4 - Modalità di consegna

Il progetto può essere svolto al massimo da tre persone che intendono sostenere l'intero esame di Informatica Generale e Laboratorio negli appelli di Gennaio, Febbraio o Aprile 2005, e deve essere consegnato entro mezzanotte di mercoledì 9 febbraio 2005, utilizzando il sito di sottoposizione delle esercitazioni (all'indirizzo http://infogen.dsi.unimi.it). Per poter effettuare la sottoposizione è necessario autenticarsi utilizzando un nome di login e una password. Nella pagina principale del sito stesso è spiegato come ottenere questi dati. Nel caso il progetto venga svolto da più di una persona, dovrà essere fatta in ogni caso una sola sottoposizione, indicando chiaramente in un commento all'inizio dei sorgenti consegnati nome, cognome e matricola dei vari componenti del gruppo.

Dovranno essere consegnati tutti i sorgenti JAVA che permettano al programma di essere compilato ed eseguito correttamente

altri tipi di sottoposizioni verranno automaticamente rifiutate dal sito.

All'archivio dovrà anche essere accluso un breve documento in formato txt o rtf in cui

Il sistema rifiuterà automaticamente le sottoposizioni i cui sorgenti contengano errori rilevati in fase di compilazione.

E inoltre richiesto di consegnare, entro venerdì 11 febbraio 2005, una copia cartacea della stampa del codice sorgente prodotto in portineria del DSI o nella casella di posta del docente, indicando chiaramente nome, cognome e numero di matricola di tutti i componenti del gruppo, nonchè il turno e il docente di riferimento.

6 - Valutazione

Durante la prova orale con i singoli studenti saranno discusse le modalità implementative adottate e la padronanza di alcuni dei concetti necessari per preparare il progetto e/o spiegati a lezione. La valutazione del progetto sarà fatta in base alla

Dario Malchiodi
Dipartimento di Scienze dell'Informazione
Via Comelico 39/41 20135 Milano
Stanza T304 - Tel. +39 02 503 16338
eMail malchiodi@dsi.unimi.it
Walter Cazzola
Dipartimento di Informatica e Comunicazione
Via Comelico 39/41 20135 Milano
Stanza S233 - Tel. +39 0103536637
eMail cazzola@disi.unige.it