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

Examen #2 [solución]

      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] C++ vs Perl

      Haga un programa C++ que permita leer varias parejas de hileras, formadas por un nombre de usuario y una contraseña de acceso, hasta que encuentre la contraseña correcta que corresponde al nombre de usuario. Funcionalmente, su programa debe ser equivalente al programa Perl de la página 25 del libro "Learning Perl". En su respuesta, usted debe utilizar con elegancia y propiedad la bililioteca STL de C++.

2) [25 pts] Parametrización y polimorfismo

      Considere la implementación de las rutinas first() y second() que aparecen la Figura 3 (pp 348), en:
[MDC­91] Morrison, P. & Dearle, A. & Connor, R. C. H. & Brown, A. L.: An Ad Hoc Approach to the Implementation of Polymorphism, ACM Transactions on Programming Languages and Systems, Vol.13 No.3, pp [342­371], Julio 1991.

2.a) [10 pts] Translitere al lenguaje C++ la implementación que aparece en ese artículo.

2.b) [15 pts] Diga si el lenguaje C++ puede compilar el código que usted ha escrito, de manera que al ejecutar el programa se obtenga un resultado similar al producido por el programa orginal escrito en Napier88. En caso contrario, explique porqué el lenguaje C++ no tiene suficiente poder expresivo para compilar ese algoritmo parametrizable.

3) [25 pts] Arquitectura de tres capas

3.a) [15 pts] Explique qué es y cuáles son las ventajas de implementar sistemas usando una arquitectura de tres capas. Incluya un diagrama explicativo.

3.b) [10 pts] Exponga dos situaciones en las que conviene más usar la arquitectura centralizada Cliente/Servidor. En cada caso, explique si las deficiencias de la arquitectura de tres capas, en comparación a la de Cliente/Servidor, se pueden eliminar utilizando equipos de cómputo más poderosos.

4) [25 pts] Macros y lenguajes

      En el lenguaje Lisp una "macro" tiene propiedades semánticas diferentes a las que tiene en el lenguaje C, o en C++.

4.a) [5 pts] Explique qué es una macro en el lenguaje C. Haga un ejemplo mostrando la definición de una macro, y el resultado de usarla.

4.b) [10 pts] En el contexto del lenguaje C++, explique cuáles construcciones sintácticas han nacido a partir de las macros del lenguaje C. Haga un ejemplo mostrando nuevamente definición y resultado de uso.

4.c) [5 pts] Ahora explique qué es una macro en el contexto del lenguaje Lisp. Diga para qué sirve, y comente sobre su uso.

4.d) [5 pts] ¿Pueden usarse macros C en el lenguaje Lisp? ¿Se puede obtener algún beneficio de ésto?

Soluciones

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