Variable global

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Programación informática, una variable accesible a través de un programa informático

En la programación de computadoras, una variable global es una variable con alcance global, lo que significa que es visible (por lo tanto, accesible) en todo el programa, a menos que esté sombreada. El conjunto de todas las variables globales se conoce como entorno global o estado global. En los lenguajes compilados, las variables globales son generalmente variables estáticas, cuya extensión (tiempo de vida) es todo el tiempo de ejecución. del programa, aunque en lenguajes interpretados (incluidos los intérpretes de línea de comandos), las variables globales generalmente se asignan dinámicamente cuando se declaran, ya que no se conocen de antemano.

En algunos idiomas, todas las variables son globales, o globales de forma predeterminada, mientras que en la mayoría de los idiomas modernos las variables tienen un alcance limitado, generalmente un alcance léxico, aunque las variables globales a menudo están disponibles declarando una variable en el nivel superior del programa. En otros idiomas, sin embargo, las variables globales no existen; estos son generalmente lenguajes de programación modulares que imponen una estructura de módulo, o lenguajes de programación orientados a objetos basados en clases que imponen una estructura de clase.

Usar

Los mecanismos de interacción con variables globales se denominan mecanismos de entorno global (ver también estado global). El paradigma del entorno global se contrasta con el paradigma del entorno local, donde todas las variables son locales sin memoria compartida (y, por lo tanto, todas las interacciones pueden reconducirse al paso de mensajes).

Las variables globales se usan ampliamente para pasar información entre secciones de código que no comparten una relación de llamador/llamado como hilos simultáneos y controladores de señales. Los idiomas (incluido C) en los que cada archivo define un espacio de nombres implícito eliminan la mayoría de los problemas que se observan con los idiomas con un espacio de nombres global, aunque algunos problemas pueden persistir sin la encapsulación adecuada. Sin un bloqueo adecuado (como con un mutex), el código que usa variables globales no será seguro para subprocesos, excepto los valores de solo lectura en la memoria protegida.

Variables de entorno

Las variables de entorno son una función proporcionada por algunos sistemas operativos. Dentro del shell del sistema operativo (ksh en Unix, bash en Linux, COMMAND.COM en DOS y CMD.EXE en Windows) son una especie de variable: por ejemplo, en Unix y sistemas relacionados, una variable normal se convierte en un entorno. cuando se utiliza la palabra clave export. El código del programa que no sea shell tiene que acceder a ellos mediante llamadas API, como getenv() y setenv().

Son locales al proceso en el que se establecieron. Eso significa que si abrimos dos ventanas de terminal (dos procesos diferentes que ejecutan Shell) y cambiamos el valor de la variable de entorno en una ventana, ese cambio no se verá en otra ventana.

Cuando se crea un proceso secundario, hereda todas las variables de entorno y sus valores del proceso principal. Por lo general, cuando un programa llama a otro programa, primero crea un proceso secundario mediante bifurcación, luego el elemento secundario ajusta el entorno según sea necesario y, por último, el elemento secundario se reemplaza a sí mismo con el programa que se llamará. Los procesos hijo, por lo tanto, no pueden usar variables de entorno para comunicarse con sus pares, evitando el problema de la acción a distancia.

Solo global y global por defecto

Varios lenguajes no estructurados, como (las primeras versiones de) BASIC, COBOL y Fortran I (1956) solo proporcionan variables globales. Fortran II (1958) introdujo subrutinas con variables locales y la palabra clave COMÚN para acceder a variables globales. El uso de COMMON en FORTRAN continuó en FORTRAN 77 e influyó en lenguajes posteriores como PL/SQL. Los grupos COMUNES con nombre para globales se comportan de alguna manera como espacios de nombres estructurados. Las variables también son globales de forma predeterminada en Forth, Lua, Perl y la mayoría de los shells.

Por idioma

C y C++

