Cuestion Sobre Variables


Objetivo: Cuestion Sobre Variables
Hola Comunidad!.

Buscando la manera de hacer un ejemplo hice otro que me ha dejado un poco con dudas.
En este se hace el método de ordenación de burbuja no optimizado.

Mi cuestión es: Si las variables son locales.¿ como es que perduran ?. En el caso del array.

PUBLIC SUB Form_Open()
DIM anumeros AS Integer[] = [10, 1, 56, 18, 20, 3]
DIM unidos AS String
DIM n AS Integer

unidos = ""
FOR n = 0 TO anumeros.Max
PRINT anumeros[n]; " ";
unidos &= anumeros[n] & " "
NEXT
PRINT
PRINT String(Len(unidos) - 1, "-")

FOR n = 0 TO anumeros.Max
operavarios(anumeros)
NEXT

END


PUBLIC SUB operavarios(numeros AS Integer[])
DIM n AS Integer
DIM aux AS Integer

FOR n = 0 TO numeros.max - 1
IF numeros[n] > numeros[n + 1]
aux = numeros[n]
numeros[n] = numeros[n + 1]
numeros[n + 1] = aux
ENDIF
NEXT
FOR n = 0 TO numeros.Max
PRINT numeros[n]; " ";
NEXT
PRINT
END


El resultado final fue este:

10 1 56 18 20 3
-------------------
1 10 18 20 3 56
1 10 18 3 20 56
1 10 3 18 20 56
1 3 10 18 20 56
1 3 10 18 20 56
1 3 10 18 20 56

No es que sea extraño, es lo que tiene que hacer, pero, ¿ por que se mantiene el array local ?
¿ No le estoy pasando 10 veces el mismo en la rutina principal ?.Se debería repetir tantas veces como el bucle.

Cada vez que salgamos del procedimiento operavarios el array debería ser olvidado.
Entonces de alguna manera por el bucle se mantiene?¿?

Ah, el código esta escrito en Gambas2.

Ok, probare en Gambas3.No hay diferencias.

Saludos.

Objetivo: Re: Cuestion Sobre Variables
Al mirar el contenido del array anumeros se están cambiando los números de lugar dentro del array
con cada llamada al procedimiento operaviarios.

Si yo estoy pasando por valor, es una copia, no los valores originales.Gambas2 no soporta por referencia.

¿ Qué es lo que pasa ?.

Saludos.

Objetivo: Re: Cuestion Sobre Variables
Estas variables "huérfanas" se denominan (así me lo enseñaron) "variables locales separadas". Perviven en memoria mientras exista alguna referencia a las mismas a pesar de que la función que las declaró haya finalizado. Luego desaparecen... pero no te puedo decir más que, para mí, con que existan y funcionen, me vale la explicación.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4291s (PHP: -75% SQL: 175%)
Consultas SQL: 44 - Debug off - GZIP Activado