Escolar Documentos
Profissional Documentos
Cultura Documentos
const N≥ 2 fconst
tipo vec = tabla [1..N] de entero; ftipo
funcion maxima diferencia(t: vec) dev r: entero;
{P re ≡ verdadero }
{P ost ≡ r = max{t[i] − t[j] : 1 ≤ i < j ≤ N } }
ffuncion
Solución:
1
const N≥ 2 fconst
tipo vec = tabla [1..N] de entero; ftipo
2
Cómo calculamos la expresión para el resultado deseado r en la postcondición Q?. En
′
r tenemos la máxima diferencia entre las parejas t[i] − t[j] definidas a partir del conjunto
de ı́ndices {1 ≤ i < j ≤ x − 1}. Pero r en Q, debe contener la máxima diferencia entre
las parejas t[i] − t[j] definidas a partir del conjunto de ı́ndices {1 ≤ i < j ≤ x}. Observa
lo siguiente: {1 ≤ i < j ≤ x} = {1 ≤ i < j ≤ x − 1} ∪ {1 ≤ i < x}. El último conjunto
se obtiene cuando j = x.
Sea max() la operación que calcula el máximo entre dos número enteros. El razon-
amiento anterior conduce a que,
Por lo tanto,
3
{Q′ ≡ r = max{t[i] − t[j] : 1 ≤ i < j ≤ x} ∧ s = max{t[i] : 1 ≤ i < x} }
ffuncion
El resultado final queda expresado de la siguiente forma cuando juntamos todas las
inmersiones y la función sumergida original:
const N≥ 2 fconst
tipo vec = tabla [1..N] de entero; ftipo