Curso de C El Rinc�n del C - www.elrincondelc.com

Constantes (uso de #define)

[Anterior] [Siguiente] [Contenido]

Contenido del Cap�tulo

Introducci�n

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.

[Arriba]

Constantes con nombre

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.

[Arriba]

[Anterior] [Siguiente] [Contenido]

© Gorka Urrutia, 1999-2004
cursoc@elrincondelc.com
www.elrincondelc.com