Universidad de Costa Rica
|
|
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] Parametrización y polimorfismo
Considere la implementación de las rutinas
first()
y second()
que aparecen la
Figura 3 (pp 348), en:
[MDC91] | 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 [342371],
Julio 1991.
|
1.a) [5 pts] Translitere al lenguaje C++ la implementación que aparece en ese artículo.
1.c) [20 pts] Escriba el código C o Pascal (no
C++) que resulta de instanciar las plantillas usadas en la
pregunta anterior. Translitere directamente el algoritmo, como lo
haría un compilador que reciba programas C++ y los
tradujera a C o Pascal. Use las invocaciones a
second()
que están en la Figura 3 en
[MDC91], pero agregue otra más
en que se use la clase string
de
STL.
2) [25 pts] C++ vs Perl
2.a) [8 pts] Describa una situación no trivial en que es mejor usar el lenguaje C++ en lugar de Perl. Para esto, justifique su escojencia de los dos criterios más importantes que deben usarse para evaluar ambos lenguajes, y muestre que C++ es claramente superior respecto a esos dos criterios.
2.b) [8 pts] Describa una situación no trivial en que es mejor usar el lenguaje Perl en lugar de C++. Para esto, justifique su escojencia de los dos criterios más importantes que deben usarse para evaluar ambos lenguajes, y muestre que Perl es claramente superior respecto a esos dos criterios.
2.c) [9 pts] Describa una situación no trivial en que es tan conveniente usar el lenguaje Perl como C++. Para esto, justifique su escojencia de los dos criterios más importantes que deben usarse para evaluar ambos lenguajes, y muestre que ambos lenguajes son equivalentes respecto a esos dos criterios.
3) [25 pts] Programación Perl
Haga un programa que lea un grupo de archivos ASCII para obtener de ellos las direcciones electrónicas de las solicitudes que haga. Los archivos contienen colecciones de mensajes de correo electrónico como las que se muestran en la siguiente figura:
From cyberteq3@mafalda.teletel.com.ar Wed May 20 07:51:15 1998 Return-Path: <cyberteq3@mafalda.teletel.com.ar> Received: from teletel.com.ar (200.10.110.101) by mail02.rapidsite.net (8.8.5/8.8.5) with SMTP id JAA03974 for <ci1402@ecci.ac.cr>; Wed, 20 May 1998 09:50:40 -0400 (EDT) Received: from pc3 by teletel.com.ar with smtp (Smail3.1.29.1 #2) id m0yc3eF-000sC; Wed, 20 May 98 10:50 GMT Message-Id: <m0yc3eF-000gcsC@teletel.com.ar> Comments: Authenticated sender is <cyberteq3@mail.teletel.com.ar> From: Juan Ramos <cyberteq3@smail.teletel.com.ar> To: ci1402@ecci.ac.cr Date: Wed, 20 May 1998 10:57:43 +0000 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Carta al estudiante I-Sem-1995 Priority: normal X-mailer: Pegasus Mail for Win32 (v2.53/R1) X-Loop-Detect: 1 Status: RO X-Status: Quiero información sobre el curso para un estudio personal. |
Cada mensaje empieza con un renglón
From
que está pegado a la
izquierda, pero que no tiene dos puntos (:).
El renglón From:
aparece
siempre antes del renglón Subject:
, y contiene
la dirección de correo electrónico a extraer. En el
renglón Subject:
viene la
indicación de la información a extraer. Para este
ejemplo, al procesar el archivo su programa debe extraer los
siguientes datos:
Juan Ramos <cyberteq3@smail.teletel.com.ar>
http://www.ecci.ac.cr/~ci1402/1995-1
Cada archivo a procesar contiene muchos mensajes. Su programa debe
dejar en la salida estándar todas las parejas de renglones
que extraiga. Sin embargo, cuide de evitar procesar renglones que
no contengan la línea de Subject:
.
Diane Wood Sponheim <dsponhei@luthersem.edu> http://www.ecci.ac.cr/~ci1402/1995-1 Vary Blanco <Vary@hotmail.com> http://www.ecci.ac.cr/~ci1402/1997-2 Concepcion Larios <concep@caribe.net> http://www.ecci.ac.cr/~ci1402/1995-2 Asparagus Jovenus <beavis@hp9000.cpd.uva.es> http://www.ecci.ac.cr/~ci1402/1996-1 Andres Rivera <arivera@quercus.inbio.ac.cr> http://www.ecci.ac.cr/~ci1402/1998-1 Carolina Uribe <mcuribe@reymoreno.net.co> http://www.ecci.ac.cr/~ci1402/1993-3 |
4) [25 pts]
Construcción de aplicaciones
4.a) [10 pts] Además del compilador del lenguaje, explique cuáles son las dos herramientas de programación más importantes que debe manejar con gran habilidad un buen programador de aplicaciones. 4.b) [5 pts] Explique cuáles alternativas existen para implementar programas que usan Internet como plataforma de acceso y distribución de datos. 4.c) [10 pts] Describa con gran detalle tres criterios técnicos que sirvan para definir si una aplicación debe instalarse en una plataforma de tres capas, o usando otras tecnologías más simples de construcción de sistemas. |
Adolfo Di Mare <adolfo@di-mare.com>.
|