Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Similitud De Un Alias De Python Con Gambas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Similitud De Un Alias De Python Con Gambas 
 
Hola!.

Una palabra que tambien se usa en Python es "alias". Es muy simple de entender y ver la similitud con Gambas.
Supongamos que llevamos el control de expectativa de vida de distintos países. ( Los datos no sé si son reales ).

En este ejemplo usaremos Canada, EEUU, Mexico

Si pudiéramos mostrar un array de esta forma:

evida = [ ["Canada",76.5 ], ["EEUU", 75.5], [ "Mexico", 72.0 ] ]

Y tambien crear los distintos subarrays

canada = ["Canada",76.5 ]
eeuu = ["EEUU", 75.5]
mexico = [ "Mexico", 72.0 ]

Y ahora en el array principal podíamos tener:

evida = [ canada, eeuu, mexico ]

Cuando asignamos un subarray a una variable, creamos un alias del subarray

Supongamos esté código:

Public Sub Main()
 
  Dim canada As String[] = ["Canada", 76.5]
  Dim eeuu As String[] = ["EEUU", 75.5]
  Dim mexico As String[] = ["Mexico", 72.0]
  Dim evida As String[][] = [canada, eeuu, mexico]  
  Dim pais As String[]
 
  For Each pais In evida
    Print pais[0], pais[1]
  Next
 
  canada[1] = 80.0
  Print
    
  For Each pais In evida
    Print pais[0], pais[1]
  Next
  
End
 


En el primer bucle vemos tanto el país como la edad media de expectativa de vida.

Si luego cambiamos uno de los datos contenido en un subarray
Afectara al array principal de expectativa de vida, que vemos una vez más con el siguiente bucle.
Observando que la edad de expectativa media de vida ha cambiado a 80.0

La salida del ejemplo fue está:

Citar:

Canada    76.5
EEUU    75.5
Mexico    72

Canada    80
EEUU    75.5
Mexico    72


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Sabado, 26 Septiembre 2015, 12:28; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Similitud De Un Alias De Python Con Gambas 
 
Veamos este ejemplo.

Public Sub Main()
 
  Dim lista1 As Integer[] = [1, 3, 5, 8]
  Dim lista2 As New Integer[]
      
  Print lista1, "lista1"
  Print lista2, "lista2"
  
  lista2 = lista1
  
  Print lista1, "lista1"
  Print lista2, "lista2"
 
  
  lista1[lista1.Max] = 12
  MostrarArray(lista2)
  
  
End


Public Sub MostrarArray(lista As Integer[])

  Dim x As Integer
  
  ' Mostramos los valores del array
  
  For x = 0 To lista.Max
    If x < lista.Max Then
      Print lista[x]; ",";
    Else
      Print lista[x]
    Endif
  Next  
  Print
  
End
 


¿ Es lista2 un alias de lista1 ?.

La salida fue está:

Citar:

(Integer[] 0x934b86c)    lista1
(Integer[] 0x934bd2c)    lista2
(Integer[] 0x934b86c)    lista1
(Integer[] 0x934b86c)    lista2
1,3,5,12



Todo cambio realizado en lista1 se refleja en lista2, ambos array apuntan a la misma dirección de memoria.

Bien, yo podría no haber inicializado el array lista2. A la hora de mostrar la dirección de memoria donde se encuentra su contenido,
no hubiese mostrado nada. Hubiera sido un array nulo. Por eso lo he inicializado aunque sin contenido.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Similitud De Un Alias De Python Con Gambas 
 
Shell escribió: [Ver mensaje]
¿ Es lista2 un alias de lista1 ?


..." alias " el latin significa: En otro modo..........

...sustancialmente los array son Punteros; y la linea
lista2 = lista1

no hace simplemente "lista2" un otro modo de "lista1", mas asigna el valor de la dirección del area de memoria del array "lista1" al array "lista2", ...como si fueran dos tipos Punteros.


Diferentemente, el metodo .Copy() de un array no asigna el valor de la dirección del area de memoria del array, hace una copia de los valores del array. El otro array, que recibe la copia, apunta a una otra diferente dirección de area de memoria. Es decir que para este secundo array, es reservada una nueva y diferente area de memoria.

Public Sub Main()

