Programmazione per TWM: Esercitazione di laboratorio #5 (4/02)

L'obiettivo di questa esercitazione è familiarizzare con i seguenti concetti, illustrati nel capitolo 3 del libro:

Ove non altrimenti indicato, rispondete alle domande prima ragionando su carta e poi provando a editare, compilare ed eseguire. Gli esercizi etichettati con l'asterisco (*) sono più difficili: affrontateli dopo aver risolto gli altri.

Esercizio 1

Obiettivo: Familiarizzare con l'istruzione switch/case.

Attività:

  1. Riscrivere il frammento di codice dell'esercizio 3.1 dell'esercitazione numero 3 usando lo switch/case invece dell'if/else.
  2. È possibile riscrivere il seguente if/else usando lo switch/case? Perché?
    if (x >= 0)
      System.out.println("x e' positivo");
    else
      System.out.println("x e' negativo");
    
    Nota: questo esempio dimostra che lo switch/case non è più potente dell'if/else.

Esercizio 2

Obiettivo: Familiarizzare con il do/while.

Attività:

  1. Scrivete, usando il do/while, un programma che visualizza i numeri da 1 a 10.
  2. Scrivete, usando il while, un programma che legge da tastiera un numero intero e visualizza tutti i numeri da 10 fino a quel numero. Se il numero letto è inferiore a 10, non visualizza nulla.
  3. Modificate l'esercizio precedente usando il do/while invece del while. Attenzione: se il numero letto è inferiore a 10, non deve visualizzare nulla.

Esercizio 3

Obiettivo: Familiarizzare con il for.

Attività:

  1. Che cosa fa il seguente programma?
    class Boh {
      public static void main (String[] args) {
        for (int i = 1; i < 10; i = i + 1);
          System.out.println(i);
      }
    }
    
    Perché? Suggerimento: leggete MOLTO attentamente il codice...
  2. Scrivete, usando il for, un programma che visualizza i numeri da 1 a 10. Confrontare con gli analoghi programmi che usano il while e il do/while, scritti in precedenza.
  3. Scrivete, usando il for, un programma che visualizza tutti i multipli di 3 da 1 a 30.
  4. Scrivete, usando il for, un programma che legge da tastiera un numero intero e visualizza tutti i numeri da 10 fino a quel numero. Se il numero letto è inferiore a 10, non visualizza nulla.
  5. Scrivete, usando il for, un programma che legge da tastiera un numero intero e visualizza tutti i numeri multipli di tre compresi fra quel numero e 100. Se il numero letto è superiore a 100, non visualizza nulla.

Esercizio 4

Obiettivo: Familiarizzare con lo sviluppo incrementale dei programmi.

Attività:

  1. Scrivere un programma per trovare il massimo comun divisore di 3 numeri.
  2. Scrivere un programma per trovare il minimo comune multiplo di 2 numeri.
  3. Scrivere un programma per trovare il minimo comune multiplo di 3 numeri.

Esercizio 5

Obiettivo: Familiarizzare con i cicli annidati.

Attività:

  1. Che cosa visualizza il programma seguente?
    class ChiLoSa {
      public static void main(String[] args){
        for (int i = 1; i <= 4; i = i + 1){
          for (int j = 1; j <= 6; j = j + 1)
            System.out.print("*");
          System.out.println();
        }
      }
    }
    
  2. E questo (che, controllate bene, è diverso dal precedente)?
    class ChiLoSa2 {
      public static void main(String[] args){
        for (int i = 1; i <= 4; i = i + 1){
          for (int j = i; j <= 6; j = j + 1)
            System.out.print("*");
          System.out.println();
        }
      }
    }
    
  3. E questo?
    class ChiLoSa3 {
      public static void main(String[] args){
        for (int i = 1; i <= 4; i = i + 1){
          for (int j = 1; j <= i; j = j + 1)
            System.out.print("*");
          System.out.println();
        }
      }
    }
    
  4. Riflettete sulle differenze fra i tre programmi precedenti
  5. Il seguente frammento di programma dovrebbe visualizzare tutte le coppie di numeri (x,somma) tali che somma è la somma di tutti i valori da 1 a x (per x che va da 1 a 10). C'è però un errore. Per trovarlo, potrebbe esservi utile farvi visualizzare tutti i valori assunti da somma (e questa è una tecnica standard per capire perché un programma non funziona: farsi visualizzare i valori intermedi assunti dalle variabili per verificare che siano esattamente quello che si prevede).
    somma = 0;
    for (int x = 1; x <= 10; x = x + 1)
      for (int y = 1; y <= x; y = y + 1)
        somma = somma + y;
      System.out.println(x +" " + somma);
    
    Una volta capito l'errore, correggete il programma, e riverificatene il funzionamento.
  6. (*) Se non l'avete ancora fatto, svolgete l'esercizio 2 dell'esercitazione scorsa.

Valid XHTML 1.1! Stefano Mizzaro Last modified: Sat Jul 10 11:31:53 ora legale Europa occidentale 2004