Regole e Gruppi

Gli elaborati possono essere svolti singolarmente o in gruppi di 2 persone. In via eccezionale, potranno essere concordati con il docente anche eventuali gruppi di 3 persone (sarà richiesta un'integrazione rispetto a quanto specificato in questa pagina). Si consiglia di lavorare in gruppi di due persone. E' previsto che lo stesso gruppo lavori sia sul progetto in C che su quello in PHP.

L'esame si svolgerà in ogni caso singolarmente.

La creazione di un gruppo (anche composto da una persona) va comunicata a sassi@dti.unimi.it (SOLO una mail per gruppo). Si prega di includere nella mail: Nome, Cognome e Matricola di ciascuno dei partecipanti. Inoltre indicare quale elaborato, sia C che PHP, intendete svolgere.

Comunicazioni riguardanti le consegne e l'esame avverranno anche mediante posta elettronica e pubblicazione di avvisi sulla pagina comunicazioni.html.

Tracce elaborati C

CONSIDERAZIONI GENERALI

Programma Gestione Volontari

Sviluppare per una associazione di volontariato un programma che permetta di gestire l'archivio dei volontari. L'associazione si occupa di presidiare quotidianamente una piccola riserva naturale. I volontari ricevono i visitatori e li accompagnano nella vista dell'erbario; i turni giornalieri sono due, mattina e pomeriggio.

Per ogni volontario l'associazione vuole avere a disposizione:

Il programma deve permettere:

Prevedere un numero massimo di volontari (NMAXVOL) configurabile tramite una direttiva #define. L'associazione suppone che 100 sia un numero ragionevole per il momento.

Forza 4

Forza 4 è un gioco in cui due giocatori infilano a turno pedine colorate in una scacchiera verticale di 7 colonne per 6 righe:

 /---------------------------\
6|   |   |   |   |   |   |   |
 |---|---|---|---|---|---|---|
5|   |   |   |   |   |   |   |
 |---|---|---|---|---|---|---|
4|   |   |   |   | # |   |   |
 |---|---|---|---|---|---|---|
3|   |   |   | # | o |   |   |
 |---|---|---|---|---|---|---|
2|   |   | # | # | o |   |   |
 |---|---|---|---|---|---|---|
1|   | # | o | # | o | o |   |
 \---------------------------/
   A   B   C   D   E   F   G

Ciascun giocatore ha a disposizione 21 pedine e vince il giocatore che per primo ne riesce ad allineare 4 (in orizzontale, verticale o nella direzione diagonale). Le pedine vengono infilate dall'alto e cadono nella prima posizione libera. L'elaborato consiste nel preparare un programma in C che permetta di giocare a forza 4 contro il computer (sembra difficile ma non lo è).

Il programma deve iniziare chiedendo all'utente se vuole iniziare per primo. L'utente specifica la mossa indicando la colonna in cui vuole lasciare cadere la pedina (il programma calcolerà la riga opportuna).

Dopo ogni mossa dell'utente il programma stampa la scacchiera, quindi decide la mossa del computer e ristampa la saccchiera con aggiunta la nuova pedina. La mossa del computer (la colonna) viene indicata sotto la scacchiera.

La logica secondo la quale il computer sceglie la mossa è la parte centrale del programma. Per quanto riguarda l'elaborato le regole da implementare sono:

  1. quando il computer apre la partita, sceglie la colonna centrale (d) con probabilità 0.5;
  2. il programma deve evitare, per quanto possibile, che l'avversario allinei 4 pedine (strategia di difesa);
  3. preferisce le colonne centrali a quelle laterali (strategia posizionale)
  4. prima di fare una mossa, prende in considerazione tutte le possibili mosse dell'avversario e decide di conseguenza (strategia d'attacco a 2 livelli).

Una schermata tipo deve essere simile a:

Pedine nella scacchiera: 5

'o'=umano;        '#'=computer

 /---------------------------\
6|   |   |   |   |   |   |   |
 |---|---|---|---|---|---|---|
5|   |   |   |   |   |   |   |
 |---|---|---|---|---|---|---|
4|   |   |   |   |   |   |   |
 |---|---|---|---|---|---|---|
3|   |   |   |   |   |   |   |
 |---|---|---|---|---|---|---|
2|   |   |   | o |   |   |   |
 |---|---|---|---|---|---|---|
1|   | # | # | # | o |   |   |
 \---------------------------/
   A   B   C   D   E   F   G

Ho messo la mia pedina nella colonna B

Umano, in quale colonna muovi? _

Dopo ogni mossa il programma deve verificare se uno dei due contendenti ha vinto (ci sono nella scacchiera 4 pedine allineate), nel qual caso lo indica sotto la scacchiera. Può accadere che i due contendenti arrivino ad una patta (la scacchiera è piena e nessuno ha vinto); anche questa eventualità va evidenziata sotto la scacchiera.

Oltre alle regole indicate potete implemetare quelle che ritenete opportune (contribuirà solo per il 30 e Lode).

NOTA IMPORTANTE (aggiunta il 4 Giugno 2004)
La regola numero 4 implica che il programma verifichi ogni possibile mossa umana a fronte di una qualsiasi mossa del camputer. Cioè esplori tutte le combinazioni (che sono al più 49) "mossa computer" + "mossa umano".
Al termine di ogni coppia di mosse il computer avrà allineato num'#' pedine, mentre l'umano num'o'.
Per il computer, una possibile strategia è quella di scegliere la mossa che, rispettando le altre regole, massimizzi la differenza num'#'-num'o'.

Tracce elaborati PHP

ATTENZIONE: ai fini della valutazione verranno considerate la semplicità e la chiarezza del codice sviluppato per risolvere il problema. Parzioni di codice che implementino inutili complicazioni tolgono punti. Al contrario, eventuali integrazioni a quanto richiesto, quando concordate con il docente saranno valutate positivamente.

Vendita di quadri online

Un giovane pittore, stanco della poca attenzione delle gallerie d'arte, decide di provare a raggiungere i potenziali clienti attraverso un sito internet.
Sviluppare in PHP il sito del pittore:

Sito del gruppo "Unione Escorsionistica Locale"

L'Unione Escorsionistica Locale (UEL) è costituita da un gruppo di appassionati di montagna che ama passare i finesettimana in escursioni poco impegnative sulle prealpi e sull'appennino emiliano. Quest'anno, il gruppo ha fatto la scelta di controllare lo stato dei sentieri e della segnaletica di una particolare zona montana. Avendo poco tempo per incontrarsi hanno deciso di comunicare i progressi fatti e coordinare le uscite attraverso un sito internet.
Scopo dell'elaborato è quello di sviluppare il sito dell'UEL. Il sito deve essere accessibile a chiunque ma l'inserimento deve avvenire solo su socket criptato e a seguito di identificazione dell'utente.





Informazioni sul sito