Sei sulla pagina 1di 5

[http://www.di.univaq.

it/muccini/LabArch]

Laboratorio di Architettura
degli Elaboratori
LabArch 2007 Terzo Quadimestre, a.a. 2006-2007
Docente: H. Muccini

Lecture 8:
- Progetti

SEA Group
Software Engineering and Architecture Group
2007 Henry Muccini

Progetto 1: Ricerca Compleanni (gruppi da 1-2 persone)

Si crei un database in memoria contenente un insieme di


nomi, cognomi, date di nascita, e preferenze (ad esempio:
viaggi, sport, cultura, storia).
Le informazioni sugli utenti vanno inserite da console, mentre
le possibili preferenze si trovano gia in memoria, insieme a
possibili annunci per ciascuna preferenza (ad esempio:
preferenza = sport, annuncio = sconto del 50% su tutte le
racchette Maxum).
Si permetta di ricercare tutti gli utenti nati nella data attuale,
stampando a video i loro dati e preferenze. Si stampi a video
un annuncio collegato ad una delle loro preferenze.
Si permetta di aggiungere e cancellare utenti da console.
Per i gruppi da 2 persone, si ordinino i dati prima di eseguire
la ricerca, seguendo un algoritmo a scelta.

SEA Group
2007 Henry Muccini, LabArch 2007
2/16

1
Progetto 2: Schedina Automatica (gruppi da 2-3 persone)
Si abbia la lista delle squadre di calcio in memoria, inserite tramite il
.data.
Ogni settimana, le squadre di calcio si confrontano in campo, ed il
sistema deve generare una schedina automatica, basata sui risultati
delle cinque partite precedenti.
Lutente inserisce per ogni squadra considerata i risultati delle ultime
cinque partite, nella forma (v,p,s) con v = #vittorie, p = #pareggi, e
s = #sconfitte, tale che v+p+s sia sempre uguale a cinque (tali dati
vengano inseriti da console).
Successivamente, lutente inserisce due codici (corrispondenti alle
due squadre rivali salvate in memoria) (di nuovo da console).
Il risultato previsto viene calcolato come nel seguito: date due
squadre A e B, ed i risultati delle cinque partite piu recenti A =
(vA,pA,sA) e B = (vB,pB,sB), lalgoritmo calcola MAX (|vA-vB|, |pA-
pB|, |sA-sB|) (dove | rappresenta il valore assoluto). Se MAX (|vA-
vB|, |pA-pB|, |sA-sB|) e il primo/secondo/terzo elemento della
terna, allora A vince/pareggia/perde.
Ad esempio, A = (2,1,2) e B = (1,4,0), allora MAX (1,3,2) = 3,
quindi la previsione sara di pareggio.
Nel caso A = (0,1,4) e B = (1,4,0), allora MAX (1,3,4) = 4, quindi A
risultera sconfitta. Si stampi la schedina a video.
SEA Group
2007 Henry Muccini, LabArch 2007
3/16

Progetto 3: Ottimizzatore di Percorsi (gr. 3-4 persone)


Si crei una struttura a grafo in memoria che permetta
di memorizzare un insieme di almeno 20 localita, le
distanze tra localita confinanti, ed i tempi medi di
percorrenza, come nellesempio che segue.
Date in input due localita, il programma deve stampare
la distanza minima necessaria per arrivare da una
localita allaltra ed il percorso suggerito.
Per i gruppi da tre, il grafo e le due localita vanno
inserite in input da console.
Per i gruppi da quattro, il grafo e
le due localita vanno inserite da riga
di comando (e da console, nel caso
in cui nulla sia stato inserito da riga
di comando).
Inoltre, si voglia poter calcolare e
stampare a video i percorsi con
SEA Group
tempo medio e distanza minima.
2007 Henry Muccini, LabArch 2007
4/16

2
Progetto 4 : News Feeder (gruppi da 1-2 persone)

Si creino due database in memoria. Uno contenente un


insieme di categorie di news (ad esempio: sport,
politica, previsioni, eventi). Un altro contenente un
insieme di utenti.
Gli utenti selezionano da una lista le possibili categorie
news sulle quali vogliono essere informati. Non appena
una news in una certa categoria viene inserita in
memoria, tutti gli utenti iscritti a tale news vengono
informati.
I gruppi da 1 persona inseriranno i dati sulle categorie
di news e sugli utenti in memoria tramite una
immissione da console. I gruppi da 2 persone
inseriranno i dati da riga di comando (e da console, nel
caso in cui nulla sia stato inserito da riga di comando).
Nel momento in cui una news viene inserita (da console
in entrambi i casi) tutti gli interessati devono essere
informati (cioe, deve essere stampata a video la lista di
tutti gli utenti interessati a tale news).
SEA Group
2007 Henry Muccini, LabArch 2007
5/16

