Homework A.A. 2012/2013
A partire dal 25 Ottobre, e fino alla fine delle lezioni, ogni giovedì verranno assegnati degli homework, da svolgere singolarmente e consegnare via posta elettronica all'indirizzo moscardelli@sci.unich.it mettendo nell'oggetto del messaggio la seguente stringa:
[jmm] $cognome$ $nome$ Homework n° $id$
dove $cognome$ e $nome$ e sono il cognome ed il nome dello studente che consegna, ed $id$ è l'identificativo dell'homework. La consegna va effettuata entro il mercoledì successivo all'assegnazione dell'esercizio. Il file va consegnato in formato di testo semplice; .txt e .java sono estensioni accettabili.
Gli homework non sono obbligatori. Tuttavia, chi consegna almeno i 4/5 degli homework assegnati avrà un bonus aggiuntivo sul voto finale d'esame variabile da 0 a 2 punti, a seconda della qualità dei lavori consegnati.
Di seguito la lista degli homework con la data di assegnamento. Siete invitati a visualizzare questa pagina ogni giovedì.
- 25 Ottobre 2012, Homework numero 1
Scrivere un metodo int[][] prodottoMatrici (int[][] matriceA, int[][] matriceB)
che prese in input due matrici matriceA e matriceB di interi crea e restituisce in output la matrice prodotto delle due matrici. Si assuma che il numero di colonne di MatriceA è uguale al numero di righe di MatriceB.
In caso di necessità, si può far riferimento a questo link http://it.wikipedia.org/wiki/Moltiplicazione_di_matrici per il prodotto di due matrici. - 1 Novembre 2012, Homework numero 2
Scrivere una versione iterativa ed una versione ricorsiva del metodo
double H(int n)
che preso in input un numero intero non negativo n restituisce l'n-esimo numero armonico H(N)=1 + 1/2 + ... + 1/n.
Si noti come H(0)=0, H(1)=1, H(2)=1+1/2=3/2 e così via. - 8 Novembre 2012, Homework numero 3
Scrivere con Eclipse un file MainClass.java in cui si implementa in Java (e non in Java--) il codice del merge-sort come visto a lezione.
Nel metodo main bisogna far inserire all'utente da tastiera un array (come visto nell'ultima lezione di laboratorio), stamparlo, richiamare il metodo mergeSort e ristamparlo nuovamente (ordinato). - 15 Novembre 2012, Homework numero 4
Sfruttando opportunamente il codice visto a laboratorio per il cambio di base dei numeri (scaricabile qui), aggiungere alla MainClass scritta a laboratorio un metodo
public static int[] somma (int[] numeroA, int baseA, int[] numeroB, int baseB, int baseRisultato)
che presi in input due addendi (numeroA espresso in base baseA e numeroB espresso in base baseB) restituisce la rappresentazione in base baseRisultato della loro somma. Si ricorda che un array rappresenta un numero nel seguente modo: la posizione 0 è la cifra meno significativa (la più a destra), la posizione 1 è la seconda cifra partendo da destra, e così via fino all'ultima posizione che rappresenta la cifra più significativa (la più a sinistra). - 22 Novembre 2012, Homework numero 5
Sfruttando opportunamente il codice visto a laboratorio per le frazioni (scaricabile qui), aggiungere alla MainClass scritta a laboratorio un metodo iterativo
public static Frazione potenzaFrazione (Frazione f, int n)
che presi in input una Frazione f ed un intero n restituisce la frazione risultato dell'elevamento a potenza della frazione f all'esponente n.
Scrivere inoltre un analogo metodo ricorsivo
public static Frazione potenzaFrazioneRic (Frazione f, int n) - 29 Novembre 2012, Homework numero 6
Sfruttando opportunamente il codice visto a laboratorio per le frazioni e le espressioni (scaricabile qui), aggiungere alla MainClass scritta a laboratorio un metodo
public static boolean equivalenteExp (Exp e1, Exp e2)
che prese in input due espressioni restituisce true se e solo se esse sono equivalenti, cioè se e solo se la loro valutazione porta a due frazioni equivalenti. - 6 Dicembre 2012, Homework numero 7 (ultimo homework)
Si consideri il seguente metodo iterativo
static void bubbleSort(int[] a){for (int i =0; ifor (int j=0;jif (a[j]>a[j+1]){int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}
che ordina in modo non decrescente un array di interi effuttuando solo scambi tra posizioni consecutive dell'array. Sfruttando opportunamente il codice visto a laboratorio per le liste (scaricabile qui), aggiungere alla MainClass scritta a laboratorio un metodo
public static void ordinaLista (Lista l)
che presa in input una lista l, ordina i suoi elementi in modo non decrescente (senza modificare le chiavi, ma soltanto i riferimenti che collegano i vari elemnti della lista) sfruttando in particolare il metodo static void scambiaConsecutiviLista(Lista l, Elem e) visto a lezione.