El lenguaje C no tiene una palabra clave global. Sin embargo, las variables declaradas fuera de una función tienen "ámbito de archivo," lo que significa que son visibles dentro del archivo. Las variables declaradas con ámbito de archivo son visibles entre su declaración y el final de la unidad de compilación (archivo .c) (a menos que estén sombreadas por un objeto con el mismo nombre en un ámbito más cercano, como una variable local); e implícitamente tienen un vínculo externo y, por lo tanto, son visibles no solo para el archivo .c o la unidad de compilación que contiene sus declaraciones, sino también para cualquier otra unidad de compilación que esté vinculada para formar el programa completo. Sin embargo, la vinculación externa no es suficiente para el uso de dicha variable en otros archivos: para que una unidad de compilación acceda correctamente a dicha variable global, necesitará conocer su tipo. Esto se logra declarando la variable en cada archivo usando la palabra clave extern. (Será declarado en cada archivo, pero puede estar definido en uno solo). Tales declaraciones extern a menudo se colocan en un archivo de encabezado compartido, ya que es una práctica común que todos los archivos .c en un proyecto incluyan al menos un archivo .h: el archivo de encabezado estándar errno.h es un ejemplo, haciendo que la variable errno sea accesible para todos los módulos de un proyecto. Cuando este mecanismo de acceso global se considere problemático, se puede deshabilitar usando la palabra clave estática que restringe una variable al alcance del archivo y provocará intentos de importarla con extern para generar un error de compilación (o vinculación)..

Un ejemplo de un "global" variables en C:

#include Identificado.h// Esta es la variable file-scope (con conexión interna), visible solamente// esta unidad de compilación.estática int compartido = 3;// Esta tiene un enlace externo (no limitado a esta unidad de compilación).externa int over_shared;// También enlace interno.int over_shared_too = 2;estática vacío ChangeShared() {} // Referencia a la variable archivo-scopio en una función. compartido = 5;}estática vacío LocalShadow() {} // Variable local que ocultará el global del mismo nombre. int compartido; // Esto afectará solamente a la variable local y no tendrá efecto en la // variable archivo-scopio del mismo nombre. compartido = 1000;}estática vacío ParamShadow()int compartido) {} // Esto afectará sólo el parámetro y no tendrá efecto en el archivo- // variable de alcance del mismo nombre. compartido = -compartido;}int principal() {} // Referencia a la variable file-scope. printf()"n", compartido); ChangeShared(); printf()"n", compartido); LocalShadow(); printf()"n", compartido); ParamShadow()1); printf()"n", compartido); retorno 0;}

Como la variable es externa, no es necesario pasarla como parámetro para usarla en una función además de principal. Pertenece a todas las funciones del módulo.

La salida será:

3
5
5
5

Java

Algunos lenguajes, como Java, no tienen variables globales. En Java, todas las variables que no son variables locales son campos de una clase. Por lo tanto, todas las variables están en el ámbito de una clase o un método. En Java, los campos estáticos (también conocidos como variables de clase) existen independientemente de cualquier instancia de la clase y todas las instancias comparten una copia; por lo tanto, los campos estáticos públicos se utilizan para muchos de los mismos propósitos que las variables globales en otros idiomas debido a su similar "compartir" comportamiento:

público clase Global {} público estática int a;}

PHP

PHP tiene una palabra clave global y varias formas inusuales de usar variables globales. Las variables declaradas fuera de las funciones tienen alcance de archivo (que para la mayoría de los propósitos es el alcance más amplio). Sin embargo, no son accesibles dentro de las funciones a menos que se importen con la palabra clave global (es decir, la palabra clave accede a variables globales, no las declara).

Sin embargo, siempre se puede acceder a algunas variables predefinidas, conocidas como superglobales. Todos son arreglos. Uno de propósito general es el superglobal $GLOBALS, que contiene todas las variables definido fuera del alcance de la función. Los cambios en sus elementos cambian las variables originales y las adiciones crean nuevas variables. Las superglobales $_POST y $_GET se utilizan ampliamente en la programación web.

Otros idiomas

  • En Python y MATLAB se puede declarar una variable global en cualquier lugar con la global palabra clave.
  • Las variables globales de Ruby se distinguen por un '$Sigil. Existen varios mundiales predefinidos, por ejemplo $$ es el ID de proceso actual.

Contenido relacionado

Servicio basado en la ubicación

Un servicio basado en la ubicación es un término general que denota servicios de software que utilizan información y datos geográficos para proporcionar...

Bioware

BioWare es un desarrollador de videojuegos canadiense con sede en Edmonton, Alberta. Fue fundado en 1995 por los médicos recién graduados Ray Muzyka, Greg...

Software de cuervo

Raven Software Corporation es un desarrollador de videojuegos estadounidense con sede en Wisconsin y fundado en 1990. En 1997, Raven firmó un acuerdo...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save