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]
Escriba un programa que utilice dos archivos de
implementación [uno.cpp
y
dos.cpp
] y un archivo de encabezados
[uno.h
] que tenga un error pueda sólo ser
detectado por el editor de eslabonamiento ("linker").
1.a) [10 pts] Escriba el código de los tres archivos.
1.b) [15 pts] Explique cómo funciona el sistema de compilación separada de C++. Incluya diagramas explicativos y un ejemplo explicativo usando los módulos que ha programado en la quinta tarea. No se olvide de usar diagramas explicativos en su respuesta.
2) [25 pts] El lenguaje C++ tiene muchas construcciones sintácticas que lo diferencias de los lenguajes C y Pascal.
2.a) [10 pts] Explique la diferencia entre un puntero y una referencia C++. Incluya el código que sustente su respueta.
2.b) [10 pts] Diga en qué condiciones es más cómodo para el programador usar referencias en lugar de punteros. Incluya el código que sustente su respueta.
2.c) [5 pts] Explique porqué no hace falta en C pasar parámetros por referencia (aunque es más cómodo usarlas, como habrá usted mostrado en la sección b) de esta misma pregunta).
3) [25 pts]
Considere la operación para racionales
Exp(x,y)
, que calcula el valor de
"x
" elevado a la pontencia "y
", en donde
"y
" es un número entero.
3.a) [5 pts]
Declare la operación Exp(x,y)
.
3.b) [12 pts]
Implemente Exp(x,y)
.
3.c) [3 pts]
¿Porqué debe o no invocar a
rational::simplify()
en la implementación de
Exp(x,y)
?
3.d) [5 pts]
¿Qué desventajas tiene que la función
Exp()
sea un miembro de la clase rational?
4) [25 pts] Haga un programa C++ que lea un archivo y cuenta la cantidad de letras mayúsculas, minúsculas y de otros tipo, e imprima los totales. Recuerde que en Costa Rica, la pareja "CH" es una letra, y que también el alfabeto incluye a la letra "Ñ".
Adolfo Di Mare <adolfo@di-mare.com>.
|