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] El método
monoCultivo()
se usa emparejado con
poliCultivo()
para manipular vectores.
public static void monoCultivo( int i, int V[], int R[] ) { if ( i>=V.length ) { return; } R[i] = V[ V.length-i-1 ]; monoCultivo( i+1,V,R ); return; } public static void poliCultivo(int N) { int i = 0, mono[] = new int[N]; int j = 0, poli[] = new int[N]; while (i<N) { j=i+1; mono[i]=j; i=j; } monoCultivo( 0, mono, poli ); for (j=0; j<N ; j++) { System.out.print( poli[j] + " " ); } }
1.a) [5 pts] Especifique ambos métodos.
1.b) [18 pts]
Muestre los registros de activación que resultan al ejecutar
poliCultivo(1234)
. Para abreviar, solo muestre los primeros
3 y los últimos 2.
1.c) [10 pts] Explique cómo se puede lograr que estos métodos fallen (sin modificarlos). Muestre los registros de activación y explique por qué se produce la falla.
2) [33 pts] El método
voySubiendo()
sirve para determinar el tamaño del
pedazo ascendente de un vector, aún si no está ordenado.
{ { int V[]= {00,10,20,30,-1}; assertTrue( 4 == voySubiendo( 0, V ) ); } { int V[]= {00,10,20,30,30,60,-1}; assertTrue( 3 == voySubiendo( 3, V ) ); } { int V[]= {00,-1}; assertTrue( 1 == voySubiendo( 0, V ) ); } { int V[]= {00}; assertTrue( 1 == voySubiendo( 0, V ) ); } { int V[]= null; assertTrue( 0 == voySubiendo( 0, V ) ); } }
2.a) [5 pts]
Escriba la especificación de voySubiendo()
. No olvide
incluir ejemplos de uso assertTrue()
y
assertFalse()
.
2.b) [11 pts]
Implemente
voySubiendo()
. Incluya documentación interna que
explique por qué los índices usados en su algoritmo no se
salen del vector.
2.c) [6 pts]
Escriba la especificación de soyColina()
que sirve para
determinar si los valores de un vector primero ascienden y luego
descienden. No olvide incluir ejemplos de uso assertTrue()
y
assertFalse()
.
2.d) [11 pts]
Suponga que usted cuenta ya con la rutina voyBajando()
:
úsela junto con voySubiendo()
para implementar
soyColina()
.
3) [33 pts]
[2(1)] |
[3(21)] |
[4(37)] |
1 2 3 4 |
21 22 23 24 25 26 27 28 29 |
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
3.a) [7 pts]
El método
estático "Piramidoso()
" de la clase
"Biblio
" recibe dos números e imprime una
pirámide de varios niveles a partir del segundo valor.
Escriba la
especificación completa de
"Piramidoso()
".
3.b) [26 pts]
Implemente "Piramidoso()
".
En el ejemplo se muestra "Piramidoso()
" para los
valores [2(1)]
, [3(21)]
y
[4(37)]
.
Adolfo Di Mare <adolfo@di-mare.com>.
|