En esta lección vamos a aprender una de las más útiles características de la programación modular: el uso de variables locales y globales en nuestros programas.
Se dice que una variable es local cuando está declarada y definida dentro de algún subprograma (ya sea una función o un procedimiento). El significado y la utilidad de una variable local están limitados únicamente al subprograma donde fue definida, es decir, el valor que tenga almacenado no será accesible para ningún otro subprograma. Ahora bien, pueden definirse variables locales con el mismo nombre en distintos subprogramas, pero eso no quiere decir que se refieran a la misma posición de memoria o al mismo valor.
Por otro lado, una variable global es la que se declara en el programa o algoritmo principal, del cual dependen todos los demás subprogramas. A diferencia de las variables locales, las globales tienen la ventaja de compartir información entre subprogramas. Una variable global es útil y accesible tanto en el programa principal como en todos los subprogramas que dependan de él. Cualquier subprograma puede acceder y modificar el valor de una variable global.
El ámbito o alcance (scope, en inglés) de una variable es la parte del programa o algoritmo en el que una variable definida, conocida y acesible. En la siguiente figura podemos ver una descripción conceptual del ámbito de diferentes variables:
Ámbito de identificadores |
En esta figura, podemos observar que:
- Las variables X1 y X2 son globales por estar definidas en el algoritmo principal y serán accesibles desde cualquier parte del programa, incluidos todos los subprogramas que dependan de él.
- Las variables Y1 y Y2 son locales al procedimiento A y serán accesibles únicamente dentro de ese procedimiento y también por los subrogramas que dependan de él (como el procedimiento B).
- Las variables Z1 y Z2 son locales al procedimiento B y son accesibles única y exclusivamente por él.
- Las variables W1 y W2 son locales al procedimiento C y son accesibles única y exclusivamente por él.
Para explicarlo aún mejor, mira este otro esquema donde podemos observar la accesibilidad que tienen las variables definidas en distintos niveles de un programa con subprogramas anidados:
En el siguiente ejemplo definimos la función signo que realiza la siguiente tarea: si el número dado es 0, entonces devuelve un 0, si es positivo, devuelve un 1 y si es negativo devuelve un -1.
algoritmo Signos
var
entero: a, b, c
real: x, y, z
inicio
x <- 5.4
a <- signo(x)
y <- 0
b <- signo(y)
z <- 7.89
c <- signo (z - 9)
escribir ("Las respuestas son " + a +" " + b + " " + c)
fin
entero función signo (real x)
var
entero: s
inicio
si x = 0 entonces s <- 0
si x > 0 entonces s <- 1
si x < 0 entonces s <- -1
devolver (s)
fin_función
En este ejemplo, la variable s, declarada dentro de la función signo, es local y accesible únicamente dentro de ese procedimiento.
Es importante comprender el concepto de ámbito de variables dado que muchos de los errores de programación se dan por no considerar correctamente la accesibilidad que tendrá una variable en un determinado programa. En la próxima lección aprenderemos cómo podemos aprovechar las variables locales y globales para pasar parámetros a nuestros procedimientos y funciones. ¡Hasta la próxima!
Enlace: Índice del curso
Enlace: Índice del curso
0 comentarios:
Publicar un comentario