Universidad Simón Bolívar
Departamento de Computación y Tecnología de la Información
CI2615 - Algoritmos y Estructuras I
Septiembre - Diciembre 2002

Tarea 6

(Bloque B, Jueves)

 

1.- Se desea construir un programa que dibuje varios círculos horizontalmente, todos con centro  sobre el eje horizontal del sistema de coordenadas. Los datos de entrada serán la coordenada horizontal del centro del círculo que estará en el extremo izquierdo (xizq), el radio de los círculos (radio), la distancia entre los centros de los círculos consecutivos (distancia), y la cantidad de círculos deseados (cantidad). La especificación normal (que utiliza el predicado hayCírculo definido en la tarea anterior para la especificación de la Máquina de Trazado) es la siguiente:

[ const xizq, radio, distancia, cantidad: entero;

var mtConCírculos: MaquinaTrazados;

{ ...... precondición ..........}

CírculosConsecutivos

{( Vi: 0 <= i < cantidad : hayCirculo(mtConCirculos, xizq + i* distancia, 0, radio))}

]

(a) Indique cuál debe ser la precondición (la más débil posible, es decir, el mínimo requerimiento necesario para poder dibujar los círculos deseados).

(b) Construya una iteración (sin demostrar su correctitud) que resuelva el problema CírculosConsecutivos utilizando el siguiente invariante, el cual requiere una nueva variable entera k:

0 <= k <= cantidad

^

( Vi: 0<= i < k : hayCirculo(mtConCirculos, xizq + i* distancia, 0, radio))

(c) Construya otra iteración (de nuevo sin demostrar su correctitud) que resuelva el problema con el siguiente  invariante, que también una nueva variable entera k:

0 <= k <=cantidad

^

( Vi: k <= i < cantidad :  hayCirculo(mtConCirculos, xizq + i* distancia, 0, radio))

 

2.- Dar las especificaciones del siguiente problema, el programa que lo resuelve y probar la correctitud.

Una persona requiere conocer cuánto dinero tendrá al final de 12 meses con un depósito bancario de 10.000.000 Bs.,  a una tasa mensual de 2 %.