Ir al contenido


Foto

Solicito una lección...


  • Por favor identifícate para responder
6 respuestas en este tema

#1 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 27 septiembre 2011 - 10:29

... sobre el uso de variables o valores por referencia. Ya estuve buscando un rato en el pasado de éste foro y no encontré nada, posiblemente por que no se ha tocado el tema...

¿Alguien de los presentes sería tan amable de explicarme qué, cómo, cuándo, por qué, dónde, para qué se utilizan éste tipo de variables?

  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 27 septiembre 2011 - 10:55

http://www.mailxmail...alor-referencia
  • 0

#3 javsolis3

javsolis3

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.380 mensajes
  • LocationPanama

Escrito 27 septiembre 2011 - 11:01

:cool:http://es.wikipedia.org/wiki/Variable_estad%C3%ADstica
  • 0

#4 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 27 septiembre 2011 - 11:20

... sobre el uso de variables o valores por referencia...


Gracias, EduardoCol..., ¿y para Delphi, no tenemos nada? Perdón por no aclarar antes...
  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 27 septiembre 2011 - 11:42

http://mundodelphi.w...r-y-referencia/
  • 0

#6 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 27 septiembre 2011 - 12:27

Básicamente, pasar un parámetro por valor es pasar una copia de dicho parámetro. Es la forma mas habitual de uso. Presenta dos características:

1.- El programa debe crear una copia antes de pasar el parámetro con la pérdida de tiempo (mínima) que suponga.
2.- La función o procedimiento que lo va a tratar no puede modificarlo, con lo que aseguramos la "estanqueidad".

El paso por referencia es equivalente a pasar un puntero a dicho parámetro es más rápido y permite que la función o procedimiento que lo trata, lo pueda modificar.

Dicho esto, la utilidad de cada método se encontrará en cada momento y necesidades del código. Cuando una función debe devolver mas de un resultado, generalmente se usan parámetros por referencia para  devolver dichos resultados.


Saludos.
  • 0

#7 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 27 septiembre 2011 - 01:22

Por lo que sé, básicamente un objeto se pasa siempre por referencia, pero cuando son variables, tu decides al definir la funcion si quieres que esta pueda modificar el valor de la variable pasada (añades var al declarar el parámetro de tu función) o lo dejas sin el "var" con lo que se pasa una copia del valor, y cualquier cambio dentro de la función no afecta a la variable que le pasaste desde fuera de la función.

Yo uso por ejemplo para que una función me pueda devolver muuuchos valore,s dejo el tipo a boolean para marcar solo si hubo problemas o si todo fue bien, y el resto de resultados los devuelvo en las variables pasadas por referencia.



delphi
  1. a:= sin(a); //pasas el valor en radianes, obtienes el seno de esos radianes.
  2. RadianesToSin(a); //Hace lo mismo, y si falla devuelve false.
  3.  
  4. //Puede usarse asi
  5. if not RadianesToSin(a) then msg('Problemas calculando el seno.');
  6.  
  7. //La funcion la declaras usando "var" delante de CADA variable que quieras modificar
  8. //La variable "v" ES la misma que la "a" que le pasas, a nivel de valor y de puntero.
  9. function RadianesToSin(var v: double): boolean;
  10. begin
  11.   try
  12.     v:= sin(v);
  13.     result:= true;
  14.   except
  15.     result:= false;
  16.   end;
  17. end;


  • 0




IP.Board spam blocked by CleanTalk.