Hola!
Regreso al foro después de meses de inactividad xD. Era para hacer mi pequeño aporte de Algoritmos I, ya que ayer rendí el final (que debía desde el 2009 xD), y como veo que no hay ningún final posteado, acá va el que me tomaron a mí. Por cierto, me tomó Javier Marenco (el que está en la Teórica este cuatrimestre, junto con Verónica Becher), y les recontra recomiendo rendir con él, ya que es muuy buena onda. Nos dio 4hs para hacer el examen, y los ejercicios eran fáciles, salvo el ej 2 por ahí que era el más complicado, y eran parecidos a los de para entrenarse que subieron una vez a la página.
Así que ahí va:
Ejercicio 1 Sean f y g implementaciones demostradas correctas para las siguientes especificaciones, donde P, Q y R son predicados del lenguaje de especificación. ¿Se puede expresar preferencia por alguna de las dos? Justifique su respuesta.
problema f(x : T1) = res : T2 { requiere P; asegura Q && R; }
problema g(x : T1) = res : T2 { requiere P; asegura Q; }
Ejercicio 2 Consideremos el siguiente problema:
"Dada una secuencia de enteros s, una meseta es una subsecuencia de elementos consecutivos iguales. Determinar la longitud de la meseta más grande dentro de s."
Por ejemplo, la secuencia [2,3,3,3,5,5,2] tiene una meseta de 3 elementos, que es la más grande. La secuencia [2,3,3,7,5,5,3,1] tiene dos mesetas de 2 elementos cada una, que son las más grandes.
a) Dar una especificación para el problema. b) Implementar una función en Haskell para resolver este problema y argumentar con palabras por qué es correcta. c) Implementar una función en C para resolver este problema y argumentar con palabras por qué es correcta.
Ejercicio 3 a) Dar un ejemplo en C y su equivalente en Haskell que muestre que la evaluación de funciones en C es estricta y en Haskell no lo es. b) Dar un ejemplo en C que muestre que en este lenguaje se puede violar la transparencia referencial.
Ejercicio 4 Dar una especificación para el problema de calcular el máximo común divisor entre dos números enteros.
Si tienen alguna duda, pregunta, consulta, envíenla y respondo.
Suerte a los que tienen que darla todavía y espero que les sirva! Franco.
|