Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Ejemplo De Paso De Parámetros Por Referencia.Gambas3
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Ejemplo De Paso De Parámetros Por Referencia.Gambas3 
 
Hola!.

Os pongo un pequeño ejemplo del paso de parámetros por referencia.En este caso recibe esos parámetros.
No hace uso del formulario y puedes verlo en la consola de depuración.

'Programa que calcula el cociente y el resto de la división haciendo que estos resultados
'sean devueltos al modulo que lo llama

Public Sub Form_Open()
Dim dividendo, divisor, cociente, resto As Integer

Print "Escribe los valores del dividendo y divisor"
Input dividendo
Input divisor

division(dividendo, divisor, ByRef cociente, ByRef resto)
Print
Print "Cociente: " & cociente
Print "Resto: " & resto

End

'Cabecera: division(Entrada divi,Entrada d,Salida c,Salida r)
'Precondición: dividendo >= divisor y ambos son mayores que 0
'Postcondición: devuelve a través de los parametros de salida c y r, el cociente y el resto.

Public Sub division(divi As Integer, d As Integer, ByRef c As Integer, ByRef r As Integer) As Integer

c = divi Div d
r = divi Mod d

End
 


(Estaba estudiando el tema.. )

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Martes, 17 Enero 2012, 00:23; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejemplo De Paso De Parámetros Por Referencia.Gambas3 
 
Es posible el paso "por Referencia" tambien usando Punteros y Memory Stream (es decir sin parámetros ByRef).

Ejemplo:

Public Sub Main()
  Dim dividendo, divisor As Integer
  Dim p1, p2 As Pointer

  Print
  Print "Escribe los valores del dividendo y divisor"
  Input dividendo
  Input divisor

  p1 = VarPtr(dividendo)
  p2 = VarPtr(divisor)

  division(p1, p2)
  Print
  Print "Cociente: " & Int@(p1)
  Print "Resto: " & Int@(p2)

End


Public Function division(divi As Pointer, d As Pointer)

  Dim i1, i2, ris As Integer
  Dim st As Stream
  
    i1 = Int@(divi)
    i2 = Int@(d)
    ris = i1 Div i2

    st = Memory divi For Write
    Write #st, ris As Integer
    st.Close
    
    ris = i1 Mod i2
    st = Memory d For Write
    Write #st, ris As Integer
    st.Close

End




Os remito a esta pagina tambien:
http://foro.gambas-es.org/viewtopic.php?f=1&t=4599
 



 
última edición por vuott el Martes, 12 May 2015, 23:34; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejemplo De Paso De Parámetros Por Referencia.Gambas3 
 
Hola Vuott.

Hace tiempo de este código. Tu sabes que los punteros en otros lenguajes no están tan bien vistos.
Vamos, que siempre fueron un "coñazo". En C es muy normal verlos.

Tengo que ver con más tranquilidad los últimos códigos que has subido.

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: Ejemplo De Paso De Parámetros Por Referencia.Gambas3 
 
Shell escribió: [Ver mensaje]
... los punteros en otros lenguajes no están tan bien vistos.


......siempre las serpientes tienen miedo de bastones puntiagudos.    
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejemplo De Paso De Parámetros Por Referencia.Gambas3 
 
... muy agudo, Vuott      
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejemplo De Paso De Parámetros Por Referencia.Gambas3 
 
No era en concreto Python..

Punteros en Python

Precisamente con ese tema de saber en que dirección se aloja un valor, estuve preguntando como se hacía eso e gambas en su día.
En Python más que de variables se habla de referencias de objetos. Por comodidad se dice variable.

Por ejemplo:

x = "azul"

Crea un objeto de cadena con el texto "azul"  y crea una referencia de objeto llamada "x" que se refiere al objeto cadena.
Para simplificar, se dice que la variable "x" tiene asignada la cadena "azul".

Supongo que esta parte es común entre Python Y Gambas.

Citar:

>>> a = 4
>>> b = a
>>> id(a)
138405168
>>> id(b)
138405168
>>> a = "Libertad"
>>> id(a)
3051296592
>>> id(b)
138405168


El operador igual no indica lo mismo que el operador de asignación de otros lenguajes.
El operador igual vincula una referencia de objeto a un objeto en la memoria.
Si la referencia de objeto ya existe, tan solo vuelve a vincularlo para que apunte al objeto de la derecha del "=".
Si no existe, el operador "=" la creara.

Referencia: Programación Python 3 de Mark Summerfield

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: Ejemplo De Paso De Parámetros Por Referencia.Gambas3 
 
Shell escribió: [Ver mensaje]

>>> id(a)
138405168
>>> id(b)
138405168
....
>>> id(a)
3051296592
>>> id(b)
138405168


Al ver las funciones id() y los valores, me parecen ser sustancialmente Pointer !    
 



 
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 Programa Paso A Paso: Consultas Médicas.... jsbsan Videotutoriales 1 Jueves, 12 Enero 2012, 04:22 Ver último mensaje
ivanovichenco
No hay nuevos mensajes Android Y Linux: Ejemplo De Uso De Socket,... jsbsan Aplicaciones/Fragmentos de Código 1 Domingo, 15 Julio 2012, 20:36 Ver último mensaje
jguardon
No hay nuevos mensajes Manual Paso A Paso: Páginas Web Realizada... jsbsan General 5 Jueves, 17 Septiembre 2015, 13:51 Ver último mensaje
tercoIDE
No hay nuevos mensajes Paso De Parámetros A Un Método Guizans General 6 Jueves, 09 Agosto 2018, 00:43 Ver último mensaje
v3ctor
 

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