Universidad de Costa Rica
|
|
|
|
|
Duración: Ciento veinte minutos. 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. Resuelva las tres preguntas. ¡No haga más de lo que se le pide!
1) [33 pts] Considere la rutina
bajadora(a,b) que retorna un
número y cuya implementación se muestra en la
figura.
public static int bajadora( int a, int b ) {
System.out.print( "(" + a + "," + b + ")\n" );
if ( a > 0 ) {
int conA = bajadora( a-1,b );
conA = conA+1;
return conA;
}
else if ( b > 0 ) {
int conB = bajadora( a,b-1 );
conB = conB+1;
return conB;
}
else {
return 0;
}
}
|
1.a) [24 pts]
Muestre los registros de activación como cajitas
Jeliot para los
llamados si la invocación inicial de la rutina es
bajadora(2,1). También muestre el valor
retornado al terminar cada invocación.
1.b) [6 pts]
Muestre los valores que graba bajadora(1,3).
1.c) [3 pts] Diga qué hace esta rutina y sugiera una forma más directa de hacer lo mismo.
1.d) [0 pts]
Muestre los valores que graba bajadora(-3,-4).
2) [33 pts] El método estático "
escalereado()" de la
clase "Biblio" recibe un número e imprime una
escalera descendente de valores hasta el valor que corresponde al
número, de manera que la base tenga relación con el
valor de entrada.
[2] |
[3] |
[4] |
1 2 3 |
1 2 3 4 5 6 |
1 2 3 4 5 6 7 8 9 10 |
2.a) [11 pts]
Escriba la
especificación completa de "escalereado()".
2.b) [22 pts]
Implemente "escalereado()".
3) [33 pts] El método "
matador(i,j)" de la clase
Matrix toma el valor actual de la matriz y
construye una nueva matriz en la que ya no están ni la fila
"i" ni la columna "j" de la matriz
original.
public class Matrix {
private int m_MAT[][]; // referencia a la matriz
public Matrix( int N , int M ) { /* ... */ }
public Matrix matador( int i , int j ) { /* ... */ }
public int fil(); // Cantidad de filas
public int col(); // Cantidad de columnas
}
| |
B[4x5] ___
/ 0 1 | 4 | 5 0 \
[1] | 4__4_|_4_|_4__4 |
| 0 3 | 4 | 8 7 |
\ 0 8 |_4_| 1 2 /
[2]
|
RES = B.matador(1,2) / 0 1 5 0 \ | 0 3 8 7 | \ 0 8 1 2 / |
3.a) [11 pts]
Especifique
"Matrix.matador(i,j)". Note que este método
crea y retorna una nueva matriz en cada invocación.
3.b) [22 pts]
Implemente "matador(i,j)".
3.c) [0 pts] Dibuje el diagrama que muestre cómo se vería esta matriz si el programa fuera ejecutado con Jeliot.
Adolfo Di Mare <adolfo@di-mare.com>.
|
|
|