Istruzioni per l'esame in laboratorio

Struttura dei file
Comandi
Modalità di svolgimento dell'esame
Ambiente operativo
Uso del comando diff per controllare la correttezza dell'output

Struttura dei file

La home directory in cui vi trovate all'avvio del sistema è

 /home/student

Potete tornarci in ogni momento con il comando cd, senza argomenti.
Tale directory contiene:

LEGGIMI.txt
Versione sintetica in formato testo di questa guida (all'inizio ci sono scritte le istruzioni per poter accedere al materiale in rete).
bin
Directory che contiene i comandi necessari allo svolgimeno della prova d'esame.
esercizio-1   ...   esercizio-4
Directory contenenti il materiale relativo ai vari esercizi che compongono la prova d'esame (in genere gli esercizi sono 4).
Per spostarsi nella directory esercizio-N (dove N è un intero), usare il comando
cd esercizio-N 
Ad esempio:
cd esercizio-2 

Si raccomanda di non modificare, o cancellare, i file presenti nel sistema.

Le directory degli esercizi

Le directory esercizio-N contengono i seguenti file:

Testo.txt
File con il testo dell'esercizio. Per leggere il file si può usare un editor oppure il comando
less Testo.txt
Per uscire da less, premere il taso q.
input.txt e output.txt
File contenenti rispettivamente input e output del test che viene eseguito quando si vuole consegnare una soluzione (non vanno modificati!).

Comandi

Per la consegna degli esercizi è necessario usare i seguenti comandi (i comandi possono essere eseguiti da una directory qualunque):

firma
Questo comando serve ad identificare il vostro elaborato. Dovete eseguirlo appena iniziate la prova d'esame, indicando come parametro il vostro numero di matricola. Ad esempio, se il vostro numero di matricola è 123456, all'inizio della prova d'esame dovete dare il comando
firma 123456
Può essere invocato una sola volta, a differenza dei prossimi comandi che possono essere eseguiti un numero arbitrario di volte. Dopo la prima chiamata, il comando firma si limita a stampare il vostro nome.
verifica
Il comando
verifica N
(dove N è un intero) controlla che la vostra soluzione dell'esercizio N verifichi i requisiti per poter essere consegnata. Viene anche eseguito un test di prova usando i file input.txt e e output.txt.
consegna
Il comando
consegna
consegna tutte le soluzioni degli esercizi N tali che il comando
verifica N
ha successo. Va eseguito ogni ogni volta che si è terminato un esercizio. Verrà valutata solo l'ultima consegna.
salva
Il comando
salva
consegna una copia di backup di tutti i file .c presenti nelle vostre directory (non viene fatto alcun tipo di controllo).
Il materiale salvato serve unicamente per poter recuperare i dati in caso di malfunzionamento del sistema, ma non verrà valutato.

Modalità di svolgimento dell'esame

L'esame si compone di una serie di esercizi, in genere 4.

Ambiente operativo

All'avvio del sistema troverete un terminale attivo con una shell di tipo bash in esecuzione ed un editor di testo.

Tramite la shell potete invocare i comandi necessari allo svolgimento dell'esame, in particolare:

Qualora chiudeste accidentalmente il terminale, potete invocarne una nuova istanza scegliendo la voce xterm del menu che compare premendo il tasto destro del mouse.

L'editor nedit

Non è disponibile l'editor gedit, ma nedit che ha funzionalità simili. Per una descrizione di nedit vedere la pagina http://www.nedit.org (non accessibile durante l'esame), da cui è anche possibile scaricarlo.
Si consiglia di modificare le seguenti impostazioni nel menu Preferences:
  1. Selezionare l'opzione Show Line Numbers (visualizza i numeri delle righe).


  2. Selezionare Tab stops e ridurre il numero di spazi associati a Tab in modo da non avere linee troppo lunghe. Ad esempio, si può porre Tab spacing uguale a 3.

Il comando diff

Il comando diff di Linux confronta due file riga per riga segnalando le righe diverse. Ad esempio, se il file f1.txt contiene
a = 1
b = 2
c = 3
d = 4
e il file f2.txt contiene
a = 0
b = 2
c = 3.
d = 4
il comando
 diff  f1.txt  f2.txt
stampa:
 1c1
< a = 1
---
> a = 0
3c3
< c = 3
---
> c = 3.
mettendo in evidenza le righe dei due file che risultano diverse (vedere la documentazione per maggiori dettagli). Ovviamente i comandi
 diff f1.txt f1.txt
 diff f2.txt f2.txt
non stampano nulla (un file è uguale a se stesso).

È utile usare diff per evidenziare le linee di output del proprio programma che sono errate. Se il programma legge l'input da standard input e le linee di input sono nel file input.txt, si può procedere come segue:

  1. Si esegue il programma redirigendo lo standard input dal file input.txt e redirigendo lo standard output in un nuovo file, ad esempio o.txt
      ./soluzione   <  input.txt   > o.txt
    
    Nota La redirezione dello standard output cancella il vecchio contenuto di o.txt. Prestare molta attenzione a non redirigere lo standard output su un file che non si vuole cancellare.
  2. Usare il comando diff per stampare le eventuali differenze fra il proprio output, contenuto in o.txt, e l'output corretto, contenuto in output.txt.
      diff o.txt output.txt