================================================================ OPERAZIONI PRELIMINARI ( da effettuarsi subito, prima di iniziare ! ! ! ) ================================================================ 1) Copiare il file mips_turno1_dispari.s nel file risultato.s. 2) Copiare il file java_turno1_dispari.java nel file risultato.java. 3) Inserire nella prima riga di ciascuno dei due file un commento con l'indicazione del COGNOME, NOME, PROFESSORE, NUMERO POSTAZIONE di lavoro. ================================================================ Esercizio MIPS ================================================================ La funzione ord_insert contenuta nel file risultato.s inserisce un intero x in un vettore di interi ordinato. Gli argomenti della funzione sono: # Arg1 in $a0 - indirizzo base di un vettore di interi ordinato # Arg2 in $a1 - numero N di interi contenuti nel vettore # Arg3 in $a2 - intero x da inserire nel vettore ordinato # Ritorna in $v0 il nuovo numero interi contenuti nel vettore (N+1) Al completamento dell’operazione di inserimento il vettore risulta ancora ordinato. Come esercizio si chiede di implementare tale funzione. N.B. Non modificare né i dati specificati nella direttiva .data né il codice del main, pena la non presa in considerazione della soluzione fornita. ================================================================ Esercizio JAVA ================================================================ La classe Graph contenuta nel file risultato.java realizza un grafo orientato pesato G=(V,E) rappresentato mediante matrice delle adiacenze. In tale rappresentazione i vertici del grafo sono identificati dagli interi 1..N. Nella matrice il valore mat[i][j]=INF=9999 indica assenza dell’arco (i,j). Come esercizio si chiede di fornire il codice JAVA del metodo della classe Main : static public Graph cammini( Graph g ) Tale metodo ritorna un nuovo grafo G’=(V’, E’) in cui : - V’coincide con V del grafo g passato come argomento. - E’ contiene un arco (i,j) solo se in G esiste un cammino tra i e j formato al più da due archi; il peso di tale arco (i,j) è uguale al minore dei pesi dei cammini tra i e j formati al più da due archi. N.B. Il metodo main della classe Main contiene il codice per la costruzione di un esempio e per la verifica del corretto funzionamento dell’implementazione. Tale codice è completo e non deve essere modificato in alcun modo, pena la non presa in considerazione della soluzione fornita. ================================================================ N.B. Al termine della prova il candidato dovrà lasciare nella directory di lavoro i seguenti file: - risultato.s soluzione dell’esercizio MIPS - risultato.java soluzione dell’esercizio JAVA N.B. I due files VENGONO CONSIDERATI E CORRETTI SOLO SE contengono come prima riga un commento con l'indicazione del COGNOME, NOME, PROFESSORE, NUMERO POSTAZIONE di lavoro. ================================================================ OPERAZIONI PRELIMINARI ( da effettuarsi subito, prima di iniziare ! ! ! ) ================================================================ 4) Copiare il file mips_turno1_pari.s nel file risultato.s. 5) Copiare il file java_turno1_pari.java nel file risultato.java. 6) Inserire nella prima riga di ciascuno dei due file un commento con l'indicazione del COGNOME, NOME, PROFESSORE, NUMERO POSTAZIONE di lavoro. ================================================================ Esercizio MIPS ================================================================ La funzione remove contenuta nel file risultato.s prevede come argomenti: # Arg1 in $a0 - indirizzo base di un vettore di interi non ordinato # Arg2 in $a1 - numero N di elementi contenuti nel vettore # Arg3 in $a2 - elemento x da rimuovere # Ritorna in $v0 N-1 Tale funzione opera la rimozione del valore x dal vettore ed il compattamento dello stesso dopo aver effettuato la rimozione. Come esercizio si chiede di implementare tale funzione. N.B. Non modificare né i dati specificati nella direttiva .data né il codice del main, pena la non presa in considerazione della soluzione fornita. ================================================================ Esercizio JAVA ================================================================ La classe Graph contenuta nel file risultato.java realizza un grafo orientato pesato G=(V,E) rappresentato mediante matrice delle adiacenze. In tale rappresentazione i vertici del grafo sono identificati dagli interi 1..N. Nella matrice il valore mat[i][j]=INF=9999 indica assenza dell’arco (i,j). Come esercizio si chiede di fornire il codice JAVA del metodo della classe Main : static public Graph cammini( Graph G, int k ) Tale metodo ritorna un nuovo grafo G’=(V’, E’) in cui : - V’coincide con V del grafo G passato come argomento. - E’ contiene un arco (i,j) solo se in G esiste l’arco (i,j) o il cammino tra i e j formato dai due archi (i,k) e (k,j) ; il peso di tale arco (i,j) in G’ è uguale al minore dei pesi tra l’arco (i,j) e il cammino tra i e j formato dai due archi (i,k) e (k,j) in G. N.B. Il metodo main della classe Main contiene il codice per la costruzione di un esempio e per la verifica del corretto funzionamento dell’implementazione. Tale codice è completo e non deve essere modificato in alcun modo, pena la non presa in considerazione della soluzione fornita. ================================================================ N.B. Al termine della prova il candidato dovrà lasciare nella directory di lavoro i seguenti file: - risultato.s soluzione dell’esercizio MIPS - risultato.java soluzione dell’esercizio JAVA N.B. I due files VENGONO CONSIDERATI E CORRETTI SOLO SE contengono come prima riga un commento con l'indicazione del COGNOME, NOME, PROFESSORE, NUMERO POSTAZIONE di lavoro del candidato. ================================================================ OPERAZIONI PRELIMINARI ( da effettuarsi subito, prima di iniziare ! ! ! ) ================================================================ 7) Copiare il file mips_turno2_dispari.s nel file risultato.s. 8) Copiare il file java_turno2_dispari.java nel file risultato.java. 9) Inserire nella prima riga di ciascuno dei due file un commento con l'indicazione del COGNOME, NOME, PROFESSORE, NUMERO POSTAZIONE di lavoro. ================================================================ Esercizio MIPS ================================================================ E’ dato un albero Heap rappresentato mediante un array (rappresentazione lineare). La funzione up_heap contenuta nel file risultato.s è parte della realizzazione dell’algoritmo di inserimento di un elemento in un albero Heap: essa, mediante scambi tra figlio e padre, porta l’elemento appena inserito nella posizione corretta rispetto all’ordinamento heap dell’albero. Come esercizio si chiede di implementare la funzione up_heap. N.B. Non modificare né i dati specificati nella direttiva .data né il codice del main, pena la non presa in considerazione della soluzione fornita. ================================================================ Esercizio JAVA ================================================================ La classe BinSearchTree contenuta nel file risultato.java fornisce una implementazione lineare mediante un array di un albero binario di ricerca. In questa implementazione: (i) uno zero in una posizione dell’array indica l’assenza nell’albero del nodo corrispondente, (ii) i nodi esterni (che non contengono informazione) sono rappresentati con uno zero nella corrispondente posizione dell’array oppure non sono esplicitamente rappresentati (vedi figura). Come esercizio si chiede di fornire il codice del metodo int inord_succ(int i) che, data la posizione i di un nodo, calcola e ritorna la posizione (un int) del successore nell’inorder. N.B. Il metodo main della classe Main contiene il codice per la costruzione di un esempio e per la verifica del corretto funzionamento dell’implementazione. Tale codice è completo e non deve essere modificato in alcun modo, pena la non presa in considerazione della soluzione fornita. ================================================================ N.B. Al termine della prova il candidato dovrà lasciare nella directory di lavoro i seguenti file: - risultato.s soluzione dell’esercizio MIPS - risultato.java soluzione dell’esercizio JAVA N.B. I due files VENGONO CONSIDERATI E CORRETTI SOLO SE contengono come prima riga un commento con l'indicazione del COGNOME, NOME, PROFESSORE, NUMERO POSTAZIONE di lavoro del candidato. 50 10 80 30 0 1 2 3 50 10 80 85 4 0 5 30 6 0 7 85 8 ================================================================ OPERAZIONI PRELIMINARI ( da effettuarsi subito, prima di iniziare ! ! ! ) ================================================================ 10) Copiare il file mips_turno2_pari.s nel file risultato.s. 11) Copiare il file java_turno2_pari.java nel file risultato.java. 12) Inserire nella prima riga di ciascuno dei due file un commento con l'indicazione del COGNOME, NOME, PROFESSORE, NUMERO POSTAZIONE di lavoro. ================================================================ Esercizio MIPS ================================================================ La funzione bubble_up (contenuta nel file risultato.s ) scandisce un vettore scambiando eventualmente l’elemento corrente con il successivo, se il primo è maggiore del secondo. Tale funzione viene usata per l’ordinamento bubble-sort di un vettore. Come esercizio si chiede di implementare la funzione bubble_up. N.B. Non modificare né i dati specificati nella direttiva .data né il codice del main, pena la non presa in considerazione della soluzione fornita. ================================================================ Esercizio JAVA ================================================================ La classe BinSearchTree contenuta nel file risultato.java fornisce una implementazione lineare mediante un array di un albero binario di ricerca. In questa implementazione: (i) uno zero in una posizione dell’array indica l’assenza nell’albero del nodo corrispondente, (ii) i nodi esterni (che non contengono informazione) sono rappresentati con uno zero nella corrispondente posizione dell’array oppure non sono esplicitamente rappresentati. Vedi anche figura allegata. Come esercizio si chiede di fornire il codice del metodo void remove(int x) che rimuove dall’albero l’elemento x passato come argomento. N.B. utili suggerimenti verranno forniti all’inizio del compito. N.B. Il metodo main della classe Main contiene il codice per la costruzione di un esempio e per la verifica del corretto funzionamento dell’implementazione. Tale codice è completo e non deve essere modificato in alcun modo, pena la non presa in considerazione della soluzione fornita. ================================================================ N.B. Al termine della prova il candidato dovrà lasciare nella directory di lavoro i seguenti file: - risultato.s soluzione dell’esercizio MIPS - risultato.java soluzione dell’esercizio JAVA N.B. I due files VENGONO CONSIDERATI E CORRETTI SOLO SE contengono come prima riga un commento con l'indicazione del COGNOME, NOME, PROFESSORE, NUMERO POSTAZIONE di lavoro del candidato. 50 10 80 30 0 1 2 3 50 10 80 85 4 0 5 30 6 0 7 85 8