Las variables y otros objetos utilizados en los programas principales y subprogramas se clasifican en locales y globales.

Una variable local es aquella que está declarada y definida en un subprograma, en el sentido que se declara y toma valores dentro del subprograma y es diferente de otras variables con el mismo nombre declaradas en cualquier lugar del programa principal. El significado de cada variable se limita al subprograma donde ha sido declarada y otras variables con el mismo nombre declaradas en otros subprogramas se refieren a posiciones distintas de la memoria.

Una variable global es aquella que está declarada por el programa o algoritmo principal del que dependen todos los subprogramas.

La parte de un programa o algoritmo donde se conoce, es decir, se mantiene, el valor de una variable es su ámbito.

El uso de variables locales es ventajoso. Permite que los distintos subprogramas sean independientes unos de otros y que se comuniquen con el programa principal sólo mediante la lista de parámetros y los valores que devuelven las funciones. Así para utilizar un subprograma basta con saber qué parámetros recibe y qué devuelve, sin necesidad de saber cómo funciona por dentro. Esto permite que utilicemos en nuestros programas rutinas que han sido desarrolladas por otros programadores o por nosotros mismos en otros programas potenciando mucho el desarrollo de programas estructurados y la reutilización del código. La accesibilidad a las variables desde los demás subprogramas depende de cómo organice cada lenguaje de programación concreto la definición de los subprogramas. Si un lenguaje permite, como es el caso del Pascal (pero no del C !), la definición de subprogramas dentro de otros subprogramas, es decir permite el nido de subprogramas (nesting en ángulos), suele ser usual
que las variables sean accesibles desde el punto en el que han sido declaradas. Esto significa que allí pueden acceder los objetos que se encuentran en el subprograma donde se ha declarado la variable, así como todos los de los subprogramas anidados en éste. En el ejemplo anterior, tendríamos lo siguiente:

VARIABLES DEFINIDAS EN TIPOS ACCESIBLES DESDE
X, X1 DEMO GLOBALES DEMO, A, B, C
Y. Y1 A LOCALES A, B
W, W1 C LOCALES C
Z, Z1 B LOCALES B

Otros lenguajes como el C, no permiten anidar subprogramas, pero sí se puede crear en módulos diferentes, es decir separados físicamente en archivos diferentes. Esto lleva a considerar la necesidad de definir dos tipos ámbito local: relativo a un subprograma o relativo a un módulo. Para poder manejar el lenguaje C permite definir tres tipos de variables en cuanto a ámbito y vigencia (es decir al tiempo durante el cual existe la variable una vez definida e inicializada).

TIPOS ÁMBITO VIGENCIA
GLOBALES Y EXTERNAS Todo el programa / Las externas se pueden definir en un módulo y usar en otro Ejecución del programa
AUTOMATICAS Dentro de la función que han sido declaradas Se crean para acceder a la función y eliminarlas al salirse de ella
ESTÁTICAS Dentro de la función que han sido declaradas Mantienen su valor entre cridas sucesivas a las funciones donde ha sido definidas

El lenguaje C contempla aún otro tipo, el tipo register, que está pensado por variables a las que se accederá muy a menudo y que se guardan en un registro del procesador directamente para poder acceder más rápido.

Pin It