Cuestion Sobre Variables


Subject: 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.

Subject: 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.

Subject: 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.

Profile PM  

Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1212s (PHP: -32% SQL: 132%)
SQL queries: 23 - Debug Off - GZIP Enabled