Ir al contenido

Ámbito (programación)

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 17:15 4 sep 2013 por Waeswaes (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

En programación de computadoras, el ámbito es el contexto que tiene un nombre dentro de un programa. El ámbito determina en qué partes del programa una entidad puede ser usada.

Esto sirve para que se pueda volver a definir una variable con un mismo nombre en diferentes partes del programa sin que hayan conflictos entre ellos.

Si una variable es declarada dentro de un bloque (método/función/procedimiento), ésta será válida solo dentro de ese bloque y se destruirá al terminar el bloque. Adicionalmente, la variable no podrá verse ni usarse fuera del bloque (en el exterior del bloque). La variable dentro del bloque es una variable local y solo tiene alcance dentro del bloque que se creó y sus bloques hijos, pero no en bloques hermanos ni padres, una variable definida fuera de cualquier bloque es una variable global y cualquier bloque puede acceder a ella y modificarla.

En el caso de programación orientada a objetos (POO), una variable global dentro de una clase es llamada variable de instancia, y cada objeto creado con esa clase tiene una. Adicionalmente existen variables globales que son comunes a un todos los objetos creados con una clase y son llamadas variables de clase.

Hay dos tipos de alcances, el estático que también es llamado lexicográfico, donde el alcance se determina en tiempo de compilación, mientras que las variables de alcance dinámico se verificara en el hilo de ejecución.

Ejemplo en Java

public class A {
    
    public Integer numeroEntero = new Integer(); /* Variable Global a todos los Métodos */
    
    public Integer metodo() {
        int num = 1; // Variable Local a metodo. Puede accederse dentro de este método en cualquier parte, pero no fuera del mismo.
        for (int i = 0;i<numeroEntero.intValue();i++) { // i es local al bucle for, sólo puede ser accedida dentro del mismo.
            num *= i;
        }
        // i = 2; Esta línea provocaría error al no haber declarado la variable i. i fue definida localmente al bucle for.
        return Integer.valueOf(num);
    }
    
    public void otroMetodo() {
        int num = 1; // Variable local a otroMetodo. num aquí es una variable distinta a la variable num de metodo
        System.out.println("Variable local num: " + num);
    }
}


Véase también

Enlaces externos