|
|
Las constantes son aquellos datos que no pueden cambiar a lo largo de la ejecuci�n de un programa.
#include <stdio.h>
int main()
{
int radio, perimetro;
radio = 20;
perimetro = 2 * 3.1416 * radio;
printf( "El per�metro es: %i", perimetro );
return 0;
}
radio y perimetro son variables, su valor puede cambiar a lo largo del programa. Sin embargo 20, 2 y 3.1416 son constantes, no hay manera de cambiarlas. El valor 3.1416 no cambia a lo largo del programa , ni entre ejecuci�n y ejecuci�n. S�lo cambiar� cuando edites el programa y lo cambies tu mismo. Esto es obvio, y no tiene ning�n misterio as� que no le des vueltas. S�lo quer�a indicarlo porque en algunos libros le dan muchas vueltas.
Supongamos que tenemos que hacer un programa en el que haya que escribir unas cuantas veces 3.1416 (como todos sabreis es PI). Es muy f�cil que nos confundamos alguna vez al teclearlo y al compilar el programa no tendremos ning�n error, sin embargo el programa no dar� resultados correctos. Para evitar esto usamos las constantes con nombre. Al definir una constante con nombre estamos dando un nombre al valor, a 3.1416 le llamamos PI.
Estas constantes se definen de la manera siguiente:
#define nombre_de_la_constante valor_de_la_constante
Ejemplo:
#include <stdio.h>
#define PI 3.1416
int main()
{
int radio, perimetro;
radio = 20;
perimetro = 2 * PI * radio;
printf( "El per�metro es: %i", perimetro );
return 0;
}
De esta forma cada vez que el compilador encuentre el nombre PI lo sustituir� por 3.1416.
A una constante no se le puede dar un valor mientras se ejecuta, no se puede hacer PI = 20;. S�lo se le puede dar un valor con #define, y s�lo una vez. Tampoco podemos usar el scanf para dar valores a una constante:
#define CONSTANTE 14
int main()
{
...
scanf( "%i", CONSTANTE );
...
}
eso ser�a como hacer:
scanf( "%i", 14 );
Esto es muy grave, estamos diciendo que el valor que escribamos en scanf se almacene en la posici�n 14 de la memoria, lo que puede bloquear el ordenador.
Las constantes se suelen escribir en may�sculas s�lo se puede definir una constante por fila. No se pone ";" al final.
Las constantes nos proporcionan una mejor comprensi�n del c�digo fuente. Mira el siguiente programa:
#include <stdio.h>
int main()
{
int precio;
precio = ( 4 * 25 * 100 ) * ( 1.16 );
printf( "El precio total es: %i", precio );
return 0;
}
�Quien entiende lo que quiere decir este programa? Es dif�cil si no imposible. Hag�moslo de otra forma.
#include <stdio.h>
#define CAJAS 4
#define UNIDADES_POR_CAJA 25
#define PRECIO_POR_UNIDAD 100
#define IMPUESTOS 1.16
int main()
{
int precio;
precio = ( CAJAS * UNIDADES_POR_CAJA * PRECIO_POR_UNIDAD ) * ( IMPUESTOS );
printf( "El precio total es: %i", precio );
return 0;
}
�A que ahora se entiende mejor? Claro que s�. Los n�meros no tienen mucho significado y si revisamos el programa un tiempo m�s tarde ya no nos acordaremos qu� cosa era cada n�mero. De la segunda forma nos enteraremos al momento.
Tambi�n podemos definir una constante usando el valor de otras. Por supuesto las otras tienen que estar definidas antes:
#include <stdio.h>
#define CAJAS 4
#define UNIDADES_POR_CAJA 25
#define PRECIO_POR_UNIDAD 100
#define PRECIO_POR_CAJA UNIDADES_POR_CAJA * PRECIO_POR_UNIDAD
#define IMPUESTOS 1.16
int main()
{
int precio;
precio = ( CAJAS * PRECIO_POR_CAJA ) * ( IMPUESTOS );
printf( "El precio total es: %i", precio );
return 0;
}
#define tiene m�s usos aparte de �ste, ya los veremos en el cap�tulo de directivas.
© Gorka Urrutia, 1999-2004