Compito B del 01-04-03 -
Programmazione
La prova e' costituita da due esercizi di programmazione, un esercizio in
assembler MIPS e un esercizio in JAVA.
================================================================
Esercizio Assembler MIPS
================================================================
Dati due numeri interi positivi, si vuole determinare il massimo comune
divisore dei due numeri.
Scrivere in assembler la funzione ricorsiva "mcd" che ritorni il massimo
comune divisore dei due numeri passati come argomento.
Utilizzare il "main" di prova per verificare il corretto funzionamento della
funzione.
Il candidato ha a disposizione il seguente file:
- "mcd.txt" che deve essere rinominato in "risultato.s".
La soluzione deve essere fornita con il file "risultato.s".
Traccia di soluzione
================================================================
Esercizio JAVA
================================================================
La classe ArrayBinTreeBFS implementa un albero binario utilizzando un array
(rappresentazione lineare di albero binario).
I metodi messi a disposizione della classe consentono la navigazione
nellalbero e la marcatura dei nodi durante un eventuale attraversamento.
Dato che un albero binario può essere considerato anche come un grafo non
orientato, connesso e aciclico, ha senso porsi il problema di determinare il
cammino che connette due dati vertici (nodi) del grafo (albero).
Come esercizio, realizzare in Java il metodo:
public int[] pathBFS(int s, int z)
che ritorna un vettore contenete i vertici del cammino che connette il
vertice sorgente s al vertice target z. Lalgoritmo per la determinazione
del cammino deve essere formulato in modo iterativo (usando una Coda di
interi) e deve basarsi su di una strategia di attraversamento del grafo
(albero) di tipo BFS (prima in ampiezza).
Si noti che in questo caso gli adiacenti di un vertice sono (quando
esistono) il padre, il figlio sinistro e il figlio destro.
Si suggerisce di usare il vettore dei predecessori int[] pred, in cui
inserire, quando si scopre un nuovo vertice k, il predecessore di k nel
cammino dal vertice sorgente s al vertice corrente k.
Il candidato ha a disposizione i seguenti file:
- IntQueue.java e file correlati che realizzano una Coda di
interi
- ArrayBinTreeBFS.txt file da rinominare in "risultato.java".
La soluzione deve essere fornita con il file "risultato.java".
Traccia di soluzione
================================================================
Al termine della prova il candidato dovra' lasciare nella directory di
lavoro i seguenti file:
- risultato.s soluzione esercizio MIPS
- risultato.java soluzione esercizio JAVA
N.B. I files risultato.s e risultato.java vengono corretti solo se
contengono come prima riga un commento con l'indicazione del COGNOME, NOME,
PROFESSORE, NUMERO POSTAZIONE di lavoro del candidato. |