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

Examen Final [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 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).

 

Soluciones

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