Esercitazioni del corso di Laboratorio di Programmazione e Calcolo
     n. 4
    Uso delle istruzioni di selezione

    Attenzione: il programma di questa esercitazione verra' valutato



   Procedure preliminari

  1. controllate che nella HOME directory sia presente il file con i vostri nomi

  2. create una sottodirectory es_4

  3. spostatevi in es_4 Solo i files contenuti in /home/did.../es_4 verranno presi in considerazione!

  4. copiate nella directory es_4 i file CorpoCeleste.h e CorpoCeleste.cc che avete scritto durante le scorse esercitazioni

  5. usate emacs per creare il codice del programma richiesto (esempio: emacs esercit_4.cpp &): ricordatevi che ogni programma dovra' iniziare con una riga di commento in cui indicherete i nomi dei componenti del gruppo presenti all'esercitazione

  6. il programma verra' valulatato se funziona (compilazione, linking e corretta esecuzione secondo quanto richiesto) e in base alla chiarezza con cui e' scritto (inserite alcuni commenti nel testo e organizzate iterazioni e selezioni in maniera chiara)


   

   Obiettivo dell'esercitazione

L'esercitazione vuole aiutarvi ad acquisire una maggiore familiarita' con la programmazione ad oggetti (attraverso l'uso della classe CorpoCeleste)  e a fornirvi l'occasione di utilizzare le istruzione di selezione if oppure  if ... elseif ... else. Per svolgere quanto richiesto dall'esercitazione sara' necessario utilizzare anche procedure di iterazione gestite dall'istruzione for e da while o do ... while. Sara' inoltre utile utilizzare la libreria cmath per poter calcolare le potenze ed ottenere il valore di pi greco. Potreste inoltre utilizzare degli array per memorizzare le diverse costanti.



Una biglia di diametro d = 1 cm e di densita' rho viene lasciata cadere da un'altezza h dentro una vasca che contiene un un liquido viscoso, ad esempio olio minerale o glicerina. La velocita' iniziale della sfera e' quindi nulla, mentre per il calcolo della velocita' di ingresso nella vasca si puo' usare il programma elaborato nella esercitazione precedente oppure utilizzare la formula analitica


vx = 0 ; vy = -sqrt(2*g*h) [ sqrt indica la radice quadrata ]


Il problema si riduce quindi a studiare il moto di una sfera che entra verticalmente in un liquido con una velocita' iniziale v le cui due componenti hanno il valoe indicato sopra.


Le forze a cui e' soggetta la sfera sono:



    i) Forza di gravita'             FG = m · g               diretta verso il basso  
                                                                                g = 9.8 m/s2    -     m e' la massa del corpo

   ii) Forza idrodinamica        FK =  6*π*k*R*|v|               diretta lungo la direzione del moto ed in senso opposto alla direzione del moto
                                                                               (questa relazione puo' essere usata per studiare questo problema. In altri casi e sotto diverse condizioni, e' necessario usare una diversa formulazione)

R e' il raggio della sfera

k e' una costante, detta viscosita', che dipende dal fluido. Ad esempio ( https://it.wikipedia.org/wiki/Viscosit%C3%A0 )



Glicerina 1.2 N s/m2

Olio Minerale (SAE 40) 0.32 N s/m2

Sciroppo di Mais 1.38 N s/m2



  iii) Forza di Archimede        FA = d · Vol  · g       diretta verso l'alto -
                                                                              d e' la densita' del fluido nel quale si muove il corpo


         Glicerina 1249 kg/m3

Olio Minerale (SAE 40) 860 kg/m3

Sciroppo di Mais 1400 kg/m3







Supponete inizialmente che la sfera sia di Ferro (Densita' 8000 kg/m3 )

Scopo del programma e' determinare la velocita' con cui la pallina raggiunge il fondo della vasca. Potete assumere che la vasca sia alta 50 cm e che la sfera venga lancitaa da un'altezza di un metro.

1. Potete inizare scegliendo un tipo di fluido

2. Successivamente costruite una tabella in cui la velocita' finale viene calcolata per i tre fluidi



  Glicerina v = ...... m/s

Olio Minerale (SAE 40) v = ...... m/s

Sciroppo di Mais v = ...... m/s



3. Potete ripetere i punti 1 e 2 precedenti supponendo che la sfera sia di Alluminio (Densita' 2700 kg/m3 )



Sfera di Ferro

Glicerina v = ...... m/s

Olio Minerale (SAE 40) v = ...... m/s

Sciroppo di Mais v = ...... m/s



Sfera di Allumino

Glicerina v = ...... m/s

Olio Minerale (SAE 40) v = ...... m/s

Sciroppo di Mais v = ...... m/s







Osservazioni:

1. Per affrontare il punto 1, utilizzate il programma scritto durante la scorsa esercitazione, inserendo le modifiche (poche) che ritenete necessarie.

2. per affrontare il punto 2, potete utilizzare un vettore per le densita' del fluido ed un ciclo for

3. per affrontare il punto 3, potete utilizzare un altro vettore per le densita' delle sfere ed un ulteriore ciclo for



- - - - - - - - - -



Per ottenere il risultato richiesto, non e' strettamente necessario utilizzare l'istruzione di seezione if

Potreste pero' provare ad utilizzarla in sede di assegnazione delle densita', nel caso 1:





........................

string materiale ;

double rhomat ;

cout << " Assegnare il materiale (Ferro o Alluminio) " << endl ;

cin >> materiale ;

if(materiale=="Ferro" || materiale=="ferro") {

rhomat= 8000 :

} else if(materiale=="Alluminio" || materiale=="alluminio") {

rhomat = 2700 :

} else {

cout << " Materiale non noto " << endl

<< " Programma interrotto " << endl :

return 0 ;

}

.........................











- - - - - - - - - - - - -


Materiale

Densita (Kg/m3)

Gomma Rigida

150

Legno

500

Alluminio

2700

Ferro

8000


Tabella 1. Valori approssimati delle densita' di alcuni materiali




          
Potete utilizzare un array a 2
componenti per memorizzare i valori della densita' dei materiali ( double rho[2] ) ed il loro nome ( string mater[2] )


Per il loop potete effettuare il controllo sulla posizione quando il corpo si trova in aria e su posizione e velocita' quando si trova in acqua.

Il programma dovebbe avere questa struttura
(per il punto 1)



    i) dichiarazione di tutte le variabili necessarie
       (iniziate con quelle che ritenete utili, e poi, a mano a mano che emerge la necessita' di altre variabili, aggiungetele)


   ii) inizializzazione delle variabili ai loro valori

  iii) istanza di un oggetto di tipo CorpoCeleste
 

  iv) ciclo while nel fluido (come nella scorsa esercitazione) (pero' con i valori delle forze nel fluido)

 
v) stampa dei risultati finali