19/03/2024
# Tags
#C++ #Programación

Variables globales y locales en C++

Hasta el momento solo hemos trabajado con variables locales, sin embargo también existe la posibilidad de declarar variables de alcance global.

Ámbito de una función

Se entiende como ámbito de una variable al alcance que tiene esta dentro del programa, es decir en donde está disponible para su uso.

El ámbito lo determina la «zona» en donde se declara la variable. De acuerdo a esta definición identificamos 2 tipos de ámbito: local y global

Variables locales

Una variable local es aquella que se define dentro de una función y solamente es visible (utilizable) en esta función.

Todas las funciones que se declaran dentro de la función main(), son locales a main y solo se reconocen dentro de ella, lo mismo ocurre cuando defines variables dentro de cualquier función personalizada.

Considera el siguiente ejemplo,

int main()
{
   int edad;
  .
  .
  .
}
int dias_mes(int mes)
{
   int dias;
  .
  .
  .
}

En el caso de la variable edad, ésta es local a main, lo que quiere decir en que entre los brackets de main, edad se podrá utilizar sin ningún problema, lo mismo podemos decir de la variable dias que se define dentro de la función dias_mes, dias lo podremos utilizar sin problema dentro del ámbito de dias_mes.

Si intentemos utilizar edad dentro de dias_mes obtendremos un error del compilador, indicando que no se encuentra la variable edad, lo mismo ocurre si utilizamos días dentro de main.

Error: Uso de variables fuera de su ámbito
Error: Uso de variables fuera de su ámbito

Variables Globales

Como su nombre sugiere, una variable global es visible en todo el programa, para main y todas las funciones que definamos dentro del mismo.

Las funciones se deben definir antes de la función main y de los prototipos de las funciones, y normalmente después de las directivas del preprocesador.

#include <iostream>
//Definimos una variable global
float pi = 3.141516;
float circulo_perimetro(float );
float circulo_area(float );
int main()
 {

en el ejemplo anterior definimos la variable pi como variable global, por lo que su valor estará disponible en todas las funciones que se declaren, incluyendo a main.

Redefinición de variables globales

Una variable se puede redefinir dentro del ambiente local de una función, es decir la variable global puede iniciar con un valor inicial, pero podemos modificarla conforme sea necesario a lo largo del mismo.

El programa cpp_84_VariableGlobal1.cpp ilustra el uso de variables globales y su modificación mientras se utiliza el programa, como siempre, modifícalo para que te queden claros todos los conceptos.

// cpp_84_VariableGlobal1.cpp
 // Este programa forma parte del tutorial de introducción al lenguaje C++
 // http://a.ehack.info/leguaje-c-introduccion/
 // Se ilustra el paso de Arrays Multidimensionales como parámetros
 // en funciones en C++
 // 2019, Por http://about.me/carlosgbr
 // Versión 1
 // Compilado en https://www.onlinegdb.com/online_c++_compiler
 #include <iostream>
 using namespace std;
 //Definimos una variable global
 float pi = 3.141516;
 float circulo_perimetro(float );
 float circulo_area(float );
 int main()
 {
 double radio;  cout << "Dame el valor del Radio:" << "\n";  cin >> radio;  //Valor inicial de pi cout << "El valor de Pi es: " << pi << "\n";  cout << "El diámetro del cículo es: " << circulo_perimetro(radio) << "\n";  cout << "El área del cículo es: " << circulo_area(radio) << "\n\n";  pi = 3.14;  //Valor modificado de pi cout << "El valor de Pi es: " << pi << "\n";  //Cálculo de valores con pi global actualizada  cout << "El diámetro del cículo con pi = " << pi << " es: " << circulo_perimetro(radio) << "\n";  cout << "El área del círculo con pi = " << pi << " es: " << circulo_area(radio);  return 0; } //Para calcular el perímetro del círculo se utiliza la fórmula //P = 2r * pi float circulo_perimetro(float radio) { //Descomenta esta sentencia para que veas el valor de pi que se utiliza //cout << "El valor de Pi es: " << pi << "\n"; return (2*radio) * pi; } //Para calcular el área del círculo se utiliza la fórmula //A = pi * r^2 float circulo_area(float radio) { //Descomenta esta sentencia para que veas el valor de pi que se utiliza  //cout << "El valor de Pi es: " << pi << "\n";     return (radio*radio) * pi; }

Como puedes apreciar, a mitad de la función main, modificamos el valor de pi = 3.14, valor que a partir de este punto se utiliza para realizar los nuevos cálculos .

Puedes ver una salida del programa en la siguiente imagen.

Uso de variables locales y globales en C++
Uso de variables locales y globales en C++

En las funciones que realizan los cálculos puedes apreciar una línea que está comentada, si la des comentas puedes ver el uso de pi que se utiliza dentro de la función

//Descomenta esta sentencia para que veas el valor de pi que se utiliza

Por supuesto, si lo queremos, también podemos modificar el valor de pi dentro de cada función, con valores distintos, haz la prueba y comprueba los resultados.

Para qué utilizar variables globales

Como en todo no hay recetas, son simples sugerencias, si tu programa no es muy complejo las puedes utilizar para definir variables que requieren un valor inicial susceptible que el usuario no lo defina o bien que es «natural» que cambie a lo largo del programa, como podría ser una contraseña por defecto, por ejemplo.

Constantes locales y Globales

El uso y ámbito de una constante se comporta de forma similar a las variables, por lo que puedes aplicar todo lo expuesto al caso de las variables. Por su puesto, debes considerar que el valor de una constante no es modificable y será siempre el mismo durante la ejecución del programa.

En nuestro ejemplo lo ideal es que pi sea constante, en nuestro caso la usamos como variable solo a efectos ilustrativos.

En este caso lo ideal es definir pi como constante global (dado que nunca cambia el valor de pi)

const float pi = 3.141516;

Por supuesto, hacer esta declaración nos impedirá modificar el valor de pi en cualquier lugar del programa. Debes considerar este hecho si cambias pi en el programa de ejemplo. Inténtalo, el cambio es muy simple, si quieres ver nuestra variante, revisa el código en nuestro repositorio de GitHub en cpp_85_ConstanteGlobal1.cpp


La imagen tiene un atributo ALT vacío; su nombre de archivo es EH-Logo_Txt_150x40-copia.jpg
Ethical Hack

Referencias

  • 🙂

 Fuente Imágenes:

  • «Todas las demás imágenes de esta sección»: by Nala Systems

Código Fuente:

Licencia de Creative Commons
Variables globales y locales en C++ by  Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Variables globales y locales en C++

Presentación: Tutorial de C++

Leave a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *