Laboratorio di  Programmazione.
AA 2007/08.

Esercitazione Java n. 1

Scopo di questa  sessione  è di iniziare ad  esercitarsi   con il linguaggio java insistendo, per il momento, più sulle analogie che sulle differenze rispetto al C. .

  1. Creare una directory di nome Java1  e ridefinirla come directory di default  

  2.  
  3. Creare mediante l' editor un file di testo di nome Hello.java  (nella directory Java1)  contenente la segtuente classe Java che mostra su schermo un saluto.
  4. /**
    * La classe Hello implementa un unico metodo (main) che
    * mostra su standard output una stringa di saluto.
    */
    public class Hello {
    public static void main(String[] args) {
    System.out.println("Ciao !"); // println aggiunge un \n
    }
    }

    Verificare con in comando ls quali sono i files presenti nella directory. Compilare il programma con il comando
    javac Hello.java
  5. Verificare  di nuovo  mediante il comando
    ls -l
    quali sono e quanto sono grandi i files presenti.


  6. Eseguire il file Hello.class mediante l' interprete java (Java Virtual Machine):
    java Hello

  7.  
  8. Modificare il programma precedente in modo che scriva su schermo un' informazione sul numero di argomenti forniti al programma. Per ottenere questo, occorre inserire nel metodo main un' istruzione che scriva il valore di args.length. Che differenza si nota rispetto al valore del parametro argc di un programma C di prototipo int main(int argc, char **argv) ?

  9. I parametri letti in args sono delle stringhe. Per convertire stringhe che rappresentano numeri a tipi primitivi si possono usare le "classi di raccordo" (wrapper):
    byte Byte.parseByte(String)
    short Short.parseShort(String)
    int Integer.parseInt(String)
    long Long.parseLong(String)
    float Float.parseFloat(String)
    double Double.parseDouble(String)
    Per esempio,  per trasformare ad intero il primo parametro dato da linea di comando  si potrebbe usare l' istruzione:
    int x = Integer.parseInt(args[0]);
    Scrivere un programma java che legga due numeri interi come argomenti e ne scriva la somma e differenza su standard output.

  10. Scrivere un programma java costituito da un' unico metodo main che legga come argomenti tre numeri double e fornisca la soluzione dell' equazione di secondo grado in cui i tre double siano i coefficienti. Per la radice quadrata si utilizzi il metodo sqrt della classe Math.  Ricordare che vanno gestiti distintamente i casi in cui il discriminante è negativo dagli altri.

  11. Scrivere un programma che legga come parametro un nome scritto tutto in caratteri minuscoli, trasformare il primo carattere in maiuscolo e assegnare la stringa risultante ad una nuova variabile di tipo String che verrà scritta su standard output. Per la trasformazione avvalersi dei metodi
    String substring(int i1, int i2)   (ritorna la sottostringa dalla posizione i1 fino a (esclusa) la posizione i2)
    int length() (ritorna la lunghezza della stringa)
    String toUpperCase() (trasforma i caratteri della stringa in maiuscoli.

  12. Un metodo comodo per leggere input, è utilizzare una finestra di dialogo con input da tastiera. Questo può esser fatto utilizzando la classe JOptionPane del package swing. Un esempio di utilizzo è dato dal seguente programma:
    import javax.swing.*;

    public class InputWind {

    public static void main(String[] args) {
    String inp = JOptionPane.showInputDialog(" Come ti chiami ?" );
    System.out.println(" Ciao " + " " + inp);
    System.exit(0);
    }

    }

    Provare ad eseguirlo. Successivamente provare ad eliminare la chiamata a System.exit(0). Che succede ?

  13. Scrivere un programma java che scriva i numeri interi da 1 a 100, ma, se il numero in questione è un quadrato perfetto, aggiunge la stringa "Quadrato perfetto" all' output, sulla stessa riga.