COGNOME ....................................................NOME ............................................................MATR .............................. FONDAMENTI DI INFORMATICA – 9 CREDITI Prova scritta del 30 gennaio 2009 1. [3 p.ti] Riassumete le differenze tra un linguaggio macchina ed un linguaggio assembly. 2. [3 p.ti] Quale sequenza di numeri viene stampata dal seguente algoritmo se eseguito con i valori di ingresso 0, 1 ? procedure ScrittoMistero (Ultimo, Corrente) if (Corrente < 100) then (stampa il valore assegnato a Corrente; Temp Å Corrente + Ultimo; applica ScrittoMistero ai valori Corrente e Temp) 3. [6 p.ti] Proporre una implementazione NON RICORSIVA in linguaggio Java dell’algoritmo di ordinamento per inserimento per un array di interi (int[] a = new int[NMAX]). Non implementare la classe di test. 4. [5 p.ti] Rappresentazione informazioni: a. Convertire il numero decimale -6,03125 in base due virgola fissa (½ byte intero, ½ byte frazionario) e rappresentare il risultato con cifre esadecimali: ______,______ b. Convertire i seguenti numeri decimali in notazione binaria modulo e segno, complemento a due, su 8 bit DECIMALE MODULO E SEGNO COMPL. A DUE 111 -63 c. Codificate in ASCII la seguente frase “int[] a=new[100];” : S = _____________________________ 5. [5 p.ti] Spiegare il principio dell’ereditarietà, con riferimento al linguaggio Java, facendo almeno un esempio d’uso. 6. [12 p.ti] La sequenza di Fibonacci è definita dalla seguente regola: f1 = 1 f2 = 1 f n = f n−1 + f n−2 Implementare una soluzione RICORSIVA in linguaggio Java, che calcoli tutti i numeri della sequenza di Fibonacci fino all’indice intero sequenceMaxIndex passato da riga di comando, e li restituisca in un ArrayList<Integer>. Progettare la classe FibGenerator con il costruttore FibGenerator() che inizializza le eventuali variabili di istanza, il metodo public ArrayList<Integer> getFibList() ed il metodo ausiliario public int fib(int n). Infine la classe FibGeneratorTest il cui metodo main legga da riga comando un numero in ingresso (si ricordi il significato di args in public static void main(String[] args) ), costruisca un esemplare di FibGenerator e visualizzi tutta la sequenza di Fibonacci fino all’indice inserito. COGNOME ....................................................NOME ............................................................MATR .............................. FONDAMENTI DI INFORMATICA – 9 CREDITI Prova scritta del 30 gennaio 2009 1. [3 p.ti] Perché è meglio, in generale, non passare per valore alle procedure array di grandi dimensioni ? 2. [3 p.ti] Data una lista di nomi, progettate un algoritmo in grado di trovare il nome più lungo. Determinate che cosa fa la vostra soluzione se c’è più di un nome che soddisfa tale condizione: in particolare quando tutti i nomi hanno la stessa lunghezza. 3. [5 p.ti] Rappresentazione informazioni a. Convertire il numero decimale -6,03125 in base due virgola fissa (5 bit intero,5 bit frazionario) e rappresentare il risultato con cifre esadecimali: ______,______ b. Convertire i seguenti numeri decimali in notazione binaria modulo e segno, complemento a due, su 8 bit DECIMALE MODULO E SEGNO COMPL. A DUE 101 -63 c. Codificate in ASCII la seguente frase “int a=1;” S = _____________________________ : 4. [5 p.ti] Descrivere gli elementi che compongono una lista concatenata, facendo riferimento alla classe LinkedList<TypeofObject> implementata nel linguaggio Java. 5. [6 p.ti] Spiegare il principio del polimorfismo, con riferimento al linguaggio Java. 6. [12 p.ti] Il Triangolo di Tartaglia è un metodo, per ottenere i coefficienti dello sviluppo del binomio (a+b) elevato ad una qualsiasi potenza na. In generale, xij = xi − 1,j − 1 + xi − 1,j con i = 1....n e j = 1....n, sempre (per ogni i e j), tranne che per j = 1 oppure j = (i + 1), ossia agli estremi (destro e sinistro) di ogni riga del triangolo, dove vale xij = 1. Progettare la classe Tartaglia con il metodo public static ArrayList<Integer> getListCoeff(int i) che restituisce la riga di indice i ed il metodo ausiliario public static int getCoeff(int i, int j) che restituisce il coefficiente della riga i, posizione j. Infine la classe TartagliaTest il cui metodo main legga da riga comando la potenza ennesima int power (si ricordi il significato di args in public static void main(String[] args) ) e visualizzi i coefficienti relativi allo sviluppo del relativo binomio elevato a power.