Dim x As Integer
 
  Dim lista1, lista3 As Integer[] = [1, 3, 5, 8]
  Dim lista2, lista4 As New Integer[]
  
  
  Print lista1, "lista1"
  Print lista2, "lista2"
  
  lista2 = lista1
  
  Print lista1, "lista1"
  Print lista2, "lista2";; "<----------"
  
  lista1[2] = 100
 
  For x = 0 To lista2.Max
    If x < lista2.Max Then
      Print lista2[x]; ",";
    Else
      Print lista2[x]
    Endif
  Next  
 
  
Print
Print "------------------------------------"
Print
  
      
  Print lista3, "lista3"
  Print lista4, "lista4"
  
  lista4 = lista3.Copy(0, lista1.Count)
  
  Print lista3, "lista3"
  Print lista4, "lista4";; "<----------"


  lista3[2] = 100

  
  For x = 0 To lista4.Max
    If x < lista4.Max Then
      Print lista4[x]; ",";
    Else
      Print lista4[x]
    Endif
  Next  

End

 



 
última edición por vuott el Sabado, 26 Septiembre 2015, 20:14; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Similitud De Un Alias De Python Con Gambas 
 
Citar:

..." alias " el latin significa: En otro modo..........


No es exactamente lo mismo. Por ejemplo,Shell es el alias de...Vuott es el alias de....:-D

Si por ejemplo fuera una chica que es un poco "casquivana". Pues el alias puede que fuera el
"nombre de guerra".  

Alias también creo que se usa en temas de investigación policial, etc,etc.

Vaya, tengo que continuar después el mensaje...mmm..y si uso guardar el mensaje, ¿ que pasara ?.

Bueno luego lo termino.  
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Similitud De Un Alias De Python Con Gambas 
 
Citar:

...sustancialmente los array son Punteros;


Los arrays son objetos...

Citar:

 simplemente "lista2" un otro modo de "lista1", mas asigna el valor de la direccón del area de memoria del array "lista1" al array "lista2", ...como si fueran dos tipos Punteros.


En el fondo, es lo que es. Pero no puedes decir eso a un programador de basic. Que le dices puntero y le da un "jamacuco".
Sobre todo por lo complejo que es el tema. Y en algunos lenguajes que usan punteros, son más complicados en unos que en otros.
Por ejemplo C y Pascal.

Tu estás acostumbrado por que vienes de C, pero muchos de los que estamos aquí que venimos de basic, nos cuesta entender el tema de punteros.
Y puede ser bastante importante conocerlo, pero claro como no se suele usar en basic a menos que sea por temas "especiales".
Pues nos parece como si fuera algo extraño. ( Aunque en el fondo sabemos que es una variable que apunta a una dirección  de memoria )

En Python no existen los punteros, pero como ves hay una similitud.

Citar:

Diferentemente, el metodo .Copy() de un array no asigna el valor de la direccón del area de memoria del array, hace una copia de los valores del array. El otro array, que recibe la copia, apunta a una otra diferente direccón de area de memoria. Es decir que para este secundo array, es reservada una nueva y diferente area de memoria.


No, no es eso lo que quiero.
Lo que quiero es que se vea que el lugar donde se almacena el contenido es la misma dirección.

Es casi a lo que hemos estado haciendo en funciones y parámetros.
A veces hay que tener cuidado con esa forma de apuntar a la misma dirección y usar el método copy.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Similitud De Un Alias De Python Con Gambas 
 
Shell escribió: [Ver mensaje]
No, no es eso lo que quiero.


Lo se, yo estaba haciendo un razonamiento un po' más amplio.

Saludos.
 



 
última edición por vuott el Sabado, 26 Septiembre 2015, 20:22; editado 3 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Alias Shell Bases de Datos 13 Martes, 05 Julio 2016, 19:17 Ver último mensaje
Shell
No hay nuevos mensajes [Python] Por Qué Python Debería Ser El P... Shell Python 2 Martes, 04 Julio 2017, 21:01 Ver último mensaje
vuott
No hay nuevos mensajes [Python] Guido Van Rossum Abandona La Supe... Shell Python 5 Miercoles, 10 Octobre 2018, 08:59 Ver último mensaje
Shell
No hay nuevos mensajes Comandos De Linux, Abreviados, Alias Shell Mundo Linux 6 Sabado, 17 Noviembre 2018, 11:51 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron