Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1402
II Semestre 1998
[<=] [home] [<>] [\/] [=>]
CI-1402 Organización de Lenguajes de Programación

Examen #1

      Duración: dos horas. Lea bien el examen antes de hacerlo. El examen es a libro abierto. Cuenta la documentación. Cuenta la redacción y la ortografía. Puede hacer el examen con lápiz. ¡No haga más de lo que se le pide! ¡Conteste todas las preguntas!

1) [25 pts] Ocultamiento y encapsulamiento
      En su artículo sobre la interfaz OBDC, Beyer presenta un truco para lograr el ocultamiento en el lenguaje C.

1.a) [15 pts] Explique, usando el truco de Beyer, cómo implementar el tipo abstracto de datos TMatriz en C. Defina, sin escribir la implementación, un par de métodos en su discusión. Incluya en su respuesta tanto el contenido del (los) archivo(s) de encabezado (.h), como los de implementación (.c). Además, incluya un pequeño módulo, usamatriz.c, que use su tipo TMatriz.

1.b) [10 pts] Discuta si el truco de Beyer se puede usar en C++ o en Pascal (escoga sólo uno de los dos). Sustente su respuesta con un ejemplo de cómo hacerlo.
[Bey­98] Beyer, Malcom: Encapsulating the ODBC API, C/C++ User's Journal, Vol.16, No.7, pp [19, 20, 24, 26, 28, 30, 32, 34, 35], Julio 1998.

2) [25 pts] Excepciones

    +---+-------+
 +->| n |  sp   |--+ 
 |  +---+-------+  |
 |                 |
 |                 |
 |    +-------+    |
 +----|  @sp  |<---+
      +-------+
 TYPE
   TSelfPoint = OBJECT
      n      :   INTEGER;      { Rep }
      pBlock : ^^TSelfPoint;   { Rep }
       ...
      CONSTRUCTOR Init;
      DESTRUCTOR  Done;
       ...
   END; { TSelfPoint }

 PROCEDURE Recursivo( n: INTEGER );

2.a) [0 pts] Defina el tipo TSelfPoint, que tiene la particularidad de que cada instancia incluye en su Rep un puntero (pBlock) a un bloque de memoria en el que está almacenado un puntero que apunta de vuelta a la instancia, como se muestra en el diagrama. Use su lenguaje predilecto.

2.b) [10 pts] Implemente el procedimiento Recursivo(n). Inclúyale un manejador de excepciones. Puede usar la biblioteca de exepciones descrita en:
[DiM­94] Di Mare, Adolfo: Manejo de excepciones en Turbo Pascal, Reporte Técnico ECCI­94­10 (Revisión 4), Proyecto 326­89­019,, Escuela de Ciencias de la Computación e Informática (ECCI), Universidad de Costa Rica (UCR), 1994.
      http://www.di-mare.com/adolfo/adt/except.htm

2.c) [15 pts] Use el procedimiento Recursivo(n) para mostrar por qué, cuando ocurre una excepción, es necesario invocar los destructores de los objetos. No está de más que en su respuesta incluya un diagrama simple de la pila de ejecución del programa.

3) [25 pts] Uso de bibliotecas para acceso a archivos
      ODBC representa una forma de accesar repositorios de datos desde un programa, pero hay otras formas de hacer eso mismo.

3.a) [15 pts] Exponga una forma diferente a ODBC para accesar la memoria secundaria usada por un programa. No olvide escribir un poco de código para dar soporte a su respuesta.

3.b) [10 pts] Compare su respuesta a la pregunta anterior con la forma ODBC de hacer las cosas. Explique cuándo debe usarse una en lugar de la otra, y defina las ventajas y desventajas de cada una de ellas.

4) [25 pts] Abstracción y modularización

4.a) [15 pts] Defina los siguientes términos:

En cada definición incluya un ejemplo en que NO se usa el concepto que Usted define.

4.b) [10 pts] Escoja uno de los lenguajes Pascal, C o C++ y defina, en ese contexto, qué es un módulo. Describa un problema, o restricción, que comporta el uso de módulos en el lenguaje que Usted ha elegido.

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 1998
Derechos de autor reservados © 1998
[home] <> [/\]