Esercizi e progetti di programmazione - Apogeo
Esercizi e progetti di programmazione - Apogeo
Esercizi e progetti di programmazione - Apogeo
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ESERCIZI E PROGETTI DI PROGRAMMAZIONE E–29<br />
** <strong>Esercizi</strong>o P6.12. Il valore <strong>di</strong> e x si può calcolare con la serie <strong>di</strong> potenze<br />
∞ n<br />
x x<br />
e = ∑ n!<br />
n=<br />
0<br />
dove n! = 1 · 2 · 3 · ... · n e 0! = 1.<br />
Scrivete un programma che calcoli e x usando questa formula. Ovviamente non potete calcolare<br />
una sommatoria infi nita: continuate semplicemente a sommare termini fi nché un singolo<br />
addendo non sia minore <strong>di</strong> una determinata soglia. A ogni passo dovete calcolare il nuovo termine<br />
e aggiungerlo al totale. Aggiornate tali termini in questo modo:<br />
term = term * x / n;<br />
Seguite l’approccio dei due esercizi precedenti, realizzando una classe ExpApproximator che usi<br />
il valore 1 come prima approssimazione<br />
* <strong>Esercizi</strong>o P6.13. Scrivete un programma RandomDataAnalyzer che generi 100 numeri casuali<br />
compresi tra 0 e 1000 e li aggiunga a un oggetto <strong>di</strong> tipo DataSet. Visualizzate poi la loro me<strong>di</strong>a e<br />
il valore massimo.<br />
** <strong>Esercizi</strong>o P6.14. Programmate la simulazione seguente. Si lanciano alcune freccette in punti casuali<br />
all’interno <strong>di</strong> un quadrato avente vertici nelle posizioni (1, 1) e (–1, –1). Si fa centro quando la<br />
freccetta cade all’interno del cerchio unitario (avente centro (0, 0) e raggio uguale a 1), altrimenti<br />
è un colpo mancato. Eseguite la simulazione e usatela per determinare un valore approssimato <strong>di</strong><br />
π. Otterrete una valutazione migliore se spiegate perché questo è un metodo migliore per stimare<br />
π, rispetto al programma dell’ago <strong>di</strong> Buffon.<br />
***G <strong>Esercizi</strong>o P6.15. Itinerario casuale. Simulate il girovagare <strong>di</strong> un ubriaco in un reticolo quadrato<br />
<strong>di</strong> strade. Disegnate una griglia con venti strade orizzontali e venti strade verticali. Rappresentate<br />
l’ubriaco simulato me<strong>di</strong>ante un punto e collocatelo inizialmente al centro della griglia. Per 100 volte,<br />
fate prendere all’ubriaco una <strong>di</strong>rezione casuale (est, ovest, nord, sud), spostatelo <strong>di</strong> un isolato nella<br />
<strong>di</strong>rezione scelta e ri<strong>di</strong>segnate il punto. Ci si aspetterebbe che, in me<strong>di</strong>a, la persona non possa andare<br />
da nessuna parte e che, a lungo andare, gli spostamenti casuali in <strong>di</strong>rezioni <strong>di</strong>verse impe<strong>di</strong>scano <strong>di</strong><br />
uscire dal reticolo, ma si può <strong>di</strong>mostrare effettivamente che, con probabilità 1, alla fi ne la persona<br />
esce da qualsiasi regione circoscritta. Usate una classe per la griglia e un’altra per l’ubriaco.<br />
***G <strong>Esercizi</strong>o P6.16. Questo esercizio è la prosecuzione dell’<strong>Esercizi</strong>o P6.4. La maggior parte delle<br />
palle <strong>di</strong> cannone non viene sparata in verticale, ma secondo un certo angolo. Se la velocità iniziale<br />
è v e l’angolo iniziale è α, in pratica la velocità viene espressa da un vettore, con componenti<br />
vx = v cos(α), e vy = v sen(α). Nella <strong>di</strong>rezione dell’asse x la velocità non cambia, mentre in quella<br />
dell’asse y la forza gravitazionale impone il suo pedaggio. Ripetete la simulazione descritta in<br />
quell’esercizio, ma aggiornate le posizioni x e y separatamente, aggiornando separatamente anche<br />
le componenti x e y della velocità. Per ciascun secondo <strong>di</strong> tempo trascorso completamente, tracciate<br />
in una visualizzazione grafi ca la posizione del proiettile me<strong>di</strong>ante un piccolo cerchio e ripetete<br />
l’operazione fi nché il proiettile ricade a terra.<br />
Questo genere <strong>di</strong> problema è <strong>di</strong> interesse storico: i primi computer furono progettati proprio<br />
per eseguire calcoli balistici <strong>di</strong> questo tipo, tenendo conto, per proiettili volanti ad altezza elevata,<br />
della <strong>di</strong>minuzione della forza gravitazionale e della forza del vento.<br />
*G <strong>Esercizi</strong>o P6.17. Scrivete un’applicazione grafi ca che visualizzi una scacchiera con 64 riquadri,<br />
alternativamente bianchi e neri.<br />
Cay Horstmann: Concetti <strong>di</strong> informatica e fondamenti <strong>di</strong> Java 5 a ed. - Copyright 2010 <strong>Apogeo</strong> srl