4.10 Variables locales vs globales


Hasta el momento, cada vez que hemos utilizado variables, las hemos declarado en la parte superior de nuestro programa anterior a setup().

Esta es una buena simplificación y nos ha permitido centrarnos en los fundamentos de la Declaración, inicialización y uso de variables. Las variables, sin embargo, se pueden declarar en cualquier lugar dentro de un programa y ahora se verá en lo que significa declarar una variable de algún lugar que no sea la parte superior y cómo podemos elegir la ubicación correcta para declarar una variable.

Imaginemos, por un momento que un programa de ordenador está funcionando en nuestra vida. Y en esta vida, las variables son post-it que necesitamos recordar.

Un post-it podría tener la dirección de un restaurante para el almuerzo. Lo escribes esta mañana y lo tiras a la basura después de disfrutar de una buena hamburguesa de pavo.

Pero otro post-it puede contener información crucial (como número de cuenta bancaria), y debe estar guardado en un lugar seguro durante años y años. Este es el concepto del alcance.

Existen algunas variables (es decir, que se pueden acceder a ellas) a lo largo de todo el curso de vida global de un programa y otras solo sirven temporalmente, sólo para el breve momento en que se requiere un valor para una instrucción o variables de cálculo local.

En Processing, las variables globales se declaran en la parte superior del programa, tanto fuera de setup() y draw(). Estas variables pueden ser usadas en cualquier parte del programa. Es la forma más fácil de usar una variable, ya que no tiene que recordar cuando se puede y no se puede utilizar esa variable. Tu puedes usar siempre estas variables (globales) y es por eso que empezamos solo con variables globales.

Las variables locales son variables declaradas dentro de un bloque de código. Hasta ahora hemos conocido muchos ejemplos diferentes de bloques de código: setup(), draw(), mousePressed(), keyPressed(), las declaraciones if, también los bucles while y for.

Una variable local declarada en un bloque de código sólo está disponible para su uso dentro de ese bloque de código específico en la que se declaró. Si intentas acceder a una variable local fuera del bloque en el que se declaró, obtendrás este error:

“No accessible field named “”variebleName” was found”

Este es el mismo error que se obtendría si no se molestó en declarar la variable “nombre de Variable” en tu programa. Processing no sabe lo que es porque no hay ninguna variable con ese nombre que exista dentro del bloque de código donde debería estar.

Aquí está un ejemplo donde una variable local se utiliza dentro de draw() con el fin de ejecutar un bucle while().

Example 6-7: Local variable

void setup(){
  size(200, 200);
}

void draw(){
  background(0);
  int x = 0;
   while(x < width){
    stroke(255);
    line(x, 0, x, height);
    x += 5;
   }
}

void mousePressed(){
  println(“The mouse was pressed!”);
}

¿Por qué molestarse? ¿No podríamos sencillamente declarar x como una variable global? Si bien esto es cierto, ya que solo estamos usando x dentro de la función draw(), es un desperdicio tener todas nuestras variables como variables globales.

Es más eficiente y en última instancia menos confuso cuando se programa que la declaración de variables se realice dentro del alcance de donde sean necesarias.

Ciertamente, muchas variables deben ser globales, pero este no es el caso aquí.

Un bucle for ofrece un punto más cercano para que podamos entender una variable “local” dentro de la parte de “inicialización”.

for(int i = 0; i < 100; i+=10){
 stroke(255);
 fill(i);
 rect(i, 0, 10, height);
}

No es necesario utilizar una variable local en el bucle, sin embargo, por lo general es conveniente hacerlo.

En teoría, es posible declarar una variable local con el mismo nombre que una variable global. En este caso, el programa utilizará la variable local dentro del ámbito actual y la variable global fuera de ese ámbito actual y la variable global fuera de ese ámbito. Como regla general, es mejor no declarar múltiples variables con el mismo nombre con el fin de evitar confusiones.

No hay comentarios:

Publicar un comentario

¿Te ha servido de ayuda? Recibe las clases en tu mail