Laboratorio 2

Esercizio 0

Questionario di autovalutazione: risposte e statistiche

Esercizio 1

Argomento: errori di compilazione, errori di esecuzione

Scrivere, compilare ed eseguire alcuni degli esempi visti a lezione, introducendo anche errori di sintassi e/o logici e osservando con attenzione i messaggi d'errore generati dal compilatore e, eventualmente, dall'interprete.

Esercizio 2

Argomento: rappresentazione numeri in java, conversioni ed arrotondamenti

Scaricare, compilare ed eseguire la classe NumLimitTester. Osservare i risultati, ripassare i limiti di variabilita` per i tipi di dati fondamentali in java.
Scaricare, compilare ed eseguire la classe NumTypeTester. Osservare i risultati, manipolare i dati secondo quanto suggerito nei commenti interni alla classe, rispondere alle domande.
Scaricare, compilare ed eseguire la classe DiscountTester. Osservare i risultati, manipolare i dati secondo quanto suggerito nei commenti interni alla classe, rispondere alle domande.

Esercizio 3

Argomento: uso della documentazione java; conversioni tra stringhe e tipi numerici

Esplorare la Documentazione API di Java, rintracciabile sia sul web che sul sito dell'Aula Taliercio (-> Guide on-line -> Java 6 docs -> Java Platform API Specification).
Cercare la documentazione delle classi String, Integer, Double (possibilmente con la funzione di ricerca del vostro Browser), studiarne la descrizione, in particolare studiare la descrizione dettagliata dei costruttori e metodi visti a lezione: Scaricare, compilare ed eseguire la classe StringNumTester. Osservare i risultati, manipolare i dati secondo quanto suggerito nei commenti interni alla classe, rispondere alle domande.
Attenzione: gli esercizi seguenti richiedono di fare uso dell'input standard.
  • Ripassare quanto visto a lezione sulla classe Scanner
  • Studiare la documentazione della classe Scanner
  • Fare attenzione alle convenzioni usate da Scanner per quanto riguarda la localizzazione (cfr. quanto detto a lezione)

Esercizio 4

Argomento: uso dell'input standard; rappresentazione dei numeri

Scrivere il codice di una classe IntegerDivider che acquisisce due numeri interi m e n da standard input e invia a standard output il risultato e il resto della divisione m/n. Compilare e eseguire. Che cosa succede se il divisore e` zero?
Scrivere poi il codice di una classe DoubleDivider che acquisisce due numeri reali x e y da standard input e invia a standard output il risultato della divisione x/y. Compilare ed eseguire. Esegue correttamente? Provare con le coppie di numeri:
x =  7.0  y = 0.0
x = -7.0  y = 0.0
x =  0.0  y = 0.0 


Soluzione2_4


Esercizio 5

Argomento: uso dell'input standard; rappresentazione dei numeri; divisione intera / e modulo %

Scrivere un programma che Ad esempio, il numero 14356 verra` visualizzato come 1 4 3 5 6. Il numero 367 verra` visualizzato come 0 0 3 6 7.

Suggerimento: applicare la definizione di notazione posizionale in base 10, ricordare le proprieta` della divisione intera in Java e del relativo operatore %.

Soluzione2_5

Verificare il corretto funzionamento del programma in casi diversi (in particolare, con numeri aventi meno di cinque cifre) e verificare il comportamento del programma in caso di valori di ingresso non ammessi

Esercizio 6

Argomento: uso dell'input standard; rappresentazione dei numeri; divisione intera / e modulo %

Scrivere un programma che acquisisca dall'input standard un numero frazionario positivo n nell'intervallo [0, 32), ne stampi a standard output la codifica binaria in formato a virgola fissa usando cinque cifre binaria per entrambe le parti intera e frazionaria. Esempio: 8.5 in base dieci = 01000.10000 in base due.
Suggerimento: si usino gli algoritmi di conversione da decimale a binario della parte intera e della parte frazionaria presentati a lezione.

Soluzione2_6


Esercizio 7

Argomento: uso dell'input standard; divisione intera / e modulo %

Scrivere un programma che secondo il seguente esempio:
  Inserire il primo orario: 0900
  Inserire il secondo orario: 1730
  Tempo trascorso: 8 ore e 30 minuti

Modificare poi il programma in modo che funzioni correttamente anche se il secondo orario e` inferiore al primo (per intervalli di tempo che comprendono la mezzanotte):
  Inserire il primo orario: 1730
  Inserire il secondo orario: 0900
  Tempo trascorso: 15 ore e 30 minuti


Soluzione2_7


Esercizio 8

Argomento: uso della documentazione java

Esplorare la Documentazione API di Java, rintracciabile sia sul web che sul sito dell'Aula Taliercio (-> Guide on-line -> Java 6 docs -> Java Platform API Specification).
Cercare la documentazione della classe Rectangle (possibilmente con la funzione di ricerca del vostro Browser), studiarne la descrizione, studiare la descrizione dettagliata dei suoi costruttori e metodi. In particolare   Rectangle box = new Rectangle(5, 10, 20, 30);
  box.add(0, 0);


Soluzione2_8


Esercizio 9

Argomento: uso di classi (in particolare uso di classi della libreria standard)

Il metodo intersection della classe Rectangle calcola l'intersezione di due rettangoli e viene invocato in questo modo

  Rectangle r3 = r1.intersection(r2);

(si veda anche la Documentazione API).
Scrivere un programma che Cosa succede quando i rettangoli non si sovrappongono?

Soluzione2_9


Esercizio 10

Rispondere alle domande di autovalutazione proposte a lezione