1 00:00:01,710 --> 00:00:08,029 Vale, pues todo el mundo tiene claro que este bucle me está haciendo la suma de los sueldos de todos los profesores del array, ¿no? 2 00:00:08,550 --> 00:00:15,689 Va recorriendo el array en toda su longitud y me está incorporando a la variable acumuladora suma, me está incorporando los sueldos. 3 00:00:16,170 --> 00:00:18,449 Luego ya para hacer la media me va a tocar dividir, claro. 4 00:00:21,179 --> 00:00:27,640 Sueldo medio menos igual profesores.length. 5 00:00:27,640 --> 00:00:29,019 vale 6 00:00:29,019 --> 00:00:32,500 bueno, entonces cuando recorremos 7 00:00:32,500 --> 00:00:34,439 un array, solo para 8 00:00:34,439 --> 00:00:36,640 consultar, no para modificar 9 00:00:36,640 --> 00:00:37,320 sus valores 10 00:00:37,320 --> 00:00:40,439 en este caso solo para 11 00:00:40,439 --> 00:00:42,579 consultar, para consultar su sueldo 12 00:00:42,579 --> 00:00:44,259 y llevarlo a otra variable 13 00:00:44,259 --> 00:00:46,359 pues hay otra 14 00:00:46,359 --> 00:00:48,560 estructura de for que mencionamos 15 00:00:48,560 --> 00:00:49,799 en su momento que es más sencilla 16 00:00:49,799 --> 00:00:52,140 que era esta 17 00:00:52,140 --> 00:00:53,399 el for each que 18 00:00:53,399 --> 00:00:56,560 es el for y ahora 19 00:00:56,560 --> 00:01:25,879 ¿Qué ponemos aquí? Ponemos el tipo de dato al que pertenece el array. En nuestro caso es profesor. Aquí un nombre de variable que yo no haya usado que me guste, pues p o prof o lo que sea. Y ahora aquí el array. Esta es otra estructura para recorrer una colección en general. Y un array en concreto es una colección. Ya veremos lo que es una colección, pero bueno, un array es un ejemplo concreto. 20 00:01:25,879 --> 00:01:46,060 Bueno, pues esta es una estructura para recorrer un array también. ¿Y qué significa? Pues el for va recorriendo, va saltando por el array, por todas y cada una de las posiciones y en cada iteración la posición se queda guardada en prof. 21 00:01:46,060 --> 00:01:48,359 Lo que haya en esa posición se queda guardado en prof 22 00:01:48,359 --> 00:01:51,319 ¿Vale? Entonces 23 00:01:51,319 --> 00:01:52,939 En la primera iteración 24 00:01:52,939 --> 00:01:54,299 Este prof de aquí 25 00:01:54,299 --> 00:01:58,159 Tiene el profesor que está en la primera posición 26 00:01:58,159 --> 00:02:00,459 En la segunda iteración 27 00:02:00,459 --> 00:02:01,579 Tiene el que está en la segunda 28 00:02:01,579 --> 00:02:03,480 Entonces si yo quiero hacer esto 29 00:02:03,480 --> 00:02:05,459 Con for each 30 00:02:05,459 --> 00:02:06,480 Sería esto 31 00:02:06,480 --> 00:02:12,229 Sueldo medio más igual prof 32 00:02:12,229 --> 00:02:13,530 Punto sueldo 33 00:02:13,530 --> 00:02:16,210 Entonces el for de arriba 34 00:02:16,210 --> 00:02:17,849 Y el for de abajo hacen lo mismo 35 00:02:17,849 --> 00:02:20,129 Bueno, si yo vuelvo a inicializarlo a cero, claro 36 00:02:20,129 --> 00:02:25,900 el for de arriba y el for de abajo 37 00:02:25,900 --> 00:02:26,740 hacen lo mismo 38 00:02:26,740 --> 00:02:31,689 este for va recorriendo 39 00:02:31,689 --> 00:02:33,710 todas y cada una de las posiciones 40 00:02:33,710 --> 00:02:35,289 del array que yo ponga aquí 41 00:02:35,289 --> 00:02:36,610 después de los dos puntos 42 00:02:36,610 --> 00:02:39,370 todas, desde el principio hasta el final 43 00:02:39,370 --> 00:02:41,969 y en cada iteración 44 00:02:41,969 --> 00:02:43,550 me mete al profesor 45 00:02:43,550 --> 00:02:45,610 que esté en esa posición, me lo mete en esta variable 46 00:02:45,610 --> 00:02:47,110 local que está creada aquí 47 00:02:47,110 --> 00:02:49,250 y solo existe dentro de ese for 48 00:02:49,250 --> 00:02:51,289 solo existe en ese for 49 00:02:51,289 --> 00:02:52,969 ¿vale? 50 00:02:52,969 --> 00:02:55,889 Entonces, en la primera iteración 51 00:02:55,889 --> 00:02:58,590 Prof es el primer profesor 52 00:02:58,590 --> 00:03:01,090 En la segunda iteración 53 00:03:01,090 --> 00:03:02,009 Prof es el segundo 54 00:03:02,009 --> 00:03:04,289 En la tercera iteración 55 00:03:04,289 --> 00:03:05,810 Prof es el tercero 56 00:03:05,810 --> 00:03:08,030 Luego esta es una forma muy fácil 57 00:03:08,030 --> 00:03:08,969 De escribir 58 00:03:08,969 --> 00:03:11,030 Cómo recorrer un array 59 00:03:11,030 --> 00:03:13,090 ¿Vale? 60 00:03:13,150 --> 00:03:15,129 Pero tiene dos pegas 61 00:03:15,129 --> 00:03:17,590 Dos pegas 62 00:03:17,590 --> 00:03:21,129 La buena 63 00:03:21,129 --> 00:03:24,050 la mala y la peor 64 00:03:24,050 --> 00:03:26,050 vale, la mala 65 00:03:26,050 --> 00:03:28,330 que este for te recorre todo el array entero 66 00:03:28,330 --> 00:03:30,330 sí o sí, desde el momento en que uno planta aquí este for 67 00:03:30,330 --> 00:03:32,150 este for te recorre 68 00:03:32,150 --> 00:03:34,330 este array entero de principio a fin 69 00:03:34,330 --> 00:03:36,330 se hace todas las 70 00:03:36,330 --> 00:03:36,969 iteraciones 71 00:03:36,969 --> 00:03:39,189 solo habría una forma 72 00:03:39,189 --> 00:03:41,349 de salir de este for 73 00:03:41,349 --> 00:03:44,310 que es haciendo el bestia, pero el bestia 74 00:03:44,310 --> 00:03:45,050 muy bestia 75 00:03:45,050 --> 00:03:48,370 que es el bestia bestísimo 76 00:03:48,370 --> 00:03:50,469 más bestia, que es poner un break 77 00:03:50,469 --> 00:03:52,650 en medio de un bucle, cuando uno pone un break 78 00:03:52,650 --> 00:03:54,550 en medio de un bucle, sales 79 00:03:54,550 --> 00:03:56,669 entonces si yo hiciera aquí un if 80 00:03:56,669 --> 00:03:58,550 con cualquier cosa 81 00:03:58,550 --> 00:03:59,969 y no sé qué 82 00:03:59,969 --> 00:04:01,289 y pongo aquí un break 83 00:04:01,289 --> 00:04:04,210 yo estoy haciendo este for each 84 00:04:04,210 --> 00:04:06,490 cuando esta condición se cumpliera 85 00:04:06,490 --> 00:04:07,509 pam 86 00:04:07,509 --> 00:04:10,550 ese bucle terminaría y yo saldría por aquí 87 00:04:10,550 --> 00:04:12,610 sería la única forma 88 00:04:12,610 --> 00:04:14,449 de que este bucle no 89 00:04:14,449 --> 00:04:16,529 recorriera todas y cada una 90 00:04:16,529 --> 00:04:17,930 de las posiciones 91 00:04:17,930 --> 00:04:20,170 esa es la primera pega que tiene 92 00:04:20,170 --> 00:04:22,850 sin embargo con el 93 00:04:22,850 --> 00:04:24,329 for de índice 94 00:04:24,329 --> 00:04:27,230 que llamamos el for de índice, tú aquí haces lo que te da la gana 95 00:04:27,230 --> 00:04:28,949 que quieres empezar en la 96 00:04:28,949 --> 00:04:30,949 quinta posición, pues empiezas 97 00:04:30,949 --> 00:04:32,870 con igual a 4 y vas desde la quinta 98 00:04:32,870 --> 00:04:34,670 que quieres 99 00:04:34,670 --> 00:04:37,250 acabar 3 posiciones 100 00:04:37,250 --> 00:04:38,889 antes, pues pones aquí menos 3 101 00:04:38,889 --> 00:04:40,269 acabas 3 posiciones antes 102 00:04:40,269 --> 00:04:42,490 que quieres ir de 2 en 2 103 00:04:42,490 --> 00:04:44,069 me he perdido abajo, ¿qué has intentado? 104 00:04:44,949 --> 00:04:46,670 ¿qué he intentado? he intentado y he conseguido 105 00:04:46,670 --> 00:04:47,449 ¿qué has conseguido? 106 00:04:47,449 --> 00:04:50,410 recorrer el array con otra sintaxis 107 00:04:50,410 --> 00:04:51,209 que es la del for each 108 00:04:51,209 --> 00:04:53,829 y estoy viendo la diferencia entre unas y otras 109 00:04:53,829 --> 00:04:58,829 esta es la sentencia, el bucle for each 110 00:04:58,829 --> 00:05:00,550 que te recorre este array entero 111 00:05:00,550 --> 00:05:01,649 de principio a fin 112 00:05:01,649 --> 00:05:03,689 y en cada iteración 113 00:05:03,689 --> 00:05:06,550 lo que hay en una posición va aquí 114 00:05:06,550 --> 00:05:09,449 entonces este no tiene libertad 115 00:05:09,449 --> 00:05:10,470 es lo que decía 116 00:05:10,470 --> 00:05:12,129 lo único que puedes hacer aquí es 117 00:05:12,129 --> 00:05:12,949 poner un break 118 00:05:12,949 --> 00:05:15,790 y en ese momento te sales del bucle 119 00:05:15,790 --> 00:05:17,089 pero es lo más que puedes hacer 120 00:05:17,089 --> 00:05:21,110 Si no, ese bucle se va a ejecutar de principio a fin, 121 00:05:21,189 --> 00:05:23,009 todas las iteraciones, desde la primera hasta la última. 122 00:05:23,750 --> 00:05:24,670 Entonces, un segundinín. 123 00:05:25,350 --> 00:05:27,970 Sin embargo, con este puedes jugar y hacer lo que te dé la 124 00:05:27,970 --> 00:05:28,149 gana. 125 00:05:28,790 --> 00:05:31,990 Empezar donde quieras, saltarte los que te den la gana, 126 00:05:32,129 --> 00:05:34,449 poner aquí un montón de condiciones para que salga la 127 00:05:34,449 --> 00:05:35,490 mitad si procede. 128 00:05:36,069 --> 00:05:39,189 Entonces, este for es el que te permite recorrer el array con 129 00:05:39,189 --> 00:05:40,649 toda la libertad que tú quieras. 130 00:05:41,310 --> 00:05:41,709 ¿Vale? 131 00:05:43,550 --> 00:05:46,029 Lo que pasa es que en este ejemplo concreto, así, 132 00:05:47,089 --> 00:05:49,350 el de arriba y el de abajo 133 00:05:49,350 --> 00:05:50,250 están haciendo lo mismo. 134 00:05:50,750 --> 00:05:51,790 En esta situación correcta 135 00:05:51,790 --> 00:05:52,930 están haciendo lo mismo, ¿vale? 136 00:05:53,350 --> 00:05:54,889 Pero aún así hay una diferencia. 137 00:05:55,189 --> 00:05:55,810 ¿Qué le vamos a decir? 138 00:05:55,970 --> 00:05:56,209 Dime. 139 00:05:56,569 --> 00:05:57,670 ¿Qué tiene de malo el break? 140 00:05:59,629 --> 00:06:02,769 Pues que el código se hace más ilegible. 141 00:06:03,569 --> 00:06:04,769 A ver, nosotros ahora mismo, 142 00:06:05,050 --> 00:06:07,230 todo nuestro código está recogido en 20 líneas. 143 00:06:07,790 --> 00:06:08,629 Entonces, tú ves un break 144 00:06:08,629 --> 00:06:10,949 y rápidamente vas a encontrar 145 00:06:10,949 --> 00:06:13,569 por qué el bucle tiene que interrumpir ahí. 146 00:06:13,750 --> 00:06:15,250 Lo vas a encontrar en la línea más arriba, 147 00:06:15,329 --> 00:06:15,709 lo que sea. 148 00:06:15,709 --> 00:06:17,930 pero con bucles que te van llegando 149 00:06:17,930 --> 00:06:19,689 cosas de una clase y de repente 150 00:06:19,689 --> 00:06:21,290 ves un break y dices, ostras 151 00:06:21,290 --> 00:06:23,810 ¿por qué se interrumpe esto de repente? 152 00:06:24,310 --> 00:06:25,889 para entender realmente el código 153 00:06:25,889 --> 00:06:27,970 igual tienes que moverte muchas maneras más arriba 154 00:06:27,970 --> 00:06:29,870 muchas maneras más abajo, entonces si tú 155 00:06:29,870 --> 00:06:31,910 sales por condiciones, si tú 156 00:06:31,910 --> 00:06:33,850 sales incorporándolo en el 157 00:06:33,850 --> 00:06:35,870 propio bucle, es que dentro del bucle 158 00:06:35,870 --> 00:06:38,050 del que sales, ya vas a estarlo viendo 159 00:06:38,050 --> 00:06:39,730 sobre todo se hace 160 00:06:39,730 --> 00:06:40,709 porque en general 161 00:06:40,709 --> 00:06:43,750 facilita la legibilidad el que 162 00:06:43,750 --> 00:06:45,910 no haya muchos break, es un tema 163 00:06:45,910 --> 00:06:47,970 de elegancia, pero luego 164 00:06:47,970 --> 00:06:49,930 al final pues se hacen muchos break y se hacen 165 00:06:49,930 --> 00:06:52,189 continuos, que también es otra forma de saltarse 166 00:06:52,189 --> 00:06:53,769 digamos que el break tiene 167 00:06:53,769 --> 00:06:55,089 mala fama, porque 168 00:06:55,089 --> 00:06:57,589 antes de la programación estructurada 169 00:06:57,589 --> 00:06:59,610 con el basic y estas cosas 170 00:06:59,610 --> 00:07:02,009 se podían 171 00:07:02,009 --> 00:07:03,470 hacer los programas de forma que tú te ibas a 172 00:07:03,470 --> 00:07:05,149 te daba la gana en cada momento 173 00:07:05,149 --> 00:07:07,810 con la asistencia go to te ibas a donde querías 174 00:07:07,810 --> 00:07:09,209 con la break salías 175 00:07:09,209 --> 00:07:11,810 esos eran programas que hacían sus cosas 176 00:07:11,810 --> 00:07:13,310 pero eran lo que se llamaba 177 00:07:13,310 --> 00:07:15,670 desestructurados, entonces eran muy 178 00:07:15,670 --> 00:07:18,009 legibles y muy difíciles 179 00:07:18,009 --> 00:07:19,910 de mantener, cuando tú tienes en un código 180 00:07:19,910 --> 00:07:22,069 un break y quieres cambiar la funcionalidad 181 00:07:22,069 --> 00:07:24,110 es muy probable que tenga implicaciones 182 00:07:24,110 --> 00:07:25,389 grandes en muchos sitios 183 00:07:25,389 --> 00:07:27,829 entonces, se estructuró 184 00:07:27,829 --> 00:07:29,670 todo y se dijo, a ver, no hace falta 185 00:07:29,670 --> 00:07:31,629 no hacen falta ni los go to's 186 00:07:31,629 --> 00:07:32,589 ni los break, ni nada 187 00:07:32,589 --> 00:07:35,410 si tú tienes asignaciones a variables 188 00:07:35,410 --> 00:07:36,850 decisiones y bucles 189 00:07:36,850 --> 00:07:39,930 sin break, sin go to, ni nada, puedes hacer lo que quieras 190 00:07:39,930 --> 00:07:40,810 combinando eso 191 00:07:40,810 --> 00:07:43,009 entonces eso ya fue la programación estructurada 192 00:07:43,009 --> 00:07:59,689 Entonces, ahí ya cogió mala prensa los break, porque era como arrastrar los malos hábitos de antes. Entonces, la idea es esa, que en general el abuso de los break puede hacer que el programa sea difícil de entender, a lo mejor. 193 00:07:59,689 --> 00:08:01,569 pero es solamente esa la razón 194 00:08:01,569 --> 00:08:04,310 pues en muchas ocasiones 195 00:08:04,310 --> 00:08:06,029 es cómodo y está claro, pues se pone 196 00:08:06,029 --> 00:08:08,089 y ya está, pero hombre, abusar de ellos 197 00:08:08,089 --> 00:08:10,209 programar abusando de ellos 198 00:08:10,209 --> 00:08:11,269 pues no tiene buena 199 00:08:11,269 --> 00:08:14,069 no tiene buena prensa, ¿vale? 200 00:08:14,850 --> 00:08:16,589 puede llegar un momento en que tu programa 201 00:08:16,589 --> 00:08:18,350 está muy bien y que ha habido un montón de break 202 00:08:18,350 --> 00:08:19,649 lo hereda otro 203 00:08:19,649 --> 00:08:22,470 y esa persona ahora tiene que hacer una modificación 204 00:08:22,470 --> 00:08:24,290 y tiene que hacer muchos más 205 00:08:24,290 --> 00:08:26,050 cambios seguramente que si tú lo hubieras 206 00:08:26,050 --> 00:08:27,170 estructurado de otra manera 207 00:08:27,170 --> 00:08:29,209 vale 208 00:08:29,209 --> 00:08:49,190 Bueno, pues entonces, la pega mala es esta primera que hemos dicho, que este lo recorre de principio a fin. Y no hay forma de salirte a la mitad si no es poniendo un break. Aquí te puedes salir a la mitad con una condición, puedes empezar cuando quieras, etc. Eso por un lado. Esa es la pega mala. 209 00:08:49,190 --> 00:08:51,570 pero tiene otra que esa es la peor 210 00:08:51,570 --> 00:08:53,490 que esa es la peor 211 00:08:53,490 --> 00:08:55,129 que es 212 00:08:55,129 --> 00:08:57,730 que este profesor es de i 213 00:08:57,730 --> 00:08:59,850 es directamente 214 00:08:59,850 --> 00:09:01,210 es directamente 215 00:09:01,210 --> 00:09:02,970 la variable donde está la 216 00:09:02,970 --> 00:09:04,490 que está en el array 217 00:09:04,490 --> 00:09:05,870 directamente 218 00:09:05,870 --> 00:09:08,169 pero esta es una copia 219 00:09:08,169 --> 00:09:11,250 con lo cual vamos a ver que ocurriría 220 00:09:11,250 --> 00:09:12,570 vamos a 221 00:09:12,570 --> 00:09:15,210 claro, este bucle for 222 00:09:15,210 --> 00:09:16,730 que hemos hecho aquí 223 00:09:16,730 --> 00:09:17,850 que rellena los profesores 224 00:09:17,850 --> 00:09:19,970 Vamos a hacer esto mismo 225 00:09:19,970 --> 00:09:21,210 Porque según lo que yo he dicho 226 00:09:21,210 --> 00:09:23,090 Ah, pues esto no lo podríamos hacer con un for each 227 00:09:23,090 --> 00:09:24,509 Y nos quedamos tan anchos 228 00:09:24,509 --> 00:09:26,970 Vamos a hacerlo con un for each, esto mismo de arriba 229 00:09:26,970 --> 00:09:27,929 Rellenarlo 230 00:09:27,929 --> 00:09:30,809 Pues para cada profesor 231 00:09:30,809 --> 00:09:31,470 P 232 00:09:31,470 --> 00:09:35,850 En profesores.le 233 00:09:35,850 --> 00:09:38,389 Uy, que tontería estoy haciendo 234 00:09:38,389 --> 00:09:39,129 En profesores 235 00:09:39,129 --> 00:09:40,730 Vale 236 00:09:40,730 --> 00:09:42,970 Vamos a hacer esto pero con 237 00:09:42,970 --> 00:09:44,730 Con prof 238 00:09:44,730 --> 00:09:46,669 Copio y pego esto 239 00:09:46,669 --> 00:09:53,100 Y hacemos 240 00:09:53,100 --> 00:09:54,740 Prof 241 00:09:54,740 --> 00:10:02,679 Prof y prof 242 00:10:02,679 --> 00:10:04,379 Vale, teóricamente 243 00:10:04,379 --> 00:10:06,539 Hemos, bueno, aquí es que no puedo 244 00:10:06,539 --> 00:10:08,539 Poner el i, pero le pongo algo aleatorio 245 00:10:08,539 --> 00:10:10,299 Y se acabó, para que cambie los nombres 246 00:10:10,299 --> 00:10:12,539 Math.random 247 00:10:13,480 --> 00:10:14,580 Y aquí que 248 00:10:14,580 --> 00:10:16,440 También concatene con 249 00:10:16,440 --> 00:10:18,539 Math.random, y así me aseguro que los 250 00:10:18,539 --> 00:10:20,240 Nombres y los nifs son distintos 251 00:10:20,240 --> 00:10:22,139 Vale 252 00:10:22,139 --> 00:10:24,700 Entonces 253 00:10:24,700 --> 00:10:26,879 voy a quitar esto de aquí para ver el programa 254 00:10:26,879 --> 00:10:28,740 o con otros hay diferencias 255 00:10:28,740 --> 00:10:30,559 bueno, aquí todavía no he hecho nada 256 00:10:30,559 --> 00:10:32,919 he hecho la media, vamos a mostrar la media 257 00:10:32,919 --> 00:10:35,139 para que 258 00:10:35,139 --> 00:10:43,669 es que tienes 259 00:10:43,669 --> 00:10:45,350 los algoritmos de random casi todos 260 00:10:45,350 --> 00:10:47,210 parten del 261 00:10:47,210 --> 00:10:48,909 tiempo del sistema 262 00:10:48,909 --> 00:10:50,789 porque ese es el único que es único 263 00:10:50,789 --> 00:10:53,730 claro, tienes que mirar el reloj 264 00:10:53,730 --> 00:10:59,350 claro, porque la aleatoriedad 265 00:10:59,350 --> 00:11:01,590 no existe en programación, es imposible 266 00:11:01,590 --> 00:11:03,370 claro, entonces 267 00:11:03,370 --> 00:11:05,570 se simula, y la mejor 268 00:11:05,570 --> 00:11:07,470 semilla para simularla es la hora del 269 00:11:07,470 --> 00:11:09,669 sistema medida al segundo, porque esa es única 270 00:11:09,669 --> 00:11:11,470 entonces hay diferentes algoritmos 271 00:11:11,470 --> 00:11:13,850 para simularla, pero no es completamente aleatoria 272 00:11:13,850 --> 00:11:15,490 entonces 273 00:11:15,490 --> 00:11:17,350 claro 274 00:11:17,350 --> 00:11:18,850 las lámparas de lava 275 00:11:18,850 --> 00:11:21,389 si, hay una empresa de seguridad muy grande 276 00:11:21,389 --> 00:11:23,269 que lo que tienen es a la entrada 277 00:11:23,269 --> 00:11:25,070 un montón de lámparas de lava 278 00:11:25,070 --> 00:11:27,730 y una cámara va captando 279 00:11:27,730 --> 00:11:32,629 las posiciones de las figuras que hace 280 00:11:32,629 --> 00:11:34,830 y va generando las contraseñas a base de eso. 281 00:11:35,009 --> 00:11:37,450 Eso es efectivamente bastante más aleatorio 282 00:11:37,450 --> 00:11:39,110 que la obra del sistema, lógicamente. 283 00:11:39,809 --> 00:11:40,309 Claro que sí. 284 00:11:40,309 --> 00:11:45,309 Claro, es que encontrar... 285 00:11:48,710 --> 00:11:53,389 Venga, entonces, seguimos. 286 00:11:54,509 --> 00:11:54,889 Vale. 287 00:11:54,889 --> 00:11:58,590 A ver, hacedme caso que esto es muy interesante 288 00:11:58,590 --> 00:12:00,649 No os despistéis 289 00:12:00,649 --> 00:12:01,409 Vale 290 00:12:01,409 --> 00:12:02,990 Aquí 291 00:12:02,990 --> 00:12:05,149 Pero si esto es lo de antes 292 00:12:05,149 --> 00:12:10,629 Vale, vamos a volver a 293 00:12:10,629 --> 00:12:12,289 Ejecutar este programa 294 00:12:12,289 --> 00:12:14,009 Vamos a revisar que tenía este programa 295 00:12:14,009 --> 00:12:15,929 Que nadie esté perdido, ni se pierda 296 00:12:15,929 --> 00:12:16,629 ¿Tú estás perdido? 297 00:12:17,250 --> 00:12:20,570 Ah, es que me miras con cara de qué coñazo me está soltando esta tía 298 00:12:20,570 --> 00:12:24,289 Es que le he leído los labios 299 00:12:24,289 --> 00:12:25,669 Bueno 300 00:12:25,669 --> 00:12:28,889 Pero al menos 301 00:12:28,889 --> 00:12:31,230 Mastica escondido detrás de la pantalla 302 00:12:31,230 --> 00:12:32,190 Que yo no te vea 303 00:12:32,190 --> 00:12:35,570 No sé si están prohibidos 304 00:12:35,570 --> 00:12:36,070 Pero bueno 305 00:12:36,070 --> 00:12:37,870 Siempre será mejor que 306 00:12:37,870 --> 00:12:40,110 Vale, el chicle lo pasamos por alto 307 00:12:40,110 --> 00:12:41,289 Creo que no están las normas de aula 308 00:12:41,289 --> 00:12:41,990 La comida sí 309 00:12:41,990 --> 00:12:44,889 Venga, a ver, seguimos 310 00:12:44,889 --> 00:12:46,590 Vamos a revisar este programa 311 00:12:46,590 --> 00:12:50,269 Que hace parte grave 312 00:12:50,269 --> 00:12:51,710 A ver 313 00:12:51,710 --> 00:12:52,929 Habíamos hecho 314 00:12:52,929 --> 00:12:55,169 un array de 100 profesores 315 00:12:55,169 --> 00:12:56,809 venga, 100, a lo bestia 316 00:12:56,809 --> 00:12:59,490 lo rellenamos con un for 317 00:12:59,490 --> 00:13:00,470 de toda la vida 318 00:13:00,470 --> 00:13:03,269 vale, entonces, este lo vamos a comentar 319 00:13:03,269 --> 00:13:05,429 porque ahora vamos a hacer este mismo programa 320 00:13:05,429 --> 00:13:06,429 pero usando el for each 321 00:13:06,429 --> 00:13:09,389 con lo que yo he dicho, esto y esto es lo mismo 322 00:13:09,389 --> 00:13:11,450 ¿no? esto va haciendo iteraciones 323 00:13:11,450 --> 00:13:12,210 una tras otra 324 00:13:12,210 --> 00:13:15,789 va una tras otra profesores, en cada iteración 325 00:13:15,789 --> 00:13:17,309 cada posición del array 326 00:13:17,309 --> 00:13:18,789 se carga aquí 327 00:13:18,789 --> 00:13:21,049 en cada iteración, cada 328 00:13:21,049 --> 00:13:22,929 posición de la raíz se carga aquí 329 00:13:22,929 --> 00:13:25,549 con lo cual lo de arriba 330 00:13:25,549 --> 00:13:27,210 y lo de abajo es lo mismo 331 00:13:27,210 --> 00:13:28,669 me da igual profesores de i 332 00:13:28,669 --> 00:13:30,909 empezando con i igual a cero 333 00:13:30,909 --> 00:13:32,809 y acabando al final yendo de uno en uno 334 00:13:32,809 --> 00:13:34,970 me da igual que esto 335 00:13:34,970 --> 00:13:37,710 vale, pues entonces vamos a cambiarlo 336 00:13:37,710 --> 00:13:40,929 para hacerlo de esa otra manera 337 00:13:40,929 --> 00:13:43,470 vale, rellenamos los profesores 338 00:13:43,470 --> 00:13:45,389 y ahora ya hacemos todo lo que 339 00:13:45,389 --> 00:13:47,129 teníamos que hacer, ya los tenemos rellenos 340 00:13:47,129 --> 00:13:49,269 pues vamos a mostrar los datos 341 00:13:49,269 --> 00:13:50,950 que tenía, que lo mostrábamos aquí 342 00:13:50,950 --> 00:13:53,350 vamos a ver el que más gana con el sueldo máximo 343 00:13:53,350 --> 00:13:55,049 y luego aquí además 344 00:13:55,049 --> 00:13:56,710 hemos incorporado la media de dos 345 00:13:56,710 --> 00:13:58,269 bueno, esto ya lo probamos el otro día 346 00:13:58,269 --> 00:14:01,049 y bien, y nos hizo el máximo y todo estupendo 347 00:14:01,049 --> 00:14:03,210 ¿vale? rellenando con esto 348 00:14:03,210 --> 00:14:05,250 pues vamos a hacer ahora la misma prueba 349 00:14:05,250 --> 00:14:06,990 en la que hemos cambiado a este otro for 350 00:14:06,990 --> 00:14:09,350 que teóricamente es lo mismo 351 00:14:09,350 --> 00:14:11,269 venga 352 00:14:11,269 --> 00:14:17,669 ala 353 00:14:17,669 --> 00:14:18,929 directamente 354 00:14:18,929 --> 00:14:22,049 teóricamente hemos hecho lo mismo 355 00:14:22,049 --> 00:14:24,669 y si vosotros no tuvierais la suerte 356 00:14:24,669 --> 00:14:27,250 de que yo fuera a explicar ahora la diferencia 357 00:14:27,250 --> 00:14:28,750 entre el for it y el for the índice 358 00:14:28,750 --> 00:14:31,470 pues cometeréis errores muchas veces en vuestra vida 359 00:14:31,470 --> 00:14:33,269 y este es el que más sale 360 00:14:33,269 --> 00:14:34,610 el null pointer exception 361 00:14:34,610 --> 00:14:37,490 null pointer exception 362 00:14:37,490 --> 00:14:38,350 un objeto nulo 363 00:14:38,350 --> 00:14:40,649 ¿dónde me está saliendo objeto nulo? 364 00:14:41,429 --> 00:14:43,250 pues cuando intentas recorrer el array 365 00:14:43,250 --> 00:14:46,049 para mostrarlo, pero ¿cómo que null pointer exception? 366 00:14:46,169 --> 00:14:47,509 o sea, lo que me está diciendo la excepción 367 00:14:47,509 --> 00:14:49,389 es, si la leemos bien 368 00:14:49,389 --> 00:14:51,809 claro, me está diciendo 369 00:14:51,809 --> 00:14:53,809 no puedo leer la propiedad 370 00:14:53,809 --> 00:14:55,769 nombre porque profesores de i es 371 00:14:55,769 --> 00:14:56,070 null 372 00:14:56,070 --> 00:14:59,669 entonces efectivamente 373 00:14:59,669 --> 00:15:01,850 pinchamos ahí, pero como va a ser 374 00:15:01,850 --> 00:15:04,070 profesores de i null, si yo he rellenado 375 00:15:04,070 --> 00:15:05,669 el array, he rellenado el array 376 00:15:05,669 --> 00:15:07,889 claro, pero como ha funcionado 377 00:15:07,889 --> 00:15:09,090 como funciona el for each 378 00:15:09,090 --> 00:15:11,730 pues el for each funciona, vamos a ver 379 00:15:11,730 --> 00:15:13,009 si ahora nos sale un paint 380 00:15:13,009 --> 00:15:15,730 vamos a ver si nos sale un paint tan estupendo 381 00:15:15,730 --> 00:15:16,610 como el del otro día 382 00:15:16,610 --> 00:15:19,649 ay cuando lleguen las pizarras 383 00:15:19,649 --> 00:15:20,990 digitales que feliz voy a ser 384 00:15:20,990 --> 00:15:22,070 bueno 385 00:15:22,070 --> 00:15:25,669 a ver, ¿qué hace el for each? 386 00:15:25,850 --> 00:15:27,009 importante que lo entendáis 387 00:15:27,009 --> 00:15:31,370 a ver, el caso 388 00:15:31,370 --> 00:15:33,649 es que yo juraría que tengo una en casa guardada 389 00:15:33,649 --> 00:15:35,090 de cuando el confinamiento 390 00:15:35,090 --> 00:15:35,909 la voy a buscar 391 00:15:35,909 --> 00:15:39,590 y os vais a cagar 392 00:15:39,590 --> 00:15:40,669 entonces ya sí que 393 00:15:40,669 --> 00:15:45,710 vale, este es nuestro array 394 00:15:45,710 --> 00:15:47,750 vale, ¿qué hace el for each? 395 00:15:48,190 --> 00:15:49,830 pues cuando el for each arranca 396 00:15:49,830 --> 00:15:50,490 ¿el qué hace? 397 00:15:50,490 --> 00:15:53,049 se crea una variable local 398 00:15:53,049 --> 00:15:55,110 a la que llama prof 399 00:15:55,110 --> 00:15:56,529 como hayamos puesto aquí 400 00:15:56,529 --> 00:15:58,509 en nuestro caso a la que llama prof 401 00:15:58,509 --> 00:16:01,370 a esta, y a esta variable local 402 00:16:01,370 --> 00:16:06,100 la llama prof, vale 403 00:16:06,100 --> 00:16:09,059 y ahora, en cada iteración 404 00:16:09,059 --> 00:16:11,039 del for each, en cada iteración 405 00:16:11,039 --> 00:16:26,169 de estas, vale 406 00:16:26,169 --> 00:16:28,169 pues que hace el for each, en cada iteración 407 00:16:28,169 --> 00:16:30,210 de esta, mete en esta variable 408 00:16:30,210 --> 00:16:32,049 prof local suya que se ha creado 409 00:16:32,049 --> 00:16:33,970 mete una copia 410 00:16:33,970 --> 00:16:36,350 de lo que hay aquí. Mete una copia. 411 00:16:37,490 --> 00:16:38,429 ¿Qué había aquí en este 412 00:16:38,429 --> 00:16:40,210 array cuando lo hemos creado al principio? 413 00:16:40,950 --> 00:16:42,230 Cuando este array lo hemos creado 414 00:16:42,230 --> 00:16:44,049 al principio, lo único que había aquí 415 00:16:44,049 --> 00:16:45,850 era un montón de nules. 416 00:16:46,990 --> 00:16:48,330 Vale. Había un montón 417 00:16:48,330 --> 00:16:49,169 de nules ahí. 418 00:16:50,549 --> 00:16:52,210 Vale. Todo esto iba a nul. 419 00:16:54,840 --> 00:16:55,259 Sí. 420 00:16:55,259 --> 00:16:55,320 Sí. 421 00:16:59,480 --> 00:17:00,639 Sí está triste. 422 00:17:04,339 --> 00:17:05,319 Espera, espérate. 423 00:17:05,319 --> 00:17:07,740 Escucha todo lo que estoy diciendo porque es importante 424 00:17:07,740 --> 00:17:09,579 Vale, entonces teníamos 425 00:17:09,579 --> 00:17:11,140 Este array que iba a null 426 00:17:11,140 --> 00:17:13,200 Pues que ha hecho este for 427 00:17:13,200 --> 00:17:15,059 Ha cogido este array 428 00:17:15,059 --> 00:17:17,319 En cada iteración 429 00:17:17,319 --> 00:17:19,500 Se ha llevado una copia, con lo cual al llevarse 430 00:17:19,500 --> 00:17:21,660 Una copia, esto sigue apuntando 431 00:17:21,660 --> 00:17:23,660 A null, vale, sigue apuntando a null 432 00:17:23,660 --> 00:17:25,619 Hasta ahí está claro, luego que ha 433 00:17:25,619 --> 00:17:27,839 Hecho, que hemos hecho después 434 00:17:27,839 --> 00:17:28,839 Aquí 435 00:17:28,839 --> 00:17:30,980 Ha creado un nuevo objeto 436 00:17:30,980 --> 00:17:33,240 Vale, ha creado un nuevo objeto 437 00:17:33,240 --> 00:17:36,509 Lo ha dejado 438 00:17:36,509 --> 00:17:38,990 apuntando ese nuevo objeto que ha creado 439 00:17:38,990 --> 00:17:40,390 por la variable prof 440 00:17:40,390 --> 00:17:43,069 es decir, lo ha dejado apuntando por esta 441 00:17:43,069 --> 00:17:46,390 conclusión 442 00:17:46,390 --> 00:17:48,210 el nuevo objeto se ha quedado en prof 443 00:17:48,210 --> 00:17:49,769 el array no se ha enterado de nada 444 00:17:49,769 --> 00:17:51,589 el nuevo objeto se ha quedado en prof 445 00:17:51,589 --> 00:17:54,109 siguiente iteración del for each 446 00:17:54,109 --> 00:17:56,190 ha creado otro objeto 447 00:17:56,190 --> 00:17:57,769 lo ha dejado apuntando por prof 448 00:17:57,769 --> 00:17:58,990 y la ha desaparecido 449 00:17:58,990 --> 00:18:00,450 claro 450 00:18:00,450 --> 00:18:04,690 porque está trabajando con la copia 451 00:18:04,690 --> 00:18:06,430 con lo cual, cuando consultamos 452 00:18:06,430 --> 00:18:08,750 para consultar 453 00:18:08,750 --> 00:18:11,349 no hay problema, porque cuando el objeto ya existe 454 00:18:11,349 --> 00:18:13,549 claro, cuando el objeto ya existe 455 00:18:13,549 --> 00:18:14,890 me da igual llegar a él 456 00:18:14,890 --> 00:18:16,289 desde la copia 457 00:18:16,289 --> 00:18:19,509 que desde aquí, que desde la RAI 458 00:18:19,509 --> 00:18:21,210 me da lo mismo, cuando el objeto ya existe 459 00:18:21,210 --> 00:18:22,970 me da igual acceder por profesores de I 460 00:18:22,970 --> 00:18:25,750 que será este, que por prof que será este 461 00:18:25,750 --> 00:18:27,650 pero cuando ya existe 462 00:18:27,650 --> 00:18:29,630 ya, pero es muy cómodo 463 00:18:29,630 --> 00:18:31,369 describirlo otro, y lo vais a ver 464 00:18:31,369 --> 00:18:32,430 mucho, ¿vale? 465 00:18:34,210 --> 00:18:36,170 entonces cuando solo vais a consultar 466 00:18:36,170 --> 00:18:41,069 El forEach es lo más cómodo porque me da igual consultar desde profesores de I que consultar desde la copia. 467 00:18:41,849 --> 00:18:49,390 Pero cuando vamos a cambiar el objeto del array, vamos a cambiarlo, si lo cambiamos, solo lo cambiamos en prof. 468 00:18:49,690 --> 00:18:50,910 El array no se ha enterado de nada. 469 00:18:52,069 --> 00:19:00,990 Entonces, por eso, cuando después de haber hecho este forEach, hemos tratado de hacer a profesores de I, este profesores de I seguía teniendo null. 470 00:19:00,990 --> 00:19:04,230 Bueno, pues cuidado con el foreach 471 00:19:04,230 --> 00:19:06,690 Porque se usa continuamente, porque es muy cómodo 472 00:19:06,690 --> 00:19:08,349 Pero si lo que hay dentro 473 00:19:08,349 --> 00:19:10,509 Cambia a donde 474 00:19:10,509 --> 00:19:11,869 Apunte profesores de i 475 00:19:11,869 --> 00:19:13,289 Porque crea un objeto nuevo 476 00:19:13,289 --> 00:19:15,450 O porque lo lleva a apuntar a otro, por lo que sea 477 00:19:15,450 --> 00:19:18,009 El i menor que el array 478 00:19:18,009 --> 00:19:19,750 También es muy cómodo 479 00:19:19,750 --> 00:19:22,289 Ya, ya, bueno 480 00:19:22,289 --> 00:19:23,490 Vale, pero 481 00:19:23,490 --> 00:19:25,690 Sí, porque 482 00:19:25,690 --> 00:19:26,170 Sí 483 00:19:26,170 --> 00:19:29,470 Porque además para colecciones, de hecho 484 00:19:29,470 --> 00:19:31,549 Para conjuntos 485 00:19:31,549 --> 00:19:33,170 El for de índice no lo podrías usar 486 00:19:33,170 --> 00:19:34,710 Entonces más o menos es un hábito 487 00:19:34,710 --> 00:19:36,869 Vale, conclusión 488 00:19:36,869 --> 00:19:38,930 Nunca jamás utilizaríamos 489 00:19:38,930 --> 00:19:40,849 Esto jamás 490 00:19:40,849 --> 00:19:42,930 Jamás 491 00:19:42,930 --> 00:19:46,779 Y además entendéis por qué 492 00:19:46,779 --> 00:19:47,460 Que es lo que importa 493 00:19:47,460 --> 00:19:49,859 Vale, pues esto ya se queda comentado 494 00:19:49,859 --> 00:19:52,920 Y esta parte de rellenar 495 00:19:52,920 --> 00:19:53,759 Sí que nos importa 496 00:19:53,759 --> 00:19:56,519 A mí esa parte me da error 497 00:19:56,519 --> 00:19:59,420 Pero si esta es del otro día 498 00:19:59,420 --> 00:20:00,160 No te puede dar error 499 00:20:00,160 --> 00:20:00,839 Venga 500 00:20:00,839 --> 00:20:04,980 no pasa nada 501 00:20:04,980 --> 00:20:06,579 tú como eres hombre puedes hacer dos cosas a la vez 502 00:20:06,579 --> 00:20:09,079 y según vamos explicando tú vas encontrando tu error 503 00:20:09,079 --> 00:20:10,559 venga 504 00:20:10,559 --> 00:20:12,880 vale pues entonces 505 00:20:12,880 --> 00:20:14,319 estábamos con el 506 00:20:14,319 --> 00:20:17,259 estábamos con el sueldo 507 00:20:17,259 --> 00:20:18,099 medio y subir 508 00:20:18,099 --> 00:20:19,680 vale pues el sueldo medio 509 00:20:19,680 --> 00:20:22,279 este si lo hacemos sin miedo con un for each 510 00:20:22,279 --> 00:20:24,759 porque aquí lo único que hacemos es acceder a los datos 511 00:20:24,759 --> 00:20:25,279 del objeto 512 00:20:25,279 --> 00:20:28,000 pues esto lo hacemos con un for each 513 00:20:28,000 --> 00:20:30,460 con lo cual esto de aquí 514 00:20:30,460 --> 00:20:32,440 ya hasta lo borro directamente. Lo hacemos 515 00:20:32,440 --> 00:20:34,359 con un for each y ya está, porque solamente estamos haciendo 516 00:20:34,359 --> 00:20:36,339 los datos, ¿vale? Y a todos 517 00:20:36,339 --> 00:20:38,400 además, luego. Y ahora 518 00:20:38,400 --> 00:20:39,720 ya, ¿qué teníamos que hacer aquí? 519 00:20:40,660 --> 00:20:42,420 Pues ahora ya subir el sueldo a los 520 00:20:42,420 --> 00:20:44,440 que tuvieran menos de la media. Pues 521 00:20:44,440 --> 00:20:46,059 venga, pues vamos a 522 00:20:46,059 --> 00:20:47,880 hacer eso y ya está. 523 00:20:48,859 --> 00:20:49,640 Aquí de nuevo, 524 00:20:50,440 --> 00:20:52,279 el objeto no lo muevo de sitio, 525 00:20:52,519 --> 00:20:54,420 solamente haced a los datos, con lo cual puede ir 526 00:20:54,420 --> 00:20:55,500 a un for each, no pasa nada. 527 00:20:56,660 --> 00:20:58,640 Y además voy a... 528 00:20:58,640 --> 00:21:00,359 Está volviendo a rellenar el sueldo. 529 00:21:00,460 --> 00:21:02,779 sí, pero el objeto 530 00:21:02,779 --> 00:21:04,319 que ya está creado 531 00:21:04,319 --> 00:21:07,099 este, entonces me da igual apuntarlo desde aquí 532 00:21:07,099 --> 00:21:08,940 que desde aquí, lo que estoy cambiando 533 00:21:08,940 --> 00:21:10,799 es lo que va aquí dentro, pero no estoy 534 00:21:10,799 --> 00:21:12,119 moviendo el objeto de un sitio a otro 535 00:21:12,119 --> 00:21:18,859 claro, porque 536 00:21:18,859 --> 00:21:20,859 el problema es cuando este objeto se 537 00:21:20,859 --> 00:21:22,519 mueve a otra dirección de memoria 538 00:21:22,519 --> 00:21:24,900 ¿vale? como cuando creas 539 00:21:24,900 --> 00:21:26,940 uno nuevo, claro, porque inicialmente 540 00:21:26,940 --> 00:21:28,920 es nul, al crear otro es otra dirección, que no es 541 00:21:28,920 --> 00:21:30,819 la nul. O si le hicieras a 542 00:21:30,819 --> 00:21:32,920 profesores de i, le asignaras otro objeto diferente. 543 00:21:33,059 --> 00:21:34,599 Profesores de z. Pues 544 00:21:34,599 --> 00:21:36,440 ese se asignaría a este. Cuando 545 00:21:36,440 --> 00:21:38,859 cambias la dirección donde está 546 00:21:38,859 --> 00:21:40,740 el objeto. Pero aquí estamos cambiando los valores. 547 00:21:40,900 --> 00:21:42,799 El objeto sigue ahí colocado. Entonces 548 00:21:42,799 --> 00:21:44,759 me da igual acceder desde aquí que acceder desde aquí. 549 00:21:45,039 --> 00:21:46,839 Llego a los mismos valores y la 550 00:21:46,839 --> 00:21:48,519 modificación se queda ahí. ¿Vale? 551 00:21:49,519 --> 00:21:50,779 Vale, pues entonces 552 00:21:50,779 --> 00:21:54,819 para cada profesor en 553 00:21:54,819 --> 00:21:56,819 profesores, ¿qué hacemos? 554 00:21:57,940 --> 00:21:58,759 Pues ya está. Ponemos 555 00:21:58,759 --> 00:22:01,099 las llavecitas, si el sueldo 556 00:22:01,099 --> 00:22:02,039 de prof, entonces 557 00:22:02,039 --> 00:22:04,980 su sueldo es 558 00:22:04,980 --> 00:22:06,980 menor que el sueldo 559 00:22:06,980 --> 00:22:07,480 medio 560 00:22:07,480 --> 00:22:11,059 pues le subimos un 10% 561 00:22:11,059 --> 00:22:11,700 que era 562 00:22:11,700 --> 00:22:16,119 prof.sueldo 563 00:22:16,119 --> 00:22:16,980 más 564 00:22:16,980 --> 00:22:18,880 por igual 565 00:22:18,880 --> 00:22:22,720 por igual 1,1 566 00:22:22,720 --> 00:22:27,119 1,1 567 00:22:27,119 --> 00:22:28,319 y ya está 568 00:22:28,319 --> 00:22:30,799 He subido el sueldo el 10% 569 00:22:30,799 --> 00:22:33,259 A todos los que ganan menos de la media 570 00:22:33,259 --> 00:22:35,279 Vamos a mostrar 571 00:22:35,279 --> 00:22:36,319 Los nuevos sueldos 572 00:22:36,319 --> 00:22:37,059 Pues venga 573 00:22:37,059 --> 00:22:41,359 Copio el for en el que tenía 574 00:22:41,359 --> 00:22:48,819 Los nombres y los sueldos 575 00:22:48,819 --> 00:22:51,460 Pues este mismo for 576 00:22:51,460 --> 00:22:56,910 Vale 577 00:22:56,910 --> 00:22:58,750 Y en lugar de 100 voy a poner 578 00:22:58,750 --> 00:23:00,670 10 para verlo 579 00:23:00,670 --> 00:23:02,250 Que si no no vemos nada 580 00:23:02,250 --> 00:23:04,509 Vale 581 00:23:04,509 --> 00:23:07,890 Vale pues ya está 582 00:23:07,890 --> 00:23:11,589 Los 10 pepitos 583 00:23:11,589 --> 00:23:13,130 Estos son sus sueldos 584 00:23:13,130 --> 00:23:14,710 El que más gana es el 6 585 00:23:14,710 --> 00:23:17,450 Que gana casi 1000 euros 586 00:23:17,450 --> 00:23:18,529 Casi, casi 587 00:23:18,529 --> 00:23:21,470 Y ahora ya nos han subido 588 00:23:21,470 --> 00:23:22,970 Un 10% a todos 589 00:23:22,970 --> 00:23:26,029 Ah no, a todos no, a los que ganan menos de la media 590 00:23:26,029 --> 00:23:28,089 Al pepito 6 que ganaba tantísimo 591 00:23:28,089 --> 00:23:28,890 No le han subido nada 592 00:23:28,890 --> 00:23:30,750 Pero si le han subido 593 00:23:30,750 --> 00:23:33,950 Pues al 9 594 00:23:33,950 --> 00:23:35,809 Que ganaba menos, pues si le han subido 595 00:23:35,809 --> 00:23:38,890 bueno, pues todo no funciona 596 00:23:38,890 --> 00:23:39,490 y todo bien 597 00:23:39,490 --> 00:23:47,430 ¿hasta dónde lo muestro? 598 00:23:56,059 --> 00:23:58,019 sí, luego después al final, claro 599 00:23:58,019 --> 00:24:02,309 ¿qué? 600 00:24:06,779 --> 00:24:08,160 ¿a dónde hay que subir y bajar? 601 00:24:08,160 --> 00:24:09,779 a ver, aquí 602 00:24:09,779 --> 00:24:10,960 de primeras