Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-0202
II Semestre 2009
[<=] [home] [<>] [\/] [=>]
CI-0202 Principios de Informática

Examen #2 [solución]

      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.

 

Soluciones

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