Diferencia entre revisiones de «Final 03/05/17 (Algoritmos II)»

De Cuba-Wiki
Sin resumen de edición
(Usado OCR para traducir el jpg en texto legible. Fue bastante bueno la verdad)
Línea 1: Línea 1:
Tomado por Esteban Feuerstein, corregido por Fernando Schapachnik.
Tomado por Esteban Feuerstein, corregido por Fernando Schapachnik.


[[Archivo:Final-algo2-03-05-2017-parte1.jpeg|500px|thumb|left]]
 
[[Archivo:Final-algo2-03-05-2017-parte1.jpeg|500px]]
 
 
Para aprobar: como mínimo 3 ejercicios BIEN
 
== Ejercicio 1 ==
 
A continuación se muestran unos breves enunciados junto a fragmentos de su especificación como TADs. Indicar si dichos fragmentos son correctos o presentan errores, y si es así cuáles y por qué.
 
a) En un frasco aislado en un laboratorio se cuenta con una cantidad de hielo, que al ser sometido a calor se transforma en agua, a razón de un <math>dm^2</math> por caloría. Como el frasco está aislado, ésa es la única transformación posible.
 
    TAD frasco
    generadores:
    nuevo_frasco: tamaño -> frasco
    observadores:
    volumen_hielo: frasco -> nat
    volumen_agua: frasco -> nat
    operaciones:
    aportar_calorías: frasco x nat -> frasco
    disminuir_hielo: frasco x nat -> frasco
    incrementar_agua: frasco x nat -> frasco
    Fin TAD
 
b) Una bolita se desplaza sobre una recta a medida que recibe impulsos. Los impulsos se miden en kilos, y la relación entre ambos es que por cada kilo la bolita avanza dos metros.
 
    [...]
    observadores:
    posición: bolita -> nat
    operaciones:
    empujar: bolita x nat i x distancia d -> bolita { d = 2i }
    [...]
 
c) Se desea modelar una pila que siempre permite aplicar la operación top(), pero indica cuando no hay ningún elemento válido.
 
    observadores:
    top: pila -> <elem, bool>
 
d) Ídem anterior:
 
    top: pila -> indicador
    hay_elem?: indicador -> bool
    elem: pila x indicador i -> elem { hay_elem?(i) }
 
== Ejercicio 2 ==
Supongamos que extendemos el TAD Diccionario agregándole una operación RestricciónDeRango(x,y), con x<=y, que elimina del diccionario todos los valores que son mayores que x o menores que y. Por ejemplo, si las claves son reales, luego de una operación RestricciónDeRango(x,y) el diccionario contendría solamente las claves en el intervalo cerrado [x,y]. Proponga una estructura de datos para implementar eficientemente tanto las operaciones tradicionales de diccionario como la nueva operación, considerando los siguientes casos:
 
a) Se ruede asumir que x e y están en el diccionario.
 
b) No se puede asumir que x e y están en el diccionario.
 
 
[[Archivo:Final-algo2-03-05-2017-parte2.jpeg|500px|thumb|left]]
[[Archivo:Final-algo2-03-05-2017-parte2.jpeg|500px|thumb|left]]

Revisión del 03:33 14 sep 2017

Tomado por Esteban Feuerstein, corregido por Fernando Schapachnik.


Final-algo2-03-05-2017-parte1.jpeg


Para aprobar: como mínimo 3 ejercicios BIEN

Ejercicio 1

A continuación se muestran unos breves enunciados junto a fragmentos de su especificación como TADs. Indicar si dichos fragmentos son correctos o presentan errores, y si es así cuáles y por qué.

a) En un frasco aislado en un laboratorio se cuenta con una cantidad de hielo, que al ser sometido a calor se transforma en agua, a razón de un por caloría. Como el frasco está aislado, ésa es la única transformación posible.

   TAD frasco
   generadores:
   nuevo_frasco: tamaño -> frasco
   observadores:
   volumen_hielo: frasco -> nat
   volumen_agua: frasco -> nat
   operaciones:
   aportar_calorías: frasco x nat -> frasco
   disminuir_hielo: frasco x nat -> frasco
   incrementar_agua: frasco x nat -> frasco
   Fin TAD

b) Una bolita se desplaza sobre una recta a medida que recibe impulsos. Los impulsos se miden en kilos, y la relación entre ambos es que por cada kilo la bolita avanza dos metros.

   [...]
   observadores:
   posición: bolita -> nat
   operaciones:
   empujar: bolita x nat i x distancia d -> bolita { d = 2i }
   [...]

c) Se desea modelar una pila que siempre permite aplicar la operación top(), pero indica cuando no hay ningún elemento válido.

   observadores:
   top: pila -> <elem, bool>

d) Ídem anterior:

   top: pila -> indicador
   hay_elem?: indicador -> bool
   elem: pila x indicador i -> elem { hay_elem?(i) } 

Ejercicio 2

Supongamos que extendemos el TAD Diccionario agregándole una operación RestricciónDeRango(x,y), con x<=y, que elimina del diccionario todos los valores que son mayores que x o menores que y. Por ejemplo, si las claves son reales, luego de una operación RestricciónDeRango(x,y) el diccionario contendría solamente las claves en el intervalo cerrado [x,y]. Proponga una estructura de datos para implementar eficientemente tanto las operaciones tradicionales de diccionario como la nueva operación, considerando los siguientes casos:

a) Se ruede asumir que x e y están en el diccionario.

b) No se puede asumir que x e y están en el diccionario.


Final-algo2-03-05-2017-parte2.jpeg