PROGETTO DI PROGRAMMAZIONE STUDENTI PART

Transcript

PROGETTO DI PROGRAMMAZIONE STUDENTI PART
PROGETTO DI PROGRAMMAZIONE STUDENTI PART-TIME
Programmazione funzionale
Docente: S. Rota Bulò
Si desidera simulare il funzionamento di un semplice file system. Il file system è una struttura ad
albero con una radice che contiene cartelle, files e collegamenti simbolici.
Le cartelle hanno un nome associato e possono a loro volta contenere altre cartelle, files o link
simbolici.
I files hanno associati un nome e una lista di caratteri che rappresentano il contenuto del file.
Un percorso del file system è una stringa che identifica un percorso dalla radice ad un'entità
(cartella, file o collegamento simbolico) della struttura ad albero. Il percorso inizia con / e ogni
entità è separata da /. Per esempio:
• /pippo/pluto → questo percorso identifica l'entità pluto nella cartella pippo e la cartella
pippo si trova nella radice del file system.
• / → identifica la radice del file system
• /qui/quo/qua → identifica l'entità qua nella cartella quo a sua volta contenuta nella cartella
qui che si trova nella radice del file system.
Un collegamento simbolico associa un nome ad un percorso del file system. Un collegamento
simbolico quindi individua una particolare entità nel file system associata al percorso e a sua volta
si trova da qualche parte nel file system. Per esempio:
\ +
|- pippo +
|
|- pluto
|
|- minny (link simbolico a /qui/quo/qua)
|- qui +
|- quo +
| qua
Il progetto richiede:
• Definire un tipo fs_node per gestire il file system e le sue entità associate.
• Definire l'operazione di creazione di un file create_file che dato un file system fs, un
percorso ad una directory path, un nome per il file filename e una lista di caratteri content
ritorni un nuovo file system che rispetto a fs abbia in più il nuovo file inserito nella cartella
identificata da path con nome filename e contenuto content.
• Definire l'operazione di creazione di una cartella create_directory che dato un file system
fs, un percorso ad una directory path, un nome per la directory dirname ritorni un nuovo file
system che rispetto a fs abbia in più la nuova directory inserita nella cartella identificata da
path con nome dirname.
• Definire l'operazione di creazione di un collegamento simbolico create_link che dato un file
system fs, un percorso ad una directory path, un nome per il collegamento linkname e un
percorso a cui punta il collegamento destpath ritorni un nuovo file system che rispetto a fs
abbia in più il collegamento simbolico inserito nella cartella identificata da path con nome
dirname e associato a destpath.
• Definire l'operazione di cancellazione di un entità delete che dato un file system fs e un
percorso ad un'entità path ritorni un nuovo file system in cui l'entità identificata da path è
rimossa.
•
•
Definire l'operazione per listare il contenuto di una cartella dir che dato un file system fs e
un percorso ad una cartella path, ritorni una lista di coppie, ciascuna delle quali ha come
primo elemento il percorso ad un'entità contenuta nella cartella identificata da path,e come
secondo elemento l'entità stessa (di tipo fs_node).
Definire l'operazione di visualizzazione di un file cat che dato un un file system fs e un
percorso ad una file path ritorni la lista di caratteri associata al file identificato da path.
Nota bene: per le operazioni dir e cat il percorso path potrebbe fare riferimento ad un collegamento
simbolico. In tal caso, si dovrà seguire il collegamento ed eseguire quindi le operazioni utilizzando
il percorso ad esso associato.