Progetto 5: BBS (gruppi da 3-4 persone)

Scopo del progetto di realizzare un sistema interattivo per lo


scambio di messaggi tra persone, secondo la modalit tipica della
bacheca. Il sistema gestisce diverse liste pubbliche di messaggi
(dette aree di discussione o conferenze), di solito dedicate a temi
specifici (es. Politica, Programmazione Pascal, ZX Spectrum).
Un utente accede al sistema e si registra ad una conferenza
specifica. Dopo aver acceduto, riceve tutti i messaggi inviati sulla
stessa conferenza da altri utenti. Puo inoltre scrivere messaggi su
tale conferenza. Un utente puo anche inviare messaggi ad uno
specifico utente (che lo leggera al suo prossimo accesso).
Entrambi i gruppi da tre e da quattro studenti dovranno
memorizzare una lista di utenti e di bacheche in memoria, tramite
immissione da riga di comando (e da console, nel caso in cui nulla
sia stato inserito da riga di comando).

I gruppi da 4 dovranno implementare una funzionalita accessoria
che permetta di visualizzare i messaggi di una determinata
conferenza in base a pi criteri di ordinamento: cronologico (in base
alla data), per argomento, per autore.
SEA Group
2007 Henry Muccini, LabArch 2007
6/16

3
Progetto 6: Compilascion (gr. da 3-4 persone)

Un importante distributore allingrosso di contenuti multimediali


richiede la progettazione di un software per la gestione del
magazzino. Ciascun prodotto offerto dal distributore caratterizzato
da: nome del file, dimensione, titolo, autore, tipologia. Alcuni esempi
di tipologie sono: programma, suoneria, CD, film, gioco Playstation,
etc. Il sistema deve permettere inserimento e cancellazione di
prodotti nel magazzino, nonch la ricerca dei prodotti in base al
titolo e/o allautore.
Di tanto in tanto, il distributore archivia su supporto ottico (CD,
DVD) uninsieme di contenuti, al fine di spedirli alle bancarelle. Per
ogni contenuto si dovr tenere traccia del fatto che sia stato
archiviato o meno, e in caso positivo, del numero dindice del
supporto che lo contiene.
Tutti gli input dovranno essere immessi da riga di comando (e da
console, nel caso in cui nulla sia stato inserito da riga di comando).
Per i gruppi da 4 persone: a seguito di un comando immesso da
console, il sistema dovr selezionare i contenuti non ancora
archiviati e pianificare in che modo memorizzarli in supporti ottici,
cercando di contenere il numero di supporti richiesto.
SEA Group
2007 Henry Muccini, LabArch 2007
7/16

Esempio
Esempio
Contenuti da archiviare:
nome dimensione
film1 450 MB
film2 3 GB
film3 1 GB
album1 240 MB
album2 290 MB
Una pianificazione accettabile :
1 CD con film1, 1 DVD con film2+film3+album1, 1 CD con album2.
Ma si pu fare una pianificazione migliore:
1 DVD con film2+film3+album2, 1 CD con film1+album1.
La valutazione del progetto terr in considerazione la bont della
pianificazione operata.
SEA Group
2007 Henry Muccini, LabArch 2007
8/16

4
Progetto 7: Correttore ortografico (gr. da 2-3 persone)

Si realizzi un correttore ortografico di testi.


Il programma memorizza un insieme di regole di correzione
ortografica e le applica ad un file di testo in ingresso, producendo in
uscita un nuovo file di testo. Ciascuna regola costituita da una
coppia di stringhe, dette Errata e Corrige. Lapplicazione di una
regola consiste nel trovare nel testo in ingresso tutte le occorrenze
della stringa Errata e sostituirle con altrettante occorrenze della
stringa Corrige.
Per ogni regola, inoltre, si possono specificare due modificatori:
Case e Entire. Case indica se, nella ricerca delle occorrenze e nella
sostituzione, lettere maiuscole e minuscole debbano essere
considerate equivalenti o meno. Entire indica se la regola debba
essere applicata o meno anche se la stringa Errata compare come
parte di una stringa pi grande.
Il set di regole deve essere vasto, e tali regole devono essere
salvate in memoria con il .data. Deve esser possibile visualizzare
tali regole.
Il testo da correggere e le opzioni Case ed Entire, vanno invece
inserite in input da riga di comando (e da console, nel caso in cui
nulla sia stato inserito da riga di comando) ed il file corretto deve
essere stampato a video.
SEA Group
2007 Henry Muccini, LabArch 2007
9/16

Potrebbero piacerti anche