Programación Instituto Tecnológico de Celaya VARIABLES LOCALES Y VARIABLES GLOBALES Como se discutió en clase, cuando uno llama una función (como la función sqrt), no es necesario saber los tipos y los nombres de las variables que se declaran en la definición de dicha función. Simplemente se requiere de conocer el tipo de los argumentos que necesita y el tipo de valor que regresa. Esto se debe a que en C++ las variables que se definen en las funciones son independientes de las variables que se definen en la función main (programa principal) o en cualquier otra función. Si se declara una variable en una función y se declara otra variable con el mismo nombre en la función principal del programa (main), estas dos variables, aunque tengan el mismo nombre, se consideran como dos variables diferentes. Observe el siguiente ejemplo: #include <iostream.h> #include <stdlib.h> double square(double number); /* Prototipo de la funcion*/ int main() { /* Este programa servira para ejemplificar el uso de variables locales*/ double cuadrado; double numero; cout<<”Dame el valor de un numero \n”; cin>>numero; cuadrado = square(numero); cout<<"\n"; cout<<" El cuadrado del numero es "<<cuadrado; cout<<"\n"; system("PAUSE"); return 0; } /* Funcion para el calculo del cuadrado de un numero*/ double square(double number) { double cuadrado; cuadrado = number * number; return cuadrado; } Ingeniería Química Programación Instituto Tecnológico de Celaya la variable cuadrado se declara tanto en la función main como en la función square y la declaración es idéntica: double cuadrado; Sin embargo, la variable cuadrado de la función main y la variable cuadrado de la función square se consideran como dos variables diferentes. Variables Locales Las variables que se declaran dentro del cuerpo de una función se dice que son locales a dicha función o que tienen un alcance local. En el ejemplo, hay una variable llamada cuadrado que es local a la función main y otro variable también llamada cuadrado pero que es local a la función square. Dichas variables son diferentes. Los valores que toma una variable local dentro de una función pueden ser completamente distintos a los que tome una variable del mismo nombre pero que sea local a otra función. Se dice que una variable local es usada (definida, modificada, etc.) únicamente dentro de la función en la que es definida Constantes y Variables Globales Las constantes y las variables también pueden tener alcances globales. Es decir, es posible que una misma variable o constante puedan ser utilizadas por diferentes funciones y que (en el caso de variables) puedan ser modificadas por cada una de ellas. Cuando esto ocurre, se dice que se tiene constantes globales o variables globales. Para que el compilador considere a una variable como global, es necesario definirlas al comienzo del programa, antes de la función main y del resto de las funciones del programa. Es práctica común colocar todas las constantes globales y las variables globales en grupo, justo por debajo de las directivas include y antes de los prototipos de las funciones. Ingeniería Química Programación Instituto Tecnológico de Celaya El uso de constantes globales es muy común, sin embargo, el uso de variables globales generalmente no es necesario y muy frecuentemente provoca dificultades en entender del algoritmo del programa, por lo cual las variables globales casi no se utilizan. En el siguiente ejemplo, observe que la constante PI es una constante global, mientras que las variables area y volumen son variables locales definidas en la función main y en otras funciones. No obstante que hay variables con el mismo nombre, éstas son variables locales y por tanto se trata de variables diferentes. //Programa para el calculo del area de un circulo y el volumen de una esfera //usando dos funciones. Se usa el mismo valor de radio para los dos calculos. #include <iostream.h> #include <stdlib.h> #include <math.h> const double PI = 3.14159; /* Tiene alcance global. Se coloca por debajo de los include y antes de los prototipos */ /* Prototipos */ double area_circulo(double radio); double volumen_esfera(double radio); int main( ) { double radio_de_ambos, area, volumen; /*Alcance local*/ cout<<”Dame el radio del circulo y de la esfera \n”; cin>>radio_de_ambos; area = area_circulo(radio_de_ambos); volumen = volumen_esfera(radio_de_ambos); cout<<”El area del circulo es “<<area<<”\n”; cout<<”El volumen de la esfera es “<<volumen<<”\n”; cout<<”\n”; } system(“PAUSE”); return 0; /*Observe que las dos funciones siguientes usan la constante global PI*/ Ingeniería Química Programación Instituto Tecnológico de Celaya /* Funcion para el calculo del area de un circulo */ double area_circulo(double radio) { double area; /* Alcance local, diferente de la variable definida en main */ area = PI * pow(radio, 2.0); /* Uso de constante global */ return area; } /* Funcion para el calculo del volumen de una esfera */ double volumen_esfera(double radio) { double volumen; /*Alcance local, diferente de la variable definida en main*/ volumen = (4.0/3.0) * PI * pow(radio, 3.0); return volumen; /* Uso de constante global */ } Ingeniería Química