Primer Parcial 2022 (2do semestre) Ejercicio 2

Primer Parcial 2022 (2do semestre) Ejercicio 2

de José Pérez Mereles -
Número de respuestas: 3


Hola buenas, no me queda de terminar claro porque la respuesta correcta segun la resolucion es la a), yo pense que deberia ser la b). Alguien podria explicarme donde esta mi error y porque la respuesta a) es la opcion correcta? Desde ya muchas gracias.
En respuesta a José Pérez Mereles

Re: Primer Parcial 2022 (2do semestre) Ejercicio 2

de Felipe Miranda Torres De La Llosa -
Hola José, cómo estás?

En este caso, para determinar cuál de los cabezales es correcto, tenés mirar la declaración de los parámetros nominales en cada uno de estos, y compararla con los parámetros efectivos que se pasan en las 2 invocaciones de la línea de código dada.

Entonces la opción b es incorrecta porque el primer parámetro declarado en el procedimiento P es "var a : integer" donde "var" indica que este es un parámetro por referencia, lo que significa que en el momento de la invocación vos tenés que asignarle a este parámetro una variable, cosa que no pasa en ambas invocaciones donde se pasa un valor efectivo que está dada por el resultado de restarle 1 al valor de una de tus variables, por ejemplo en la invocación "p(a-1, b)".

Entonces, para ver que la opción a es la correcta, tenés que pensar en que parámetros son declarados por valor y por referencia, y también la cohesión entre los tipos real y integer.

Cualquier cosa volvé a consultar y podemos verlo más en detalle.

Saludos,
Felipe
En respuesta a José Pérez Mereles

Re: Primer Parcial 2022 (2do semestre) Ejercicio 2

de Luis Sierra -
hola josé,

como puedes ver en la sección Pasaje de parámetros por referencia de la guía teórica correspondiente, "los parámetros efectivos deben ser variables." esto explica porque la opción b), cuyos parámetros efectivos no son variables, es incorrecta.

en el caso de la opción a) te puede resultar confuso que una expresión de tipo `integer` se use como parámetro efectivo para un parámetro nominal de tipo `real`. la copia que se realiza en el Pasaje de parámetros por valor cumple con las copias que se hacen al realizar las asignaciones, en particular cumple con la conversión implícita que aparece en la guía teórica de Componentes Básicos.

saludos

luis