Tor vergata cpp project text

From campisano.org
Jump to navigation Jump to search

Progetti di Fondamenti di Informatica 1

Corso On-Line (A.A. 2002/2003 )




Istruzioni generali



I progetti possono essere svolti da singoli oppure da coppie di studenti. Da progetti svolti in coppia ci si aspettano ovviamente contenuti maggiori.


Quale progetto svolgere?





  1. Scrivere una funzione C++ che legge una sequenza di caratteri, li converte nella codifica ASCII corrispondente, e ne calcola la somma modulo 9.

  2. Usare tale funzione dando in input il proprio nome e cognome per selezionare il numero del progetto da svolgere.
    IMPORTANTE: Il proprio nome e cognome va dato nel formato: Nome Cognome, ovvero il nome di battesimo con l'iniziale maiuscola, spazio, cognome con l'iniziale maiuscola (vedere esempio!)
  3. Tale funzione sarà parte integrante del progetto (cioé va consegnata).




Esempio: Il mio nome è Ugo Re



  1. Scrivo una funzione C++ che mi restituisce (85+103+111+32+82+101) mod 9 = 514 mod 9 = 1.
  2. Devo svolgere il Progetto 1.
  3. Devo consegnare il codice ed i test di esecuzione della funzione con il progetto.





Realizzare correttamente tale funzione è CONDIZIONE NECESSARIA per la valutazione del progetto (i.e., chi sbaglia tale funzione oppure sbaglia a dare il proprio nome e cognome sicuramente fallisce nel progetto).


Quale compilatore usare?



Un compilatore ANSI C++ è preferibile. Se non si dispone di un compilatore per ANSI C++ si può usare un altro compilatore, limitandosi però alle istruzioni e funzioni standard. E' ASSOLUTAMENTE SCONSIGLIATO usare degli ambienti di sviluppo, quali per esempio il Visual C++ ed il Builder




Che cosa consegnare?




  1. La funzione che calcola il progetto dal proprio nome.

  2. Relazione che descriva le proprie scelte progettuali ed implementative.

  3. Codice (header file + sorgenti) ben progettato, ben documentato e testato.

  4. Una stampa delle esecuzioni (test esaurienti).

  5. Dischetto contenente il codice (header file + sorgenti).




Quando consegnare?



Almeno due giorni prima dell'appello che si vuole sostenere.
Portare una copia cartacea di tutto quando si vuole sostenere l'esame.


Dove consegnare?



Per posta elettronica al Prof. Italiano, oppure nella casella della posta del Prof. Italiano, al piano terra del


Dipartimento di Informatica, Sistemi e Produzione, Edificio di Ingegneria della Informazione.
Portare una copia cartacea di tutto quando si vuole sostenere l'esame.


Quando scade il progetto?



La validità del progetto è limitata al solo A.A. 2002/2003




Descrizione dei progetti




PROGETTO 0



Progettare e codificare delle classi C++ per simulare il gioco dell'oca. Particolare credito verrà dato a chi curerà l'interfaccia grafica.




PROGETTO 1



Progettare e codificare delle classi C++ per simulare il gioco "Forza quattro". Il gioco si svolge su uno scacchiera di 4 x 4 caselle. Ogni giocatore a turno occupa una casella libera: vince il giocatore che per primo riesce ad occupare quattro caselle adiacenti orizzontali, verticali o diagonali. Le mosse del giocatore utente sono inserite da tastiera ogni volta, mentre le mosse del giocatore computer vengono decise indipendentemente, in modo casuale oppure secondo una determinata strategia.
Particolare credito verrà dato a chi realizzerà strategie di gioco intelligenti e/o curerà l'interfaccia grafica.




PROGETTO 2



Progettare e codificare una classe per calcolare gli anagrammi di una stringa.

Particolare credito verrà dato a chi utilizzerà un dizionario per generare solo anagrammi di senso compiuto.


È possibile prelevare un piccolo dizionario contenente all'incirca 100.000 parole.


Ad esempio, come anagrammi di senso compiuto (o quasi!) della stringa "Giuseppe Italiano":


	Plagiai ipotenuse
	In pepe guaiolasti
	Patogenesi ai lupi
	Tue ali giapponesi
	Espugnate i paioli
	Lesionate i guappi
	Su peani epilogati
	Pigia su pentolaie
	In pause pigoliate
	Usi pepi alogenati
	Uso peli antipiega
	Poi lupe astigiane
	Sii pupa elogiante
	Usa pepi elogianti
	Pii espletano guai
	Pel peso inguaiati
	Guai api insepolte
	Poi sguainate peli
	Nei guai spolpiate
	Stagionai pie lupe


