Esercitazioni del corso di Laboratorio di Programmazione e Calcolo
     n. 2
    Implementazione della classe CorpoCeleste
    Uso di emacs e del compilatore g++



    NB:    le tastiere italiane (che prevedono caratteri speciali come le lettere accentate) non prevedono
              caratteri quali { } e ~ che vi serviranno spesso. Chi dovesse avere una tastiera italiana utilizzi

                    AltGr insieme al tasto 7 per {
                    AltGr insieme al tasto 0 per }
                    AltGr insieme al tasto  ^ per ~


  1. create una directory   source  che conterra' tutte le versioni finali di ciascuna sezione del programma di simulazione del Sistema Solare

  2. create una directory es_2 che conterra' l'esercitazione numero 2 e spostatevi in es_2

  3. definite la classe Corpo Celeste (file CorpoCeleste.h) e implementatela (file CorpoCeleste.cc).
    Iniziate scrivendo poche righe o implementando metodi vuoti e compilate il file .cc (g++ -c
    CorpoCeleste.cc) per controllare che non ci siano errori.  Continuate alternando implementazione e compilazione, sino ad implementare completamente la classe CorpoCeleste come descritto a lezione.


  4. scrivere un programma main() - che potreste chiamare ad esempio Esercit_2.cpp  - che esegua le seguenti operazioni

                                    CorpoCeleste Marte ;             oppure                CorpoCeleste Marte() ;

                           oppure, inizializzando l'oggetto con i valori indicati tra parentesi

                  CorpoCeleste Marte("Marte",100., 50.e11, 60.E11,40.,50.)  ;

          
    N.B. 2  -  Per applicare un metodo ad un oggetto, si scrive il nome dell'oggetto, un punto (".") e poi il nome del metodo. Ad esempio

                                    Marte.stampaPosizione() ;

                           dove Marte e' un'istanza di un oggetto di tipo CorpoCeleste
         


    N.B. 3  -  Per eseguire il programma e` sufficiente scrivere il nome dell'eseguibile, eventualmente preceduto da ./ per indicare che l'eseguibile si trova nella directory corrente (.) qualora il sistema vi rispondesse "command not found" (vuol dire che la vostra  SHELL  non e' ben definita e la directory corrente non e' nella lista, detta PATH, di quelle tra le quali cercare gli eseguibili).


  5. (facoltativo) Per rendere esplicito il ruolo del distruttore (metodo ~CorpoCeleste() ), potete implementare il distruttore in forma intelligente (nel programma precedente il distruttore era fornito dal compilatore, in quanto non esplitamente definito), con un messaggio che avverta l'utente dell'avvenuta distruzione. Nel file CorpoCeleste.cc dovete modificare aggiungere le istruzioni che implementano il distruttore
            

  CorpoCeleste::~CorpoCeleste() {

                            cout << endl << " sono nel distruttore di CorpoCeleste!! " << endl ;

      };


        Potete anche aggiungere il nome del pianeta.
       Verificate il funzionamento del distruttore utilizzando il programma Esercit_1.cpp



SE NON VI VIENE emacs A COLORI SCARICATE IL FILE .emacs nella vostra "home" (/home/didXXY)



Planetary Fact Sheet - Metric


   MERCURY   VENUS   EARTH   MOON   MARS   JUPITER   SATURN   URANUS   NEPTUNE   PLUTO 
Mass (1024kg) 0.330 4.87 5.97 0.073 0.642 1899 568 86.8 102 0.0125
Diameter (km) 4879 12,104 12,756 3475 6792 142,984 120,536 51,118 49,528 2390
Density (kg/m3) 5427 5243 5515 3340 3933 1326 687 1270 1638 1750
Gravity (m/s2) 3.7 8.9 9.8 1.6 3.7 23.1 9.0 8.7 11.0 0.6
Escape Velocity (km/s) 4.3 10.4 11.2 2.4 5.0 59.5 35.5 21.3 23.5 1.1
Rotation Period (hours) 1407.6 -5832.5 23.9 655.7 24.6 9.9 10.7 -17.2 16.1 -153.3
Length of Day (hours) 4222.6 2802.0 24.0 708.7 24.7 9.9 10.7 17.2 16.1 153.3
Distance from Sun (106 km) 57.9 108.2 149.6 0.384* 227.9 778.6 1433.5 2872.5 4495.1 5870.0
Perihelion (106 km) 46.0 107.5 147.1 0.363* 206.6 740.5 1352.6 2741.3 4444.5 4435.0
Aphelion (106 km) 69.8 108.9 152.1 0.406* 249.2 816.6 1514.5 3003.6 4545.7 7304.3
Orbital Period (days) 88.0 224.7 365.2 27.3 687.0 4331 10,747 30,589 59,800 90,588
Orbital Velocity (km/s) 47.9 35.0 29.8 1.0 24.1 13.1 9.7 6.8 5.4 4.7
Orbital Inclination (degrees) 7.0 3.4 0.0 5.1 1.9 1.3 2.5 0.8 1.8 17.2
Orbital Eccentricity 0.205 0.007 0.017 0.055 0.094 0.049 0.057 0.046 0.011 0.244
Axial Tilt (degrees) 0.01 177.4 23.4 6.7 25.2 3.1 26.7 97.8 28.3 122.5
Mean Temperature (C) 167 464 15 -20 -65 -110 -140 -195 -200 -225
Surface Pressure (bars) 0 92 1 0 0.01 Unknown* Unknown* Unknown* Unknown* 0
Number of Moons 0 0 1 0 2 63 62 27 13 3
Ring System? No No No No No Yes Yes Yes Yes No
Global Magnetic Field? Yes No Yes No No Yes Yes Yes Yes Unknown
   MERCURY   VENUS   EARTH   MOON   MARS   JUPITER   SATURN   URANUS   NEPTUNE   PLUTO