Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Ejercicio 3 (Bombones) Examen 3ª Evaluación Programación - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Hola a todos. Último vídeo. Este es el programa que ha dado como más dolor de cabeza y no era tan difícil.
00:00:01
Tenía dos cosas. Una, que pedía que utilizases un... ¿un hazmat? No pedía. A ver...
00:00:09
Sí, lo pedía, almacenar un hazmat. De repente he dicho, ¿por qué? Y lo decían todos. Sí, no lo pedía.
00:00:19
Vale, la idea es que yo quería regalar bombones y quería un programa que me los repartiera.
00:00:26
Entonces, el programa debería preguntarme cuántos alumnos juegan y cuántos bombones máximo tendrá cada alumno.
00:00:30
Entonces, si yo digo que quiero N alumnos y M bombones, ¿vale?
00:00:37
Desde ese archivo CSV, tiene que leerlo una sola vez y amanecer en un hashtag en nombre de los alumnos que yo ya he dicho.
00:00:42
O sea, si he dicho 7, 7 alumnos y una cantidad aleatoria de bombones, máximo M por alumno.
00:00:50
Entonces me va a preguntar un nombre, lo voy a teclear y me va a decir si tiene bombones o no.
00:00:58
Y que manejo excepciones, que es no hay bombones para ti.
00:01:03
Y que tenga en cuenta si hay problemas al leer el archivo.
00:01:08
Vale, pues vamos allá.
00:01:11
He cogido, hay varios que están bien.
00:01:13
Y he hecho de manera diferente, pero como ya es tarde,
00:01:19
Voy a coger el que es más sencillo, que en este caso es el de María y que además le funciona.
00:01:22
Os cuento.
00:01:30
El programa hace un try para leer del teclado y pregunta cuántos alumnos juegan.
00:01:34
Entonces guarda el número de alumnos, el entero que yo haya escrito.
00:01:43
Y luego cuántos bombones y también me lo guarda en el entero.
00:01:47
lee la siguiente línea
00:01:51
imagino que por lo del salto
00:01:53
y dice que el file
00:01:54
está en resources participantes
00:01:59
he cambiado porque estaba diferente
00:02:01
pero era eso, estaba en su carpeta
00:02:03
de resources
00:02:05
si os abriera
00:02:06
el archivo original lo tiene aquí
00:02:10
al lado de programa 2.3
00:02:11
está el resources
00:02:14
creo que está aquí
00:02:16
¿Dónde lo he visto? Ah, no, aquí no se ve, en el LED no se ve, pero fuera sí se ve, tiene los ausis.
00:02:17
Bueno, me la ha mandado ella. Está guay que los archivos vengan en vuestro propio programa,
00:02:24
no te hagan que estar buscando donde los tengo yo en el ordenador.
00:02:29
Vale, ha utilizado un file reader, coge un lector con el file reader de archivo y el buffer reader.
00:02:33
Estuve probando con el random, pero al final no le funcionaba.
00:02:42
A Guillermo le funciona el random y lee aleatoriamente, pero tuvo problemas al final,
00:02:47
entonces como no está terminado, no quiero marearos con él, con la solución.
00:02:53
Vale, aquí tiene una raíz gris para guardar la lista de alumnos que va a leer,
00:02:59
porque solo la va a leer una vez.
00:03:03
Así que, vale, tiene un string que es línea donde lee la línea.
00:03:08
entonces aquí lo que hace María es eliminar las partes que no le interesan
00:03:13
así que para cada línea que hay en el buffer que es distinta de null
00:03:19
la lee, si es distinta de null, mientras sea distinta de null la lee
00:03:24
así que la línea que la tiene aquí leída utiliza el split para separarla por comas
00:03:30
y lo guarda en contenido, que es un array de string
00:03:36
Así que tendrá un array de tantos nombres y apellidos como tenga el alumno.
00:03:40
Y aquí ha utilizado este método para quitar las comillas.
00:03:45
Coge el primer nombre, o sea, porque si fuese María Luisa, cogería María.
00:03:50
Así que coge a María y coge un substring de María.
00:03:58
Entonces le quita el primer carácter, porque sabe que hay comillas, ¿vale?
00:04:01
y luego
00:04:05
si os fijáis en Substream, que no he pinchado
00:04:06
ahora no lo recuerdo
00:04:10
lo que le está diciendo es la longitud que quiere de la cadena
00:04:11
le dice donde empieza
00:04:13
y donde termina
00:04:15
aquí me equivoco
00:04:18
entonces
00:04:20
le está preguntando
00:04:23
al nombre que está en contenido 0
00:04:28
cuál es su longitud y le he quitado
00:04:30
una, entonces le está quitando
00:04:32
la última comilla. Entonces si mide la longitud 7, le dice que va a coger 6 caracteres y como
00:04:34
empieza en la segunda posición, pues se salta la primera comilla. Entonces como ya tiene
00:04:43
el nombre, en alumnos lista, que es un array, lo añade. Así que tiene una lista de alumnos
00:04:47
donde solo están los nombres y va contando las líneas que tiene. Y aquí es donde usa
00:04:54
hazmat y un contador. Un contador para ver, ahora os lo enseño, cuántos alumnos,
00:05:00
cuántos bombones, cuántos bombones o alumnos se han metido en la lista.
00:05:06
Así que empieza con cero. Por ahora no tiene ningún alumno metido en la lista y
00:05:12
el número de alumnos es el número que he dicho yo. Entonces, mientras no haya metido en la
00:05:17
lista suficientes alumnos, va a buscar una posición aleatoria y la posición, que
00:05:22
es un entero, lo utiliza multiplicando las líneas que hay en el ArrayList, que le podría
00:05:27
haber preguntado el tamaño, de acuerdo al ArrayList, lo multiplica por un random de
00:05:38
0 a 1 y lo convierte en entero. Entonces sale una posición en concreto. Puede ser la 14,
00:05:42
la 15, no sabe quién está en esa posición. Así que le pregunta a la lista que le dé
00:05:51
esa posición, hace un get de esa posición y guarda el nombre que puede ser Raquel o
00:05:57
Alejandro y va a guardar los bombones que hay para ti. ¿Cuántos bombones? Pues el
00:06:04
máximo y lo multiplica por el math.random y lo convierte entero. Entonces para saber
00:06:12
si hay alguien con ese nombre, está muy bien comentado, lo comprueba y si no está lo añado
00:06:18
y le da el contador de bombones para saber cuántos personas lleva, perdón, el contador
00:06:24
de personas. Y si estaba, pues vuelve al inicio del bucle sin haber sumado al contador. Entonces,
00:06:28
le pregunta al alumnosMap, que es el HashMap, con el método containsKey, si existe una
00:06:34
clave que se llame nombre. Entonces, si no existe, lo que hace es meterlo. Mete el nombre
00:06:41
y los bombones que hay para ese alumno
00:06:48
y suma el contador de alumnos
00:06:50
entonces si lo ha metido
00:06:53
ahora ya ha repartido bombones a un alumno
00:06:55
así que va a seguir dando vueltas
00:06:58
hasta que los tenga todos
00:06:59
aquí es cuando estaba probando con el random
00:07:00
cierra el lector, cierra el buffer
00:07:05
y voy a poner aquí
00:07:11
yo aquí he puesto un punto
00:07:13
un breakpoint
00:07:14
para poder ejecutarlo viendo que alumnos
00:07:16
se han metido en la en la lista entonces dice escribe el nombre del alumno lo lee
00:07:18
por teclado y ahora comprueba si es el nombre de alumno está en el hasma
00:07:24
entonces está lo imprime y dice cuántos le han tocado y si no está lanza la
00:07:31
excepción no hay bombones para ti no hay bombones para ti lo siento te han tocado
00:07:36
bombones. Y aquí tiene las excepciones que está
00:07:41
controlando. Primero, si metes una letra en vez de un número, cuando te pregunta
00:07:48
número de bombones. Luego, si no encuentra el archivo y
00:07:53
luego si lanzó la excepción. Si lanzó la excepción lo que hace es que imprime por
00:07:58
la consola de errores la excepción convertida a string. Y luego cualquier
00:08:03
otra excepción por si acaso. Algo ha salido mal. Así que lo voy a ejecutar con el debug.
00:08:09
Programa 3. Bien, me voy al output. ¿Cuántos alumnos juegan? Y le digo 6. ¿Y cuántos bombones
00:08:14
máximos tiene cada uno? Voy a poner 9. Vale, entonces me vuelvo al programa y me dice,
00:08:38
Escribe el nombre de alumno comprobado, porque se supone que ya ha repartido los bombones.
00:08:48
Os voy a enseñar que los ha repartido.
00:08:53
Fijaros que estas son las variables que hay en este programa.
00:09:03
Y aquí está alumnosMap.
00:09:06
En alumnosMap tiene 5, de 0 a 5, quiere decir exactamente los alumnos que he pedido, 6.
00:09:08
aquí, ah mira
00:09:15
este es un error
00:09:19
que le he colado
00:09:22
vale
00:09:22
en la posición 1
00:09:24
por ejemplo, la clave es Lucía
00:09:28
y le ha tocado un bombón
00:09:30
y a
00:09:32
María ha tocado 7
00:09:33
a Antonio han tocado 7
00:09:35
cada alumno le ha tocado
00:09:37
una cantidad, es decir, yo pensaba
00:09:39
que iba a coger el nombre solo con un espacio
00:09:41
ah, porque usa las comas, es verdad
00:09:43
es hasta donde llegaba la
00:09:46
la coma, lo separó por comas
00:09:48
está en nombre complejo
00:09:50
y a mí me han tocado dos
00:09:51
y esto es un error
00:09:53
porque deberían, o sea, un error
00:09:55
porque no debería haber leído
00:09:58
alguien que no sea un
00:09:59
¿cómo se dice?
00:10:02
un nombre, no tiene letras
00:10:04
he puesto números
00:10:06
vale, nos dezo
00:10:07
vale, entonces me dice, escribe el nombre por el teclado
00:10:09
Y voy a poner
00:10:12
A Lucía
00:10:15
Así que me voy a salir
00:10:17
Y lo voy a poner con mayúsculas
00:10:18
Porque no he fijado
00:10:20
Y con tilde
00:10:21
Ay, es que no me he quedado ahí
00:10:28
Es que me...
00:10:35
Ahora
00:10:38
No me ha salido el mensaje todavía
00:10:38
No sé si va a fallar
00:10:41
Porque he escrito antes de tiempo
00:10:43
Sí, he escrito antes de tiempo
00:10:45
Y el programa se ha quedado tontado
00:10:47
Un segundo que lo vuelvo a arrancar
00:10:49
Vale, entonces ahora
00:10:51
Si el nombre que he puesto es Roberto
00:10:54
Anda
00:10:56
Os juro que me funcionaba
00:10:59
Ah, bueno
00:11:01
Es que ya lo pienso
00:11:09
Vale, entonces estoy siguiendo
00:11:11
Es que cuando estudiaba en Google no me acordaba
00:11:15
Ya he leído el nombre
00:11:16
Si os fijáis
00:11:19
El nombre lo ha leído en nombre alumno
00:11:21
Que está por aquí
00:11:23
Que es Roberto
00:11:26
y si os fijáis en alumnos más
00:11:27
le he colado otro error
00:11:30
que es este en la posición 1
00:11:32
o sea que le he colado yo un dato que no está bien
00:11:33
porque tiene letras
00:11:36
pero aquí está Roberto
00:11:37
estoy en este punto
00:11:38
va a comprobar si alumno más contiene
00:11:40
esa clave
00:11:43
le doy al siguiente paso
00:11:45
entonces sí que está
00:11:46
y como sí que está va a imprimir el nombre del alumno
00:11:48
no ha tocado tantos bombones
00:11:50
y ha terminado
00:11:52
si voy a la salida
00:11:55
aquí tenéis, a Roberto le han tocado
00:11:56
tres bombones
00:11:58
y si lo vuelvo a ejecutar
00:11:59
¿cuántos aún nos juegan?
00:12:03
cuatro
00:12:13
bombones, ocho
00:12:13
nombre de alumno, Pepe
00:12:15
y me dice, no hay bombones para ti, lo siento
00:12:17
te han tocado bombones
00:12:20
y ya está
00:12:21
si yo cambiara el nombre
00:12:23
del archivo o eliminara el archivo
00:12:26
me saltaría
00:12:28
el Final Fund Exception
00:12:30
y si yo quito
00:12:32
el punto de ruptura
00:12:35
y lo vuelvo a ejecutar
00:12:36
una prueba que no la he hecho antes
00:12:38
¿cuántos aún nos juegan?
00:12:40
le digo una T
00:12:45
me dice
00:12:46
no has metido un número entero
00:12:50
y el programa termina correctamente
00:12:52
simplemente me dice que no he metido un número entero
00:12:54
gracias
00:12:56
- Valoración:
- Eres el primero. Inicia sesión para valorar el vídeo.
- 1
- 2
- 3
- 4
- 5
- Idioma/s:
- Autor/es:
- Cristina Moreno Ruiz
- Subido por:
- Cristina M.
- Licencia:
- Reconocimiento - Compartir igual
- Visualizaciones:
- 82
- Fecha:
- 2 de junio de 2022 - 2:03
- Visibilidad:
- Público
- Centro:
- IES LOPE DE VEGA
- Duración:
- 13′ 04″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1148x646 píxeles
- Tamaño:
- 85.54 MBytes
Para publicar comentarios debes entrar con tu nombre de usuario de EducaMadrid.
Comentarios
Este vídeo todavía no tiene comentarios. Sé el primero en comentar.