Constante (Informática)

Constante (Informática)
Información sobre la plantilla
Concepto:Es un valor que no puede ser alterado durante la ejecución de un programa

Constante (Informática). En programación, una constante es un valor que no puede ser alterado durante la ejecución de un programa. Corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos. El nombre de las constantes suele escribirse en mayúsculas en la mayoría de lenguajes.

Connotaciones

La palabra constante tiene en C++ dos connotaciones sutilmente diferentes aunque relacionadas:
1.1 La primera es el sentido normal de la palabra constante en lenguaje natural; es decir, datos (de cualquiera de los tipos posible) cuyos valores se han definido en el momento de escribir el código del programa, y no pueden ser modificados más tarde en tiempo de ejecución (lo que significa que sus valores deben ser resueltos en tiempo de compilación). Dicho en otras palabras: el compilador sabe cual es el valor de los objetos declarados como constantes y en base a este conocimiento puede hacer cuantas suposiciones sean válidas para conseguir la mayor eficiencia en tiempo de ejecución.
En este sentido, el concepto constante es justamente el opuesto a variable, que corresponde a aquellos objetos-dato que pueden recibir nuevas asignaciones de valor a lo largo del programa. Dicho en otras palabras: entidades cuyo valor solo es conocido en tiempo de ejecución.
1.2 La segunda connotación es la de tipo de objeto-dato. En este sentido podemos afirmar que en C++ los enteros (variables) forman un tipo distinto de los enteros constantes (constantes enteras), y que los caracteres (variables) forman un tipo distinto de las constantes carácter. Así pues, distinguimos entre un tipo char y un tipo const char. Como prácticamente todos los tipos de objeto-dato posibles en C++ puede declararse constantes, existe un universo de tipos C++, simétrico al de los tipos de objetos variables, pero de objetos constantes.
Por ejemplo, un entero y una constante entera son tipos distintos y que una constante entera C++ significa algo más que un entero al que no se le puede cambiar su valor.

Lo que hace el compilador con los objetos declarados inicialmente como constantes depende de la implementación. Esto significa que no está garantizado que tales objetos tengan un Lvalue. Por ejemplo: en const int x = 5; no está garantizado que el compilador le asigne a x un Lvalue, es decir, un espacio en memoria determinado (que se permita modificar o no su valor es otra cuestión).
Puede ocurrir que, por razones de eficacia, sea simplemente una especie de "define". Una especie de nemónico que hace que el compilador lo sustituya por un 5 en cada trozo de código donde aparezca x. Incluso en sitios donde aparezca asociada a otras constantes puede estar resuelto el valor en tiempo de compilación. Por ejemplo, si en otro sitio del programa aparece: const int z = 7; y más tarde: int w = x + z + y; puede ocurrir que el compilador establezca directamente: int w = 12 + y.
Por esta razón no está garantizado que el operador const_cast funcione con objetos declarados inicialmente como constantes.

Como se ha indicado, en C++ existen tantos tipos de constantes como tipos de variables, pero aparte de las ya mencionadas constantes manifiestas, solo nos detendremos en las que por una u otra razón hay cosas interesantes que puntualizar. Son las siguientes:

Expresiones constantesConstantes enterasConstantes fraccionariasConstantes carácter de varios subtipos, incluyendo elementos    aislados y cadenas 
  •Enumeraciones

El Estándar C++ denomina "literales" a lo que el Estándar C denomina "constantes", y establece que existen 5 tipos de estos "literales":

Constantes enteras("Integer literal")Constantes carácter("Character literal")Constantes fraccionarias("Floating literal")Constantes de cadena ("String literal")
  •Constantes lógicas ("Boolean literal").

Por la forma en que están expresadas en el código pueden considerarse en dos grupos:

  • Directas si están directamente expresadas. Por ejemplo:
        const float pi = 3.14159; 
  • Expresiones si su valor está implícito en una expresión. Por ejemplo:
       const float k = pi * 2; 

El tipo de dato correspondiente a una constante es deducido por el compilador en base a indicios implícitos, como el valor numérico y formato usados en el fuente. En algunos casos también por ciertos calificadores explícitos. C++ tiene una palabra específica para este fin: const
Ejemplos:

  char c = 'X'; // X es una constante tipo char
  const int X = 10; // X es un tipo int-constante 

Ejemplo de una constante en C/C++

En C o C++ las constantes se declaran con la directiva #define, esto significa que esa constante tendrá el mismo valor a lo largo de todo el programa. El identificador de una constante así definida será una cadena de caracteres que deberá cumplir los mismos requisitos que el de una variable (sin espacios en blanco, no empezar por un dígito numérico, etc). Ejemplo:

  #include <stdio.h> 
  #define PI 3.1415926 
  int main()
  {
  printf("Pi vale %f", PI);
  return 0;
  }

Lo cual mostrará por pantalla:

  Pi vale 3.1415926

Es decir, PI es una constante a la que le hemos asignado el valor 3.1415926 mediante la directiva #define. La directiva #define también se puede utilizar para definir expresiones más elaboradas con operadores (suma, resta, multiplicación etc) y otras constantes que hayan sido definidas previamente, por ejemplo:

  #define X 2.4 
  #define Y 9.2
  #define Z X + Y </div> 

Véase también

Fuente