vict85 ha scritto:Il punto è che quel codice sembra vecchio e ritengo che sia colpa del libro. Le variabili possono ormai essere definite in qualsiasi punto del codice e ci sono reali vantaggi a definirle solo quanto servono. Inoltre è utile sempre inizializzare le variabili a qualche valore quando le definisci. Questi due piccoli accorgimenti rendono il codice più leggibile, più facile da mantenere ed eliminano il rischio di alcuni errori insidiosi.
Inoltre, a mio avviso, la funzionepow
non andrebbe insegnata. Infatti, non ha alcun senso usarepow
per calcolare potenze basse, calcolabili con uno o due prodotti. E spesso viene usata all'interno di cicli, anche se sarebbe possibile calcolare la nuova potenza a partire dalla vecchia con una singola moltiplicazione.
Se ho capito bene dovrei scrivere il programma in questa maniera:
- Codice:
#include <stdio.h>
#include <math.h>
#define G 9.81
// Questo programma calcola i valori dell'energia cinetica K = 1/2mv^2 e dell'energia potenziale U = mhg in funzione del tempo di un punto materiale di massa m soggetto a una gravità. Le grandezze sono quelle del sistema metrico internazionale. */
int main(){
double m = 0; // massa del punto materiale
double v0 = 0; // velocità iniziale del punto materiale
double h0 = 0; // quota iniziale
double t = 0; // tempo
printf (" Inserisci la massa del punto materiale espressa in kg: ");
scanf ("%lf", &m);
printf ("\n Inserisci la velocità iniziale espressa in m/s (verso positivo verso l'alto) : ");
scanf ("%lf", &v0);
printf ("\n Inserisci la quota iniziale in m: ");
scanf ("%lf", &h0);
printf ("\n Inserisci l'istante di tempo in s nel quale vuoi conoscere i valori dell'energia cinetica e dell'energia potenziale: ");
scanf ("%lf", &t);
//calcola v e h
double v = 0; // velocità in funzione del tempo
double h = 0; // quota in funzione del tempo
v = v0 - G*t;
h = h0 + v0*t - G/2. * t*t;
/* calcola i valori di K e U */
double U = 0, K = 0; // energia potenziale e cinetica
K = m/2. * v*v;
U = m*G*h;
printf ("\n L'energia cinetica all'istante t = %f s è %f J", t, K);
printf ("\n L'energia potenziale all'istante t = %f s è %f J \n", t, U);
}