Fondamenti di Informatica 1
Corso di Laurea in Ingegneria Informatica
Canale G-O, A.A. 2002/03


Esercitazione 5

Classi che usano istruzioni condizionali e iterative


Esercizio 5A

Parte 1: Progettare e realizzare una classe Java Termometro, che rappresenta termometri. Dei termometri sono d'interesse le seguenti funzionalità:

Per convertire gradi Celsius in gradi Fahrenheit, si usi la la formula di conversione: f = c * 9/5 + 32.

Parte 2: Scrivere un cliente che faccia uso della classe Termometro come segue:

  1. crei un termometro;
  2. per due volte legga una temperatura (in Celsius) da tastiera, la fornisca al termometro come misura, e stampi la scheda del termometro (formata da temperatura in Celsius, temperatura in Fahrenheit, tipo della temperature, cioè "molto caldo", "caldo", ecc). Per stampare la scheda si faccia uso di un metodo statico ausiliario;
  3. inoltre, se tra le due letture non c'è stata una variazione del tipo della temperatura stampi "La temperatura si e' mantenuta.", altrimenti stampi "Attenzione, la temperatura e' cambiata.".

Parte 3: Scrivere un metodo statico, esterno alla classe Termometro che, dato un termometro, legga ripetutamente da tastiera la temperatura in Celsius fornendola al termometro come misura, e restituisca la temperatura massima in Fahrenheit. La lettura da tastiera si deve fermare quando JOptionPane.showInputDialog restituisce null, cioè è stato premuto il bottone cancel.

Parte 4: Scrivere un metodo statico esterno alla classe Termometro che, dato un termometro, legga ripetutamente da tastiera la temperatura in Celsius fornendola al termometro come misura e restituisca la temperatura media in Fahrenheit. Di nuovo, la lettura da tastiera si deve fermare quando JOptionPane.showInputDialog restituisce null.

Soluzione


La classe StringTokenizer

La classe StringTokenizer permette ad una applicazione di suddividere una stringa in token. Un token è la più lunga sequenza di caratteri consecutivi di una stringa che non sono delimitatori. Possibili delimitatori sono " \t\n\r", cioè il carattere spazio, il carattere tab e il carattere a capo.

Esempio:
I token contenuti nella stringa:

"Sono uno studente
di Fondamenti di Informatica"

sono: "Sono" "uno" "studente" "di" "Fondamenti" "di" "Informatica"

Un oggetto di tipo StringTokenizer mantiene internamente la posizione del token corrente all'interno della stringa da analizzare. Alcuni metodi fanno avanzare tale posizione.

Esempio di uso di un oggetto di tipo StringTokenizer:

StringTokenizer st = new StringTokenizer("this is a test");
  while (st.hasMoreTokens()) {
    System.out.println(st.nextToken());
  }

stampa il seguente output:

this
is
a
test

Nota:

La classe StringTokenizer si trova nel package java.util. Di conseguenza, ogni volta che si usa questa classe, è necessario importarla mediante l'istruzione import java.util.StringTokenizer;.

Constructor Summary
StringTokenizer(String str)
          Costruisce un oggetto di tipo StringTokenizer per la stringa str.
 
Method Summary
 boolean hasMoreTokens()
          Verifica se ci sono altri token nella stringa cui l'oggetto di tipo StringTokenizer si riferisce.
 String nextToken()
          Restituisce il token successivo.


Esercizio 5B

Scrivere una classe Esperimento che mantenga informazioni riguardo ai dati misurati durante un esperimento. I dati vengono forniti sotto forma di una stringa di testo contenente valori interi (almeno uno) separati da spazi. La classe Esperimento deve avere le seguenti funzionalità:

Per realizzare le varie funzionalità si utilizzino degli oggetti di tipo StringTokenizer, creati a partire dalla stringa che rappresenta i dati.

Soluzione


Esercizio 5C

Scrivere un programma cliente della classe Esperimento, che legga da tastiera (mediante il metodo JOptionPane.showInputDialog) un insieme di valori interi finché l'utente preme il bottone Cancel, impacchettandoli in una stringa separati da spazi, crei poi un oggetto della classe Esperimento definita precedentemente e stampi la media dei valori inseriti.

Soluzione