Paolo Boldi
	
	
Problemi per la lezione del 7/11
	- [Interi grandi] La classe BigInteger, contenuta nel pacchettojava.mathdelle API standard di Java, rappresenta interi con numero di cifre arbitrario: le istanze di questa classe permettono
	quindi di manipolare interi senza incorrere nei limiti della rappresentazione degliint.
	Se consultate la documentazione della classe, vedrete che fra gli altri esiste un costruttore che costruisce unBigIntegerdata una stringa (che ne costituisce la rappresentazione in base 10).
	Inoltre, ci sono metodi che realizzano tutte le operazioni aritmetiche: notate che la classe è immutabile, e tutti
	i metodi indicati creano nuovi oggettiBigIntegercontenenti il risultato dell'operazione e li
	restituiscono.
	La classe ha un metodotoString()che restituisce la stringa rappresentante il numero.
	Usando la classeBigInteger, implementate un programma che legga due interi arbitrari e ne stampi
	l'MCD, calcolato usando l'algoritmo di Euclide.
- [Finestre mutanti] Molte delle API standard di Java consentono di realizzare con facilità	
	delle interfacce grafiche (le cosiddette GUI, Graphical User Interface) basate su menù a tendine, finestre ecc.
	In questo esercizio, vi proponiamo di sperimentare una di queste classi. 
	Le istanze della classe JFrame(nel pacchettojavax.swing) 
	rappresentano delle finestre grafiche: l'uso tipico prevede che
	un'istanza venga creata, popolata (cioè, riempita di oggetti grafici che costituiscono l'interfaccia per
	l'utente) e resa visibile. Quando laJFramenon serve più, la si può distruggere.
	Aiutandovi con la documentazione delle API, scrivete un programma che:
		- crea una JFrameusando il costruttore che vuole come argomento una stringa (il titolo
		della finestra);
- la dimensiona: per farlo, dovete usare il metodo setSize(d)[noterete che questo metodo non
		compare apparentemente nella documentazione della classeJFrame, ma è uno dei metodi elencati 
		in fondo come "metodi ereditati" (spiegheremo il significato di questa espressione più avanti)]; il metodosetSize(d)vuole come argomento un oggettoddi tipoDimension(classe contenuta nel pacchettojava.awt): unaDimensionrappresenta una coppia
		di interi, che corrispondono alla larghezza e all'altezza della finestra, misurate in pixel (punti grafici);
- la rende visibile: per farlo, invocate il metodo setVisible(true)(l'argomento può essere true
		o false, a seconda che vogliate rendere la finestra visibile o invisibile);
- la distrugge, invocando il metodo dispose().
 Se eseguite il codice, vedrete che la finestra apparirà e scomparirà istantaneamente. Inserite, prima di far scomparire la
	finestra, un ciclo for a vuoto con almeno 1000000000 (un miliardo) di cicli che provochi un ritardo.
	A questo punto, alterate il codice dopo il ciclo di ritardo, in modo che:
		- la finestra venga ridimensionata (chiamando di nuovo il metodo setSize(d), con una dimensione diversa);
- ne venga cambiato il titolo, invocando il metodo setTitle(s)che vuole come argomento una stringa (il nuovo
		titolo).
 Aggiungete un nuovo ciclo di ritardo prima di distruggere la finestra.
- [Finestre erranti] Il metodo setLocation(x,y)serve per posizionare unaJFrame:
	più precisamente, il metodo indica la posizione sullo schermo dell'angolo in alto a sinistra della finestra; il punto (0,0) è
	inteso essere il punto in alto a sinistra dello schermo. Scrivete un programma che visualizzi unaJFramein posizione
	(100,100) e poi, per 1000 volte, ne sposti la locazione in modo casuale, incrementando o decrementando ogni volta le coordinate
	x e y di un valore compreso fra -10 e 10; per ottenere un valore pseudo-casuale, invocateMath.random()(che 
	restituisce un valore pseudo-casuale nell'intervallo [0,1)). Dopo ogni spostamento, fate un ciclo di ritardo di almeno 1000 passi.
- [Rimpiazzare] La classe String contiene un metodo che consente di rimpiazzare tutte le occorrenze di un certo
	carattere, o di una certa stringa, con un altro carattere, o stringa. Trovate questo metodo consultando la documentazione delle API, e poi scrivete un
	programma che operi come segue:
		
			- legge due stringhe, diciamo x e y
			
- inizia quindi un ciclo di lettura di stringhe: ogni volta che legge una stringa, la
				stampa dopo aver sostituito tutte le occorrenze di x con y
			
- quando l'utente inserisce la stringa vuota, il programma termina.