Programación General > Pascal

 Parametros por valor

(1/1)

Ryusaki N:
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 --- Begin          clrscr;          graficas;          seleccion;          End.(*En donde quisiera hacer la llamada del procedimiento calculo3(x,y: integer);*)           
Gracias de antemano por su ayuda, saludos.

m0skit0:
¿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:
un ejemplos para ser mas explicitos esperemos que sea de ayuda


--- Código: Pascal --- program nombre_del_programa;uses crt;{------------------*----------------------------------*---------------------}{en este ejemplo el X y el Y no se modificarán}procedure calculo1(x,y:integer);begin       {lo que se quiera hacer con X}        X:=x+1;       {lo que se quiera hacer con Y}        y:=Y+1;end; {------------------*----------------------------------*---------------------}{en este ejemplo el X y el Y se modificarán}procedure calculo3(var x,y:integer);begin       {lo que se quiera hacer con X modificandolo}        X:=x+1;       {lo que se quiera hacer con Y modificandolo}        y:=Y+1;end;var x,y:integer;begin    clrscr;     x:=0;     y:=0;     calculo1(x,y); {en este procedimiento no se modifican los valores de X Y}     writeln('valor de X : ',x,' Valor de Y ',y);     calculo3(x,y); {en este procedimiento se modifican los valores X Y}     writeln('valor de X : ',x,' Valor de Y ',y);end.  

Ryusaki N:
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 --- procedure calculo(a:char); forward; 
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?

epayan:
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 --- procedimientosfunciones{cuerpo del programa}beginend.   
tal vez con un poco de orden y esctructuracion de tus funciones y procedimientos corrijas el problema

Navegación

[0] Índice de Mensajes

Ir a la versión completa