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 solo tres de las preguntas. ¡No haga más de lo que se le pide!
1) [33 pts] Una dirección de correo electrónico está compuesta de letras, dígitos y los caracteres
{ '.'
'-' '_' }
rodeando al símbolo de arrobas
'@'
. Suponga que ya usted cuenta con un método
booleano charEmail(ch)
que examina una letra para
determinar si puede formar o no parte de alguna dirección
de correo electrónico, pero que retorna false
si se la aplica a '@'
.
1.a) [0 pts] Corrija estas pruebas que definen cuáles hileras contienen un dirección de correo electrónico válida.
String renglon = "Es el: Pipino Cuevas <pipino@cuevas.com> y punto.com"; String email = saqueEmail(renglon); assertTrue( email == "pipino@cuevas.com" ); assertTrue( "" == saqueEmail("nopes") ); assertTrue( "a@b" == saqueEmail("a@b") ); assertTrue( "-@_" == saqueEmail("-@_") ); assertTrue( ".@." == saqueEmail(".@.") ); assertTrue( "" == saqueEmail("a@") ); assertTrue( "" == saqueEmail("@b") ); assertTrue( "" == saqueEmail(".") ); assertTrue( "" == saqueEmail("-") );
1.b) [6 pts]
Especifique contieneArroba()
que retorna la
posición del primer símbolo de arrobas
'@'
de una hilera.
1.c) [27 pts]
Use su función contieneArroba()
para
implementar saqueEmail(str)
que retorna la
primera dirección de correo electrónico
válida de hilera str
, o la hilera nula si no
contiene ninguna.
2) [33 pts] Implemente
sonLoMismo(
ArrayList<T> A , ArrayList<T> B )
que es un
método estático que retorna true
si
A
y B
tienen los mismos valores. Por
ejemplo, sonLoMismo( {1,2,3} {3,2,1} )
retorna
verdadero. Su
implementación debe ser completa pero no tiene que ser
un solo bloque de código en el que no use otros
métodos. Además, sí debe usar iteradores
aún si la clase ArrayList<T>
ya tiene su
propio
método equivalente a sonLoMismo()
.
3) [33 pts] Una dirección de correo electrónico está compuesta de letras, dígitos y los caracteres
{ '.'
'-' '_' }
rodeando al símbolo de arrobas
'@'
. Escriba un programa completo que lea un archivo
de texto y grabe con
System.out.print()
, en renglones aparte,
únicamente aquellas parejas de direcciones de correo
electrónico que aparecen juntas en el mismo renglón
pero separadas por espacios en blanco. Suponga que cuenta con el
método estático saqueEmail(str)
con el
que es posible obtener únicamente la primera
dirección de correo electrónico que parece en una
hilera. Después de ejecutar su programa se obtendría
un resultado similar al siguiente:
jimmy@trueno.com <--> juana.de.arco@francia.com garrote.garrote.garrote@huracanado.com <--> ayuda@fing.ucr.ac.cr juana.la.loca@ucr.ac.cr <--> juan.el.tonto@itcr.ac.cr
4) [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; } } |
4.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.
4.b) [6 pts]
Muestre los valores que graba bajadora(1,3)
.
4.c) [3 pts] Diga qué hace esta rutina y sugiera una forma más directa de hacer lo mismo.
4.d) [0 pts]
Muestre los valores que graba bajadora(-3,-4)
.
Adolfo Di Mare <adolfo@di-mare.com>.
|