*Especificar los siguientes programas imperativos:*
*a) Dados los arreglos A y B, determina si todos los elementos de A son mayores a todos los elementos de B.*
**Solución posible:**
Const : N Int
Const: M Int
var A: array $[0,N)$ of Num
var B: array $[0,M)$ of Num
r: Bool
$\left\lbrace P: N\geq 0 \ \land \ M\geq 0 \right\rbrace$
$S$
$\left\lbrace Q: r=\big<\forall i,j: 0\leq i < N \land 0\leq j< M: A.i>B.j \big>\right\rbrace$
**Errores comunes y criterio**
* Considerar solo el caso $N=M$: - 2pts.
* Comparar solo $A.i$ y $B.i$, no están comparando cada elemento de $A$ con todos los elementos de $B$, si no solo con el que está en la misma posición: -4pts.
* No declarar $r$ ó $B$:-2 pts.
* $a.i>a.j$ en lugar de $a.i>b.j$: -1pt.
* Derivar: no resté puntos, ignorado.
* $i\leq N, i\leq M$ en lugar de $i<N, j<M$: -1pt.
* $\exists$ en lugar de $\forall$: -3pts.
*b) Dado un arreglo A y una constante C, determina si la suma de los elementos de algún segmento inicial no vacío de A es mayor a C.*
**Solución posible:**
Const N: Int,
Const C: Num,
Var A: array $[0,N)$ of Num,
r: Bool
$\left\lbrace P: N\geq 0 \right\rbrace$
$S$
$\left\lbrace Q: r:\big< \exists i : 0\leq i < N: \big<\sum j:0\leq j\leq i:A.j\big> > C \big> \right\rbrace$
**Errores comunes y criterio**
* No declarar $C$: -4pts
* C: Int: -2pts.
* $0< i$, $N>0$ ó $i\leq N$: -2pts cada uno.
* No declarar $r$: -2pts.
* $\forall$ en lugar de $\exists$: -3pts.
* No declarar post ni precondición: -10pts.