Ámbito de variables

El ámbito de una variable es el contexto o porción de programa en el que la variable está definida, es conocida y accesible para ser usada. Si bien cada lengua- je de programación tiene sus propias reglas de ámbito (es decir, las reglas que definen dónde es accesible una variable definida en algún punto de un programa), los subprogramas delimitan el ámbito de las variables.

Si el ámbito de una variable incluye sólo un subprograma, entonces se dice que es una variable local (local al procedimiento o función), mientras que si abarca todos los módulos, la variable será global. Una variable local sólo existe mientras se ejecuta el subprograma que la contiene, mientras que una variable global existe durante toda la ejecución, y su valor puede consultarse o modificarse desde cualquier punto del programa o subprogramas.

Algunos lenguajes de programación como Pascal permiten escribir programas dentro de subprogramas, lo cual agrega niveles extras de visibilidad o ámbito de las variables, ya que una variable local a un procedimiento puede ser accedida desde un procedimiento interno (Figura 1). En C# y Visual Basic .Net, las reglas de ámbito determinan que las variables pueden ser globales dentro de una clase (ya veremos qué es una clase en el siguiente apartado), o locales a un procedimiento o función.

Algunos lenguajes permiten definir procedimientos dentro de otros, extendiendo el ámbito de las variables locales.

USO DE PARÁMETROS DE ENTRADA Y DE SALIDA
Si bien un procedimiento puede tener parámetros de salida, esto suele no resultar en una buena práctica de programación. A menos que no podamos hacer otra cosa, si necesitamos devolver un valor desde un subprograma, siempre es mejor usar una función. Esto dará un único punto de salida al subprograma, mejorando la claridad y la legibilidad del código.

Un punto importante por tener en cuenta es que el ámbito de las variables se ve reducido cuando hay un conflicto de nombres. En los casos en que se produzca este conflicto, el ámbito se resuelve asignando prioridad a la variable que se encuentra definida más adentro en el anidamiento de programa y subprogramas. En estos casos, decimos que la variable de más adentro oculta a la de más afuera. Esto significa que, si tenemos una variable visible desde un procedimiento y dentro de ese procedimiento declaramos una variable con el mismo nombre, esta última tendrá prioridad sobre la global, y al asignarle un valor, se asignará a la variable local.

En este ejemplo, se puede ver el concepto de ocultamiento con variables y con parámetros