El concepto de variable en programación es completamente diferente al utilizado en el álgebra matemática.
En informática, una variable es un concepto abstracto directamente asociado a la memoria física del computador. La función de la memoria es almacenar información para que pueda ser utilizada y consultada tantas veces como se necesite.
En informática, una variable es un concepto abstracto directamente asociado a la memoria física del computador. La función de la memoria es almacenar información para que pueda ser utilizada y consultada tantas veces como se necesite.
Los valores almacenados en las variables se pueden modificar cuantas veces se desee. Cuando se guarda un dato en una variable, este se conserva indefinidamente, pero solo hasta que se almacene un valor nuevo diferente que sustituya al anterior.
El programador identifica cada una de estas variables en el código mediante un nombre o identificador.
Declaración de Variables
Cada variable del programa debe tener asociado un tipo de valor determinado y solo admitirá valores de ese tipo determinado.
Todas las variables deben ser declaradas obligatoriamente antes de ser utilizadas.
Declaración Simple y Conjunta
La declaración básica especifica el tipo de dato y el nombre de la variable, finalizando siempre con un punto y coma (
La declaración básica especifica el tipo de dato y el nombre de la variable, finalizando siempre con un punto y coma (
;).int edad;
Si se necesitan varias variables del mismo tipo, se pueden declarar juntas en una sola línea separando sus nombres con comas (
,)int dia, mes, anno;
Uso e Inicialización de Variables
El valor almacenado en una variable se utiliza como operando dentro de las expresiones aritméticas. El tipo de dato de la variable restringe y determina qué operaciones son válidas con ella.
Compatibilidad de Tipos en Expresiones
Dadas las siguientes declaraciones de variables:
int base, altura;int saldo, meses, dias;float volumen, area, gastos;char modelo, codigo;Es correcto escribir operaciones que respeten la lógica de sus tipos como:
base * alturadias + int(codigo) (usa una conversión)volumen / areaSin embargo, es incorrecto y prohibido combinar tipos incompatibles directamente de la siguiente forma:
area / base
saldo + gastos
base + modelo
Si las operaciones son correctas, en una misma expresión pueden intervenir de manera simultánea variables, constantes con nombre y valores literales
Si las operaciones son correctas, en una misma expresión pueden intervenir de manera simultánea variables, constantes con nombre y valores literales
Pi * volumen *5.7
Inicialización Obligatoria
Para poder evaluar cualquier expresión aritmética, todas las variables involucradas deben tener un valor definido. Utilizar una variable que no ha almacenado ningún dato todavía conduce a un resultado imprevisible en el programa. La acción de darle un valor por primera vez se denomina inicializar.
Para evitar errores, el Manual de Estilo prohíbe inicializar variables dentro de una lista conjunta. Solo se permite asignar el valor inicial si la variable se declara de forma individual, utilizando el signo igual (
=) seguido del valor:float gastos = 0.0;
char modelo = '?'
Se pueden combinar variables con y sin valor inicial en el mismo bloque de código:
area / base
int base = 0;
int altura = 0;
float volumen, area, gastos;
char modelo = '?';
char codigo;
Sentencia de Asignación
La sentencia de asignación es una instrucción que sirve para inicializar una variable o cambiar su valor actual por uno nuevo. También se utiliza para almacenar los resultados intermedios o finales de los cálculos de un programa.
Autoasignación
Un caso especial ocurre cuando una variable aparece a ambos lados del operador de asignación
int dia = dia + 30;
dias = dias + 30;Aunque visualmente recuerda a una ecuación matemática, su significado es una orden de ejecución secuencial: primero se evalúa la operación de la derecha (
dias + 30) utilizando el valor actual de la variable, y después el resultado obtenido sustituye el valor de esa misma variable. Si dias valía 16, la computadora calcula 16 + 30 = 46 y guarda el número 46 en la variable dias, logrando que su valor se incremente en 30 unidades.Sentencias de Autoincremento y Autodecremento
Debido a que es muy común la necesidad de aumentar el valor de una variable en exactamente una unidad, escribir la asignación tradicional
variable = variable + 1; se simplifica mediante un operador especial de autoincremento representado con el símbolo ++:nombreVariable++;
De forma idéntica, cuando se requiere reducir el valor de una variable en una unidad, se utiliza la sentencia especial de autodecremento mediante el símbolo
De forma idéntica, cuando se requiere reducir el valor de una variable en una unidad, se utiliza la sentencia especial de autodecremento mediante el símbolo
--nombreVariable--;
A la hora de utilizar el autoincremento existen dos opciones
nombreVariable++; En este caso usa el valor de la variable y luego le incrementa una unidad
++nombreVariable; En este otro caso primero incrementa la unidad y luego usa el nuevo valor
El ámbito de las variables y su persistencia.
Para entender el concepto de ámbito (Scope) de una variable, nos conviene dar un pequeño rodeo y hacer historia.
Históricamente, en los primeros lenguajes de programación, todas las variables eran variables globales. Esto quiere decir, que cuando definías una de cualquier tipo, su valor era accesible desde cualquier punto del programa. Podías leerla o modificar su valor sin restricciones.
Al principio, puede parecer lo ideal. Pero a medida que los programas van creciendo en tamaño y complejidad, la cosa se complica y tiende a generar problemas complicados de detectar y resolver.
Por eso, se propuso una solución muy elegante, que las variables no fueran visibles en todo el ámbito del programa, si no solamente en ciertas zonas, de acuerdo a unas reglas claras.
Las variables que se declaran fuera de un bloque de código, son variables Globales, están disponibles desde cualquier punto de un programa, normalmente se declaran en la parte superior, después de las inclusiones de las librerías.
El bloque de código es aquel grupo de instrucciones contenidas entre llaves (Apertura y cierre).
Las variables que se declaran dentro de un bloque, se llaman variables locales, y solo existen dentro del bloque en que se definen y no fuera.
Cuando nuestro programa entra en el bloque, la variable que se declara, se crea sobre la marcha para su uso interno. Cuando el programa abandona el bloque, esa variable local se destruye y desaparece en el olvido. La próxima vez que regresemos al bloque se creará de nuevo, sin recordar si ha tenido existencia previa, imposibilitando que una variable local se confunda con otra variable local de otro bloque de código.
Sencillamente no existen variables externas al bloque, excepto las globales, y por tanto su confusión no puede provocar errores imprevistos porque utilicen el mismo nombre.
Todos los lenguajes de programación modernos incluyen el concepto de variables locales y variables globales
A esa propiedad de las variables, de existir durante un cierto tiempo, se le suele llamar persistencia de la variable.
Variables static
A veces (La vida es complicada) nos gustaría que ciertas variables locales, no desapareciesen al salir, o al menos que no perdiéramos su valor.
Siempre podemos definir una variable global, pero puede no tener mucho sentido si solo se utiliza en una función en exclusiva.
Para esto, podemos definir una variable local como estática (static). Quiere decir que solo será accesible desde esta función, pero que su valor no desaparecerá al salir, sino que persistirá en el tiempo, mientras no cerremos el programa, conservando su último valor.
int x = 100;
void setup(){
Serial.begin(115200);
}
void loop(){
funcion1();
delay(1000);
}
void funcion1 ()
{ static int x = 0; // Declaramos x como static
Serial.println(x);
x = x + 1;
}
Nótese que a pesar de que existe una variable global con el mismo nombre, no afecta a la variable de la función y esta además, de que como la variable estática no se destruye al salir, se crea solo una vez y persiste indefinidamente. La declaración de variable y la asignación de la variable se realizan una única vez.
Esto hace que a x solo se le asigna el valor 0 cuando se crea y no cada vez que entra en la Funcion1, como podría pensarse inicialmente. Mucho cuidado con esto.
No hay comentarios:
Publicar un comentario