================================================================ OPERAZIONI PRELIMINARI ( da effettuarsi subito, prima di iniziare ! ! ! ) ================================================================ 1) Copiare il file mips_turno1_dispari.s nel file risultato.s. 2) Copiare il file 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 sum_every_3 contenuta nel file risultato.s prevede in input i due vettori vet e res ed effettua il seguente calcolo: somma i primi tre elementi del vettore vet e memorizza il risultato ottenuto nella prima posizione del vettore res; somma i successivi tre elementi del vettore vet e memorizza il risultato ottenuto nella seconda posizione del vettore res; continua in questo modo fino ad esaurire tutti gli elementi del vettore vet. Al termine la funzione ritorna il numero di elementi inseriti nel vettore res. Come esercizio si chiede di implementare tale funzione. Si può assumere che il vettore vet abbia un numero di elementi multiplo di tre. 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 ================================================================ L’interfaccia EdgeSet definisce il grafo G=(V,E) come un insieme di archi e la classe MyEdgeSet implementa tale interfaccia. La classe IncidentEdgesIterator (contenuta nel file risultato.java ) realizza un Iterator sull’insieme dei vertici adiacenti un dato vertice del grafo G=(V,E). La classe MyEdgeSet usa un array per rappresentare l’insieme di archi; di conseguenza gli archi sono identificati nell’EdgeSet da un indice i crescente a partire da i=0. Come esercizio si chiede di fornire l’implementazione della classe IncidentEdgesIterator. N.B. Il metodo main della classe Main contiene il codice per la costruzione di un esempio di grafo e per la verifica del corretto funzionamento dell’implementazione dell’iteratore. 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 ! ! ! ) ================================================================ 1. Copiare il file mips_turno1_pari.s nel file risultato.s. 2. Copiare il file turno1.pari.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 remove_cif contenuta nel file risultato.s prevede in input due argomenti: una stringa da elaborare ed un buffer in cui memorizzare il risultato dell’elaborazione. La funzione copia nel buffer la stringa in input eliminando tutte le cifre. Ad esempio: - input "nel 1957 il mese di febbraio aveva 28!" - output "nel il mese di febbraio aveva !" 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 ================================================================ L’interfaccia BinaryTree e la classe MyBinaryTree contenute nel file risultato.java definiscono e implementano un albero binario. La classe ZigZagIterator realizza un Iterator sugli elementi dei nodi dell’albero che si trovano nel cammino che parte dalla radice e procede scendendo alternativamente prima a sinistra e poi a destra fino ad arrivare ad un nodo esterno. Come esercizio si chiede di fornire l’implementazione della classe ZigZagIterator. N.B. Il metodo main della classe Main contiene il codice per la costruzione di un esempio di albero binario e per la verifica del corretto funzionamento dell’implementazione dell’iteratore. 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 ! ! ! ) ================================================================ 1. Copiare il file mips_turno2_dispari.s nel file risultato.s. 2. Copiare il file turno2_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 split_vet contenuta nel file risultato.s prevede in input : # Arg1 in $a0 - indirizzo base del vettore in input da suddividere # Arg2 in $a1 - indirizzo base del vettore in output con valori <= pivot # Arg3 in $a2 - indirizzo base del vettore in output con valori > pivot # Arg4 in $a3 - valore del pivot La funzione copia gli elementi con valore <= pivot nel primo vettore in output e gli elementi con valore > pivot nel secondo vettore in output. N.B tutti e tre i vettori contengono nella posizione di indice 0 il numero degli elementi in essi contenuti e nelle posizioni successive gli elementi stessi. Ad esempio l’istruzione successiva definisce un vettore di 11 elementi. vet: .word 11, 20, 80, 90, 10, 70, 60, 30, 23, 40, 22, 53 Come esercizio si chiede di implementare la funzione split_vet. 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 ================================================================ L’interfaccia IntegerSet definisce un insieme di Integer e la classe MyIntegerSet implementa tale interfaccia. La classe IntegerSubsetIterator (contenuta nel file risultato.java ) realizza un Iterator sul sottoinsieme degli interi che terminano con una cifra data. La classe MyIntegerSet usa un array per rappresentare l’insieme degli Integer; di conseguenza gli elementi sono identificati nell’ IntegerSet da un indice i crescente a partire da i=0. Come esercizio si chiede di fornire l’implementazione della classe IntegerSubsetIterator. N.B. Il metodo main della classe Main contiene il codice per la costruzione di un esempio di insieme di Integer e per la verifica del corretto funzionamento dell’implementazione dell’iteratore. 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 ! ! ! ) ================================================================ 1. Copiare il file mips_turno2_pari.s nel file risultato.s. 2. Copiare il file turno2_pari.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 string_reverse contenuta nel file risultato.s rovescia la stringa il cui indirizzo è passato come argomento. Ad esempio la funzione muta la stringa "come quando fuori piove" nella stringa "evoip irouf odnauq emoc" . Come esercizio si chiede di implementare la funzione string_reverse. 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 ================================================================ L’interfaccia WordSet definisce un insieme di parole (String) e la classe MyWordSet implementa tale interfaccia. La classe WordSubsetIterator (contenuta nel file risultato.java ) realizza un Iterator sul sottoinsieme delle parole che iniziano con un dato carattere. La classe MyWordSet usa un array per rappresentare l’insieme delle parole (String); di conseguenza le parole sono identificate nell’ WordSet da un indice i crescente a partire da i=0. Come esercizio si chiede di fornire l’implementazione della classe WordSubsetIterator. N.B. Il metodo main della classe Main contiene il codice per la costruzione di un esempio di insieme di parole e per la verifica del corretto funzionamento dell’implementazione dell’iteratore. 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.