Hola Joaquín, ¿cómo andas?
Dado que en ambas invocaciones a P en el primer parámetro se pasa una expresión (a-1 o b-1), este parámetro tiene que ser por valor, ya que de ser por referencia (usando var) habría que pasar una variable, ahora el tipo de este parámetro va a ser integer o real, porque el resultado de la expresión es un integer que por coerción también puede ser interpretado como un real, por lo que podemos descartar las opciones b y c.
La opción d la descartamos porque P es un procedimiento, ya que si fuera una función tendría que ser parte por ejemplo de una asignación.
En el caso del segundo parámetro, este siempre se invoca con una variable de tipo integer, por lo que puede ser que este sea pasado por referencia, en cuyo caso el tipo de la definición de P debe coincidir, por lo que podemos descartar la opción c.
Entonces la respuesta correcta es la a.
Saludos,
Felipe
Dado que en ambas invocaciones a P en el primer parámetro se pasa una expresión (a-1 o b-1), este parámetro tiene que ser por valor, ya que de ser por referencia (usando var) habría que pasar una variable, ahora el tipo de este parámetro va a ser integer o real, porque el resultado de la expresión es un integer que por coerción también puede ser interpretado como un real, por lo que podemos descartar las opciones b y c.
La opción d la descartamos porque P es un procedimiento, ya que si fuera una función tendría que ser parte por ejemplo de una asignación.
En el caso del segundo parámetro, este siempre se invoca con una variable de tipo integer, por lo que puede ser que este sea pasado por referencia, en cuyo caso el tipo de la definición de P debe coincidir, por lo que podemos descartar la opción c.
Entonces la respuesta correcta es la a.
Saludos,
Felipe