1 00:00:00,300 --> 00:00:03,660 Ahí está. Vale, pues ya estamos grabando y vamos a iniciar la presentación, ¿vale? 2 00:00:04,839 --> 00:00:10,019 Entonces, me imagino que se lo han mirado a todo el mundo, porque para eso lo he puesto, porque se lo miren y lo intenten. 3 00:00:11,419 --> 00:00:22,100 He revisado hace un ratito y tenía dos entregas. Bueno, no sé, quiero pensar que lo han intentado y que se han quedado casi a punto de hacerlo y por eso no lo han subido el resto. 4 00:00:22,839 --> 00:00:28,239 Hasta 80 usuarios que tenemos, dos entregas son muy poquitas, pero bueno, ahí está. 5 00:00:28,239 --> 00:00:31,579 En mi caso vi la hora, creía que la hora era más tarde 6 00:00:31,579 --> 00:00:33,219 La tengo hecha, pero ya se ha pasado 7 00:00:33,219 --> 00:00:34,640 Ahora hay que mirarla en la tarea 8 00:00:34,640 --> 00:00:36,920 Y es que es muy importante 9 00:00:36,920 --> 00:00:46,219 Si uno... y así es 10 00:00:46,219 --> 00:00:47,439 Entonces 11 00:00:47,439 --> 00:00:54,109 Vale 12 00:00:54,109 --> 00:00:57,490 Entonces 13 00:00:57,490 --> 00:00:59,869 La tarea esta consiste en lo siguiente 14 00:00:59,869 --> 00:01:01,630 La idea es tener dos ficheros 15 00:01:01,630 --> 00:01:03,890 Uno es de nombres de usuarios 16 00:01:03,890 --> 00:01:06,209 Y otro es de tareas que van a hacer los usuarios 17 00:01:06,209 --> 00:01:07,390 Y la idea es 18 00:01:07,390 --> 00:01:09,150 Distribuir de forma aleatoria 19 00:01:09,150 --> 00:01:10,709 las tareas entre los usuarios 20 00:01:10,709 --> 00:01:13,090 una serie de condicionantes 21 00:01:13,090 --> 00:01:15,170 y bueno, que se los pone aquí 22 00:01:15,170 --> 00:01:17,109 anunciado, ¿no? que por ejemplo 23 00:01:17,109 --> 00:01:19,069 hay que tener un poco de precaución cuando se leamos 24 00:01:19,069 --> 00:01:21,209 la primera lista 25 00:01:21,209 --> 00:01:22,890 de usuarios, pues no repetir nombres 26 00:01:22,890 --> 00:01:25,549 cuidadito con las líneas vacías que no nos la dan tal 27 00:01:25,549 --> 00:01:27,290 y alguna cosita más que ir por ahí 28 00:01:27,290 --> 00:01:27,549 ¿vale? 29 00:01:30,409 --> 00:01:31,049 ¿qué más? 30 00:01:31,150 --> 00:01:32,230 ah, bueno, sí, también pido 31 00:01:32,230 --> 00:01:34,629 todo esto está hecho a posta para que 32 00:01:34,629 --> 00:01:36,310 practiquen ustedes ciertas cosas 33 00:01:36,310 --> 00:01:38,930 que sustituyan, por ejemplo, los caracteres 34 00:01:38,930 --> 00:01:45,629 del alfabeto español, la A con acento, las diéresis, todas estas cosas, las que sustituyan. 35 00:01:45,849 --> 00:01:54,409 Si pone Pepe Pérez y pone uno con acento y otro sin acento, pues que se consideren la misma persona. 36 00:01:54,969 --> 00:01:57,010 Esto es importante, pues nos lo pide. 37 00:01:57,469 --> 00:02:02,430 Y luego también pone que trabajemos para números aleatorios, saben que en informática los números son pseudoaleatorios, 38 00:02:02,969 --> 00:02:06,430 y hay una forma de hacerlos un poquitín más aleatorios que es trabajando con semillas. 39 00:02:06,430 --> 00:02:11,969 por ejemplo es investigar para que quería que ustedes investigaran un poco sobre esto de las semillas 40 00:02:11,969 --> 00:02:18,750 las semillas son un numerito que lo que hacemos es que incrementamos la aleatoriedad de las funciones aleatorias 41 00:02:18,750 --> 00:02:22,849 son un poquito más aleatorias, nunca son perfectas en computación 42 00:02:22,849 --> 00:02:26,469 pero con las semillas se hacen un poquitín más interesantes 43 00:02:26,469 --> 00:02:30,830 y quería que lo investigaran y que le dieran tres vueltas 44 00:02:30,830 --> 00:02:32,930 el objetivo del curso también es investigar cosas 45 00:02:32,930 --> 00:02:36,229 por supuesto, en ese puesto 46 00:02:36,229 --> 00:02:38,050 prohibido usar ArrayList, yo no sé que manía 47 00:02:38,050 --> 00:02:40,469 con los ArrayList, porque le gustan tanto a ustedes los ArrayList 48 00:02:40,469 --> 00:02:41,949 no digo ustedes 49 00:02:41,949 --> 00:02:43,069 como 50 00:02:43,069 --> 00:02:46,090 ustedes los 80 de este año, sino en general 51 00:02:46,090 --> 00:02:48,289 yo no sé por qué a los alumnos les gusta 52 00:02:48,289 --> 00:02:50,150 tanto el ArrayList cuando hay otros tipos de colecciones 53 00:02:50,150 --> 00:02:52,169 que hay siempre mucho más interesantes y adecuadas 54 00:02:52,169 --> 00:02:53,409 para hacer las cosas, entonces 55 00:02:53,409 --> 00:02:55,610 les prohíbe también usar ArrayList 56 00:02:55,610 --> 00:02:57,490 para que usen las otras y se las miren 57 00:02:57,490 --> 00:02:59,129 y que usen colecciones adecuadas 58 00:02:59,129 --> 00:03:02,530 el día que hagamos el examen será muy importante 59 00:03:02,530 --> 00:03:04,990 No vale usar cualquier colección para cualquier cosa. 60 00:03:05,750 --> 00:03:09,569 Una cosa importante es usar la colección adecuada a las necesidades que tengamos. 61 00:03:10,389 --> 00:03:10,990 Esto es importante. 62 00:03:11,909 --> 00:03:14,990 Y luego, bueno, el tema de identificadores, comentarios, códigos, 63 00:03:15,069 --> 00:03:17,990 un montón de códigos que expliquen las cosas, que lo hagan bien. 64 00:03:18,349 --> 00:03:21,750 Y como siempre, programamos para que lo entiendan los demás, no para entenderlo yo. 65 00:03:22,509 --> 00:03:24,469 Siempre ese programa para que lo entiendan los demás. 66 00:03:24,729 --> 00:03:28,949 Para que los demás, cuando lean ese código, entiendan muy bien lo que se está haciendo ahí. 67 00:03:29,449 --> 00:03:32,330 No usar unos identificadores que no hay quien se entere. 68 00:03:32,530 --> 00:03:40,689 Pues poner una variable ij74, pues no da mucha información, pero si le pongo nombre de usuario plantilla, pues da muchísima más información. 69 00:03:41,889 --> 00:03:43,810 Muy bien, pues vamos a empezar ya con esto. 70 00:03:44,009 --> 00:03:54,430 Entonces, había que hacer este programita y también otra cosa que les he puesto para que practiquen es la ejecución de la recepción de parámetros por parte del programa. 71 00:03:55,090 --> 00:04:00,509 Tenía dos ejecuciones, una si recibe dos parámetros, que son dos nombres de fichero, y otra muy interesante, si recibe solo un parámetro. 72 00:04:00,509 --> 00:04:04,469 si recibes solo un parámetro supone que es el nombre del fichero de usuarios 73 00:04:04,469 --> 00:04:10,110 y entonces en ese caso lo que hacemos es que a ese fichero de usuarios se le asigna de forma aleatoria 74 00:04:10,110 --> 00:04:13,550 un numerito que va desde 1 hasta el número de usuarios que tenga 75 00:04:13,550 --> 00:04:19,009 de forma que implícitamente nos genera un orden aleatorio de esos usuarios 76 00:04:19,009 --> 00:04:22,769 por si lo quiero ordenar numéricamente, pues primero, segundo, tercero, cuarto, quinto 77 00:04:22,769 --> 00:04:27,529 pues me lo hace pasándole solamente el nombre del fichero de usuarios, esta es la idea 78 00:04:27,529 --> 00:04:32,829 entonces estos ficheros, pues el primero de ellos es un listado de nombres 79 00:04:32,829 --> 00:04:36,509 les voy a poner el fichero para que lo vean, miren, todo esto se lo voy a subir 80 00:04:36,509 --> 00:04:40,990 y ahora les comento una cosita, lo tienen todo, ya lo tienen subido, ahora se lo habilito 81 00:04:40,990 --> 00:04:44,970 para que lo vean y se lo pueden descargar, con lo cual no se preocupen del código aquí de nada 82 00:04:44,970 --> 00:04:48,689 si quieren tomar notas, perfecto, pero recuerden que todo este código lo van a tener 83 00:04:48,689 --> 00:04:52,089 en cuanto termine la conferencia, la charla, la clase, donde quiera 84 00:04:52,089 --> 00:04:57,129 pero primero los ficheros, fíjense, es un fichero de nombres y además está hecho a posta 85 00:04:57,129 --> 00:04:58,610 ya, pues unas cuantas cosas, son nombres 86 00:04:58,610 --> 00:05:00,990 en general, he puesto los nombres de una clase 87 00:05:00,990 --> 00:05:02,709 de usuarios de una clase, alumnos 88 00:05:02,709 --> 00:05:05,089 entonces fíjense que yo hago varias cosas a posta 89 00:05:05,089 --> 00:05:07,029 la primera es que repito algunos de los nombres 90 00:05:07,029 --> 00:05:09,069 no me acuerdo cuál exactamente, me parece que 91 00:05:09,069 --> 00:05:10,610 este de Ávila, por ejemplo, lo repito 92 00:05:10,610 --> 00:05:13,269 y fíjense que a este le he puesto Ávila Fernández 93 00:05:13,269 --> 00:05:15,170 con acento en las mayúsculas, y miren que aquí 94 00:05:15,170 --> 00:05:17,089 pone Ávila Fernández Pablo 95 00:05:17,089 --> 00:05:18,589 la misma persona, pero sin acento 96 00:05:18,589 --> 00:05:21,110 porque lo hago a posta, para verificar 97 00:05:21,110 --> 00:05:23,009 que está bien la conversión de acentos 98 00:05:23,009 --> 00:05:25,089 y demás, y que me los da como el mismo usuario 99 00:05:25,089 --> 00:05:26,129 que eso es lo que me piden 100 00:05:26,129 --> 00:05:34,569 Y luego, otra cosa de las que hago es que aposta, pongo una línea en blanco para que también el programita lo considere 101 00:05:34,569 --> 00:05:37,430 y esta línea en blanco no la incorpore como un usuario. 102 00:05:37,889 --> 00:05:42,209 Entonces ya pongo yo el fichero aposta para verificar que funcionan las cosas. 103 00:05:43,970 --> 00:05:47,870 Y este segundo fichero, este es el de usuarios, y ahí incorpora a los usuarios y demás. 104 00:05:47,990 --> 00:05:52,069 Y el de tareas, pues miren aquí, el de tareas, pues fíjense, lo voy a hacer un poco más grande, 105 00:05:52,069 --> 00:05:54,350 Pues he puesto cuatro tareas chorradas 106 00:05:54,350 --> 00:05:56,750 Pueden ser por ejemplo ejercicios de un examen 107 00:05:56,750 --> 00:05:58,470 Una resolución de ecuaciones 108 00:05:58,470 --> 00:05:59,810 El cálculo de Fibonacci 109 00:05:59,810 --> 00:06:01,930 Al ser un programita 110 00:06:01,930 --> 00:06:05,329 O el cálculo numérico 111 00:06:05,329 --> 00:06:06,370 De unas integrales 112 00:06:06,370 --> 00:06:08,350 O un cálculo aproximado al tipo de pi 113 00:06:08,350 --> 00:06:10,829 Cosas de estas, pues tareas que hay que hacer 114 00:06:10,829 --> 00:06:12,050 Para lo que fuera 115 00:06:12,050 --> 00:06:14,910 Y yo quiero asignar aleatoriamente estas tareas 116 00:06:14,910 --> 00:06:16,310 A todos los usuarios 117 00:06:16,310 --> 00:06:18,009 Fíjense, muy importante 118 00:06:18,009 --> 00:06:20,310 Es diferente el número de usuarios y de tareas 119 00:06:20,310 --> 00:06:23,149 Si tengo menos usuarios no hay problema 120 00:06:23,149 --> 00:06:25,009 Porque tengo tareas para todos, ya está 121 00:06:25,009 --> 00:06:26,569 Pero ¿qué ocurre? Si tengo menos tareas 122 00:06:26,569 --> 00:06:29,189 Tengo que repetir las tareas a los usuarios 123 00:06:29,189 --> 00:06:30,610 Pero de forma aleatoria 124 00:06:30,610 --> 00:06:33,350 Si yo quiero asignar aleatoriamente estas tareas a los usuarios 125 00:06:33,350 --> 00:06:34,269 Y si tengo usuarios 126 00:06:34,269 --> 00:06:36,149 Pues ir asignando las tareas 127 00:06:36,149 --> 00:06:38,389 Cuando se me acaben, vuelvo a aleatorizarlas 128 00:06:38,389 --> 00:06:40,629 Las vuelvo a asignar y así sucesivamente 129 00:06:40,629 --> 00:06:43,269 Y todos los usuarios van a tener una tarea de forma aleatoria 130 00:06:43,269 --> 00:06:46,430 ¿Qué ocurre al ejecutarse? 131 00:06:46,529 --> 00:06:47,949 Pues fíjense, ¿qué va a ocurrir? 132 00:06:47,949 --> 00:06:51,870 Pues que si yo ejecuto con dos parámetros, el nombre de fechero de usuario y el nombre de fechero de tareas, 133 00:06:52,389 --> 00:06:58,990 voy a tener una asignación de los usuarios o a los usuarios de tareas de forma aleatoria. 134 00:06:59,389 --> 00:07:04,910 Pues al primero le toca el cálculo de pi, al segundo el teorema de Pitágoras, al tercero el cálculo tal, al cuarto, al quinto... 135 00:07:04,910 --> 00:07:07,709 Y fíjense que a todos ellos le van tocando tareas de forma aleatoria. 136 00:07:08,310 --> 00:07:10,189 ¿Ven ahí? ¿Lo ven, no? 137 00:07:11,569 --> 00:07:14,689 Vale, pues se lo van viendo como les toca a cada uno de ellos, todo esto. 138 00:07:15,050 --> 00:07:15,709 ¿Lo ven, no? 139 00:07:15,709 --> 00:07:18,850 Vale, yo aparte en la ejecución pues he hecho alguna cosita más 140 00:07:18,850 --> 00:07:20,790 Pues ya que estoy leyendo ficheros, pues aprovecho 141 00:07:20,790 --> 00:07:24,129 Y a medida que voy leyendo hago un listado directo de la lectura 142 00:07:24,129 --> 00:07:25,870 Es decir, que a medida que leo cada usuario 143 00:07:25,870 --> 00:07:28,129 Voy sacando ese usuario 144 00:07:28,129 --> 00:07:29,470 Lo separo por comas 145 00:07:29,470 --> 00:07:31,889 Y los apellidos del nombre los separo por un punto y coma medio 146 00:07:31,889 --> 00:07:32,769 Que ya veremos ahora cómo lo hago 147 00:07:32,769 --> 00:07:35,889 Primer usuario, en el segundo saco un punto y coma 148 00:07:35,889 --> 00:07:37,949 Tengo un usuario, voy leyendo, lo ven ahí, ¿no? 149 00:07:38,949 --> 00:07:40,410 Este es el listado directo de la lectura 150 00:07:40,410 --> 00:07:42,329 Luego, una vez sacado el usuario 151 00:07:42,329 --> 00:07:45,110 Fíjense que lo que tengo aquí es el mismo listado 152 00:07:45,110 --> 00:07:48,009 Pero ahora ya está ordenado por nombre 153 00:07:48,009 --> 00:07:50,370 Altares va antes que Ávila 154 00:07:50,370 --> 00:07:51,410 Que va antes que Bravo 155 00:07:51,410 --> 00:07:52,750 Que va antes que Corregidor 156 00:07:52,750 --> 00:07:53,810 Que va antes que Crejo 157 00:07:53,810 --> 00:07:57,509 Este ya está ordenado por apellido 158 00:07:57,509 --> 00:08:00,269 Que es como yo listo mis usuarios 159 00:08:00,269 --> 00:08:01,709 Aunque los lea como los lea 160 00:08:01,709 --> 00:08:03,750 Yo los listo ordenados por nombre 161 00:08:03,750 --> 00:08:05,870 Y en el fichero de las tareas 162 00:08:05,870 --> 00:08:06,870 Pues ya aprovecho de leerlo 163 00:08:06,870 --> 00:08:07,870 Y lo voy visualizando 164 00:08:07,870 --> 00:08:08,810 Como cada tarea es una línea 165 00:08:08,810 --> 00:08:10,689 Pues visualizando las líneas y todas las tareas 166 00:08:10,689 --> 00:08:12,610 Resolución de tal, cálculo de cual 167 00:08:12,610 --> 00:08:13,769 Para ti, para ti, para ti, para ti 168 00:08:13,769 --> 00:08:16,269 esto no me lo piden, pero yo lo quiero hacer 169 00:08:16,269 --> 00:08:17,350 porque me apetece 170 00:08:17,350 --> 00:08:20,490 y además en este proceso verifico 171 00:08:20,490 --> 00:08:22,569 la correcta lectura de los ficheros 172 00:08:22,569 --> 00:08:23,850 y demás y que todo está funcionando 173 00:08:23,850 --> 00:08:26,529 porque a mí lo que me piden realmente 174 00:08:26,529 --> 00:08:27,170 es esto de aquí 175 00:08:27,170 --> 00:08:29,329 que es la asignación aleatoria 176 00:08:29,329 --> 00:08:32,350 fíjense que aquí no tenemos ningún nombre repetido 177 00:08:32,350 --> 00:08:34,210 el señor este que estaba hábil, fíjense 178 00:08:34,210 --> 00:08:36,389 está solamente una vez, lo ven aquí 179 00:08:36,389 --> 00:08:38,330 era un usuario repetido, pero 180 00:08:38,330 --> 00:08:39,509 está salvado ese problema 181 00:08:39,509 --> 00:08:41,909 y el otro problema que era que había una línea en blanco 182 00:08:41,909 --> 00:08:44,029 pues como verán no aparece ningún usuario en blanco 183 00:08:44,029 --> 00:08:44,830 como tiene que ser 184 00:08:44,830 --> 00:08:47,549 ¿vale? esto es la ejecución con dos parámetros 185 00:08:47,549 --> 00:08:50,250 fichero de usuarios, fichero de tareas 186 00:08:50,250 --> 00:08:52,250 teníamos la otra ejecución 187 00:08:52,250 --> 00:08:53,889 que era con un solo parámetro, solamente 188 00:08:53,889 --> 00:08:55,970 tenemos el fichero de usuarios y lo que hacemos es que asignamos 189 00:08:55,970 --> 00:08:57,990 a cada usuario un numerito de forma aleatoria 190 00:08:57,990 --> 00:08:59,850 entre uno y el número de usuarios que tengo 191 00:08:59,850 --> 00:09:01,750 de forma que, fíjense 192 00:09:01,750 --> 00:09:04,190 pues asignar al target local 17, a vilar 5 193 00:09:04,190 --> 00:09:05,710 a pablo, tal, tal, tal, tal, tal, si lo ven 194 00:09:05,710 --> 00:09:07,129 si yo hubiera ordenado por los números 195 00:09:07,129 --> 00:09:09,529 pues saldría ordenado por números, pero esto 196 00:09:09,529 --> 00:09:11,509 fíjense, pasando solo 197 00:09:11,509 --> 00:09:14,110 un fichero que es el de usuarios 198 00:09:14,110 --> 00:09:16,110 no paso el nombre de fichero de tareas 199 00:09:16,110 --> 00:09:18,250 a cada número, a cada usuario 200 00:09:18,250 --> 00:09:20,210 le asigno un número entre 1 y el número 201 00:09:20,210 --> 00:09:22,230 total de usuarios que será el máximo de estos 202 00:09:22,230 --> 00:09:24,110 que será por 27, por ahí 203 00:09:24,110 --> 00:09:26,230 por lo que veo por aquí, y cada uno tiene un número 204 00:09:26,230 --> 00:09:28,289 distinto asignado de forma aleatoria 205 00:09:28,289 --> 00:09:30,529 bueno, vamos a ver como se consigue esto 206 00:09:30,529 --> 00:09:31,529 de acuerdo 207 00:09:31,529 --> 00:09:36,159 los ficheros, las tareas 208 00:09:36,159 --> 00:09:38,019 que no tenemos, pues ya nos vamos a meter con este fichero 209 00:09:38,019 --> 00:09:39,659 que nos han dicho más que sea único 210 00:09:39,659 --> 00:09:41,679 un único fichero 211 00:09:41,679 --> 00:09:43,419 o sea, todo lo que haga lo tengo que hacer 212 00:09:43,419 --> 00:09:44,240 todo aquí 213 00:09:44,240 --> 00:09:47,799 y eso es lo que hemos hecho, hacerlo todo aquí 214 00:09:47,799 --> 00:09:48,500 vamos a abrir 215 00:09:48,500 --> 00:09:50,480 y hacer un poquito más grande 216 00:09:50,480 --> 00:09:55,259 ¿lo ven ahí bien? 217 00:09:56,000 --> 00:09:56,919 Sara, ¿me estás oyendo? 218 00:09:58,019 --> 00:09:59,179 Sí, sí, perfecto, perfecto 219 00:09:59,179 --> 00:10:01,100 tampoco te quiero cortar, va muy bien 220 00:10:01,100 --> 00:10:03,120 con que digas de vez en cuando sí o algo 221 00:10:03,120 --> 00:10:05,899 pues yo es que tengo una sensación de estar hablando para el cuello de mi camisa 222 00:10:05,899 --> 00:10:07,519 no, no, vas muy bien 223 00:10:07,519 --> 00:10:08,600 es que no sé si me lleno o no 224 00:10:08,600 --> 00:10:11,519 no se corta ni nada 225 00:10:11,519 --> 00:10:12,139 ¿no? ¿todo bien? 226 00:10:13,659 --> 00:10:15,600 bueno, pues vamos a continuar 227 00:10:15,600 --> 00:10:17,240 un poquito, entonces este es el fichero único 228 00:10:17,240 --> 00:10:19,580 este Java que nos han pedido, aquí tenemos el ficherito 229 00:10:19,580 --> 00:10:20,340 entero, lo ven 230 00:10:20,340 --> 00:10:23,740 este se comió un poco, ahora lo hacemos un poco más pequeño 231 00:10:23,740 --> 00:10:25,340 estas líneas que son un poco más grandes 232 00:10:25,340 --> 00:10:27,000 ahora las cortamos un poco 233 00:10:27,000 --> 00:10:31,179 bueno 234 00:10:31,179 --> 00:10:34,419 entonces, bueno, estas son las 235 00:10:34,419 --> 00:10:36,659 importaciones de librería que nos piden a medida que vamos 236 00:10:36,659 --> 00:10:38,980 programando, no tiene mucha importancia 237 00:10:38,980 --> 00:10:40,740 y pues nada 238 00:10:40,740 --> 00:10:42,639 el ejercicio, pues yo le he llamado 239 00:10:42,639 --> 00:10:44,659 y miren lo primero que hacemos 240 00:10:44,659 --> 00:10:46,220 lo primero que hacemos es esto que les digo 241 00:10:46,220 --> 00:10:48,580 yo voy a estar leyendo estos usuarios de un fichero 242 00:10:48,580 --> 00:10:51,059 entonces, en el enunciado este que les he puesto 243 00:10:51,059 --> 00:10:52,940 a ustedes, no se lo pido 244 00:10:52,940 --> 00:10:55,039 explícitamente, pero hombre, tiene sentido 245 00:10:55,039 --> 00:10:56,840 ¿verdad? que si voy a estar leyendo usuarios 246 00:10:56,840 --> 00:10:58,480 pues de alguna forma los meta en algo 247 00:10:58,480 --> 00:11:00,799 que los genere como entidades 248 00:11:00,799 --> 00:11:02,580 y esas entidades van a ser objetos 249 00:11:02,580 --> 00:11:05,000 entonces, este usuario 250 00:11:05,000 --> 00:11:07,220 pues yo lo que hago es un usuario muy sencillo 251 00:11:07,220 --> 00:11:08,879 fíjense, lo único que tiene aquí es el nombre 252 00:11:08,879 --> 00:11:09,360 de usuario 253 00:11:09,360 --> 00:11:12,679 que no le he separado ni siquiera en apellidos 254 00:11:12,679 --> 00:11:13,960 porque es una cosa muy sencilla 255 00:11:13,960 --> 00:11:17,720 Y sí que, muy importante, le hago el Implements Comparable. 256 00:11:17,879 --> 00:11:21,220 ¿Para qué? Para poder ordenar mis usuarios. 257 00:11:22,279 --> 00:11:25,679 Ya que, claro, como implemento el Comparable de usuario, 258 00:11:26,139 --> 00:11:27,720 este genérico Comparable de usuario, 259 00:11:28,200 --> 00:11:32,500 quiere decir que esta clase implementa la comparación de elementos del tipo usuario. 260 00:11:33,679 --> 00:11:36,000 Evidentemente se van a comparar a través del nombre, 261 00:11:36,240 --> 00:11:38,759 que es el atributo que tiene el usuario y que lo va a identificar. 262 00:11:39,500 --> 00:11:41,200 Fíjense cómo ha construido el constructor. 263 00:11:41,200 --> 00:11:44,139 lo hago en línea porque es muy sencillito, no ocupo líneas para abajo 264 00:11:44,139 --> 00:11:48,059 miren, otro constructor vacío, pues una cadena vacía 265 00:11:48,059 --> 00:11:51,279 miren como hago el constructor de copia 266 00:11:51,279 --> 00:11:56,460 para preservar la ocultación de código 267 00:11:56,460 --> 00:11:59,899 fíjense como creo este usuario, fíjense lo que hago 268 00:11:59,899 --> 00:12:04,019 yo quiero crear un usuario desde otro usuario 269 00:12:04,019 --> 00:12:09,179 para no copiar este nombre, el espacio de memoria donde está este nombre 270 00:12:09,179 --> 00:12:11,960 lo que hago es que creo un nuevo string 271 00:12:11,960 --> 00:12:14,700 con el nombre de usuario que me han pasado como parámetro 272 00:12:14,700 --> 00:12:18,100 entonces esto que me pasa es una referencia a un nombre 273 00:12:18,100 --> 00:12:22,139 con ese getNombre que lo que me va a devolver es un string 274 00:12:22,139 --> 00:12:24,860 creo un nuevo espacio de memoria 275 00:12:24,860 --> 00:12:27,100 y ese nuevo espacio de memoria se lo asigno yo a mi 276 00:12:27,100 --> 00:12:30,440 referencia privada de usuario 277 00:12:30,440 --> 00:12:32,940 así tengo mi, de forma privativa 278 00:12:32,940 --> 00:12:35,700 tengo esa zona de memoria para mí 279 00:12:35,700 --> 00:12:39,100 para mi nombre, ¿vale? y nadie más va a poder acceder ahí 280 00:12:39,100 --> 00:12:41,980 Entonces estamos preservando la ocultación 281 00:12:41,980 --> 00:12:43,460 Ahí, el acceso y todo 282 00:12:43,460 --> 00:12:45,240 Está muy bien hecho, ¿de acuerdo? 283 00:12:46,059 --> 00:12:46,240 Sí 284 00:12:46,240 --> 00:12:49,919 Gracias Sara por saber que me oyen 285 00:12:49,919 --> 00:12:50,980 Nada, nada 286 00:12:50,980 --> 00:12:52,039 Muy bien, gracias 287 00:12:52,039 --> 00:12:55,200 Miren por ejemplo como devuelvo el nombre 288 00:12:55,200 --> 00:12:57,460 No devuelvo directamente este 289 00:12:57,460 --> 00:13:01,419 Este puntero 290 00:13:01,419 --> 00:13:02,399 Referencia 291 00:13:02,399 --> 00:13:04,220 No devuelvo el nombre 292 00:13:04,220 --> 00:13:06,779 Devuelvo un new string de nombre 293 00:13:06,779 --> 00:13:09,059 ¿Para qué? Para preservar la ocultación 294 00:13:09,059 --> 00:13:16,299 de este atributo, ¿vale? Jamás voy a devolver esto, ¿de acuerdo? Devuelvo un nuevo espacio 295 00:13:16,299 --> 00:13:22,779 de memoria donde copio ese nombre, ¿eh? Y así preservo la ocultación 100%. Este está 296 00:13:22,779 --> 00:13:27,840 muy bien hecho, aposta. Consume un poquito más de recursos, consume un poquito más 297 00:13:27,840 --> 00:13:33,220 de tiempo, es verdad, pero preserva la ocultación de los datos. Los datos privados tienen que 298 00:13:33,220 --> 00:13:38,720 estar siempre ocultos, súper importante. Vale, cuando establezco el nombre, pues aquí 299 00:13:38,720 --> 00:13:44,240 sí que lo hago un poco a pelo marinero, porque ya que tengo todo lo demás preservado, pues 300 00:13:44,240 --> 00:13:49,960 digo, bueno, pues esta me la salto. En principio ya me lo van a hacer. Pero bueno, podría 301 00:13:49,960 --> 00:13:56,360 haber aquí sido un poquitín más exagerado y cuando quiero establecer el nombre a través 302 00:13:56,360 --> 00:14:00,960 de un parámetro, pues igual le hago aquí un newString de nombre, voy a poner un igual 303 00:14:00,960 --> 00:14:04,919 a nombre, newString de nombre y así genero un nuevo espacio de memoria para esta asignación 304 00:14:04,919 --> 00:14:06,720 y asignárselo de esa manera 305 00:14:06,720 --> 00:14:09,279 bueno, uno de los métodos que tengo en su momento 306 00:14:09,279 --> 00:14:11,100 es el hash code, es el método que me devuelve el código 307 00:14:11,100 --> 00:14:12,500 hash de cualquier información 308 00:14:12,500 --> 00:14:15,100 ¿vale? pues me genera 309 00:14:15,100 --> 00:14:17,100 un número dependiente 310 00:14:17,100 --> 00:14:19,019 del nombre, de los 311 00:14:19,019 --> 00:14:21,360 atributos, ¿vale? que es un número aleatorio 312 00:14:21,360 --> 00:14:23,220 este es en base a números primos y demás 313 00:14:23,220 --> 00:14:25,039 matemáticamente hablando, pero siempre 314 00:14:25,039 --> 00:14:26,080 me devuelve el mismo, ¿vale? 315 00:14:27,340 --> 00:14:29,179 acuérdense del hash, lo hemos seguido en su 316 00:14:29,179 --> 00:14:31,039 momento, equals me va a decir 317 00:14:31,039 --> 00:14:33,039 si dos objetos son 318 00:14:33,039 --> 00:14:43,840 iguales para el caso de este objeto usuario y el comparto es el método que necesariamente tengo que 319 00:14:43,840 --> 00:14:52,159 implementar por qué escribir por qué recuerden que se implementa el comparable de usuarios 320 00:14:52,159 --> 00:14:57,539 donde necesito como comparados como comparó dos usuarios a través de su nombre como el nombre es 321 00:14:57,539 --> 00:14:59,320 un string y string ya tiene compareTo 322 00:14:59,320 --> 00:15:01,639 pues uso el compareTo de string 323 00:15:01,639 --> 00:15:02,899 porque el nombre es un string 324 00:15:02,899 --> 00:15:05,320 entonces comparo mi nombre 325 00:15:05,320 --> 00:15:06,980 con el nombre del parámetro, del nombre 326 00:15:06,980 --> 00:15:08,659 comparo 327 00:15:08,659 --> 00:15:10,639 voy a hacerlo así, a ver, ahí va 328 00:15:10,639 --> 00:15:13,259 comparo, ¿vale? 329 00:15:13,600 --> 00:15:14,480 mi nombre 330 00:15:14,480 --> 00:15:17,379 con el nombre del 331 00:15:17,379 --> 00:15:19,399 parámetro que me pasa 332 00:15:19,399 --> 00:15:21,480 ¿vale? y de esa comparación 333 00:15:21,480 --> 00:15:23,240 este compareTo 334 00:15:23,240 --> 00:15:25,519 el valor lo devuelvo yo como valor 335 00:15:25,519 --> 00:15:26,419 Andrés, perdona 336 00:15:26,419 --> 00:15:29,299 la sesión está bloqueada 337 00:15:29,299 --> 00:15:30,919 y hay gente que está esperando para entrar 338 00:15:30,919 --> 00:15:32,220 me están avisando por whatsapp 339 00:15:32,220 --> 00:15:35,980 que no pueden entrar 340 00:15:35,980 --> 00:15:37,919 en la configuración 341 00:15:37,919 --> 00:15:39,379 de web he puesto que 342 00:15:39,379 --> 00:15:41,200 a partir de los 10 o 15 minutos 343 00:15:41,200 --> 00:15:42,379 no voy a dejar entrar a nadie más 344 00:15:42,379 --> 00:15:45,480 entonces, bueno, le dejaré entrar si puedo 345 00:15:45,480 --> 00:15:47,320 está esperando, pero otro día no dejo 346 00:15:47,320 --> 00:15:49,460 porque es que si no están sonando pitiditos todas las sesiones 347 00:15:49,460 --> 00:15:50,279 no voy a hacerlo más 348 00:15:50,279 --> 00:15:52,940 pues otro día, si es que hacemos mal, no voy a dejar entrar 349 00:15:52,940 --> 00:15:55,059 a ver si puedo 350 00:15:55,059 --> 00:15:55,960 porque no me deja 351 00:15:55,960 --> 00:15:57,779 Pues no sé cómo 352 00:15:57,779 --> 00:15:59,940 Aquí me dice que Alberto no sé quién está 353 00:15:59,940 --> 00:16:01,600 Pero no sé cómo habilitarle 354 00:16:01,600 --> 00:16:04,399 No sé cómo 355 00:16:04,399 --> 00:16:05,740 Si me dicen cómo 356 00:16:05,740 --> 00:16:07,360 Yo encantado 357 00:16:07,360 --> 00:16:09,000 Participantes, a ver 358 00:16:09,000 --> 00:16:10,639 Dos participantes esperando 359 00:16:10,639 --> 00:16:14,340 Admitir, vale, creo que los ha admitido 360 00:16:14,340 --> 00:16:16,220 Me parece que sí 361 00:16:16,220 --> 00:16:17,539 Sí, Alberto Jiménez, ¿no? 362 00:16:18,279 --> 00:16:20,039 Señor Jiménez, ¿estaba usted esperando? 363 00:16:21,460 --> 00:16:22,379 No, sí, ya estoy 364 00:16:22,379 --> 00:16:23,799 Sí, llevaba un rato 365 00:16:23,799 --> 00:16:25,039 Que no conseguía entrar 366 00:16:25,039 --> 00:16:26,759 No, es que lo he bloqueado 367 00:16:26,759 --> 00:16:28,139 Si lo he bloqueado yo hace 10 minutos 368 00:16:28,139 --> 00:16:29,840 No quiero estar cada 369 00:16:29,840 --> 00:16:32,500 N estando pitidito 370 00:16:32,500 --> 00:16:33,980 Entonces cada vez que entra un usuario se van a pitir 371 00:16:33,980 --> 00:16:35,059 Ah, vale 372 00:16:35,059 --> 00:16:39,360 Me parece que ha dejado 10 o 15 minutos de margen 373 00:16:39,360 --> 00:16:41,220 Vale, vale 374 00:16:41,220 --> 00:16:43,360 Sí, sí, sí, pero es que creía que era las 8 y media 375 00:16:43,360 --> 00:16:45,200 He visto el mensaje y ya me tiré 376 00:16:45,200 --> 00:16:56,340 El próximo día 377 00:16:56,340 --> 00:17:00,259 Pongo un tiempo 378 00:17:00,259 --> 00:17:01,899 Prudente 379 00:17:01,899 --> 00:17:02,919 Y ya está 380 00:17:02,919 --> 00:17:05,759 vale, lo que, por donde andaba 381 00:17:05,759 --> 00:17:07,480 entonces, ¿has quedado claro? 382 00:17:07,680 --> 00:17:09,559 uso el compare to the string 383 00:17:09,559 --> 00:17:11,859 para devolver un valor del compare to the usuarios 384 00:17:11,859 --> 00:17:13,660 realmente yo comparo usuarios a través 385 00:17:13,660 --> 00:17:15,019 del string nombre, entonces 386 00:17:15,019 --> 00:17:16,759 el compare to the string me sirve 387 00:17:16,759 --> 00:17:19,079 y el toString, pues nada 388 00:17:19,079 --> 00:17:21,660 devuelvo el nombre con un formato 389 00:17:21,660 --> 00:17:23,200 de 20 caracteres 390 00:17:23,200 --> 00:17:25,420 y ya está 391 00:17:25,420 --> 00:17:26,519 vale, joder 392 00:17:26,519 --> 00:17:29,500 ¿oyen ustedes el pitidito? 393 00:17:32,569 --> 00:17:33,009 hola 394 00:17:33,009 --> 00:17:34,170 ¿hay alguien por ahí? 395 00:17:34,170 --> 00:17:36,150 Nosotros no oímos pitidito 396 00:17:36,150 --> 00:17:37,589 Yo creo que lo oyes solo tú 397 00:17:37,589 --> 00:17:39,750 Madre mía, pues qué pesadilla esto 398 00:17:39,750 --> 00:17:41,730 Cada vez que hay no sé qué 399 00:17:41,730 --> 00:17:43,210 Un pitidito por ahí 400 00:17:43,210 --> 00:17:46,450 Vale, bien 401 00:17:46,450 --> 00:17:47,670 Continuamos 402 00:17:47,670 --> 00:17:50,289 Entonces ya, visto esto 403 00:17:50,289 --> 00:17:51,950 La declaración de la clase está usuario 404 00:17:51,950 --> 00:17:54,309 Una clase extremadamente simple pero 405 00:17:54,309 --> 00:17:56,569 A nivel conceptual nos sirve muy mucho 406 00:17:56,569 --> 00:17:58,690 Para las clases que ustedes van a tener que desarrollar 407 00:17:58,690 --> 00:18:00,769 Y luego ya nos metemos en el mail 408 00:18:00,769 --> 00:18:02,369 ¿Y qué hace el mail? Bueno, pues ya nos metemos un poco 409 00:18:02,369 --> 00:18:05,529 con la chicha del código este de nuestro programa, ¿no? 410 00:18:05,769 --> 00:18:10,210 Entonces, lo primero, pues fichero, nombre fichero usuarios y nombre fichero tareas. 411 00:18:10,670 --> 00:18:14,049 Variables que vamos a utilizar para los nombres de los ficheros que vamos a utilizar. 412 00:18:14,630 --> 00:18:17,690 Y aquí les voy a hacer una salvedad muy importante. 413 00:18:19,650 --> 00:18:24,690 El código que yo les he pasado pone, en vez de nombre fichero usuarios, pone nombre fichero alumnos. 414 00:18:25,450 --> 00:18:30,950 En muchos sitios que aquí vamos a ver que pone usuarios, en el código que yo les proporciono en el aula virtual pone alumnos, 415 00:18:30,950 --> 00:18:32,069 pero que sepan que es lo mismo 416 00:18:32,069 --> 00:18:35,130 una cosa de alumnos y esto es para usuarios en general 417 00:18:35,130 --> 00:18:37,349 pero da igual, alumnos y usuarios 418 00:18:37,349 --> 00:18:39,210 es lo mismo, a fin de cuentas 419 00:18:39,210 --> 00:18:40,950 es lo mismo, que lo sepan 420 00:18:40,950 --> 00:18:42,210 porque aquí van a haber usuarios 421 00:18:42,210 --> 00:18:44,910 y cuando abran los ficheros en la aula virtual 422 00:18:44,910 --> 00:18:45,730 van a haber alumnos 423 00:18:45,730 --> 00:18:48,109 pero funciona exactamente igual 424 00:18:48,109 --> 00:18:49,809 que lo sepan 425 00:18:49,809 --> 00:18:53,309 entonces inicializamos estas dos variables donde vamos a almacenar estos nombres 426 00:18:53,309 --> 00:18:54,730 y una variable línea 427 00:18:54,730 --> 00:18:55,509 para ir leyendo 428 00:18:55,509 --> 00:18:58,690 es una variable booleana 429 00:18:58,690 --> 00:19:00,309 que dice si existen tareas 430 00:19:00,309 --> 00:19:02,009 es para saber, todo esto 431 00:19:02,009 --> 00:19:04,269 fíjense que el programa yo se lo he hecho muy comentado 432 00:19:04,269 --> 00:19:06,430 para que se lo puedan estudiar 433 00:19:06,430 --> 00:19:07,950 con ganas, tranquilamente 434 00:19:07,950 --> 00:19:10,250 pues nada, simplemente sabemos con esta 435 00:19:10,250 --> 00:19:12,170 variable si existe o no un fichero de tareas 436 00:19:12,170 --> 00:19:12,589 ¿vale? 437 00:19:13,789 --> 00:19:14,069 entonces 438 00:19:14,069 --> 00:19:18,150 si la longitud de 439 00:19:18,150 --> 00:19:19,930 args es mayor que 1 440 00:19:19,930 --> 00:19:21,009 ¿vale? 441 00:19:22,630 --> 00:19:24,210 es decir, si vamos a tener 442 00:19:24,210 --> 00:19:26,210 dos o más parámetros 443 00:19:26,210 --> 00:19:27,190 que nos da igual que haya más 444 00:19:27,190 --> 00:19:30,029 nosotros vamos a usar dos 445 00:19:30,029 --> 00:19:32,829 Y si hay más, pues se ignoran absolutamente 446 00:19:32,829 --> 00:19:34,490 Pero los dos primeros parámetros 447 00:19:34,490 --> 00:19:36,369 Van a ser los que usaremos como 448 00:19:36,369 --> 00:19:37,829 Nombre de ficheros 449 00:19:37,829 --> 00:19:40,650 Entonces, si hay dos parámetros, el nombre de fichero de usuario 450 00:19:40,650 --> 00:19:41,650 Será el primero de ellos 451 00:19:41,650 --> 00:19:44,710 Ars de 0 y el nombre de fichero 452 00:19:44,710 --> 00:19:46,869 De tareas será Ars de 1 453 00:19:46,869 --> 00:19:47,849 ¿Vale? 454 00:19:48,529 --> 00:19:50,470 El nombre de este 455 00:19:50,470 --> 00:19:52,349 Hombre, pero bueno, no pasa nada 456 00:19:52,349 --> 00:19:54,809 Y entonces, si tenías esos dos ficheros 457 00:19:54,809 --> 00:19:56,609 Existe un fichero de tareas y es true 458 00:19:56,609 --> 00:19:57,269 ¿De acuerdo? 459 00:19:57,269 --> 00:20:00,069 sin embargo, si la longitud en vez de ser mayor que 1 460 00:20:00,069 --> 00:20:01,730 es exactamente 1, quiere decir que me han pasado 461 00:20:01,730 --> 00:20:02,490 solo un parámetro 462 00:20:02,490 --> 00:20:04,829 y si me han pasado solamente un parámetro 463 00:20:04,829 --> 00:20:11,410 solo tengo usuarios 464 00:20:11,410 --> 00:20:13,849 entonces, fichero de usuarios del parámetro que me han pasado 465 00:20:13,849 --> 00:20:15,390 fichero de tareas no tengo 466 00:20:15,390 --> 00:20:17,369 y existen tareas 467 00:20:17,369 --> 00:20:19,809 no existen tareas, con lo que le hago false 468 00:20:19,809 --> 00:20:21,589 y hace que no existen tareas 469 00:20:21,589 --> 00:20:23,750 y si he pasado 470 00:20:23,750 --> 00:20:25,490 ni siquiera un parámetro, pues mira 471 00:20:25,490 --> 00:20:27,970 le damos un mensaje al usuario y le decimos 472 00:20:27,970 --> 00:20:29,990 oye macho, que este para ejecutarlo 473 00:20:29,990 --> 00:20:31,890 necesitas nombre de usuario de ficheros 474 00:20:31,890 --> 00:20:33,269 y opcionalmente 475 00:20:33,269 --> 00:20:35,390 el nombre de usuario de tareas 476 00:20:35,390 --> 00:20:38,230 le pongo extension txt para que sepan que el formato 477 00:20:38,230 --> 00:20:40,450 es de texto plano, no tiene por qué ser extension txt 478 00:20:40,450 --> 00:20:42,069 vale 479 00:20:42,069 --> 00:20:44,289 ya hemos solucionado el tema de leer los ficheros 480 00:20:44,289 --> 00:20:45,950 ya sabemos si existen o no, se nos han pasado 481 00:20:45,950 --> 00:20:48,150 los parámetros o no, a continuación 482 00:20:48,150 --> 00:20:50,029 importantísimo 483 00:20:50,029 --> 00:20:51,930 declaro las colecciones que voy a utilizar 484 00:20:51,930 --> 00:20:53,009 para almacenar las cosas 485 00:20:53,009 --> 00:20:56,089 La colección de usuarios que voy a utilizar 486 00:20:56,089 --> 00:20:58,190 Un triset de usuarios 487 00:20:58,190 --> 00:21:00,630 De forma que ya tenemos usuarios ordenaditos 488 00:21:00,630 --> 00:21:01,950 ¿Vale? 489 00:21:02,950 --> 00:21:04,130 Y además hago un triset 490 00:21:04,130 --> 00:21:06,130 ¿Y por qué hago un triset y no hago un trilist? 491 00:21:06,769 --> 00:21:08,470 A ver, Sara, ¿qué opina? 492 00:21:10,430 --> 00:21:12,089 Yo estoy aquí para decir el sí 493 00:21:12,089 --> 00:21:14,269 Ya, ya, pregunto 494 00:21:14,269 --> 00:21:15,789 No, no, no 495 00:21:15,789 --> 00:21:17,089 Yo paso palabra 496 00:21:17,089 --> 00:21:18,289 Que responda otro 497 00:21:18,289 --> 00:21:21,069 A ver, otro 498 00:21:21,069 --> 00:21:23,049 A ver quién me contesta, un voluntario 499 00:21:23,049 --> 00:21:26,950 ¿Por qué uso un triset y no un linked list, por ejemplo? 500 00:21:30,059 --> 00:21:30,980 O un sorted map 501 00:21:30,980 --> 00:21:33,380 Esa es pregunta de examen 502 00:21:33,380 --> 00:21:36,569 ¿Puedo recorrerlo? 503 00:21:37,210 --> 00:21:37,410 ¿Eh? 504 00:21:40,759 --> 00:21:41,480 Erlo, ¿eh? 505 00:21:41,480 --> 00:21:42,460 Entendido, Erlo 506 00:21:42,460 --> 00:21:43,619 Oiga 507 00:21:43,619 --> 00:21:46,819 Sí, decía que sí es para poder recorrerlo 508 00:21:46,819 --> 00:21:49,980 Hombre, cualquier colección se puede recorrer 509 00:21:49,980 --> 00:21:50,460 Cualquiera 510 00:21:50,460 --> 00:21:52,240 Pero las mapas 511 00:21:52,240 --> 00:21:53,819 Para poderlo ordenar 512 00:21:53,819 --> 00:21:54,859 ¿Eh? 513 00:21:55,779 --> 00:21:56,599 Para poderlo ordenar 514 00:21:56,599 --> 00:21:59,460 Una de las razones es para poderlo ordenar muy bien 515 00:21:59,460 --> 00:22:01,519 Y hay otra, muy importante 516 00:22:01,519 --> 00:22:07,950 Esto es pregunta de examen, ¿eh? 517 00:22:07,990 --> 00:22:09,690 Y estamos ya un poquito del examen 518 00:22:09,690 --> 00:22:12,529 Hombre, las colecciones se las han estudiado a fondo, ¿no? 519 00:22:12,750 --> 00:22:14,390 Ya, del capítulo anterior, ¿no? 520 00:22:18,470 --> 00:22:20,289 A ver, ¿qué características tiene un set? 521 00:22:20,609 --> 00:22:21,450 Súper importante 522 00:22:21,450 --> 00:22:23,650 Hay una característica muy importante 523 00:22:23,650 --> 00:22:25,309 De las colecciones de tipo set 524 00:22:25,309 --> 00:22:29,829 ¿Eh? 525 00:22:30,529 --> 00:22:31,450 Tienen duplicados 526 00:22:31,450 --> 00:22:34,289 Exacto, pero justo exactamente al contrario 527 00:22:34,289 --> 00:22:36,670 No admiten duplicados 528 00:22:36,670 --> 00:22:40,680 y es una de las cosas que me pedían en el enunciado 529 00:22:40,680 --> 00:22:42,480 que no queríamos duplicados 530 00:22:42,480 --> 00:22:45,059 pppere solo lo queremos una vez en mi conjunto 531 00:22:45,059 --> 00:22:46,579 no puede estar dos veces pppere 532 00:22:46,579 --> 00:22:49,039 por mucho que lo intente, no tiene doble existencia 533 00:22:49,039 --> 00:22:49,819 solo existe una vez 534 00:22:49,819 --> 00:22:53,059 entonces utilizo un set precisamente para evitar duplicados 535 00:22:53,059 --> 00:22:56,339 y el hecho de que sea un triset o no 536 00:22:56,339 --> 00:22:59,019 bueno, pues es interesante porque lo podríamos ordenar 537 00:22:59,019 --> 00:23:00,859 de otra manera, pero bueno, si encima además 538 00:23:00,859 --> 00:23:02,779 lo tengo ya ordenado, pues es que eso que gana 539 00:23:02,779 --> 00:23:05,299 pero lo más importante es el que sea un set 540 00:23:05,299 --> 00:23:07,119 es porque no admite duplicados 541 00:23:07,119 --> 00:23:10,000 ¿vale? y repito 542 00:23:10,000 --> 00:23:12,099 como segunda opción elijo un tree 543 00:23:12,099 --> 00:23:13,619 porque además ya los voy a tener ordenados 544 00:23:13,619 --> 00:23:16,319 claro, y además voy a tener esos usuarios 545 00:23:16,319 --> 00:23:18,240 ordenados por el nombre 546 00:23:18,240 --> 00:23:20,279 jolín, pues que interesante, pues ya me lo han 547 00:23:20,279 --> 00:23:22,019 vamos, blanco y en botella, pues ya 548 00:23:22,019 --> 00:23:23,099 mejor imposible 549 00:23:23,099 --> 00:23:26,160 yo directamente de la colección me ordeno las cosas 550 00:23:26,160 --> 00:23:27,160 no me toque complicar la vida 551 00:23:27,160 --> 00:23:28,759 y además le llamo 552 00:23:28,759 --> 00:23:32,099 le doy un identificador a esto que me da información 553 00:23:32,099 --> 00:23:34,259 acerca de lo que hace, es la colección 554 00:23:34,259 --> 00:23:34,799 de usuarios 555 00:23:34,799 --> 00:23:36,759 y es del tipo 556 00:23:36,759 --> 00:23:38,079 triset de usuario 557 00:23:38,079 --> 00:23:40,160 es el tipo que tiene 558 00:23:40,160 --> 00:23:42,740 muy bien 559 00:23:42,740 --> 00:23:44,380 y lo que hago es que la inicializo 560 00:23:44,380 --> 00:23:46,539 la inicializo vacía, un new triset 561 00:23:46,539 --> 00:23:48,779 no le paso 562 00:23:48,779 --> 00:23:50,319 nada porque ya el orden 563 00:23:50,319 --> 00:23:51,599 aquí le podría pasar el orden pero 564 00:23:51,599 --> 00:23:54,200 los usuarios ya están ordenados por defecto 565 00:23:54,200 --> 00:23:55,680 hay una ordenación por defecto 566 00:23:55,680 --> 00:23:58,440 recuerda, implementa 567 00:23:58,440 --> 00:24:00,859 comparable, ya tenemos una ordenación por defecto 568 00:24:00,859 --> 00:24:02,759 que la hemos especificado 569 00:24:02,759 --> 00:24:03,799 al hacer el compare to 570 00:24:03,799 --> 00:24:13,759 Y entonces 571 00:24:13,759 --> 00:24:15,500 Tenemos aquí nuestra colección de usuarios 572 00:24:15,500 --> 00:24:17,359 Y luego tengo las tareas 573 00:24:17,359 --> 00:24:19,819 Y fíjense 574 00:24:19,819 --> 00:24:21,359 Vuelvo a usar un set, claro 575 00:24:21,359 --> 00:24:23,839 No puedo tener dos tareas iguales 576 00:24:23,839 --> 00:24:25,420 O no debería tener dos tareas iguales, ¿verdad? 577 00:24:25,480 --> 00:24:27,559 Si hago el cálculo de pi, pues hago el cálculo de pi 578 00:24:27,559 --> 00:24:30,079 Podría hacer el cálculo de pi por 579 00:24:30,079 --> 00:24:33,880 Bueno, hay muchas formas de calcular pi 580 00:24:33,880 --> 00:24:36,180 pero cálculo de pi 1 y cálculo de pi 2 581 00:24:36,180 --> 00:24:37,539 ya son dos tareas diferentes 582 00:24:37,539 --> 00:24:39,299 pero si tengo cálculo de pi 1 583 00:24:39,299 --> 00:24:41,420 solo va a ser una vez 584 00:24:41,420 --> 00:24:43,440 y en este caso hago un hash set 585 00:24:43,440 --> 00:24:45,400 porque que estén ordenadas o no 586 00:24:45,400 --> 00:24:47,359 la verdad es que me da un poco lo mismo 587 00:24:47,359 --> 00:24:49,579 entonces hacemos las tareas 588 00:24:49,579 --> 00:24:51,539 metidas en un hash set 589 00:24:51,539 --> 00:24:54,339 necesitamos un orden dentro de las tareas 590 00:24:54,339 --> 00:24:55,480 la verdad es que me da igual 591 00:24:55,480 --> 00:24:57,980 de hecho no hemos declarado un orden en las tareas 592 00:24:57,980 --> 00:24:59,299 porque no me interesa 593 00:24:59,299 --> 00:25:01,099 de hecho las tareas si se fijan 594 00:25:01,099 --> 00:25:03,480 las tareas realmente no las defino 595 00:25:03,480 --> 00:25:05,140 ni siquiera como una clase 596 00:25:05,140 --> 00:25:07,259 como tarea me sirve simplemente 597 00:25:07,259 --> 00:25:09,000 el texto que define la clase me sirve 598 00:25:09,000 --> 00:25:10,380 para la tarea 599 00:25:10,380 --> 00:25:13,099 entonces utilizo el propio string y me ahorro 600 00:25:13,099 --> 00:25:14,319 un montón de implementaciones 601 00:25:14,319 --> 00:25:16,519 que no es que estarían mal pero no 602 00:25:16,519 --> 00:25:18,640 voy a decir un poco inútiles pero 603 00:25:18,640 --> 00:25:20,220 no son inútiles pero no 604 00:25:20,220 --> 00:25:22,000 digamos que son un poco innecesarios 605 00:25:22,000 --> 00:25:24,160 vale 606 00:25:24,160 --> 00:25:26,299 a partir de ahí fíjense lo que tengo 607 00:25:26,299 --> 00:25:28,839 súper importante un try catch 608 00:25:28,839 --> 00:25:30,960 catch 609 00:25:30,960 --> 00:25:32,220 y empiezo con un try 610 00:25:32,220 --> 00:25:34,140 ¿y por qué hago esto? 611 00:25:34,680 --> 00:25:35,859 Sara, ¿está por ahí? 612 00:25:36,680 --> 00:25:37,579 aquí estoy, aquí estoy 613 00:25:37,579 --> 00:25:38,500 ¿por qué hago un try? 614 00:25:38,500 --> 00:25:39,019 porque puede dar un error 615 00:25:39,019 --> 00:25:39,819 ¿eh? 616 00:25:40,259 --> 00:25:41,359 porque puede dar un error 617 00:25:41,359 --> 00:25:42,599 ¿y por qué puede dar un error? 618 00:25:42,599 --> 00:25:43,359 las excepciones 619 00:25:43,359 --> 00:25:44,819 ¿por qué puede dar un error? 620 00:25:48,950 --> 00:25:49,029 pues... 621 00:25:49,029 --> 00:25:50,049 ¿por qué lo metas? 622 00:25:50,210 --> 00:25:50,369 ¿eh? 623 00:25:50,809 --> 00:25:52,490 al estar desordenado 624 00:25:52,490 --> 00:25:55,950 porque no existe el fichero 625 00:25:55,950 --> 00:25:57,890 bueno, pero eso ¿cómo se llama? 626 00:25:58,369 --> 00:25:58,769 genérico 627 00:25:58,769 --> 00:25:59,910 ¿por qué? 628 00:26:00,730 --> 00:26:01,490 por una excepción 629 00:26:01,490 --> 00:26:06,140 no, la excepción es lo que se genera 630 00:26:06,140 --> 00:26:28,500 Yo hago todo esto en un bucle try-catch que es un tratamiento de excepciones evidentemente porque tengo operaciones de entrada-salida y las operaciones que dan este tipo de errores capturados en excepciones son casi siempre, hay algunas también aritméticas, pero son casi siempre operaciones de entrada-salida y la lectura, escritura de ficheros son operaciones de entrada-salida que dan errores. 631 00:26:28,500 --> 00:26:30,500 Estos son preguntas de examen, ¿eh? Todas. 632 00:26:31,500 --> 00:26:35,960 Estas y otras 843.321 más que se me ocurren. 633 00:26:36,839 --> 00:26:38,180 Pero todos estos son preguntas de examen, ¿eh? 634 00:26:39,099 --> 00:26:40,900 Entonces, claro, como hay operaciones de entrada y salida, 635 00:26:41,000 --> 00:26:43,039 yo tengo que envolver esto en un try-catch, ¿vale? 636 00:26:43,059 --> 00:26:45,359 Para capturar esa excepción que se produce. 637 00:26:45,700 --> 00:26:48,059 Y cuidado no confundan, la excepción es lo que se produce, 638 00:26:48,660 --> 00:26:51,059 pero lo que produce el error es la operación de entrada y salida. 639 00:26:51,779 --> 00:26:53,799 Cuidado no confundan los dos ejemplos, ¿eh? ¿Vale? 640 00:26:55,279 --> 00:26:56,559 Entonces, fíjense lo que estoy haciendo aquí. 641 00:26:56,559 --> 00:27:04,059 le asignó lector fichero de user de usuarios es aquí donde le meto el file reader el nombre de 642 00:27:04,059 --> 00:27:09,240 fichero usuario que me ha pasado y luego le hago un buffer reader pues para que esté bufferizado 643 00:27:09,240 --> 00:27:15,759 y con un buffer pues siempre las cosas funcionan muchísimo mejor vale y luego a continuación 644 00:27:17,279 --> 00:27:22,460 si lo he abierto y no me ha dado errores si me da errores captura el try-catch y ya me olvido pero 645 00:27:22,460 --> 00:27:24,420 si no tengo errores, pues quiere decir que lo he podido abrir bien 646 00:27:24,420 --> 00:27:25,839 pues yo me pongo a leer los usuarios 647 00:27:25,839 --> 00:27:27,640 entonces, ¿cómo leo los usuarios? 648 00:27:28,380 --> 00:27:30,400 bueno, primero saco información para ver, fichero usuario 649 00:27:30,400 --> 00:27:32,440 listado directo de lectura, le recuerdo que esto 650 00:27:32,440 --> 00:27:34,400 es el resultado, este de aquí 651 00:27:34,400 --> 00:27:36,940 fichero usuario 652 00:27:36,940 --> 00:27:38,640 listado directo de lectura, lo ven aquí, ¿verdad? 653 00:27:39,960 --> 00:27:40,480 fichero usuario 654 00:27:40,480 --> 00:27:42,500 listado directo de lectura, y me pongo a leer líneas 655 00:27:42,500 --> 00:27:44,819 entonces, ¿cómo leo las líneas? pues nada, del buffer 656 00:27:44,819 --> 00:27:46,460 le hago un readline, ya está 657 00:27:46,460 --> 00:27:48,759 un readline, me lee la línea completa 658 00:27:48,759 --> 00:27:50,880 de texto, hasta el retorno de carro, pum, y me lo devuelve 659 00:27:50,880 --> 00:27:53,140 En un string, que es este, se lo asigno a línea 660 00:27:53,140 --> 00:27:55,140 Si eso es distinto de nulo 661 00:27:55,140 --> 00:27:56,940 Quiere decir que hay información 662 00:27:56,940 --> 00:27:58,160 Esa información la trato 663 00:27:58,160 --> 00:27:58,940 ¿Vale? 664 00:27:59,859 --> 00:28:03,180 ¿Qué línea es empty? Es decir, que había una de nada 665 00:28:03,180 --> 00:28:05,539 Pues, continue, vuelvo a ver la siguiente línea 666 00:28:05,539 --> 00:28:07,539 ¿Vale? No añado líneas vacías 667 00:28:07,539 --> 00:28:08,880 ¿Vale? 668 00:28:08,960 --> 00:28:11,039 ¿Cómo me salto ya las líneas vacías? Con esto de aquí 669 00:28:11,039 --> 00:28:13,299 ¿Qué hace al continue? Recuerda, me vuelve 670 00:28:13,299 --> 00:28:14,160 Al inicio del bucle 671 00:28:14,160 --> 00:28:17,440 Entonces no hago lo demás, porque no tengo nada que hacer 672 00:28:17,440 --> 00:28:18,119 Pues no hago lo demás 673 00:28:18,119 --> 00:28:22,000 Si no, quiere decir que si tengo información la tengo que reemplazar 674 00:28:22,000 --> 00:28:23,259 Y miren lo que hago aquí 675 00:28:23,259 --> 00:28:26,000 Imprimo, ¿vale? 676 00:28:26,079 --> 00:28:29,480 Por el dispositivo estándar de salida 677 00:28:29,480 --> 00:28:32,019 Dispositivo estándar de salida 678 00:28:32,019 --> 00:28:34,460 Imprimo la línea 679 00:28:34,460 --> 00:28:36,359 Pero no la imprimo de cualquier manera, no 680 00:28:36,359 --> 00:28:37,440 Fíjense lo que hago 681 00:28:37,440 --> 00:28:42,380 Me agarro la línea y como yo he metido los nombres 682 00:28:42,380 --> 00:28:43,519 Me dice enunciado el tipo 683 00:28:43,519 --> 00:28:45,940 Pérez Jiménez, coma, Pepito 684 00:28:45,940 --> 00:28:50,339 apellido, apellido, coma, nombre 685 00:28:50,339 --> 00:28:53,740 reemplazo estas comas por puntos y comas, ¿vale? 686 00:28:53,759 --> 00:28:57,779 para distinguirlos, los apellidos del nombre de los usuarios 687 00:28:57,779 --> 00:29:01,839 se los separo por coma, ¿vale? entonces los apellidos del nombre los separo por punto y coma 688 00:29:01,839 --> 00:29:06,259 y los usuarios en tesis los separo por comas, pero eso es solo en este listado 689 00:29:06,259 --> 00:29:09,759 porque este replace es momentáneo de aquí 690 00:29:09,759 --> 00:29:13,579 es al visualizarlo, ¿vale? ¿de acuerdo? 691 00:29:13,579 --> 00:29:40,079 Y una vez que lo he reemplazado, miren lo que hago. Añado a mi usuario, Pere Jiménez Pepito, lo añado a la colección de usuarios. ¿Y cómo lo añado a la colección de usuarios? Pues nada, como es un nuevo usuario, creo ese nuevo objeto usuario a partir de la información de la línea de información. 692 00:29:40,079 --> 00:29:41,839 Pero no de cualquier manera 693 00:29:41,839 --> 00:29:43,940 Lo que pasa es que esa línea de información 694 00:29:43,940 --> 00:29:45,900 Le limpia los acentos 695 00:29:45,900 --> 00:29:47,059 Y limpia los acentos 696 00:29:47,059 --> 00:29:49,420 Se hace a través del método limpia acentos 697 00:29:49,420 --> 00:29:51,160 Que vamos a ver un poquito más adelante 698 00:29:51,160 --> 00:29:52,140 Ahora no me voy a detener en él 699 00:29:52,140 --> 00:29:55,140 Es un método que recoge 700 00:29:55,140 --> 00:29:57,079 Un texto 701 00:29:57,079 --> 00:29:58,400 Un string 702 00:29:58,400 --> 00:30:01,079 Y lo limpia de acentos 703 00:30:01,079 --> 00:30:03,539 Si tiene una A con acento la quita el acento y la deja como una A 704 00:30:03,539 --> 00:30:05,500 Si tiene una Ñ la quita la Ñ 705 00:30:05,500 --> 00:30:06,740 Y le pone una N en mi caso 706 00:30:06,740 --> 00:30:09,200 Limpia estos caracteres propios 707 00:30:09,200 --> 00:30:11,599 del alfabeto español como nos decía en el inicio, ¿vale? 708 00:30:12,019 --> 00:30:14,660 pero fíjense lo que hago, yo aprovecho ya todo y lo hago todo de golpe 709 00:30:14,660 --> 00:30:16,279 fíjense, lo hago todo de golpe 710 00:30:16,279 --> 00:30:19,660 todo esto lo hago de golpe, me ahorro aquí 711 00:30:19,660 --> 00:30:22,759 pues en vez de hacer esto en 5 o 6 líneas de código lo hago todo de golpe 712 00:30:22,759 --> 00:30:25,500 a la línea limpio los acentos 713 00:30:25,500 --> 00:30:29,099 ese string lo utilizo para inicializar un nuevo usuario 714 00:30:29,099 --> 00:30:31,359 un nuevo objeto de la clase usuario 715 00:30:31,359 --> 00:30:34,299 genero ese espacio y ese espacio generado por ese objeto 716 00:30:34,299 --> 00:30:37,720 esa nueva instancia la añado 717 00:30:37,720 --> 00:30:39,000 a la colección de usuarios 718 00:30:39,000 --> 00:30:41,579 se añade la referencia de esta nueva instancia 719 00:30:41,579 --> 00:30:43,160 y se gestiona la 720 00:30:43,160 --> 00:30:47,359 que me da falso 721 00:30:47,359 --> 00:30:48,680 es decir 722 00:30:48,680 --> 00:30:50,519 que no me lo admite 723 00:30:50,519 --> 00:30:52,700 si ya tengo texto y no me lo admite 724 00:30:52,700 --> 00:30:54,880 la única razón por la que puede ser 725 00:30:54,880 --> 00:30:57,339 es porque ya estaba ese usuario 726 00:30:57,339 --> 00:31:00,119 ¿vale? 727 00:31:00,759 --> 00:31:02,079 y entonces si ya estaba ese usuario 728 00:31:02,079 --> 00:31:04,960 evidentemente no se añade porque ya estaba 729 00:31:04,960 --> 00:31:07,420 pero lo que hago yo es que saco 730 00:31:07,420 --> 00:31:08,160 por el dispositivo 731 00:31:08,160 --> 00:31:10,900 estándar de salida 732 00:31:10,900 --> 00:31:12,420 visualizo una información 733 00:31:12,420 --> 00:31:14,319 que la tengo aquí, que es esta de aquí 734 00:31:14,319 --> 00:31:16,559 entrada repartida nos añade 735 00:31:16,559 --> 00:31:18,099 y así yo sé 736 00:31:18,099 --> 00:31:20,519 que lo que ha pasado es que había uno 737 00:31:20,519 --> 00:31:22,160 para añadir pero como ya está de alta 738 00:31:22,160 --> 00:31:24,279 como usuario no le vuelvo a añadir 739 00:31:24,279 --> 00:31:26,740 es decir, si perejimenez, pepito 740 00:31:26,740 --> 00:31:27,980 ya existía, no le añado 741 00:31:27,980 --> 00:31:30,460 lo he leído, lo intento añadir pero no puedo 742 00:31:30,460 --> 00:31:32,240 y lo visualizo que no lo añado 743 00:31:32,240 --> 00:31:34,859 y ya está, eso lo hace el bucle 744 00:31:34,859 --> 00:31:36,160 hasta que se termina el fichero 745 00:31:36,160 --> 00:31:38,380 añado todos los usuarios a la colección 746 00:31:38,380 --> 00:31:40,339 una vez hecho esto 747 00:31:40,339 --> 00:31:42,599 bueno, este println de backslash 748 00:31:42,599 --> 00:31:44,240 b, lo que hace es que imprime 749 00:31:44,240 --> 00:31:45,900 un espacio atrás 750 00:31:45,900 --> 00:31:47,940 un backspace, un espacio atrás 751 00:31:47,940 --> 00:31:50,359 entonces me quita la última coma 752 00:31:50,359 --> 00:31:52,180 que hemos ido añadiendo al usuario 753 00:31:52,180 --> 00:31:53,720 la última coma del último usuario lo quita 754 00:31:53,720 --> 00:31:55,980 el último no tiene esa coma 755 00:31:55,980 --> 00:31:58,519 porque ya es el último, un truquito 756 00:31:58,519 --> 00:32:00,480 una vez que he hecho esto 757 00:32:00,480 --> 00:32:02,259 cierro el buffer 758 00:32:02,259 --> 00:32:04,680 cierro el fichero y nada, pues ya está 759 00:32:04,680 --> 00:32:06,640 y miren 760 00:32:06,640 --> 00:32:08,779 la magia de las colecciones de Java 761 00:32:08,779 --> 00:32:10,680 saco el listado ordenado 762 00:32:10,680 --> 00:32:12,980 aquí lo tenemos, leído y a continuación 763 00:32:12,980 --> 00:32:14,980 saco el listado ordenado, ¿y cómo saco el listado 764 00:32:14,980 --> 00:32:17,039 ordenado? la magia de las 765 00:32:17,039 --> 00:32:18,400 colecciones, tachán 766 00:32:18,400 --> 00:32:20,920 a ver dónde está, aquí 767 00:32:20,920 --> 00:32:22,859 saco el listado ordenado 768 00:32:22,859 --> 00:32:24,880 mis usuarios los saco ordenados 769 00:32:24,880 --> 00:32:26,980 ¿qué hago para hacerlos 770 00:32:26,980 --> 00:32:28,779 para tenerlos ordenados? nada 771 00:32:28,779 --> 00:32:30,740 al ser un tree 772 00:32:30,740 --> 00:32:33,019 set y estar bien implementado 773 00:32:33,019 --> 00:32:34,839 el ordenamiento en la clase 774 00:32:34,839 --> 00:32:36,880 de usuarios, automáticamente al 775 00:32:36,880 --> 00:32:38,700 irlos introduciendo ellos se han ido ordenando 776 00:32:38,700 --> 00:32:44,599 solos y lo que hago es que los visualizó esta colección tiene un plus string 777 00:32:46,359 --> 00:32:52,900 este es lo activo porque hago que salga la colección de usuarios sumada concatenada con 778 00:32:52,900 --> 00:33:01,160 una cadena vacía el sistema interpreta que quiero voy a querer transformar esta colección en un 779 00:33:01,160 --> 00:33:03,119 string y él lo que hace 780 00:33:03,119 --> 00:33:04,380 es que transforma la colección en un string 781 00:33:04,380 --> 00:33:05,819 este de aquí, ¿está bien? 782 00:33:06,299 --> 00:33:08,960 ese que está en azul 783 00:33:08,960 --> 00:33:10,059 por ahí que le estoy pasando, ¿lo ven? 784 00:33:10,240 --> 00:33:12,640 y es el listado ordenado 785 00:33:12,640 --> 00:33:15,240 sale directamente ordenado 786 00:33:15,240 --> 00:33:16,599 ¿vale? muy bien 787 00:33:16,599 --> 00:33:18,920 ¿que existen tareas? pues nada 788 00:33:18,920 --> 00:33:20,099 si existen tareas, ¿qué es lo que hacemos? 789 00:33:20,440 --> 00:33:23,000 pues nos ponemos a leer el fichero de tareas, ¿no? habrá que leerlo 790 00:33:23,000 --> 00:33:24,839 pues hacemos lo mismo que hemos hecho antes 791 00:33:24,839 --> 00:33:26,740 lo abrimos, no sé qué, patatas 792 00:33:26,740 --> 00:33:28,220 si está vacío, no sé cuántos 793 00:33:28,220 --> 00:33:30,940 y si no está vacío, pues vamos añadiendo 794 00:33:30,940 --> 00:33:32,980 las tareas, añadimos la línea que estamos leyendo 795 00:33:32,980 --> 00:33:34,480 y aquí 796 00:33:34,480 --> 00:33:36,420 ya está, con esto 797 00:33:36,420 --> 00:33:38,759 hemos leído todas las tareas y las visualizamos 798 00:33:38,759 --> 00:33:39,160 y ya está 799 00:33:39,160 --> 00:33:42,640 y si no existen tareas 800 00:33:42,640 --> 00:33:44,500 los que se ejecutasen, si no existen tareas 801 00:33:44,500 --> 00:33:46,680 ¿qué es lo que queríamos que hiciera? no teníamos el segundo 802 00:33:46,680 --> 00:33:48,900 parámetro y queríamos que asignara 803 00:33:48,900 --> 00:33:50,720 aleatoriamente los números entre uno 804 00:33:50,720 --> 00:33:52,940 y el número de usuarios, es decir, un orden numérico 805 00:33:52,940 --> 00:33:54,720 pues mire lo que hago 806 00:33:54,720 --> 00:33:56,900 para hacer eso, le meto 807 00:33:56,900 --> 00:33:59,099 las tareas, estoy añadiendo 808 00:33:59,099 --> 00:34:00,319 tareas 809 00:34:00,319 --> 00:34:04,420 pero que añado en las tareas, fíjense, añado 810 00:34:04,420 --> 00:34:07,619 un contador que voy haciendo de número de usuarios 811 00:34:07,619 --> 00:34:12,440 empieza siendo 0 y se va incrementando antes de añadirse 812 00:34:12,440 --> 00:34:16,480 se incrementa para que el primero sea 1, se va incrementando y se pasa 813 00:34:16,480 --> 00:34:20,159 en forma de value of del número, es decir, 1 814 00:34:20,159 --> 00:34:23,780 pasado a string y se mete como tarea 815 00:34:23,780 --> 00:34:28,019 la primera tarea se llama 1, más más, se hace un 2 816 00:34:28,019 --> 00:34:29,800 Se transforma en un string 817 00:34:29,800 --> 00:34:32,139 Y se mete ese string, la segunda tarea se llama 2 818 00:34:32,139 --> 00:34:34,340 Y así va a suceder esto 819 00:34:34,340 --> 00:34:36,219 Mientras que recorramos 820 00:34:36,219 --> 00:34:38,300 Los elementos de usuario 821 00:34:38,300 --> 00:34:40,059 De la colección de usuarios 822 00:34:40,059 --> 00:34:41,840 Me recorro toda la colección de usuarios 823 00:34:41,840 --> 00:34:43,679 Por cada usuario 824 00:34:43,679 --> 00:34:45,659 Por cada elemento de usuario 825 00:34:45,659 --> 00:34:47,519 De la colección de usuarios 826 00:34:47,519 --> 00:34:48,920 Añado un numerito 827 00:34:48,920 --> 00:34:52,659 Entonces añado tantos numeritos como usuarios tengan en la colección 828 00:34:52,659 --> 00:34:53,260 Y ya está 829 00:34:53,260 --> 00:34:55,760 Y esta es la parte del catch 830 00:34:55,760 --> 00:34:57,039 Cuando tengo una excepción de estas 831 00:34:57,039 --> 00:34:58,760 no he sido muy fino 832 00:34:58,760 --> 00:35:00,960 con la recepción de extensiones 833 00:35:00,960 --> 00:35:02,500 habría que haber sido un poco más fino 834 00:35:02,500 --> 00:35:05,239 ahora que lo veo, creo que deberíamos 835 00:35:05,239 --> 00:35:05,460 haber 836 00:35:05,460 --> 00:35:08,900 analizado con un poquitín más de detalle 837 00:35:08,900 --> 00:35:11,179 la lectura de un fichero 838 00:35:11,179 --> 00:35:13,139 lo no sé qué, tal y que, habría que 839 00:35:13,139 --> 00:35:14,880 afinar un poquito más 840 00:35:14,880 --> 00:35:16,900 con esta captura de extensiones, porque aquí va a salir 841 00:35:16,900 --> 00:35:18,639 la acepción de una revista, pero bueno 842 00:35:18,639 --> 00:35:20,019 es suficiente y ya está 843 00:35:20,019 --> 00:35:23,280 con esto finalizamos la lectura de fichero 844 00:35:23,280 --> 00:35:25,460 al final se pone un comentario, se finaliza la lectura de fichero 845 00:35:25,460 --> 00:35:27,360 y pasamos a lo siguiente que es la asignación 846 00:35:27,360 --> 00:35:29,739 bueno, pues miren 847 00:35:29,739 --> 00:35:31,719 ¿qué es lo que voy a hacer? 848 00:35:32,099 --> 00:35:34,840 voy a hacer uso de una lista de tareas 849 00:35:34,840 --> 00:35:36,019 ¿vale? una nueva variable 850 00:35:36,019 --> 00:35:39,420 que como va a ser utilizada una lista 851 00:35:39,420 --> 00:35:41,360 pero como las listas son abstractas 852 00:35:41,360 --> 00:35:43,360 yo para cuando la inicializo 853 00:35:43,360 --> 00:35:44,679 le hice una link en list 854 00:35:44,679 --> 00:35:46,199 es decir, una lista que va 855 00:35:46,199 --> 00:35:47,940 recuerden las listas 856 00:35:47,940 --> 00:35:52,019 son listas dinámicas 857 00:35:52,019 --> 00:35:52,420 ¿vale? 858 00:35:54,159 --> 00:35:54,940 enlazadas ¿vale? 859 00:35:54,940 --> 00:35:58,239 Que va añadiendo la información a medida que se va introduciendo 860 00:35:58,239 --> 00:36:00,480 Entonces, primero irá el primero de los que añadimos 861 00:36:00,480 --> 00:36:02,000 Luego el siguiente, luego el siguiente, luego el siguiente 862 00:36:02,000 --> 00:36:02,260 ¿Vale? 863 00:36:02,500 --> 00:36:03,380 Es un link en list 864 00:36:03,380 --> 00:36:05,079 ¿Y qué hacemos aquí? 865 00:36:05,260 --> 00:36:07,119 Pues nada, empezamos a asignar a los usuarios 866 00:36:07,119 --> 00:36:08,000 Le asignamos tareas 867 00:36:08,000 --> 00:36:08,679 Y ya está 868 00:36:08,679 --> 00:36:09,639 No hay problema 869 00:36:09,639 --> 00:36:11,199 Entonces, fíjense 870 00:36:11,199 --> 00:36:13,159 Me recorro todos los usuarios 871 00:36:13,159 --> 00:36:14,960 Que le llamo elemento usuario a cada uno que va recogiendo 872 00:36:14,960 --> 00:36:16,099 De mi colección de usuarios 873 00:36:16,099 --> 00:36:18,500 Yo quiero asignarle a todos los usuarios una tarea 874 00:36:18,500 --> 00:36:21,579 Pues me recorro todos los usuarios de mi colección de usuarios 875 00:36:21,579 --> 00:36:22,639 ¿Y qué hago? 876 00:36:23,639 --> 00:36:24,440 Pues lo primero, digo 877 00:36:24,440 --> 00:36:36,639 Oye, si lista de tareas está vacío, evidentemente la primera vez que yo me meto aquí, que acabo de crear mi lista de vacías como una nueva linked list vacía, la primera vez que me meto está vacía. 878 00:36:37,699 --> 00:36:46,739 Si está vacía la lista de tareas, lo primero que hago es que le añado a mi lista de tareas, esta que voy a usar aquí, le añado todas las tareas que yo tengo. 879 00:36:46,739 --> 00:36:49,039 Recuerden que tareas era un hash 880 00:36:49,039 --> 00:36:55,679 Un hash set 881 00:36:55,679 --> 00:36:57,719 ¿Vale? Pero era un set, es una colección 882 00:36:57,719 --> 00:36:59,179 ¿Vale? Entonces pulsar el add all 883 00:36:59,179 --> 00:37:01,659 ¿Vale? Añado todas las 884 00:37:01,659 --> 00:37:04,019 No tengo lista, lista, tareas en la lista 885 00:37:04,019 --> 00:37:05,739 No pasa nada, toma, todas las tareas 886 00:37:05,739 --> 00:37:07,480 ¿Vale? Las añado todas 887 00:37:07,480 --> 00:37:09,739 Y se lo paso 888 00:37:09,739 --> 00:37:10,980 ¿Lo ven aquí? 889 00:37:11,440 --> 00:37:13,800 Se la metemos en la lista de tareas, ya deja de estar vacía 890 00:37:13,800 --> 00:37:15,340 Porque le he metido todas las tareas que están 891 00:37:15,340 --> 00:37:17,659 Y me pongo a generar un número 892 00:37:17,659 --> 00:37:19,400 para generar la semilla 893 00:37:19,400 --> 00:37:20,639 de esa aleatoriedad 894 00:37:20,639 --> 00:37:22,579 la semilla de esa aleatoriedad 895 00:37:22,579 --> 00:37:24,219 aquí lo he hecho 896 00:37:24,219 --> 00:37:24,800 como lo he hecho 897 00:37:24,800 --> 00:37:28,219 lo he hecho generando un número 898 00:37:28,219 --> 00:37:29,280 a través de 899 00:37:29,280 --> 00:37:36,920 bueno, pues utilizo aquí 900 00:37:36,920 --> 00:37:38,920 una generación, esto es matemática pura y dura 901 00:37:38,920 --> 00:37:41,000 saco los segundos, los minutos y alguna cosa más 902 00:37:41,000 --> 00:37:42,480 por ahí y genero un numerito con eso 903 00:37:42,480 --> 00:37:44,820 que eso depende del instante 904 00:37:44,820 --> 00:37:45,900 en el que estoy ejecutando 905 00:37:45,900 --> 00:37:54,840 Así tengo una semilla que depende del momento en el que ejecuto, cosa que ahora no va a ser lo mismo que dentro de un segundo, dentro de siete, que dentro de quince, que pasado mañana, que dentro de un mes, que dentro de una semana. 906 00:37:54,980 --> 00:37:58,519 Se me dejará un numerito diferente dentro del instante de tiempo en el que estoy. 907 00:37:59,219 --> 00:38:11,820 Y eso es lo que voy a utilizar de semilla en el Shuffle, este que es lo que se encarga de esbarajar o desorganizar, o desordenar, ¿no? 908 00:38:11,820 --> 00:38:14,400 Yo quiero desordenar mi lista de tareas 909 00:38:14,400 --> 00:38:16,559 Y miren que les meto 910 00:38:16,559 --> 00:38:17,320 Nuevo 911 00:38:17,320 --> 00:38:20,260 Número aleatorio 912 00:38:20,260 --> 00:38:22,199 Utilizando esta semilla que es 913 00:38:22,199 --> 00:38:23,840 Número aleatorio de tiempo, esta es la semilla 914 00:38:23,840 --> 00:38:26,239 ¿Vale? Que la he generado en este instante 915 00:38:26,239 --> 00:38:27,699 Y depende de este instante 916 00:38:27,699 --> 00:38:30,400 Hay alguna forma más sencilla de hacerlo 917 00:38:30,400 --> 00:38:30,980 También 918 00:38:30,980 --> 00:38:34,159 Con el kernel milisegundos y cosas así 919 00:38:34,159 --> 00:38:34,840 Es otra opción 920 00:38:34,840 --> 00:38:37,280 Pero bueno, hay varias maneras 921 00:38:37,280 --> 00:38:40,139 Y nada, pues ya hemos generado esto 922 00:38:40,139 --> 00:38:40,980 Pues me ha generado 923 00:38:40,980 --> 00:38:43,400 Pues fíjense lo que le hago 924 00:38:43,400 --> 00:38:47,110 Saco un elemento de usuario 925 00:38:47,110 --> 00:38:48,710 Porque estoy recorriendo todos los usuarios 926 00:38:48,710 --> 00:38:51,730 Y lo que hago es que saco una de las tareas 927 00:38:51,730 --> 00:38:53,710 Extraigo 928 00:38:53,710 --> 00:38:54,750 De la lista de tareas 929 00:38:54,750 --> 00:38:56,949 La tarea remove 930 00:38:56,949 --> 00:38:59,570 Extraigo la primera tarea de la lista 931 00:38:59,570 --> 00:39:00,789 Y la saco de la lista 932 00:39:00,789 --> 00:39:02,070 Y ya me queda una tarea 933 00:39:02,070 --> 00:39:03,389 ¿Lo ven? 934 00:39:04,849 --> 00:39:06,190 Al usuario que le toque 935 00:39:06,190 --> 00:39:09,789 Le extraigo la primera de las tareas 936 00:39:09,789 --> 00:39:11,309 La primera de las tareas 937 00:39:11,309 --> 00:39:12,210 Disponible en la lista 938 00:39:12,210 --> 00:39:14,769 y ya está, y eso me genera 939 00:39:14,769 --> 00:39:15,949 esto de aquí 940 00:39:15,949 --> 00:39:18,929 tal, tal, cálculo de pi, patacín, teorema de Pizzagorassi 941 00:39:18,929 --> 00:39:20,329 este es Fibonacci, el otro 942 00:39:20,329 --> 00:39:22,750 este, tal, pim, pam, pim 943 00:39:22,750 --> 00:39:23,550 ahí lo que es, ¿eh? 944 00:39:24,250 --> 00:39:24,730 ¿lo ven, no? 945 00:39:26,530 --> 00:39:27,050 cuéntame 946 00:39:27,050 --> 00:39:30,230 ¿ahí al final lo estás ordenando? 947 00:39:30,409 --> 00:39:31,469 ¿ahí o allá? 948 00:39:32,030 --> 00:39:34,829 en la visión, cuando salen los datos 949 00:39:34,829 --> 00:39:36,469 cuando salen los datos 950 00:39:36,469 --> 00:39:37,530 la salida de datos, ¿sí? 951 00:39:37,969 --> 00:39:39,309 en la imagen anterior 952 00:39:39,309 --> 00:39:42,829 Dices la visualización de la ejecución 953 00:39:42,829 --> 00:39:43,070 Ahí 954 00:39:43,070 --> 00:39:44,650 Cuéntame 955 00:39:44,650 --> 00:39:47,809 Aquí los nombres están en orden alfabético 956 00:39:47,809 --> 00:39:48,449 Sí 957 00:39:48,449 --> 00:39:51,489 Y las tareas también están en orden 958 00:39:51,489 --> 00:39:52,530 No 959 00:39:52,530 --> 00:39:54,610 Calculo pi, teoría mapitágoras 960 00:39:54,610 --> 00:39:57,489 Fibonacci 961 00:39:57,489 --> 00:40:00,809 T, C, R 962 00:40:00,809 --> 00:40:01,789 C 963 00:40:01,789 --> 00:40:03,889 No, no está en orden 964 00:40:03,889 --> 00:40:05,530 Por eso digo que 965 00:40:05,530 --> 00:40:07,769 Es que es lo que yo quiero 966 00:40:07,769 --> 00:40:09,550 yo quiero aleatoriamente 967 00:40:09,550 --> 00:40:11,989 asignar a los usuarios que están ordenados 968 00:40:11,989 --> 00:40:13,889 el desorden 969 00:40:13,889 --> 00:40:15,949 de la lista de tareas, es que es exacta entre lo que quiero 970 00:40:15,949 --> 00:40:18,050 yo no veo 971 00:40:18,050 --> 00:40:18,590 el desorden 972 00:40:18,590 --> 00:40:21,829 quiero decir, va, cálculo pi, teorema 973 00:40:21,829 --> 00:40:24,010 la al va antes que 974 00:40:24,010 --> 00:40:26,010 ab, que va antes que brr 975 00:40:26,010 --> 00:40:27,829 que va antes que co, que va, esto está ordenado 976 00:40:27,829 --> 00:40:29,469 a la derecha 977 00:40:29,469 --> 00:40:32,309 k, t, k 978 00:40:32,309 --> 00:40:33,389 esto no está ordenado 979 00:40:33,389 --> 00:40:34,630 pero va siempre igual 980 00:40:34,630 --> 00:40:36,289 se repite, ¿no? 981 00:40:36,289 --> 00:41:05,389 Bueno, esto si está así es porque la aleatoriedad es un petardo, simplemente, porque teóricamente debería de hacerse un random cada vez que se gastan, esto cada vez que se termina, que lista de tareas termina de extraer todas las tareas, como lista de tareas está vacío se vuelven a copiar las tareas y se vuelven a desordenar, por esto se generan las semillas. 982 00:41:06,289 --> 00:41:07,690 Para esto son las semillas 983 00:41:07,690 --> 00:41:08,869 Claro, ¿qué ocurre? Miren 984 00:41:08,869 --> 00:41:12,289 Si la ejecución es tan rápida que la semilla no pasa 985 00:41:12,289 --> 00:41:13,050 Ni un segundo 986 00:41:13,050 --> 00:41:15,070 Y esto es el problema 987 00:41:15,070 --> 00:41:18,170 Como no ha pasado ni un segundo, la semilla es la misma 988 00:41:18,170 --> 00:41:20,130 Y el aleatorio va a ser el mismo, seguramente 989 00:41:20,130 --> 00:41:23,599 Seguramente tengamos que usar milisegundos 990 00:41:23,599 --> 00:41:24,519 Para que esto funcione mejor 991 00:41:24,519 --> 00:41:26,599 ¿Entienden o no? 992 00:41:27,199 --> 00:41:28,179 De acuerdo, sí, sí 993 00:41:28,179 --> 00:41:31,300 Pero la idea es que esto fuera 994 00:41:31,300 --> 00:41:33,880 Yo tengo otra versión de este programa que está con milisegundos 995 00:41:33,880 --> 00:41:35,780 Y les aseguro que salen distintas 996 00:41:35,780 --> 00:41:36,619 A ver, no me voy a fijar aquí 997 00:41:36,619 --> 00:41:39,739 Pi, Pitágoras, Fibonacci, ecuaciones 998 00:41:39,739 --> 00:41:41,940 Integrales, Pi, Pitágoras, Fibonacci, ecuaciones 999 00:41:41,940 --> 00:41:43,619 Integrales, Pi, Pitágoras, Fibonacci, ecuaciones 1000 00:41:43,619 --> 00:41:45,539 Integrales, Pi, Pitágoras, Fibonacci, ecuaciones 1001 00:41:45,539 --> 00:41:47,019 Integrales, Pi, Pitágoras, Fibonacci, ecuaciones 1002 00:41:47,019 --> 00:41:50,059 Integrales, Pi, Pitágoras, pues tiene toda la pinta que se repite siempre lo mismo 1003 00:41:50,059 --> 00:41:51,380 Pero eso si se repite 1004 00:41:51,380 --> 00:41:53,659 Es porque está hecho en tan corto 1005 00:41:53,659 --> 00:41:54,380 Espacio de tiempo 1006 00:41:54,380 --> 00:41:57,500 Que el numerito que se genera aquí, el número de 1007 00:41:57,500 --> 00:42:01,199 Aterotiempo es el mismo, es el problema 1008 00:42:01,199 --> 00:42:02,420 ¿De acuerdo? 1009 00:42:02,420 --> 00:42:04,699 Entonces seguramente haya que usar los milisegundos 1010 00:42:04,699 --> 00:42:05,079 Y ya está 1011 00:42:05,079 --> 00:42:07,139 en vez de con second 1012 00:42:07,139 --> 00:42:08,400 se usa minisecond 1013 00:42:08,400 --> 00:42:10,820 vale 1014 00:42:10,820 --> 00:42:12,619 si está claro o no 1015 00:42:12,619 --> 00:42:13,699 si 1016 00:42:13,699 --> 00:42:16,840 muy bien pues entonces ya está 1017 00:42:16,840 --> 00:42:18,679 sacamos el usuario, sacamos la lista de tareas 1018 00:42:18,679 --> 00:42:19,519 y se han sacado 1019 00:42:19,519 --> 00:42:22,159 más cosas 1020 00:42:22,159 --> 00:42:24,760 el programa ya está, nos queda revisar 1021 00:42:24,760 --> 00:42:26,780 el limpiacentos, el limpiacentos que hace 1022 00:42:26,780 --> 00:42:28,760 yo le paso un string como parámetro 1023 00:42:28,760 --> 00:42:30,260 y me devuelve 1024 00:42:30,260 --> 00:42:33,400 ese mismo string pero sin acentos 1025 00:42:33,400 --> 00:42:34,719 y como hago esto 1026 00:42:34,719 --> 00:42:37,019 pues de la forma más fácil posible, con un switch 1027 00:42:37,019 --> 00:42:38,900 voy pillando 1028 00:42:38,900 --> 00:42:41,059 carácter a carácter los caracteres 1029 00:42:41,059 --> 00:42:42,980 del parámetro, que me encuentre una A 1030 00:42:42,980 --> 00:42:44,880 de una forma, de otra 1031 00:42:44,880 --> 00:42:47,000 o de otra, de la que no quiero que me aparezca, le pongo 1032 00:42:47,000 --> 00:42:49,000 una minúscula, que me encuentre 1033 00:42:49,000 --> 00:42:51,059 la mayúscula, con el acento para un lado, con el acento para el otro 1034 00:42:51,059 --> 00:42:52,980 o con el acento circunflejo, le pongo 1035 00:42:52,980 --> 00:42:54,280 una mayúscula limpia, y así 1036 00:42:54,280 --> 00:42:56,760 eso es lo que hago con cada una de las vocales, lo ven aquí 1037 00:42:56,760 --> 00:42:58,719 a la Ñ le pongo 1038 00:42:58,719 --> 00:43:01,340 la N minúscula, y a la Ñ mayúscula 1039 00:43:01,340 --> 00:43:02,880 le pongo la N mayúscula 1040 00:43:02,880 --> 00:43:07,400 y una vez que he hecho esto 1041 00:43:07,400 --> 00:43:09,239 en el char at i 1042 00:43:09,239 --> 00:43:11,699 pues nada, una vez que he cambiado 1043 00:43:11,699 --> 00:43:12,760 todos los caracteres 1044 00:43:12,760 --> 00:43:14,260 por el que quiero 1045 00:43:14,260 --> 00:43:17,559 lo que hago, fíjense, si me encuentro este, reemplazo 1046 00:43:17,559 --> 00:43:19,719 en el parámetro, que es lo que le paso 1047 00:43:19,719 --> 00:43:21,920 le reemplazo el carácter este 1048 00:43:21,920 --> 00:43:23,519 que me acabo de encontrar en el char at i 1049 00:43:23,519 --> 00:43:25,699 que es este de aquí, que coincide con la 1050 00:43:25,699 --> 00:43:27,159 que yo quiero que incide 1051 00:43:27,159 --> 00:43:29,659 entonces lo estoy limpiando, estos caracteres 1052 00:43:29,659 --> 00:43:31,219 los limpio todos por sus caracteres 1053 00:43:31,219 --> 00:43:33,039 y el alfabeto inglés correspondiente 1054 00:43:33,039 --> 00:43:34,960 una vez hecho todo esto, devuelvo el parámetro 1055 00:43:34,960 --> 00:43:36,019 y se han cerrado 1056 00:43:36,019 --> 00:43:39,989 ¿lo ven ahí, no? 1057 00:43:41,449 --> 00:43:43,110 ¿y una vez hecho esto, lo que conseguimos? 1058 00:43:43,230 --> 00:43:45,130 pues lo que tenemos aquí, que a cada usuario 1059 00:43:45,130 --> 00:43:47,110 le ha asignado una tarea de forma 1060 00:43:47,110 --> 00:43:48,550 aleatoria, ¿vale? 1061 00:43:48,909 --> 00:43:51,190 o pseudo-aleatoria 1062 00:43:51,190 --> 00:43:51,449 ¿eh? 1063 00:43:53,110 --> 00:43:54,710 sí, pues la otra versión es con milisegundos 1064 00:43:54,710 --> 00:43:59,679 y seguro, yo no sé por qué sale esta 1065 00:43:59,679 --> 00:44:01,659 pero bueno, da igual, no hay problema 1066 00:44:01,659 --> 00:44:02,739 no tiene medio problema 1067 00:44:02,739 --> 00:44:08,639 ¿vale? 1068 00:44:08,639 --> 00:44:10,440 Bueno, ¿ha quedado claro esto? 1069 00:44:13,780 --> 00:44:14,900 Respondo por todos, sí 1070 00:44:14,900 --> 00:44:16,480 Sí, ¿no? Sí, vale 1071 00:44:16,480 --> 00:44:18,260 Muy bien, pues nada, esto era 1072 00:44:18,260 --> 00:44:21,139 Fíjense que hay un montón de conceptos implícitos en este programa 1073 00:44:21,139 --> 00:44:23,920 Por eso les quería mostrar este programa 1074 00:44:23,920 --> 00:44:28,059 Como tampoco sé si va a ser el último que veamos o no 1075 00:44:28,059 --> 00:44:30,219 Pues quería mostrar uno que tuviera bastante cositas 1076 00:44:30,219 --> 00:44:31,780 Para que se hagan un poco una idea de 1077 00:44:31,780 --> 00:44:35,019 De todo, un poquito en general 1078 00:44:35,019 --> 00:44:37,199 También es importante 1079 00:44:37,199 --> 00:44:39,760 Que se den cuenta de una cosa súper interesante 1080 00:44:39,760 --> 00:44:43,099 Utilizando colecciones con muy poco código 1081 00:44:43,099 --> 00:44:43,820 Se hace muchísimo 1082 00:44:43,820 --> 00:44:46,539 A esto si le quitan comentarios y alguna cosa más 1083 00:44:46,539 --> 00:44:47,920 Y están todas estas líneas en rojo 1084 00:44:47,920 --> 00:44:49,360 Si se fijan se quedan poquísimos 1085 00:44:49,360 --> 00:44:52,559 Hay muchas líneas en rojo pero porque hay muchos comentarios 1086 00:44:52,559 --> 00:44:54,440 Pues yo lo que quiero es que ustedes 1087 00:44:54,440 --> 00:44:55,920 Entiendan lo que se está haciendo aquí 1088 00:44:55,920 --> 00:44:59,039 Y bueno, lo comprendan y lo asimilen 1089 00:44:59,039 --> 00:45:00,639 Y lo entiendan muy bien, ¿de acuerdo? 1090 00:45:01,639 --> 00:45:02,960 Vale, pues yo por mi parte nada más 1091 00:45:02,960 --> 00:45:05,599 Intentaré la pesadilla hasta subir el vídeo 1092 00:45:05,599 --> 00:45:07,639 A la mediateca 1093 00:45:07,639 --> 00:45:08,500 Esta fantástica 1094 00:45:08,500 --> 00:45:11,659 y compartírsela, se lo comparto siempre donde está el ejercicio 1095 00:45:11,659 --> 00:45:13,539 aparte, les voy a habilitar 1096 00:45:13,539 --> 00:45:15,460 el ejercicio para que lo puedan ver 1097 00:45:15,460 --> 00:45:17,460 ya les digo que el código difiere 1098 00:45:17,460 --> 00:45:19,179 un poquitín, vale, pero nada 1099 00:45:19,179 --> 00:45:20,980 cosas sin relevancia 1100 00:45:20,980 --> 00:45:23,300 algún nombre, algún identificador 1101 00:45:23,300 --> 00:45:24,360 y ya está, vale 1102 00:45:24,360 --> 00:45:27,420 y nada, pues por mi parte ya está, si tienen alguna 1103 00:45:27,420 --> 00:45:28,699 duda me preguntan y les digo 1104 00:45:28,699 --> 00:45:30,719 y si no, pues 1105 00:45:30,719 --> 00:45:32,500 nos vamos a cenar o algo 1106 00:45:32,500 --> 00:45:35,500 ah, bueno, estamos en fase 0 1107 00:45:35,500 --> 00:45:37,079 no podemos tomar caña ni nada, entonces 1108 00:45:37,079 --> 00:45:38,780 Eso lo dejamos para otro día 1109 00:45:38,780 --> 00:45:41,519 ¿Alguna duda, alguna cuestión o algo que quieran preguntar? 1110 00:45:44,420 --> 00:45:46,599 Yo sobre algo que no es del ejercicio, Andrés 1111 00:45:46,599 --> 00:45:49,780 Si es una duda general 1112 00:45:49,780 --> 00:45:51,280 Por favor en los foros 1113 00:45:51,280 --> 00:45:52,639 Porque así la tenemos todos 1114 00:45:52,639 --> 00:45:55,940 Era solo preguntar si la semana que viene habrá tutoría 1115 00:45:55,940 --> 00:45:57,480 No tengo ni idea 1116 00:45:57,480 --> 00:45:58,559 Porque es que 1117 00:45:58,559 --> 00:46:03,030 Si no recuerdo mal, esta era la última tutoría 1118 00:46:03,030 --> 00:46:03,849 Sí 1119 00:46:03,849 --> 00:46:04,409 Creo 1120 00:46:04,409 --> 00:46:08,849 De lo que pase de aquí en adelante es un auténtico misterio 1121 00:46:08,849 --> 00:46:09,829 Pero créanme 1122 00:46:09,829 --> 00:46:12,550 no lo sé yo, no lo sabe tampoco el coordinador 1123 00:46:12,550 --> 00:46:13,750 de distancia, no sabe nadie 1124 00:46:13,750 --> 00:46:16,030 lo que va a pasar de aquí en adelante 1125 00:46:16,030 --> 00:46:17,849 entramos en terreno 1126 00:46:17,849 --> 00:46:20,739 farragoso 1127 00:46:20,739 --> 00:46:22,099 desconocido 1128 00:46:22,099 --> 00:46:25,719 no sabemos si va a haber examen, si no, si va a ser presencial 1129 00:46:25,719 --> 00:46:26,559 telemático 1130 00:46:26,559 --> 00:46:29,119 cromático 1131 00:46:29,119 --> 00:46:32,159 sublimático, no tenemos ni idea de nada 1132 00:46:32,159 --> 00:46:33,860 pero nadie, no sabemos nadie nada 1133 00:46:33,860 --> 00:46:35,599 de hecho no lo saben ni los de arriba porque 1134 00:46:35,599 --> 00:46:37,440 tampoco saben cómo va a evolucionar tanto el tema este 1135 00:46:37,440 --> 00:46:39,780 entonces están esperando 1136 00:46:39,780 --> 00:46:40,159 un poco 1137 00:46:40,159 --> 00:46:42,480 acontecimientos 1138 00:46:42,480 --> 00:46:43,699 o alguna decisión. Dígame. 1139 00:46:44,920 --> 00:46:45,599 ¿Se sabe 1140 00:46:45,599 --> 00:46:48,579 aproximadamente con cuánto tiempo se nos va a visitar 1141 00:46:48,579 --> 00:46:49,000 más o menos? 1142 00:46:49,599 --> 00:46:52,539 Sí, sí, sí. Sé exactamente que no sé nada. 1143 00:46:54,400 --> 00:46:55,860 Eso es lo único que sé con precisión. 1144 00:46:57,559 --> 00:46:58,659 Espero que más de una hora. 1145 00:47:00,639 --> 00:47:01,519 Pero yo también. 1146 00:47:01,940 --> 00:47:03,900 Claro, porque imagínese. 1147 00:47:04,159 --> 00:47:06,139 Hombre, yo lo que pasa es que la ventaja mía es que 1148 00:47:06,139 --> 00:47:07,519 yo les puedo tener el examen ya preparado. 1149 00:47:09,630 --> 00:47:11,449 Pero es que no les puedo decir nada. 1150 00:47:11,469 --> 00:47:17,750 No son los profesores. El problema es que para planificarte bien un examen... 1151 00:47:17,750 --> 00:47:22,250 Pero que me escuche, que no le puedo decir una cosa que no sé, si yo le doy la razón, pero no le puedo decir nada. 1152 00:47:22,409 --> 00:47:28,389 No le puedo decir qué va a ser con dos semanas, porque no tengo ni idea ni nada de nada, pero ni yo ni nadie lo sabe. 1153 00:47:29,730 --> 00:47:33,510 No, pero a lo mejor había comentado que con un mínimo de tiempo se iba a avisar o algo. 1154 00:47:33,949 --> 00:47:37,550 Que no, que no, que no tenemos ni idea de nada. Cero. 1155 00:47:37,550 --> 00:47:41,630 Porque para el tema de pedir permisos 1156 00:47:41,630 --> 00:47:43,210 De los trabajos y eso 1157 00:47:43,210 --> 00:47:44,510 Ante la nueva situación 1158 00:47:44,510 --> 00:47:47,010 Pero que entiéndanme 1159 00:47:47,010 --> 00:47:49,150 Que yo estaría encantado de todo 1160 00:47:49,150 --> 00:47:50,670 Pero es que no les puedo decir nada 1161 00:47:50,670 --> 00:47:54,949 Entiendo, entiendo 1162 00:47:54,949 --> 00:47:56,750 Me encantaría decirles 1163 00:47:56,750 --> 00:47:58,329 Con dos semanas, no se preocupen 1164 00:47:58,329 --> 00:48:00,530 Pues me encantaría, pero es que no les puedo decir nada 1165 00:48:00,530 --> 00:48:03,010 Así que 1166 00:48:03,010 --> 00:48:06,030 Esto es lo que 1167 00:48:06,030 --> 00:48:07,530 Uy, ¿qué pasa aquí? 1168 00:48:07,769 --> 00:48:08,030 A ver 1169 00:48:08,030 --> 00:48:10,630 Dejo ya grabar esto, ¿no? 1170 00:48:10,650 --> 00:48:12,429 Porque debe de tener un pauso 1171 00:48:12,429 --> 00:48:12,969 Que tengo