C.d.L. in SCIENZE AMBIENTALI
Teoria e Applicazioni delle Macchine Calcolatrici
Prova scritta del 22/9/'98

1)	Una macchina confezionatrice deve sistemare tre unità di prodotto in appositi alloggiamenti per ogni confezione, scartando le confezioni in cui manca più di una unità di prodotto. Supponendo che la macchina disponga di tre sensori A, B e C che rilevano se ogni alloggiamento è pieno (= 1) o vuoto (= 0), scrivere un'espressione booleana con variabili logiche A, B e C che determini quando deve avvenire lo scarto.
2)	Si consideri la seguente struttura dati di tipo record:
		CODICE: intero;
		DATA: record di 3 interi;
		STATO: carattere.
Si richiede di dare la definizione Pascal di un tipo di dato di nome REC adatto a descrivere la struttura dati considerata e di realizzare una funzione booleana UGUALI che sia in grado di determinare quando due dati di tipo REC sono uguali.
3)	Supponendo di avere soltanto le funzioni pred(X) e succ(X) sui naturali – con l'ovvio significato – definire una funzione ricorsiva in Pascal, somma(X,Y) per la somma sui naturali.
4)	Si consideri la seguente grammatica BNF che descrive un piccolo frammento di un linguaggio tipo Pascal:
	- simboli non–terminali:	{<ASS-STMT>, <VAR>, <EXPR>, <ID>, <NUM>}
	- simboli terminali: 		{x,y,z,0,1,...,9,+}
	- simbolo iniziale: 		<ASS-STMT>
	- regole di produzione:	<ASS-STMT> ::= <VAR> := <EXPR>
					<VAR> ::= <ID>
					<EXPR> ::= <EXPR> + <EXPR> |<VAR> | <NUM>
					<ID> ::= x | y | z
					<NUM> ::= 0 | 1 | ... | 9
Dare  l'albero di derivazione e l'albero sintattico per la stringa del linguaggio x := x + 2.
5)	Considerando la rappresentazione dei numeri reali <mantissa,esponente>, si dica qual'è il numero individuato dal seguente numerale in base 3 <012012,012>, supponendo che la mantissa sia un numero frazionario in modulo e segno (con il segno indicato dalla cifra più a sx - 0: positivo; 1: negativo) e l'esponente sia un intero in complemento a 3. Giustificare la risposta.
6)	Dire cos'è ed a cosa serve un protocollo di comunicazione (max. 1 pagina, min. 20 righe).
7)	(a) Scrivere un programma Think-Pascal che, utilizzando la funzione UGUALI realizzata al punto (2), sia in grado di determinare se due file di nome (esterno) prefissato 'alfa' e 'beta' contenenti informazioni del tipo REC del punto (2) sono uguali oppure no (in entrambi i casi il programma invia su standard output un opportuno messaggio). 
8) 	Su un nastro magnetico vengono memorizzati dati su 8 tracce parallele (più una per il controllo dell'errore). Supponendo di voler salvare sul nastro dei file di caratteri strutturati a record di lunghezza fissa di 80 caratteri ciascuno, dire quanti metri di nastro occorrono per memorizzare un file di 1000 record se le tracce vengono scritte (ciascuna) con 1600 bit/pollice (n.b. 1 pollice = 2.54 cm).
9)	In un S.O. multiprogrammato quale delle seguenti transizioni di stato può verificarsi quando un programma in esecuzione richiede l'utilizzo di una risorsa non condivisibile già utilizzata da altri programmi in esecuzione?
	1.	running --> waiting
	2.	running --> ready
	3.	waiting --> ready
	4. 	ready --> waiting
Giustificare la risposta.