• Jueves 14 de Noviembre de 2024, 17:19

Autor Tema:  Parametros por valor  (Leído 1953 veces)

Ryusaki N

  • Miembro activo
  • **
  • Mensajes: 76
    • Ver Perfil
Parametros por valor
« en: Lunes 28 de Septiembre de 2009, 08:59 »
0
Ok tengo esta interface montada que consta de 3 menus con opciones para generar unos cuantos calculos. El pequeño sistema esta muy bien ya que los menus se cambian sin problema y se accesa a las secciones muy facilmente pero he probado pasar parametros por valor en unos procedimientos para unas cuantas operaciones y la interface se me desarma. Apreciaria si me despejaran la duda de como tratar la llamada o invocacion de estos desde el programa principal cuya sintaxis es la siguiente:
Código: Text
  1.  Begin
  2.           clrscr;
  3.           graficas;
  4.           seleccion;
  5.           End.
  6. (*En donde quisiera hacer la llamada del procedimiento calculo3(x,y: integer);*)
  7.          
  8.  

Gracias de antemano por su ayuda, saludos.
C/C++/C#/Java/Python dev. Frontend web developer. ASP.NET && PHP, ASM x86
No tengo vida social y me siento orgulloso!! 1000% Geek.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Parametros por valor
« Respuesta #1 en: Lunes 28 de Septiembre de 2009, 11:26 »
0
¿Por valor? ¿O quieres decir por referencia? Te aclaro la diferencia por si las moscas:

Por valor: se pasa una copia del valor de la variable, así los cambios de valor en el código llamado no afectan a los valore del llamante. Esto es, si modificamos el valor de la variable en la función/procedimiento, a la vuelta la variable retoma el valor original, y no el modificado.

Por referencia: se pasa un puntero a la variable. Los cambios del valor de la variable son permanentes. Esto es, si modificamos el valor de la variable en la función/procedimiento, a la vuelta la variable retiene el nuevo valor.

epayan

  • Miembro activo
  • **
  • Mensajes: 41
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.pillin-slk.blogspot.com
Re: Parametros por valor
« Respuesta #2 en: Lunes 28 de Septiembre de 2009, 15:51 »
0
un ejemplos para ser mas explicitos esperemos que sea de ayuda

Código: Pascal
  1.  
  2. program nombre_del_programa;
  3. uses crt;
  4. {------------------*----------------------------------*---------------------}
  5. {en este ejemplo el X y el Y no se modificarán}
  6. procedure calculo1(x,y:integer);
  7. begin
  8.        {lo que se quiera hacer con X}
  9.         X:=x+1;
  10.        {lo que se quiera hacer con Y}
  11.         y:=Y+1;
  12. end;
  13.  
  14. {------------------*----------------------------------*---------------------}
  15. {en este ejemplo el X y el Y se modificarán}
  16. procedure calculo3(var x,y:integer);
  17. begin
  18.        {lo que se quiera hacer con X modificandolo}
  19.         X:=x+1;
  20.        {lo que se quiera hacer con Y modificandolo}
  21.         y:=Y+1;
  22. end;
  23. var x,y:integer;
  24. begin
  25.     clrscr;
  26.      x:=0;
  27.      y:=0;
  28.      calculo1(x,y); {en este procedimiento no se modifican los valores de X Y}
  29.      writeln('valor de X : ',x,' Valor de Y ',y);
  30.      calculo3(x,y); {en este procedimiento se modifican los valores X Y}
  31.      writeln('valor de X : ',x,' Valor de Y ',y);
  32. end.
  33.  
  34.  

Ryusaki N

  • Miembro activo
  • **
  • Mensajes: 76
    • Ver Perfil
Re: Parametros por valor
« Respuesta #3 en: Lunes 28 de Septiembre de 2009, 17:27 »
0
Bueno lo he intentado como ha dicho epayan, el problema es que la interface se altera, entras al programa y en vez de ver el menu principal ves la pantalla del calculo de golpe, y es que vale decir que he declarado los procedimientos de todos los calculos con forward de la siguiente forma:
Código: Pascal
  1.  
  2. procedure calculo(a:char); forward;
  3.  

Lo he definido para que me sirva la invocacion (Es decir quite el forward y puse el procedimiento) pero como te digo la interface se me viene abajo. Es necesario invocar el procedure antes de los demas que tengo invocados en el principal?
C/C++/C#/Java/Python dev. Frontend web developer. ASP.NET && PHP, ASM x86
No tengo vida social y me siento orgulloso!! 1000% Geek.

epayan

  • Miembro activo
  • **
  • Mensajes: 41
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.pillin-slk.blogspot.com
Re: Parametros por valor
« Respuesta #4 en: Lunes 28 de Septiembre de 2009, 17:30 »
0
podriamos ver el codigo para ayudarte mejor
 podría ser una variable global que este controlando tu menú , que te hace entrar de golpe a la opcion calcular
por lo que se procedimientos y funciones van antes de:
Código: Pascal
  1.  
  2. procedimientos
  3. funciones
  4. {cuerpo del programa}
  5. begin
  6. end.
  7.  
  8.  
  9.  

tal vez con un poco de orden y esctructuracion de tus funciones y procedimientos corrijas el problema