Bienvenidos sean a este post, hoy veremos los distintos rangos o scope de una variable.
En el post anterior mencionamos como es la visibilidad de una variable pero aqui nos centraremos en ver como es la conducta y el alcance en los disitintos tipos de elementos donde se aplica una variable, para ello vamos a comenzar con lo mas basico como son los bloques.
Explorando los rangos de los bloques
Los bloques son aquellos que comienzan con una llave ({) y terminan con otra (}), esto lo hemos visto especialmente con las funciones, con los bucles, los condicionales, en fin todo elemento que para hacer trabajar le pasamos las instrucciones necesarias en el bloque, pero C tiene una particularidad a diferencias de otros y es permitirnos tener un bloque sin nada relacionado, esto permitira al lenguaje procesar las variables dentro de ese bloque sin que el programa lo haga mas alla de este, por esta razon se las llama locales o de bloques porque su alcance es solamente dentro de ellas, por ejemplo podemos tener el siguiente bloque.
{
int a=10;
int b=11;
int total = a + b;
printf("Total vale %d", total);
}
Observen como es un bloque simple sin nungun instruccion donde sumara dos valores y los asignara a una variable para finalmente mostrar el resultado en pantalla pero una vez hecho esto se eliminaran todas las variables y no podremos acceder a ellas desde el resto del programa, esto mismo ocurre con las funciones con la salvedad que nosotros podemos devolver para asignarlo a otra variable pero todas las variables de la funcion desapereceran despues de hecho esto, ya que mencionamos las funciones pasemos al siguiente tema.
Explorando el rango de los parametros de funciones
Este es muy similar al anterior porque la variable solamente existira en el bloque de la funcion pero con la particularidad de que lo recibiremos por fuera de este al momento de ser llamada la funcion este sera declarado y asignado, analicemos el siguiente caso:
int sumar(int a, int b)
{
int total = a + b;
return total;
}
En este caso es algo similar a lo visto anterioremente donde recibiremos dos valores por fuera de la funcion, a su vez esos valores los podremos usar dentro del bloque para hacer la suma de ambos valores y asignarlo a una nueva variable para finalmente devolverlo, si bien los valores son externos al momento de finalizar la funcion tanto las variables de los argumentos como la interior se borraran de memoria y si este no lo asignamos a otra variable se perdera, vamos a ver como aplicarlo:
int primero = 10;
int segundo = 20;
int tercero = Sumar(primero, segundo);
Observen como pasamos los valores de las variables y el resultado es almacenado en la variable llamada tercero, de esta forma el valor seguira en nuestro programa pero perderemos total acceso a las variables de la funcion, pasemos al siguiente caso.
Explorando el rango de archivos
En los casos anteriores vimos los rangos que podriamos denorminar como «locales» o «de bloques» dado que ese sera su alcance pero veamos el siguiente caso:
#include <stdio.h>
const int total_archivos = 10;
const int cadena_max = 100;
... resto del programa ...
Incluimos la libreria que usaremos, luego definimos dos constantes antes del resto del programa, por fuera del main, por fuera de cualquier funcion, esto nos garantizara que ambas constantes estaran accesibles para el resto del programa, usualmente se lo denomina como globales porque estaran accesibles para todo el codigo del archivo pero que sucede con archivos externos a este? exacto, no podran ser accedidas por lo tanto no podemos asignarlos asi y lo haremos como rango de archivo dado que eso es verdadero ya que dentro del archivo las constates seran completamente accesibles pero como son las verdaderas globales? bueno para eso pasemos al siguiente caso.
Explorando el rango global
Para hacerlo es muy simple tenemos que aplicar la clase de almacenamiento extern para que pueda ser accedida desde cualquier archivo, tomemos el caso anterior y modifiquemoslo de la siguiente manera:
#include <stdio.h>
extern const int total_archivos = 10;
extern const int cadena_max = 100;
... resto del programa ...
Esta modificacion nos permitira que las variables esten accesible desde cualquier otro archivo mas alla del principal, esto podemos hacerlo tanto en los archivos con extension .c asi como tambien como los de encabezado con la extension .h, y esta si convertira a las variables en realmente globales para todo el programa, con esto tenemos todos los casos de como se manejan los rangos y las variables, en el proximo post seguiremos con el rango pero desde el punto de vista de las funciones.
En resumen hoy hemos visto como es el rango o scope para las variables, desde las que llamamos locales hasta las verdaderas globales, asi como unos ejemplos simple para citar cada caso, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