PROGETTO 3



Progettare e codificare delle classi C++ per simulare il gioco della battaglia navale su uno schermo di 10 x 10 caselle. La flotta in dotazione consiste in una portaerei, due cacciatorpedinieri e 3 sommergibili. Ogni portaerei occupa 5 caselle, ogni cacciatorpediniere ne occupa 3, e ogni sommergibile ne occupa 2. Le mosse del giocatore utente sono inserite da tastiera ogni volta, mentre le mosse del giocatore computer vengono decise indipendentemente, in modo casuale oppure secondo una determinata strategia.

Particolare credito verrà dato a chi realizzerà strategie di gioco intelligenti e/o curerà l'interfaccia grafica.


PROGETTO 4



Progettare e codificare delle classi C++ per simulare il gioco di carte ``briscola. Le mosse del giocatore utente sono inserite da tastiera ogni volta, mentre le mosse del giocatore computer vengono decise indipendentemente, in modo casuale oppure secondo una determinata strategia.
Particolare credito verrà dato a chi realizzerà strategie di
gioco intelligenti e/o curerà l'interfaccia grafica.




PROGETTO 5



Progettare e codificare delle classi C++ per simulare il gioco della dama. Le mosse del giocatore utente sono inserite da tastiera ogni volta, mentre le mosse del giocatore computer vengono decise indipendentemente, in modo casuale oppure secondo una determinata strategia.

Particolare credito verrà data a chi realizzerà strategie di gioco intelligenti e/o curerà l'interfaccia grafica.




PROGETTO 6



Progettare e codificare una classe matrix in cui siano presenti almeno gli operatori *, +, -, =, +=, e -=, e l'operazione di inversione e trasposizione di una matrice. Ogni operatore deve verificare la consistenza tra le dimensioni dei due operandi. Inoltre si deve realizzare il controllo sugli indici nella fase di accesso ad un elemento. Utilizzare dati di tipo double.




PROGETTO 7



Progettare e codificare delle classi C++ per simulare il gioco di carte ``Go fish!. Le mosse del giocatore utente sono inserite da tastiera ogni volta, mentre le mosse del giocatore computer vengono decise indipendentemente, in modo casuale oppure secondo una determinata strategia.

Particolare credito verrà data a chi realizzerà strategie di gioco intelligenti e/o curerà l'interfaccia grafica.



Le regole del gioco sono le seguenti. Si gioca con un mazzo da 52 carte (A, 2-10, J, Q, K), e l'obiettivo è collezionare ``libri. Un libro è costituito da quattro carte con lo stesso valore (ad esempio, quattro assi).

A ciascun giocatore vengono date sette carte, le restanti vengono lasciate in un mazzo coperto sul tavolo. In ciascun turno di gioco un giocatore chiede una carta di un certo valore all'avversario (``Dammi un sette!), purché egli abbia già in mano una carta con lo stesso valore. Se l'avversario possiede tale carta la passa al giocatore, ed il giocatore, avendo indovinato, ha diritto a fare una nuova richiesta. Se invece l'avversario non possiede la carta richiesta risponde con ``Go fish!, e il giocatore pesca una carta dal mazzo in mezzo al tavolo. Se la carta pescata ha lo stesso valore di quella richiesta, il giocatore ha diritto a fare un'altra richiesta all'avversario. Se invece la carta pescata ha un valore differente, tocca all'avversario fare richieste al giocatore, seguendo lo stesso schema.



Non appena un giocatore ottiene quattro carte con lo stesso valore, le cala sul tavolo. Il gioco termina quando un giocatore resta senza carte in mano, e vince colui che ha collezionato il maggior numero di ``libri (gruppi di quattro carte dello stesso valore).


PROGETTO 8



Progettare e codificare delle classi C++ per simulare il gioco di carte ``scopa. Le mosse del giocatore utente sono inserite da tastiera ogni volta, mentre le mosse del giocatore computer vengono decise indipendentemente, in modo casuale oppure secondo una determinata strategia.



Particolare credito verrà data a chi realizzerà strategie di gioco intelligenti e/o curerà l'interfaccia grafica.