Paola Magillo, Univestita' di Genova, Corso di Programmazione II per SMID, a.a. 2004-2005.

Laboratorio 02:

CRIVELLO DI ERATOSTENE E VARIANTI

Vedere l'ultima parte della lezione 4 per l'algoritmo del Crivello di Eratostene in Java.

Partire dalla versione che genera i numeri primi e li stampa (senza raccoglierli in una lista).

Scrivere le seguenti varianti:

  1. Generare tutti i numeri primi minori di k con k dato come parametro su command-line.
    IN PRATICA:
    Bisogna aggiungere la lettura del parametro da command-line.
  2. Scrivere un programma che controlla se un numero assegnato e' primo oppure no.
    IN PRATICA:
    Sia n il numero da controllare (per es. dato come parametro da linea di comando).
    E' sufficiente provare a generare tutti i numeri primi minori di n+1. Se a un certo punto si scopre che n e' primo, allora si termina e si risponde "si". Altrimenti si risponde "no".

CLASSI ED EREDITARIETA'

Scrivere una classe Point che descrive un punto nel piano (quindi una coppia di coordinate x,y).
Definire, testandoli via via, i seguenti costruttori e metodi:

  1. costruttore senza argomenti che costruisce il punto "origine"
  2. costruttore che costruisce un punto date le due coordinate
  3. costruttore che fa la copia di un altro punto
  4. metodo che trasla il punto di una certa distanza sulla x
  5. metodo che trasla il punto di una certa distanza sulla y
  6. metodo che calcola la distanza del punto dall'origine
  7. metodo che stabilisce se un punto e' uguale, come coordinate, a un altro punto

Scrivere una classe OrientedPoint, sotto-classe di Point, che descrive un punto orientato. Un punto orientato ha in piu' una direzione fra NORTH, SOUTH, EAST e WEST.
Supponiamo inoltre che esista una "direzione di default" definita come variabile di classe (scegliere una delle quattro a piacere).
Definire, testandoli via via, i seguenti costruttori e metodi:

  1. costruttore senza argomenti che costruisce il punto origine orientato secondo la direzione di default
  2. costruttore che costruisce un punto orientato date le due coordinate, assegnandogli la direzione di default
  3. costruttore che costruisce un punto orientato date le due coordinate e la direzione
  4. costruttore che fa la copia di un altro punto orientato
  5. metodo che sposta un punto orientato di una certa distanza nella direzione corrente
  6. metodo che "gira" un punto orientato in senso orario
  7. metodo che cambia la direzione di default
  8. metodo che stabilisce se un punto orientato e' uguale, come coordinate e direzione, a un altro punto orientato