PR01 - Entorno de Trabajo e Introducción a Java

Anuncio
FUNDAMENTOS DE PROGRAMACIÓN
BOLETÍN 3.2: ARRAYS, CADENAS Y LISTAS
Curso: 2013/14
Versión: 1.0.5
OBJETIVOS



Aprender a manejar agregados de datos indexados de tres tipos distintos: arrays, cadenas
(Strings) y listas.
Insistir en el uso de estructuras de control selectivas e iterativas, incluyendo la sentencia for
extendido.
Familiarizarse con las particularidades específicas y las operaciones del tipo String.
EJERCICIOS PARA HACER EN EL AULA
Cree un proyecto Java llamado B03.2-aula1 y añada los paquetes y clases que se indican a
continuación para resolver los siguientes ejercicios:
Ejercicio 1: Arrays
Cree en el paquete fp.utiles una clase UtilesArrays con los siguientes métodos:
a) Un método que dado un número n, un límite inferior y un límite superior, devuelva un array con
n números enteros aleatorios con valores comprendidos entre el límite inferior y el límite
superior.
b) Un método que dado un array devuelva el mismo array pero invertido (ver ejemplo más abajo)
c) Realice llamadas a cada uno de los métodos anteriores en la clase TestUtilesArrays del
paquete fp.utiles.test para comprobar su correcto funcionamiento.
Ejemplos:
Crear un array con 6 enteros aleatorios comprendidos entre 5 y 15.
Crear un array inverso al [1, 2, 3, 4, 5].
Resultados:
Array aleatorio: [8, 12, 7, 13, 5, 14]
Array inverso: [5, 4, 3, 2, 1]
Ejercicio 2: Cadenas
Cree en el paquete fp.utiles una clase Cadenas con los siguientes métodos:
a) Un método que reciba una cadena de texto y devuelva el número de vocales que contiene la
cadena. Tenga en cuenta que las vocales pueden aparecer en minúsculas o en mayúsculas. No
tenga en cuenta las posibles vocales con tildes, diéresis u otros signos ortográficos.
b) Un método que dado un número y un carácter indique si el DNI formado por la unión de ambos
es correcto2.
1
2
Puede copiar el proyecto del boletín anterior y trabajar sobre él, ya que reutilizaremos parte del mismo.
El método para calcular la letra del DNI puede verse en http://es.wikipedia.org/wiki/Número_de_identificación_fiscal.
Boletín 3.2: Arrays, cadenas y listas
2
c) Realice llamadas a cada uno de los métodos anteriores en la clase TestCadenas del paquete
fp.utiles.test para comprobar su correcto funcionamiento.
Ejemplo de ejecución:
La cadena Hola Pepe tiene 4 vocales
El DNI 12345678Z es correcto
Ejercicio 3: Listas
Cree en el paquete fp.utiles una clase Listas con los siguientes métodos:
a) Un método que dada una lista con nombres de personas y otra lista con apellidos, devuelva una
lista de cadenas de tamaño n que se genere con combinaciones aleatorias de un nombre y dos
apellidos tomados de las dos listas de entrada.
b) Un método que dada una lista de libros, devuelva un array de enteros con tres elementos que
indiquen cuántos libros de préstamo diario, semanal, o mensual, respectivamente, hay en la lista
de entrada.
c) Realice llamadas a cada uno de los métodos anteriores en la clase TestListas del paquete
fp.utiles.test para comprobar su correcto funcionamiento.
Ejemplo de ejecución del apartado a)
Entrada:
Lista con las cadenas “Pepe", “Luis”, "Ana"
Lista con las cadenas "García", "Romero", "Pérez"
Posible salida:
[García Pérez Pepe, Romero Pérez Pepe, Pérez Romero Ana, García Pérez Ana]
Ejemplo de ejecución del apartado b)
Entrada: lista con los libros
Libro libro1 = new LibroImpl("978-84-96208-96-4", "Juego de Tronos",
"George R.R. Martin", 800, new GregorianCalendar(1998,
Calendar.FEBRUARY, 2), 17.60, 15000000, TipoPrestamo.DIARIO);
Libro libro2 = new LibroImpl("978-84-339-2042-3",
"La conjura de los necios", "John Kennedy Toole", 392,
new GregorianCalendar(1990, Calendar.APRIL, 19), 10.00,
30000000, TipoPrestamo.SEMANAL);
Libro libro3 = new LibroImpl("978-84-450-7753-5", "El Silmarillion",
"J.R.R. Tolkien", 448, new GregorianCalendar(1991,
Calendar.APRIL,8), 10.95, 3700000, TipoPrestamo.MENSUAL);
Libro libro4 = new LibroImpl("978-84-9793-353-7",
"El fin de la eternidad", "Isaac Asimov", 288,
new GregorianCalendar(1995, Calendar.DECEMBER, 1), 8.95,
30000000, TipoPrestamo.SEMANAL);
Libro libro5 = new LibroImpl("978-84-08-05304-0", "Cosmos", "Carl Sagan",
384, new GregorianCalendar(1990,Calendar.FEBRUARY, 8), 36.00,
15000000, TipoPrestamo.DIARIO);
Libro libro6 = new LibroImpl("978-84-272-0309-9",
"Viaje al centro de la Tierra", "Julio Verne", 274,
new GregorianCalendar(2012, Calendar.AUGUST,6), 18.00,
35000000, TipoPrestamo.DIARIO);
Salida:
[3, 2, 1]
Boletín 3.2: Arrays, cadenas y listas
3
EJERCICIOS PARA HACER EN CASA
Cree un proyecto Java llamado B03.2-casa y utilice los paquetes y clases creados en el aula para
resolver los siguientes ejercicios:
Ejercicio 1: Arrays
a) Un método que reciba un número entero tam y devuelva un array de enteros de tamaño tam
donde cada elemento sea igual a su posición natural (1 para la primera posición, 2 para la
segunda, y así sucesivamente)
b) Un método que dados dos arrays del mismo tamaño devuelva otro array que contenga en cada
posición el resultado de multiplicar los elementos situados en la misma posición de ambos arrays.
c) Un método que dado un array de libros devuelva un array con 12 elementos de tipo entero, de
forma que cada uno de ellos indique cuántos libros se han adquirido en el mes correspondiente;
así, en la primera posición se almacenará el número de libros que se han comprado en el mes de
enero, en la segunda los de febrero, y así sucesivamente.
d) Realice llamadas a cada uno de los métodos anteriores en la clase TestUtilesArrays del
paquete fp.utiles.test para comprobar su correcto funcionamiento.
Ejemplo de ejecución del apartado a)
Entrada: tam = 5
Salida:
[1, 2, 3, 4, 5]
Ejemplo de ejecución del apartado b)
Array 1: [1, 2, 3, 4, 5]
Array 2: [5, 4, 3, 2, 1]
Producto: [5, 8, 9, 8, 5]
Ejemplo de ejecución del apartado c)
Entrada: lista con los libros del ejercicio para el aula 3.b)
Salida:
[0, 2, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1]
Ejercicio 2: Cadenas
a) Un método que reciba una cadena de texto y devuelva otra cadena igual a la primera pero con los
caracteres en orden inverso.
b) Un método que reciba una cadena de texto y un carácter y devuelva el número de apariciones del
carácter en la cadena. Utilice los métodos indexOf y lastIndexOf de la clase String para acotar
la búsqueda.
c) Un método que dada una cadena de caracteres devuelva otra cadena formada por la primera letra
de cada palabra de la misma.
d) Un método que genere un número de DNI válido de forma aleatoria.
e) Un método que dada una cadena que representa un ISBN (véase boletín anterior), se quede
únicamente con los caracteres numéricos de la misma. Por ejemplo, dado el ISBN “9780385536516”, debe devolver la cadena “9780385536516”.
Boletín 3.2: Arrays, cadenas y listas
4
f) Realice llamadas a cada uno de los métodos anteriores en la clase TestCadenas del paquete
fp.utiles.test para comprobar su correcto funcionamiento.
Ejemplos:
Obtener la inversa de la cadena “Hola Pepe”
Calcular las apariciones de los caracteres ‘e’, ’H’ y ’c’ en la cadena “Hola Pepe”
Obtener el acrónimo de la cadena “Documento Nacional Identidad“
Obtener un número de DNI aleatorio
Obtener los dígitos del ISBN “978-0385536516”
Resultado de la ejecución:
La cadena “Hola Pepe” tiene como inversa “epeP aloH”
La cadena “Hola Pepe” tiene 2 apariciones del carácter e
La cadena “Hola Pepe” tiene 1 apariciones del carácter H
La cadena “Hola Pepe” tiene 0 apariciones del carácter c
La cadena “Documento Nacional Identidad” tiene como acrónimo “DNI”
DNI aleatorio: 56229098D
El ISBN 978-0385536516 tiene como dígitos 9780385536516
Ejercicio 3: Listas
a) Cree un tipo enumerado TipoEntero para clasificar distintos tipos de números enteros como
positivo, negativo, par, impar y primo. Escriba un método que dada una lista de enteros y un
valor de tipo TipoEntero devuelva una nueva lista con los valores de la lista inicial que sean de
dicho tipo.
b) Dada una lista de usuarios, devuelva una lista de cadenas con los apellidos y nombres de los
usuarios en mayúsculas y separados por comas.
c) Realice llamadas a cada uno de los métodos anteriores en la clase TestListas del paquete
fp.utiles.test para comprobar su correcto funcionamiento.
Ejemplo de ejecución del apartado a)
Entrada: lista con los enteros del 1 al 5.
Salida:
Impares: [1, 3, 5]
Pares: [2, 4]
Primos: [1, 2, 3, 5]
Ejemplo de ejecución del apartado b)
Entrada: lista con los siguientes usuarios:
Usuario usuario1 = new UsuarioImpl("43326697H", "Aida", "Matrena Lúa",
new GregorianCalendar(1992, Calendar.JANUARY, 1));
Usuario usuario2 = new UsuarioImpl("62253096T", "Alberto José",
"Gruciano Ciro", new GregorianCalendar(1991, Calendar.DECEMBER,31));
Salida:
[MATRENA LÚA, AIDA, GRUCIANO CIRO, ALBERTO JOSÉ]
Descargar