Subido por tmp

mrperfecto

Anuncio
Mr. Perfecto diseña, verifica y analiza con rigor
4 de Octubre de 2019
Marty, ha llegado la hora: tus padres te han dado algunos programas y quieren saber si son correctos.
Otros no han sabido implementarlos y te suplican que les ayudes a hacerlo. Cuando no estás delante te
llaman Mr. Perfecto, ası́ que ¡no les decepciones!.
Descarga el fichero MrPerfecto.dfy. Crea un fichero nuevo en VSCode con el nombre del equipo (sin
espacios) y extensión dfy y ve copiando en él cada ejercicio a medida que los vas haciendo. Has de
entregar solamente ese fichero en la tarea correspondiente del CV pero copiando en él todo los predicados
y especificaciones que ya hiciste en misiones anteriores que necesites.
1.
El invariante y la cota son lo más importante
Para cada uno de los siguientes ejercicios se proporciona un programa que pretende resolver el problema, no debes tocar ese código: copia la especificación que escribiste en la misión Specificator
y añade al bucle el invariante y la función de cota que permite verificar el programa como
correcto. Además, indica y justifica el coste de cada uno de ellos.
1. Algoritmo que resuelve el problema de determinar si todos los elementos de un array de enteros son
distintos de uno dado.
2. Algoritmo que resuelve el problema de determinar si todos los elementos de un array de enteros son
positivos.
3. Algoritmo que resuelve el problema de devolver la posición de la aparición más a la izquierda del
máximo de un vector de enteros.
4. Algoritmo que resuelve el problema de devolver la posición de la aparición más a la derecha del
máximo de un vector de enteros.
5. Algoritmo que resuelve el problema de determinar si en un array de enteros posittivos hay la misma
cantidad de pares que de impares.
2.
Tú mandas
Para cada uno de los siguientes ejercicios copia la especificación que escribiste en la misión Specificator, y diseña un algoritmo correcto y eficiente que resuelva el problema. Has de escribir el
invariante y la función de cota que permita a Dafny demostrar la corrección de tu algoritmo e
indicar y justificar el coste del mismo:
6. Algoritmo que resuelva el problema de devolver la posición en la que se encuentra el primer elemento
igual a 0, y el número de elementos en caso de no haber ninguno
7. Algoritmo que resuelva el problema de determinar si todos los elementos de un array de enteros
contenidos entre dos posiciones dadas c (incluida) y f (excluida) son pares.
8. Algoritmo que resuelva el problema de determinar si un array es Gaspariforme (según la definición
dada en el ejercicio 8 de los apuntes del Tema 2).
Descargar