¿Qué diferencias hay entre una constante y una variable?
Constantes y variables son dos elementos esenciales en cualquier lenguaje de programación, puesto que ambos almacenan los datos que harán funcionar el programa.
La diferencia fundamental entre ambos, es que en el caso de las constantes, esos datos almacenados NO PODRÁN cambiar durante la ejecución del programa. En cambio, las variables podrán cambiar su contenido tantas veces sea necesario.
Por ejemplo:
Creemos una constante llamada SIEMPREIGUAL y una variable llamada NOSEQUIENSOY.
Ahora crearemos un pequeño script (en pseudocódigo) que calculará el peso que tendremos en diferentes planetas. Como nuestro peso depende de dos datos que son masa y gravedad, pero mi masa siempre será la misma, asignaremos masa a la constante, y la gravedad de cada planeta, será la variable.
Por tanto, si mi masa es 7,14:
SIEMPREIGUAL = 7,14; //Gravedad en la Tierra 9,8// // Mi peso en la tierra sería, por tanto: masa * gravedad (7,14 * 9,8) // NOSEQUIENSOY = 9,8; PESO = NOSEQUIENSOY * SIEMPREIGUAL; imprime (PESO) = 70; //En la Tierra peso 70 Kgs // //Gravedad<en Jupiter 24,79// NOSEQUIENSOY = 24,79; PESO = NOSEQUIENSOY * SIEMPREIGUAL; imprime (PESO) = 177; //En Júpiter peso 177 Kgs (¡Se me ha ido la mano con los polvorones!)// //Gravedad en Mercurio 3,7// NOSEQUIENSOY = 3,7; PESO = NOSEQUIENSOY * SIEMPREIGUAL; imprime (PESO) = 26,4; //En cambio en Mercurio peso 26,4 Kgs//
Como hemos podido ver, en cada paso asignábamos un nuevo valor a NOSEQUIENSOY, pero a SIEMPREIGUAL no era necesario, pues es una constante cuyo valor no debía cambiar.
Tabla comparativa entre variable y constante
Sin embargo, aunque la esencia que les diferencia es la nombrada arriba, hay otras diferencias sutiles que es útil conocer.
COMPARATIVA ENTRE VARIABLES Y CONSTANTES EN PROGRAMACIÓN | |
---|---|
Variables | Constantes |
El valor de una variable puede cambiar durante la ejecución del programa | Las constantes no cambian sus valores durante la ejecución del programa |
Se almacenan en la memoria RAM | Se almacenan en la memoria Flash del microprocesador |
Habitualmente difieren en la nomenclatura. Por ejemplo, en PHP las variables van precedidas por el símbolo $ y se escriben en minúsculas: $nosequiensoy | En cambio, las constantes, en PHP, se escriben en mayúsculas y se declaran con la función define(). Ej: define(«SIEMPREIGUAL», «valor inicial de la constante»); |
En algunos lenguajes de programación deben ser declaradas e inicializadas. Esto es, se indica el tipo de datos que contendrán (int, float, booleano…) y su valor inicial. | |
Están sometidos a las mismas reglas de nomenclatura: Para nombrarlos podemos hacer uso únicamente de letras mayúsculas o minúsculas, números, guiones bajos y medios. |
¿Cuándo se usa una u otra?
Las variables con el cajón donde guardamos los valores que necesitamos para el correcto funcionamiento de un programa.
Gracias a las variables, el programa es dinámico, y no meramente declarativo como si estuviese compuesto únicamente por lenguajes de marcado (HTML y CSS). Esto significa que el mismo código es capaz de realizar acciones diferentes en tiempo real dependiendo de los valores que reciban esas variables.
Por ejemplo:
Si yo creo un programa que abra la puerta de mi casa casa cuando me aproxime y poder ahorrarme así el uso de la llave, habrá una serie de variables vitales como:
- ¿Estoy cerca? Que podrá contener el valor Sí, o No.
- ¿Está la puerta cerrada ya? Que podrá ser, igualmente, Sí o No.
- ¿Alguien ha desactivado la ejecución de este programa? Nuevamente, podrá ser Sí o No.
En este ejemplo, siendo el programa siempre el mismo y sin ser modificado, dependiendo del valor que tenga en cada momento cualquiera de las tres variables del ejemplo, pasará una cosa u otra bien distinta.
¿Y las constantes? Las constantes definirían el marco que permanece estable. En el ejemplo anterior, las constantes podrían almacenar, por ejemplo, mi rostro, de manera que el sistema sepa reconocerme para poner en funcionamiento la apertura de la puerta.
Pero también podrían almacenar la velocidad de apertura de la puerta, un saludo para recibirme, etc
De la misma manera, podemos poner otros muchos ejemplos:
- En un Chat, una variable sería lo que escribes, pues en cada línea ésta adquiriría un nuevo contenido. Las contantes pueden ser el número de caracteres máximo por línea, el tiempo de desconexión sin actividad, o las palabras clave que motivarían tu banneo por ofensivas.
- En un videojuego tipo shooter, las variables indicarían tu posición en el mapa, la munición y armas que posees, tus estadísticas… Y las constantes indicarían el número máximo de jugadores, la velocidad máxima a la que te desplazas, la máxima cantidad de balas, tu salud, etc…
¿Nos ayudas a poner más ejemplos en los comentarios?
Constantes y variables en PHP
Como ya hemos adelantado arriba, en PHP las variables no deben ser declaradas y por lo tanto, no hay que especificar su tipo, aunque sí se recomienda inicializarlas para evitar errores.
Eso da mucha agilidad puesto que si necesito una variable, la creo directamente sin pararme a pensar en su tipo, si ya la declaré anteriormente, etc
Además de ello, las variables pueden contener todo tipo de datos independientemente de la clase que contuviesen anteriormente. Esto quiere decir que puedo asignarle a una variable una cadena, luego cambiarlo a booleano y si lo necesito, volverla a cambiar a numérico, simplemente asignándole un nuevo valor de esa característica.
La nomenclatura de las variables es el símbolo del dolar seguido del nombre de la misma:
$nombre_de_mi_variable = "valor inicial";
Respecto a las constantes, éstas deben ser definidas con la función define() o con la palabra reservada cons:
define("NOMBRE_DE_LA_CONSTANTE", "valor inicial"); const NOMBRE_DE_OTRA_CONSTANTE = "valor inicial de esta otra";
Consejos para nombrar variables y constantes
Como rara vez programarás sólo o tu trabajo tarde o temprano pasará por manos de otro programador, es muy recomendable seguir estas buenas prácticas:
- Los nombres de las variables deben ir en minúscula, salvo que utilices una frase en la que las letras iniciales de cada palabra estén en mayúsculas. Ej: $estaEsMiVariable
- Los nombres de las constantes deben ir íntegramente en mayúsculas.
- Crea nombres largos y descriptivos: Que se sepa qué almacena esa variable/constante únicamente con el nombre. No crees un galimatías imposible de entender que obligue a releer todo el script para saber de dónde viene o qué función tiene.
- Si contiene una cifra correspondiente a una unidad concreta, especifícala en el nombre. No siempre se trabaja en el sistema internacional. Ej: $Tiempo_en_segundos, $Capacidad_en_m3
- Si usas una variable para iterar o como control, y la vas a usar únicamente dentro del bucle, no hay problema en usar variables de una sola letra. Pero si esa variable va a salir del bucle, ¡pon un nombre descriptivo!. Ej: $i únicamente para dentro de un bucle (While, For…). Si no, algo como $contador_repeticiones
- Si el script o programa es muy complejo, pon prefijos. Ej: $dieta_NombreCenaD2, $dieta_CaloriasMax, $ejercicio_TablasD1…
Normas para nombrar variables y constantes
Además de los consejos, hay una serie de reglas de obligado cumplimiento. No seguirlas nos puede dar muchísimos dolores de cabeza al no entender porqué no funciona un script aparentemente correcto.
VARIABLES Y CONSTANTES NO PUEDEN:
- Tener el mismo nombre que una «palabra reservada». Ej: const, isset, list…
- Sólo pueden contener letras, dígitos y el guión bajo. Pero el primer caracter no puede ser un número. Ejemplos incorrectos: $7Vidastieneungato, $%#nombre
- No pueden contener espacios. Ej: $este nombre es incorrecto, $pero_este_es_correcto.
- Tampoco tildes, ni diéresis, ni la letra «ñ»…
- Dos variables no pueden llamarse igual, pues se entenderá que es la misma y el valor asignado a la última sustituirá el valor de la anterior.
Escribir comentario