31.05.2013 Views

Esercizi e progetti di programmazione - Apogeo

Esercizi e progetti di programmazione - Apogeo

Esercizi e progetti di programmazione - Apogeo

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!