Enrere Mòdul 2
Fonaments de Programació. Llenguatge C/C++---
Pràctica  Resum teòric Exercicis
Pràctica d'ampliació

 
Càlcul del volum d'una esfera

Veurem en aquesta pràctica que una expressió pot barrejar diferents tipus de dades, no obstant, és necessari conèixer les regles de conversió per tal de no cometre errors.

 

Desenvolupament de la pràctica

Creeu un nou arxiu del tipus C anomenat m2p07.c i escriviu el següent codi:

//m2p07.c - Càlcul del volum d'una esfera -

#define PI 3.14159f
#include <stdio.h>

int main(){

    float r,v1,v2,v3;

    printf("càlcul del volum d'una esfera\n");
    printf("introduïu el valor del radi...");
    scanf("%f",&r);

    v1=4/3*PI*r*r*r;
    v2=4./3*PI*r*r*r;
    v3=4.f/3*PI*r*r*r;

    printf("\n\nl'expressió 4/3*PI*r*r*r = %f\n",v1);
    printf("\nl'expressió 4./3*PI*r*r*r = %f\n",v2);
    printf("\nl'expressió 4.f/3*PI*r*r*r = %f\n",v3);

    return 0;

}

Captura de l'execució del programa.

 

Explicació del programa

Aquest senzill programa calcularà el volum d'una esfera a partir del radi. Es faran servir variables del tipus float. S'han definit 4 variables d'aquest tipus: r correspon al radi, que serà entrat per teclat, v1, v2 i v3 seran tres variables en les quals emmagatzemarem el valor de l'àrea amb tres expressions diferents:

v1=4/3*PI*r*r*r;

Aquesta expressió és incorrecta, ja que 4 i 3 són constants enteres i, per tant, l'operador aritmètic / operant sobre enters dóna un resultat enter, en aquest cas 1. Encara que l'expressió és incorrecta, el compilador no detecta cap error, de fet, sintàcticament, l'expressió és correcta.

v2=4./3*PI*r*r*r;

Aquesta expressió, encara que és correcta, dóna lloc a un missatge d'advertència del compilador. Per defecte, totes les constants que contenen un punt decimal són del tipus double. L'expressió 4./3*PI*r*r*r , per tant, dóna lloc a un resultat del tipus double, i quan intentem assignar un valor del tipus double a una variable del tipus float podria haver un error. Aquest error es produiria en temps d'execució, el compilador només ens adverteix d'aquesta circumstància però realitza la compilació correctament.

v3=4.f/3*PI*r*r*r;

Aquesta expressió és totalment correcta i no dóna lloc a cap missatge d'advertència del compilador. La constant 4.f és del tipus float, per tant, l'expressió final serà del tipus float i l'assignació es farà sempre correctament.