Ejercicio 2, 2do semestre de 2022

Ejercicio 2, 2do semestre de 2022

de Joaquín Manrique Machín -
Número de respuestas: 3

Hola, tengo duda sobre este ejercicio. No me queda claro por que la respuesta correcta es la a (eso dice en la solución). No se por que en esa invocación de procedimiento, para que se pueda restar 1 al primer parámetro este tiene que ser real ni por que se pasa por valor.

Agradecería mucho una ayuda sobre este tema.

Saludos.

ejercicio

En respuesta a Joaquín Manrique Machín

Re: Ejercicio 2, 2do semestre de 2022

de Joaquín Manrique Machín -
Y también pregunto por el 3 de ese mismo parcial. No me doy cuenta de por que esta mal invocada la función, pero aunque fuera así, la opción e también es correcta.
En respuesta a Joaquín Manrique Machín

Re: Ejercicio 2, 2do semestre de 2022

de Joaquin Mello Castro -
En este caso la opcion e al invocar una funcion tiene que indicarse el tipo que devuelve y ahi solamente esta indicando el tipo de las variables que toma, por lo cual esta escrita de manera incorrecta, entiendo que para que este correcta tendria que ser algo asi = function p(a, b : integer) : integer;
En respuesta a Joaquín Manrique Machín

Re: Ejercicio 2, 2do semestre de 2022

de Felipe Miranda Torres De La Llosa -
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