resolucion actividad nº 6

2
Actividad Nº 6 1. El segmento de programa siguiente es un intento de calcular el cociente (olvidándonos del residuo) de dos enteros positivos contando el número de veces que se puede restar el divisor al dividendo antes de que lo que nos quede sea menor que el divisor. Por ejemplo, 7/3 debe producir 2 porque podemos restarle 3 dos veces a 7. ¿Es correcto el programa? Justifique su respuesta. asignar a Cuenta el valor 0; asignar a Residuo el valor del dividendo; hacer asignar a Residuo el valor de Residuo – divisor; asignar a Cuenta el valor de Cuenta + 1 mientras que (Residuo >= el divisor) asignar a cociente el valor de Cuenta No. Si el dividendo es menor que el divisor, como en 3/7, la respuesta dada es 1, aunque debiera ser cero. 2. El segmento de programa siguiente está diseñado para calcular el producto de dos enteros no negativos X y Y acumulando la suma de X copias de Y; esto es 3 por 4 se calcula acumulando la suma de tres cuartos. ¿Es correcto el programa? Justifique su respuesta. asignar a Producto el valor de Y asignar a Cuenta el valor 1 mientras (Cuenta < X) hacer asignar a Producto el valor de Producto + Y asignar a Cuenta el valor de Cuenta + 1 finmientras No. Si el valor de X es cero y el de Y es distinto de cero, la respuesta no será correcta. 3. Suponiendo la condición previa de que el valor asociado a N es un entero positivo, establezca un invariante de ciclo que conduzca a la conclusión de que si la rutina siguiente termina, se asigna a Suma el valor 0 + 1 + ... + N. asignar a Suma el valor 0; asignar a l el valor 0;

Upload: erico

Post on 15-Jan-2016

10 views

Category:

Documents


0 download

DESCRIPTION

Actividad Nº6

TRANSCRIPT

Page 1: Resolucion Actividad Nº 6

Actividad Nº 6

1. El segmento de programa siguiente es un intento de calcular el cociente (olvidándonos del residuo) de dos enteros positivos contando el número de veces que se puede restar el divisor al dividendo antes de que lo que nos quede sea menor que el divisor. Por ejemplo, 7/3 debe producir 2 porque podemos restarle 3 dos veces a 7. ¿Es correcto el programa? Justifique su respuesta.

asignar a Cuenta el valor 0;asignar a Residuo el valor del dividendo;hacerasignar a Residuo el valor de Residuo – divisor;asignar a Cuenta el valor de Cuenta + 1mientras que (Residuo >= el divisor)asignar a cociente el valor de Cuenta

No. Si el dividendo es menor que el divisor, como en 3/7, la respuesta dada es 1, aunque debiera ser cero.

2. El segmento de programa siguiente está diseñado para calcular el producto de dos enteros no negativos X y Y acumulando la suma de X copias de Y; esto es 3 por 4 se calcula acumulando la suma de tres cuartos. ¿Es correcto el programa? Justifique su respuesta.

asignar a Producto el valor de Yasignar a Cuenta el valor 1mientras (Cuenta < X) hacerasignar a Producto el valor de Producto + Yasignar a Cuenta el valor de Cuenta + 1finmientras

No. Si el valor de X es cero y el de Y es distinto de cero, la respuesta no será correcta.

3. Suponiendo la condición previa de que el valor asociado a N es un entero positivo, establezca un invariante de ciclo que conduzca a la conclusión de que si la rutina siguiente termina, se asigna a Suma el valor 0 + 1 + ... + N.

asignar a Suma el valor 0; asignar a l el valor 0;mientras (l < N) hacer(asignar a l el valor de l +1;asignar a Suma el valor Suma + l)

Cada vez que se realiza la prueba de terminación, el enunciado “Suma = 1 + 2 +...+ I e I menor o igual que N”, es verdadero. Si combinamos esto con la condición de terminación “I mayor o igual que N”, obtenemos la conclusión deseada “Suma = 1 + 2 +..+ N”. Puesto que I se inicia en cero y se incrementa en uno cada vez que se repite el ciclo, su valor debe llegar tarde o temprano al de N.