Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Quiz - Escenario 3 - Segundo Bloque-Teorico - Virtual - Análisis y Verificación de Algoritmos - (Grupo b01)
Quiz - Escenario 3 - Segundo Bloque-Teorico - Virtual - Análisis y Verificación de Algoritmos - (Grupo b01)
Fecha de entrega
31 de mayo en 23:55
Puntos
75
Preguntas
5
Disponible
28 de mayo en 0:00 - 31 de mayo en 23:55
4 días
Límite de tiempo
90 minutos
Intentos permitidos
2
Instrucciones
Historial de intentos
Las respuestas correctas estarán disponibles del 31 de mayo en 23:55 al 1 de jun en 23:55.
Pregunta 1 15
/ 15 pts
A continuación se presenta un programa que calcula el cociente y residuo de la división entera entre dos enteros
positivos.
{Pre Q: a = A /\ b = B /\ a > 0 /\ b > 0}
program div_and_mod
input: a: , b:
var: q: , r:
q := 0
r := a
{t = r, T = 0}
while r <= b
q := q + 1
r := r - b
return q, r
Es posible demostrar la corrección del ciclo a partir del P y t propuestos.
Aunque el programa es correcto, no es posible demostrar su corrección con el P y t propuestos. Esto, ya que P no contiene
toda la información necesaria.
Aunque el programa es correcto, no es posible demostrar su corrección con el P y t propuestos. Esto, ya que t no es una
función cota del ciclo.
El programa no es correcto.
Aunque el programa no es correcto, siempre termina.
Pregunta 2 15
/ 15 pts
A continuación se presenta un programa, junto con su especificación, que calcula el valor de para a real y b entero
no negativo.
{Pre Q: a = A /\ b = B /\ b >= 0}
program pow
input: a: , b:
var: p:
p := 1
{t = b, T = 0}
while b > 0
p := p * a
b := b - 1
return p
{Pos R: p = }
Para probar la corrección del programa se debe demostrar que (seleccione las opciones que considere correctas):
{p = A /\ a = A /\ 0 <= b <= B /\ b > 0} p := p*a; b:= b-1 {p = A /\ a = A /\ 0 <= b <= B}
{a = A /\ b = B /\ b >= 0} p := 1 {p = A /\ a = A /\ 0 <= b <= B}
[p = A /\ a = A /\ 0 <= b <= B /\ b > 0 b >= 0]
[p = A /\ a = A /\ 0 <= b <= B /\ (b > 0) p=A ]
{p = A /\ a = A /\ 0 <= b <= B /\ b > 0 /\ b = T} p := p*a; b:= b-1 {b < T}
Pregunta 3 15
/ 15 pts
A continuación se presenta un programa que calcula el cociente y residuo de la división entera entre dos enteros
positivos.
program div_and_mod
input: a: , b:
var: q: , r:
q := 0
r := a
{Inv P: a = A /\ b = B /\ A = qB + r}
{t = r, T = 0}
while r >= b
q := q + 1
r := r - b
return q, r
Es posible demostrar la corrección del ciclo a partir del P y t propuestos.
No es posible demostrar la corrección del ciclo ya que el t propuesto no es una función cota del ciclo.
No es posible demostrar la corrección del ciclo a partir del P y t propuestos ya que P (aunque sí es invariante) no contiene
toda la información necesaria sobre el ciclo.
El predicado P no es un invariante del ciclo.
A partir del P y t propuestos, es posible demostrar que el programa no es correcto.
Pregunta 4 15
/ 15 pts
A continuación se presenta un programa que calcula el factorial de n (n!) para n entero no negativo.
{Pre Q: n = N /\ n >= 0}
program factorial
input: n:
var: f: , k:
f := 1
k := 1
{Inv P: ?}
{t = ?}
while k <= n
f := f * k
k := k + 1
return f
{Pos R: f = N!}
n = N /\ 1 <= k <= n /\ f = (k-1)!
1 <= k <= n /\ f = k!
n = N /\ 1 <= k <= n+1 /\ f = k!
1 <= k <= n+1 /\ f = (k-1)!
n = N /\ 1 <= k <= n+1 /\ f = (k-1)!
Pregunta 5 15
/ 15 pts
Todo predicado que sea invariante de un ciclo es adecuado para verificar la corrección del correspondiente programa.
Verdadero
Falso