Esercitazioni del corso di Laboratorio di Programmazione e Calcolo
 n. 3
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. Con la tastiera italiana utilizzare:

                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_3 che conterra' l'esercitazione numero 3 e spostatevi in es_3

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.


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

N.B. 1  -  Per istanziare un oggetto, dovete usare il costruttore. Ad esempio:

 

                                   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).

 

  1. (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_3.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