1 00:00:00,000 --> 00:00:06,600 Vale, pues estábamos en el caso 1 del menú, 2 00:00:06,600 --> 00:00:13,200 el caso 1 habíamos dicho, el caso 1 tiene dos posibilidades, 3 00:00:13,200 --> 00:00:17,200 o ya existe una contraseña previa o no existe, 4 00:00:17,200 --> 00:00:20,800 si existe hago una cosa, si no existe hago otra, 5 00:00:20,800 --> 00:00:24,600 entonces aquí distinguir si existe o no existe, 6 00:00:24,600 --> 00:00:29,600 es tan fácil como inicialmente la contraseña vacía 7 00:00:29,600 --> 00:00:34,000 inicialmente vacía y ahora ya en mi caso 1 8 00:00:34,000 --> 00:00:38,400 distingo en función de esa contraseña, que es vacía 9 00:00:38,400 --> 00:00:41,000 hago una cosa, que no lo es hago otra, 10 00:00:41,000 --> 00:00:43,600 vale, pues estábamos en el caso es vacía, 11 00:00:43,600 --> 00:00:46,200 si es vacía que tengo que hacer, pedirla, 12 00:00:46,200 --> 00:00:48,000 vale, si es vacía la pido, 13 00:00:48,000 --> 00:00:49,800 pero como no me vale cualquiera, 14 00:00:49,800 --> 00:00:52,000 estábamos en como no me vale cualquiera, 15 00:00:52,000 --> 00:00:55,400 pues aquí un bucle del que no salgo 16 00:00:55,400 --> 00:01:02,600 hasta que esta password no convierta este boolean en true, 17 00:01:02,600 --> 00:01:05,000 hasta que este boolean no lo convierta en true, 18 00:01:05,000 --> 00:01:08,000 de ahí no salgo, y para convertirlo en true 19 00:01:08,000 --> 00:01:12,800 necesitamos contar mayúsculas, minúsculas y cifras 20 00:01:12,800 --> 00:01:16,600 y luego ya este boolean de aquí será simultáneamente 21 00:01:16,600 --> 00:01:18,000 este contado mayor o igual que 1 22 00:01:18,000 --> 00:01:20,000 y además este mayor o igual que 1 23 00:01:20,000 --> 00:01:28,800 y el otro mayor o igual que 1, esto de aquí, 24 00:01:28,800 --> 00:01:33,600 bueno, pues lo que nos faltaba para este if del case 25 00:01:33,600 --> 00:01:36,000 lo que nos faltaba era hacer esta cuenta, 26 00:01:36,000 --> 00:01:39,400 esta cuenta, entonces tenemos que recorrer 27 00:01:39,400 --> 00:01:42,400 todos y cada uno de los caracteres de password, 28 00:01:42,400 --> 00:01:45,200 entonces recorrer los caracteres de un string, 29 00:01:45,200 --> 00:01:47,800 lo que hacíamos con un for, 30 00:01:47,800 --> 00:01:50,000 desde la posición 0 a la última 31 00:01:50,000 --> 00:01:52,400 que la podíamos obtener con el método led 32 00:01:52,400 --> 00:01:54,400 y ahora cada carácter charad, 33 00:01:54,400 --> 00:01:56,800 y ahora para cada carácter que es mayúscula, 34 00:01:56,800 --> 00:01:58,200 incremento contador de mayúscula, 35 00:01:58,200 --> 00:02:01,200 que es minúscula, incremento contador de minúscula, 36 00:02:01,200 --> 00:02:03,600 que es cifra, incremento contador de cifra, 37 00:02:03,600 --> 00:02:06,200 pues eso, un bucle for que recorra 38 00:02:06,200 --> 00:02:10,400 todos y cada uno de los caracteres del password, 39 00:02:10,400 --> 00:02:13,200 o sea un string, ya hemos hecho en otros ejercicios, 40 00:02:13,200 --> 00:02:16,400 si tenemos que recorrer sus caracteres, 41 00:02:17,400 --> 00:02:20,000 que es un for que va carácter por carácter 42 00:02:20,000 --> 00:02:21,600 haciendo con él lo que toque, 43 00:02:21,600 --> 00:02:24,400 en este caso lo que toca es mirar a ver 44 00:02:24,400 --> 00:02:28,000 si es mayúscula, minúscula o cifras y contar, 45 00:02:28,000 --> 00:02:30,800 pues venga, vamos a recorrer 46 00:02:30,800 --> 00:02:33,800 todos y cada uno de los caracteres de password, 47 00:02:33,800 --> 00:02:36,200 pues venga, empezamos, 48 00:02:36,200 --> 00:02:39,800 desde el carácter de posición 0, 49 00:02:39,800 --> 00:02:44,800 mientras i sea menor que 50 00:02:44,800 --> 00:02:50,400 password.length, 51 00:02:50,400 --> 00:02:53,000 incrementando i, 52 00:02:53,000 --> 00:02:56,000 estas son todas las posiciones, 53 00:02:56,000 --> 00:02:59,200 password.length es la longitud de la cadena, 54 00:02:59,200 --> 00:03:01,200 si la cadena tiene 4, 55 00:03:01,200 --> 00:03:05,200 las posiciones son 0, 1, 2 y 3, 56 00:03:05,200 --> 00:03:07,400 por eso aquí ponemos estrictamente menor, 57 00:03:07,400 --> 00:03:09,400 si password.length es 5, 58 00:03:09,400 --> 00:03:11,200 porque el string tiene 5, 59 00:03:11,200 --> 00:03:14,600 las posiciones van de 0, 1, 2, 3 y 4, 60 00:03:14,600 --> 00:03:19,400 luego este i va pasando por todas las posiciones 61 00:03:19,400 --> 00:03:22,600 de los caracteres de este, 62 00:03:22,600 --> 00:03:24,400 posición 0, posición 1, 63 00:03:24,400 --> 00:03:27,400 ah, y ahora con cada posición ¿qué hacemos? 64 00:03:27,400 --> 00:03:30,200 Bueno, pues el carácter del string 65 00:03:30,200 --> 00:03:34,800 en la posición i es este, 66 00:03:34,800 --> 00:03:37,600 este es el carácter del string en la posición i, 67 00:03:37,600 --> 00:03:39,400 ese es el carácter, 68 00:03:39,400 --> 00:03:41,600 pues ¿qué tenemos que hacer con este carácter? 69 00:03:41,600 --> 00:03:43,600 Mirar a ver si es mayúscula, 70 00:03:43,600 --> 00:03:46,400 si lo es, incrementamos contador de mayúscula, 71 00:03:46,400 --> 00:03:48,000 mirar a ver si es minúscula, 72 00:03:48,000 --> 00:03:50,200 si lo es, incrementamos contador de minúscula, 73 00:03:50,200 --> 00:03:51,800 y mirar a ver si es cifra, 74 00:03:51,800 --> 00:03:54,400 si lo es, incrementamos contador de cifra, 75 00:03:54,400 --> 00:03:56,000 y ya está. 76 00:03:56,000 --> 00:03:59,200 Y ahora viene, ¿cómo miramos a ver si es mayúscula? 77 00:03:59,200 --> 00:04:02,400 Hombre, no tiene sentido que hagamos un or gigante, 78 00:04:02,400 --> 00:04:07,000 si password.id es igual a o es igual a b o es igual a c 79 00:04:07,000 --> 00:04:08,600 y así todo el alfabeto, 80 00:04:08,600 --> 00:04:10,800 ¿que tenemos ganas de escribir? 81 00:04:10,800 --> 00:04:13,000 Pues sí, podríamos hacer 82 00:04:13,000 --> 00:04:15,600 esto con todo el alfabeto, ¿no? 83 00:04:15,600 --> 00:04:19,000 Si el carácter de la posición i es igual a 84 00:04:19,000 --> 00:04:21,800 ah, ¿dónde tengo la esta? 85 00:04:21,800 --> 00:04:25,800 Oh, solo voy a girar dos veces, no os asustéis. 86 00:04:36,400 --> 00:04:38,800 Y si así me planto dentro del if, 87 00:04:38,800 --> 00:04:41,400 me planto todo el alfabeto en mayúscula, 88 00:04:41,600 --> 00:04:43,800 pues sí, es una condición válida. 89 00:04:43,800 --> 00:04:46,200 Es la condición de ver si es letra mayúscula, 90 00:04:46,200 --> 00:04:48,000 me planto todo el alfabeto en mayúscula. 91 00:04:48,000 --> 00:04:49,600 Pues sí, vale, vale. 92 00:04:49,600 --> 00:04:51,200 Pero hombre, menudo programa, ¿eh? 93 00:04:51,200 --> 00:04:55,200 Con una condición aquí, gigante. 94 00:04:55,200 --> 00:05:01,200 Afortunadamente tenemos la tabla ASCII 95 00:05:01,200 --> 00:05:03,200 y nosotros sabemos que cada carácter 96 00:05:03,200 --> 00:05:05,400 se corresponde con el número entero 97 00:05:05,400 --> 00:05:07,000 en la posición correspondiente, 98 00:05:07,000 --> 00:05:08,600 la tabla ASCII que estaba ahí. 99 00:05:08,600 --> 00:05:17,000 Entonces, la tabla ASCII es esta de aquí. 100 00:05:17,000 --> 00:05:19,600 Entonces, el carácter será letra mayúscula 101 00:05:19,600 --> 00:05:24,200 si es mayor o igual que 65 102 00:05:24,200 --> 00:05:27,800 y menor o igual que 90. 103 00:05:27,800 --> 00:05:29,400 Si es mayor o igual que 65 104 00:05:29,400 --> 00:05:32,400 y menor o igual que 90, es mayúscula. 105 00:05:32,400 --> 00:05:34,600 Entonces es más fácil poner esa condición 106 00:05:34,600 --> 00:05:36,600 que poner igual a A o igual a B 107 00:05:36,600 --> 00:05:39,800 o igual a C o igual a D. 108 00:05:39,800 --> 00:05:41,800 Mucho más fácil, ¿vale? 109 00:05:41,800 --> 00:05:43,400 Y eso lo podíamos hacer así 110 00:05:43,400 --> 00:05:46,000 gracias a que los char 111 00:05:46,000 --> 00:05:48,200 son también números enteros 112 00:05:48,200 --> 00:05:50,800 según la correspondencia de la tabla ASCII. 113 00:05:50,800 --> 00:05:52,400 O sea, un char 114 00:05:52,400 --> 00:05:54,400 lo puedo ver también como número entero, 115 00:05:54,400 --> 00:05:57,200 según me interese, según me vaya dando la gana. 116 00:05:57,200 --> 00:06:01,400 Si lo veo como char, será esto con comillas simples. 117 00:06:01,400 --> 00:06:05,200 Si lo veo como número entero, será este número entero. 118 00:06:05,200 --> 00:06:06,600 Bueno, pues entonces hemos dicho 119 00:06:06,600 --> 00:06:10,600 que la mayúscula empieza en 65 y acaba en 90. 120 00:06:10,600 --> 00:06:12,200 65 y 90. 121 00:06:12,200 --> 00:06:13,800 Pues esta condición tan complicada 122 00:06:13,800 --> 00:06:17,200 es mucho más fácil de ponerla así. 123 00:06:17,200 --> 00:06:18,400 Si este carácter, 124 00:06:18,400 --> 00:06:20,400 ahora lo voy a interpretar como entero, 125 00:06:20,400 --> 00:06:21,600 que puedo sin problema, 126 00:06:21,600 --> 00:06:24,400 es mayor o igual que 65 127 00:06:24,400 --> 00:06:29,000 y además de ser mayor o igual que 65 128 00:06:29,000 --> 00:06:34,800 es menor o igual que 90, hemos dicho, 129 00:06:34,800 --> 00:06:38,200 pues así mucho más fácil esa condición. 130 00:06:38,200 --> 00:06:39,400 ¿Vale? 131 00:06:39,400 --> 00:06:40,800 Si este carácter, 132 00:06:40,800 --> 00:06:42,600 interpretado como entero, porque me da igual, 133 00:06:42,600 --> 00:06:44,000 lo puedo interpretar como entero, como char, 134 00:06:44,000 --> 00:06:45,000 me da lo mismo, 135 00:06:45,000 --> 00:06:46,200 es mayor o igual que este 136 00:06:46,200 --> 00:06:47,400 y menor o igual que este, 137 00:06:47,400 --> 00:06:48,800 entonces es mayúscula. 138 00:06:48,800 --> 00:06:51,400 Pues entonces incremento 139 00:06:51,400 --> 00:06:54,200 el contador de mayúscula. 140 00:06:54,200 --> 00:06:56,600 ¡Hala! 141 00:06:56,600 --> 00:06:58,800 Entonces, en cada iteración del bucle FOR 142 00:06:58,800 --> 00:06:59,800 voy mirando cada uno. 143 00:06:59,800 --> 00:07:02,200 El de posición 0, que es mayúscula, 144 00:07:02,200 --> 00:07:04,000 una mayúscula más. 145 00:07:04,000 --> 00:07:06,200 El de posición 1, que es mayúscula, 146 00:07:06,200 --> 00:07:07,600 otra mayúscula más. 147 00:07:07,600 --> 00:07:09,400 El de posición 2, que es mayúscula, 148 00:07:09,400 --> 00:07:10,600 otra mayúscula más. 149 00:07:10,600 --> 00:07:13,000 Y así cuento todas las mayúsculas 150 00:07:13,000 --> 00:07:15,200 del password, todas las caras, ¿vale? 151 00:07:15,200 --> 00:07:17,000 Y esto mismo lo puedo hacer con minúsculas 152 00:07:17,000 --> 00:07:19,400 y con cifras. 153 00:07:19,400 --> 00:07:23,400 Pues hala, me planto ahí un Elseif. 154 00:07:27,200 --> 00:07:30,000 Y ahora, que no es mayúscula, 155 00:07:30,000 --> 00:07:31,800 pues voy a ver si es minúscula. 156 00:07:31,800 --> 00:07:32,800 Pues si es minúscula, 157 00:07:32,800 --> 00:07:34,600 será una condición parecida, 158 00:07:34,600 --> 00:07:35,800 pero en este caso las minúsculas 159 00:07:35,800 --> 00:07:40,000 están entre 97 y 122. 160 00:07:40,000 --> 00:07:41,200 Pues que esta no se da 161 00:07:41,200 --> 00:07:42,800 porque no es mayúscula. 162 00:07:42,800 --> 00:07:46,800 Vamos a ver si se da esta otra. 163 00:07:48,200 --> 00:07:50,800 Vamos a ver si se da esta otra. 164 00:07:50,800 --> 00:07:54,000 Mayor o igual que 97 165 00:07:54,000 --> 00:07:58,800 y menor o igual que 122. 166 00:07:58,800 --> 00:08:00,200 Pues si no se da la anterior, 167 00:08:00,200 --> 00:08:02,200 pero se da esta otra, 168 00:08:02,200 --> 00:08:05,400 pues entonces ya tengo una minúscula. 169 00:08:05,400 --> 00:08:08,800 Hala, a sumar. 170 00:08:08,800 --> 00:08:11,800 Que tampoco se da esta. 171 00:08:11,800 --> 00:08:15,800 Y se da esta otra. 172 00:08:15,800 --> 00:08:17,000 Y es que esté comprendido, 173 00:08:17,000 --> 00:08:18,000 los números están, 174 00:08:18,000 --> 00:08:18,800 ¿dónde están los números? 175 00:08:18,800 --> 00:08:20,400 Los he perdido aquí. 176 00:08:20,400 --> 00:08:23,200 Entre 48 y 57. 177 00:08:23,200 --> 00:08:26,400 Pues que está comprendido entre 48 y 57, 178 00:08:26,400 --> 00:08:28,000 entonces es cifra. 179 00:08:28,000 --> 00:08:28,600 Es cifra, ¿no? 180 00:08:28,600 --> 00:08:30,000 Estas son las cifras decimales, 181 00:08:30,000 --> 00:08:30,800 no hay más que esas. 182 00:08:30,800 --> 00:08:34,800 No hay más cifras decimales que esas. 183 00:08:34,800 --> 00:08:39,800 48 y 57. 184 00:08:39,800 --> 00:08:43,000 Pues que es mayor o igual que 48 185 00:08:43,000 --> 00:08:48,600 y simultáneamente menor o igual que 57. 186 00:08:48,600 --> 00:08:52,200 Pues entonces es cifra. 187 00:08:52,200 --> 00:08:54,600 Pues vamos a incrementar 188 00:08:54,600 --> 00:08:57,800 el contador de cifras. 189 00:08:57,800 --> 00:08:58,800 Y aquí en el ELSES 190 00:08:58,800 --> 00:09:00,400 que no hace falta ni que lo ponga, 191 00:09:00,400 --> 00:09:03,200 porque si no es ni mayúscula, 192 00:09:03,200 --> 00:09:05,800 ni minúscula, ni cifras, 193 00:09:05,800 --> 00:09:06,800 no hay nada que contar. 194 00:09:06,800 --> 00:09:08,200 Es otro carácter. 195 00:09:08,200 --> 00:09:10,200 Dólar, un lo que sea, es otro carácter. 196 00:09:10,200 --> 00:09:11,000 No hay nada que contar. 197 00:09:11,000 --> 00:09:12,400 Entonces no hace falta ni que ponga el ELSES, 198 00:09:12,400 --> 00:09:14,400 el ELSES es opcional. 199 00:09:14,400 --> 00:09:15,600 Vale, pues ya está. 200 00:09:15,600 --> 00:09:19,400 Este bucle FOR me está contando 201 00:09:19,400 --> 00:09:21,600 para todas y cada una de las posiciones 202 00:09:21,600 --> 00:09:23,400 en esa password me está contando. 203 00:09:23,400 --> 00:09:25,400 Si son mayúscula me la cuenta. 204 00:09:25,400 --> 00:09:26,800 Si es minúscula me la cuenta. 205 00:09:26,800 --> 00:09:28,200 Y si es cifra me la cuenta. 206 00:09:28,200 --> 00:09:29,400 Y así con todas. 207 00:09:29,400 --> 00:09:31,800 Entonces cuando este bucle FOR ha terminado, 208 00:09:31,800 --> 00:09:33,800 tengo el número de mayúsculas de la password, 209 00:09:33,800 --> 00:09:36,800 el número de minúsculas y el número de cifras. 210 00:09:36,800 --> 00:09:39,000 Este bucle FOR solo tiene LIF. 211 00:09:39,000 --> 00:09:40,000 Por eso he quitado la llave, 212 00:09:40,000 --> 00:09:44,200 porque todo esto es una única sentencia. 213 00:09:44,200 --> 00:09:45,000 Una única. 214 00:09:45,000 --> 00:09:46,600 Entonces como solo hay una, 215 00:09:46,600 --> 00:09:48,600 el FOR solo tiene una adentro, 216 00:09:48,600 --> 00:09:49,800 puedo no poner las llaves. 217 00:09:49,800 --> 00:09:51,200 Solo tiene una adentro. 218 00:09:51,200 --> 00:09:54,000 Vale, pues cuando ese FOR ha terminado, 219 00:09:54,000 --> 00:09:55,800 que es aquí en este punto, 220 00:09:55,800 --> 00:09:57,600 cuando ese FOR ha terminado, 221 00:09:57,600 --> 00:10:01,000 ya puedo decir la condición de válida. 222 00:10:01,000 --> 00:10:02,800 Mayor o igual que uno y 223 00:10:02,800 --> 00:10:04,400 mayor o igual que uno y 224 00:10:04,400 --> 00:10:05,400 mayor o igual que uno. 225 00:10:05,400 --> 00:10:08,000 Si los tres son mayores o iguales que uno, 226 00:10:08,000 --> 00:10:09,400 cumple la condición de 227 00:10:09,400 --> 00:10:10,600 al menos una mayúscula, 228 00:10:10,600 --> 00:10:11,800 al menos una minúscula, 229 00:10:11,800 --> 00:10:14,600 al menos una cifra. 230 00:10:14,600 --> 00:10:15,800 Y entonces ahora ya, 231 00:10:15,800 --> 00:10:18,200 cuando el bucle WHILE vuelva arriba, 232 00:10:18,200 --> 00:10:19,800 que es válida, 233 00:10:19,800 --> 00:10:21,600 esto será TRUE. 234 00:10:21,600 --> 00:10:22,800 Al ser eso TRUE, 235 00:10:22,800 --> 00:10:24,400 esto será FALSE, 236 00:10:24,400 --> 00:10:26,400 porque es el negado, 237 00:10:26,400 --> 00:10:27,600 eso será FALSE, 238 00:10:27,600 --> 00:10:28,800 y ya no entrará más en el WHILE, 239 00:10:28,800 --> 00:10:30,600 ya la contraseña será válida. 240 00:10:30,600 --> 00:10:32,000 O sea, llegados aquí, 241 00:10:32,000 --> 00:10:33,400 la contraseña es válida. 242 00:10:33,400 --> 00:10:35,800 Vale, pues ya está, ya se... 243 00:10:35,800 --> 00:10:37,400 La contraseña que hemos leído 244 00:10:37,400 --> 00:10:40,200 es válida, ¿vale? 245 00:10:40,200 --> 00:10:42,000 La que hemos leído, la hemos validado, 246 00:10:42,000 --> 00:10:45,200 ya es válida, pues ahí se queda. 247 00:10:45,200 --> 00:10:48,200 ¿Vale? ¿Entendéis ese bucle? 248 00:10:48,200 --> 00:10:49,800 Un bucle, mientras no sea válida, 249 00:10:49,800 --> 00:10:51,400 la leo. 250 00:10:51,400 --> 00:10:53,600 Y miro a ver. 251 00:10:53,600 --> 00:10:55,400 Que no es válida, vuelvo a leerla. 252 00:10:55,400 --> 00:10:56,800 Y miro a ver. 253 00:10:56,800 --> 00:10:58,600 Que es válida, ya no vuelvo a leerla. 254 00:10:58,600 --> 00:11:01,400 Ya Password se queda con el valor que he leído. 255 00:11:01,400 --> 00:11:03,800 El último que he leído, y ahí se queda. 256 00:11:03,800 --> 00:11:05,600 Y entonces ya Password 257 00:11:05,600 --> 00:11:09,400 habrá dejado de valer esto, 258 00:11:09,400 --> 00:11:10,800 que valía inicialmente, 259 00:11:10,800 --> 00:11:12,600 cuando arrancamos el programa, 260 00:11:12,600 --> 00:11:14,400 ya habrá dejado de valer eso, 261 00:11:14,400 --> 00:11:16,400 y habrá pasado a valer 262 00:11:16,400 --> 00:11:18,600 el valor que le hemos dado ahí. 263 00:11:18,600 --> 00:11:19,600 El que le hemos dado ahí. 264 00:11:19,600 --> 00:11:22,000 Que ha resultado ser válido el que hemos dado ahí. 265 00:11:22,000 --> 00:11:25,400 Entonces, la siguiente vez que se le dé acción 1, 266 00:11:25,400 --> 00:11:29,200 ya no va a entrar en ese if. 267 00:11:29,200 --> 00:11:31,000 Pasa. 268 00:11:31,000 --> 00:11:32,400 La siguiente vez que se le dé acción 1, 269 00:11:32,400 --> 00:11:34,200 ya no entra aquí. 270 00:11:34,200 --> 00:11:38,200 Porque ya existe contraseña, ya existe. 271 00:11:38,200 --> 00:11:41,200 ¿Vale? 272 00:11:41,200 --> 00:11:43,600 Bueno, pues esta parte entendida. 273 00:11:43,600 --> 00:11:45,800 Si la contraseña está vacía, 274 00:11:45,800 --> 00:11:48,800 es la primera vez que entramos en la opción 275 00:11:48,800 --> 00:11:50,800 de establecer modificar. 276 00:11:50,800 --> 00:11:55,400 Pedimos contraseña nueva hasta que sea válida, ya está. 277 00:11:55,400 --> 00:11:59,200 Y ahora, que hemos dado al case 1 este, 278 00:11:59,200 --> 00:12:02,000 que al case 1 le hemos dado 279 00:12:02,000 --> 00:12:03,800 con la contraseña ya establecida 280 00:12:03,800 --> 00:12:06,400 porque es la segunda, tercera o cuarta vez 281 00:12:06,400 --> 00:12:07,600 que damos al 1. 282 00:12:07,600 --> 00:12:10,000 Pues si es la segunda, tercera o cuarta vez, 283 00:12:10,000 --> 00:12:11,600 entonces estamos aquí, 284 00:12:11,600 --> 00:12:13,800 en el else de este if. 285 00:12:13,800 --> 00:12:15,200 Estamos en el else de este if. 286 00:12:15,200 --> 00:12:16,600 Esta llave que cerraba, 287 00:12:16,600 --> 00:12:21,600 porque tengo aquí llaves de sobra, ¿no? 288 00:12:21,600 --> 00:12:26,600 Porque aquí mi forno tiene... 289 00:12:29,000 --> 00:12:34,000 Esta llave me sobra entonces, ¿no? 290 00:12:34,000 --> 00:12:36,200 Ah, claro, me estaba faltando una llave. 291 00:12:36,200 --> 00:12:41,000 Vale, entonces esta es la del while. 292 00:12:41,000 --> 00:12:42,200 Vale, esta es la del while. 293 00:12:42,200 --> 00:12:47,200 Y esta es la del if. 294 00:12:50,600 --> 00:12:53,000 Que tengo aquí mi else, vale. 295 00:12:53,000 --> 00:12:55,800 Pues en este caso ya hay contraseña previa. 296 00:12:55,800 --> 00:12:58,000 Si entramos por aquí es porque ya hay 297 00:12:58,000 --> 00:13:03,000 contraseña establecida. 298 00:13:04,000 --> 00:13:06,800 Entonces, aquí en cualquier caso 299 00:13:06,800 --> 00:13:08,000 ya hay contraseña establecida. 300 00:13:08,000 --> 00:13:11,400 En cualquier caso, esta opción es para poner una nueva. 301 00:13:11,400 --> 00:13:16,400 Luego todo este rollo, todo esto, 302 00:13:16,400 --> 00:13:19,200 le haré un copy-paste, 303 00:13:19,200 --> 00:13:20,600 porque también es para hacer una nueva. 304 00:13:20,600 --> 00:13:23,400 Pero antes de eso, 305 00:13:23,400 --> 00:13:25,600 tengo que pedirle la contraseña al usuario. 306 00:13:25,600 --> 00:13:27,000 Pues está quedando un código largo 307 00:13:27,000 --> 00:13:28,400 porque no lo estoy sacando a funciones 308 00:13:28,400 --> 00:13:30,200 para no irlo liando y nada. 309 00:13:30,200 --> 00:13:31,200 Lo importante es que vayáis viendo 310 00:13:31,200 --> 00:13:32,800 lo que vamos haciendo. 311 00:13:32,800 --> 00:13:34,600 Queda un código largo, 312 00:13:34,600 --> 00:13:36,800 queda mucho más fácil si yo saco 313 00:13:36,800 --> 00:13:39,400 eso a una función donde le paso una contraseña, 314 00:13:39,400 --> 00:13:43,400 o sea, si todo esto lo saco a una función, 315 00:13:43,400 --> 00:13:46,000 todo este código de aquí, 316 00:13:46,000 --> 00:13:47,800 lo saco a una función que me devuelva 317 00:13:47,800 --> 00:13:50,200 ya el boolean directamente, true o false, 318 00:13:50,200 --> 00:13:52,200 pues me va a quedar más claro el ejercicio. 319 00:13:52,200 --> 00:13:54,200 Me va a quedar más claro. 320 00:13:54,200 --> 00:13:57,600 Pero bueno, ahora mismo lo que importa 321 00:13:57,600 --> 00:14:01,200 es que entendamos el código que estamos haciendo, 322 00:14:01,200 --> 00:14:03,600 más que cómo lo estamos organizando. 323 00:14:03,600 --> 00:14:06,000 Lo puedo organizar, repito, sacándolo fuera 324 00:14:06,000 --> 00:14:08,200 y se queda el programa un poquito más bonito. 325 00:14:08,200 --> 00:14:09,400 Pero en lo que importa es entendemos 326 00:14:09,400 --> 00:14:10,600 lo que estamos haciendo. 327 00:14:10,600 --> 00:14:12,200 Bueno, pues en este caso, en el ELSE, 328 00:14:12,200 --> 00:14:13,800 ya hay contraseña establecida. 329 00:14:13,800 --> 00:14:17,600 Entonces, antes de pasar a pedirle 330 00:14:17,600 --> 00:14:19,400 la nueva contraseña y hacer lo mismo 331 00:14:19,400 --> 00:14:20,800 que hemos hecho arriba, que es lo mismo, 332 00:14:20,800 --> 00:14:23,000 idéntico, clavado, lo mismo, 333 00:14:23,000 --> 00:14:26,800 hay que decirle, introduzca contraseña antigua. 334 00:14:26,800 --> 00:14:27,600 ¿Vale? 335 00:14:27,600 --> 00:14:31,800 Y aquí no estaba muy claro el enunciado. 336 00:14:31,800 --> 00:14:33,800 Entonces, podíais haber optado 337 00:14:33,800 --> 00:14:35,400 por cualquiera de las dos cosas que es válida, 338 00:14:35,600 --> 00:14:40,600 porque aquí dice, si ya se ha establecido 339 00:14:40,600 --> 00:14:43,200 una contraseña, ah, vale, no, es verdad, 340 00:14:43,200 --> 00:14:45,400 es que esto lo cambié porque no me gustaba, 341 00:14:45,400 --> 00:14:50,400 vale, el programa pedirá de forma repetida, 342 00:14:50,400 --> 00:14:53,400 repetidamente, la contraseña vieja. 343 00:14:53,400 --> 00:14:56,000 Y ahí se va a quedar, ahí se va a quedar 344 00:14:56,000 --> 00:14:59,000 hasta que el usuario no escriba la contraseña antigua. 345 00:14:59,000 --> 00:15:01,600 Y cuando ya la ha escrito, ya sale de ese bucle 346 00:15:01,600 --> 00:15:04,400 y ya hace todo lo anterior, de pedir la nueva, 347 00:15:04,400 --> 00:15:06,400 validarla, etcétera. 348 00:15:06,400 --> 00:15:07,000 ¿Vale? 349 00:15:07,000 --> 00:15:10,000 Pues entonces, en esta parte, tendremos que hacer, 350 00:15:10,000 --> 00:15:12,200 repito, todo esto de aquí otra vez, 351 00:15:12,200 --> 00:15:14,800 pero antes hay que decirle, 352 00:15:14,800 --> 00:15:21,400 introduzca la contraseña anterior. 353 00:15:21,400 --> 00:15:22,800 Porque ya hay contraseña establecida, 354 00:15:22,800 --> 00:15:27,200 entonces para modificarla le tenemos que pedir la antigua. 355 00:15:27,200 --> 00:15:31,200 Y solo le dejamos modificar si nos da la antigua, claro. 356 00:15:31,200 --> 00:15:37,200 Entonces, esto lo podríamos guardar, por ejemplo, 357 00:15:37,200 --> 00:15:50,600 en una variable string. 358 00:15:50,600 --> 00:15:54,800 Vale, y ahora, esta es la password que él nos da, 359 00:15:54,800 --> 00:15:56,400 y que tenemos que verificar nosotros 360 00:15:56,400 --> 00:15:59,000 que es igual a la que ya hay establecida. 361 00:15:59,000 --> 00:16:00,800 Y ahí tenemos que estar en un bucle, 362 00:16:00,800 --> 00:16:04,000 ahí enganchados de forma repetida todo el rato, 363 00:16:04,000 --> 00:16:07,200 mientras la password leída sea diferente 364 00:16:07,200 --> 00:16:09,200 de la que ya está establecida. 365 00:16:09,200 --> 00:16:12,800 Luego aquí nos quedamos enganchados en un bucle, 366 00:16:12,800 --> 00:16:18,800 aquí nos quedamos metidos, 367 00:16:18,800 --> 00:16:22,400 nos quedamos ahí todo el tiempo que haga falta, 368 00:16:22,400 --> 00:16:25,400 mientras esta password sea distinta 369 00:16:25,400 --> 00:16:28,400 de la que ya hay establecida de antes. 370 00:16:28,600 --> 00:16:33,200 Esta, que ya la hemos establecido antes 371 00:16:33,200 --> 00:16:37,200 porque si hemos entrado aquí es porque es distinta del vacío, 372 00:16:37,200 --> 00:16:39,000 pero ya está de antes. 373 00:16:39,000 --> 00:16:41,200 Entonces, aquí nos quedamos hasta los restos 374 00:16:41,200 --> 00:16:45,600 mientras la password que él me ha dado 375 00:16:45,600 --> 00:16:53,200 sea distinta de la password mía. 376 00:16:53,200 --> 00:16:58,600 Y distinta significa así, ¿vale? 377 00:16:58,600 --> 00:17:00,600 Ahora cambiamos el rojo. 378 00:17:00,600 --> 00:17:03,200 Mientras la contraseña que yo he leído 379 00:17:03,200 --> 00:17:07,400 no sea igual a la password que ya tengo, 380 00:17:07,400 --> 00:17:08,400 ahí todo el rato, 381 00:17:08,400 --> 00:17:11,400 pidiendo y pidiendo y pidiendo y pidiendo ahí todo el rato. 382 00:17:11,400 --> 00:17:12,800 ¿Vale? Esa es la idea. 383 00:17:12,800 --> 00:17:14,600 Ahora arreglamos eso. 384 00:17:14,600 --> 00:17:17,000 Y luego ya, cuando ya hemos salido de aquí, 385 00:17:17,000 --> 00:17:18,000 cuando ya hemos salido de este while 386 00:17:18,000 --> 00:17:20,600 es porque por fin metieron la buena, 387 00:17:20,600 --> 00:17:22,200 porque por fin la metieron. 388 00:17:22,200 --> 00:17:24,200 Pues entonces ahora es cuando ya puedo plantar 389 00:17:24,200 --> 00:17:26,000 y pegar el código de arriba, 390 00:17:26,000 --> 00:17:28,000 que es el que me pide una contraseña nueva, 391 00:17:28,000 --> 00:17:31,400 la valida y cuando ya la tiene se da password. 392 00:17:31,400 --> 00:17:35,200 ¿Vale? 393 00:17:35,200 --> 00:17:36,000 Vale. 394 00:17:36,000 --> 00:17:38,000 Por eso aquí, claro, sería mucho más bonito 395 00:17:38,000 --> 00:17:40,000 si sacamos todo eso a una función, 396 00:17:40,000 --> 00:17:42,000 porque es que ahora voy a tener que copiar y pegar 397 00:17:42,000 --> 00:17:44,000 eso abajo otra vez y va a quedar muy grande. 398 00:17:44,000 --> 00:17:45,200 Pero bueno. 399 00:17:45,200 --> 00:17:46,800 Vale, pero vamos a arreglar antes esto. 400 00:17:46,800 --> 00:17:49,000 Este bucle que está aquí todo el rato, 401 00:17:49,000 --> 00:17:51,600 todo el rato, claro, 402 00:17:51,600 --> 00:17:52,400 es normal. 403 00:17:52,400 --> 00:17:54,600 Yo digo, claro, ¿cómo no voy a poner esto en rojo? 404 00:17:54,600 --> 00:17:57,200 ¿Por qué me lo pone en rojo? 405 00:17:57,200 --> 00:17:59,200 Claro, porque la contraseña 406 00:17:59,200 --> 00:18:01,000 no la he declarado antes. 407 00:18:01,000 --> 00:18:02,400 Esta variable no está declarada antes. 408 00:18:02,400 --> 00:18:03,600 Antes de usar una variable, 409 00:18:03,600 --> 00:18:06,400 antes de usarla, tiene que estar declarada. 410 00:18:06,400 --> 00:18:08,600 Y aquí no, aquí la he declarado yo aquí debajo, 411 00:18:08,600 --> 00:18:10,000 porque claro, yo he puesto la sentencia 412 00:18:10,000 --> 00:18:13,000 y luego después he decidido que la he metido en un bucle 413 00:18:13,000 --> 00:18:14,600 para que lo haga muchas veces. 414 00:18:14,600 --> 00:18:16,600 Entonces, al decidir meterlo en un bucle, 415 00:18:16,600 --> 00:18:21,000 en ese momento, he pasado a usarla antes. 416 00:18:21,200 --> 00:18:22,800 Entonces, como he pasado a usarla antes, 417 00:18:22,800 --> 00:18:24,800 yo digo, ah, claro, una variable 418 00:18:24,800 --> 00:18:28,400 antes de usarla tiene que estar declarada. 419 00:18:28,400 --> 00:18:29,600 Cosa impepinable. 420 00:18:29,600 --> 00:18:34,600 Claro, pues no pasa nada, la declaramos fuera. 421 00:18:34,600 --> 00:18:35,600 La declaramos fuera, 422 00:18:35,600 --> 00:18:37,000 porque una variable antes de usarla 423 00:18:37,000 --> 00:18:39,000 tiene que estar declarada. 424 00:18:39,000 --> 00:18:42,000 Vale. 425 00:18:42,000 --> 00:18:46,000 Entonces, ahora ya de aquí quitamos esto. 426 00:18:46,000 --> 00:18:50,800 Aún así, ya sabíamos que aunque yo la declarara fuera, 427 00:18:51,600 --> 00:18:55,200 se iba a seguir quejando el compilador, ¿no? 428 00:18:55,200 --> 00:18:57,200 Por lo de siempre, se sigue quejando 429 00:18:57,200 --> 00:19:00,000 porque la primera vez que llega al Guile 430 00:19:00,000 --> 00:19:02,400 no tiene ningún valor todavía. 431 00:19:02,400 --> 00:19:07,000 Entonces me dice, oye, yo todavía no puedo comprobar si es... 432 00:19:07,000 --> 00:19:07,800 ¿Vale? 433 00:19:07,800 --> 00:19:10,600 ¿Con qué valor lo inicializaríais para aseguraros 434 00:19:10,600 --> 00:19:13,600 de que va a entrar una primera vez 435 00:19:13,600 --> 00:19:16,600 a pedir la antigua y comparar? 436 00:19:16,600 --> 00:19:17,800 ¿Se supone que tiene valor null? 437 00:19:17,800 --> 00:19:20,400 ¿No puede comparar el null con...? 438 00:19:20,400 --> 00:19:21,400 Se supone que lo tiene. 439 00:19:21,400 --> 00:19:23,400 Y si tú haces un system out, te dará null. 440 00:19:23,400 --> 00:19:25,400 Pero el compilador no cuenta con ello. 441 00:19:25,400 --> 00:19:28,400 El compilador ya se te dice, oye, esto es inicializar. 442 00:19:28,400 --> 00:19:31,200 Si hiciéramos un system out aquí, saldría null. 443 00:19:31,200 --> 00:19:34,200 Pero el compilador sigue unas reglas muy estrictas 444 00:19:34,200 --> 00:19:35,400 y no te deja. 445 00:19:35,400 --> 00:19:37,800 Si no, está específicamente inicializado. 446 00:19:37,800 --> 00:19:40,800 Aquí se trata de, o lo inicializo a null, 447 00:19:40,800 --> 00:19:41,800 o inicializo al vacío. 448 00:19:41,800 --> 00:19:43,800 Yo sé que es imposible que la contraseña sea vacía. 449 00:19:43,800 --> 00:19:46,400 Es imposible, porque ya lo he establecido previamente. 450 00:19:46,400 --> 00:19:50,400 Entonces, me da igual lo que os haga menos daño a la vista. 451 00:19:50,400 --> 00:19:53,400 El null ahora mismo, como también hemos visto objetos, 452 00:19:53,400 --> 00:19:55,400 aún no se le puede hacer raro. 453 00:19:55,400 --> 00:19:58,400 Bueno, lo dejamos así. 454 00:19:58,400 --> 00:19:59,400 ¿Vale? 455 00:19:59,400 --> 00:20:02,400 Si lo dejamos así, la inicializo al vacío. 456 00:20:02,400 --> 00:20:06,400 Con lo cual, me aseguro que la primera vez entro sí o sí. 457 00:20:06,400 --> 00:20:09,400 Porque esta contraseña es la que está establecida 458 00:20:09,400 --> 00:20:10,400 y no va a ser vacía. 459 00:20:10,400 --> 00:20:12,400 Es imposible, porque está establecida. 460 00:20:12,400 --> 00:20:14,400 Entonces, entro una primera vez. 461 00:20:14,400 --> 00:20:16,400 ¿Cuándo la introdujo a contraseña? 462 00:20:16,400 --> 00:20:17,400 La introduce. 463 00:20:17,400 --> 00:20:19,400 ¿Qué es diferente? 464 00:20:19,400 --> 00:20:20,400 Vuelvela a pedir. 465 00:20:20,400 --> 00:20:22,400 ¿Qué sigue siendo diferente? 466 00:20:22,400 --> 00:20:23,400 Vuelvela a pedir. 467 00:20:23,400 --> 00:20:24,400 ¿Qué sigue siendo diferente? 468 00:20:24,400 --> 00:20:25,400 Vuelvela a pedir. 469 00:20:25,400 --> 00:20:26,400 ¿Y así podría estar? 470 00:20:26,400 --> 00:20:28,400 Pues siglos y siglos y siglos y siglos. 471 00:20:28,400 --> 00:20:30,400 El programa no terminaría jamás. 472 00:20:30,400 --> 00:20:31,400 ¿Vale? 473 00:20:31,400 --> 00:20:33,400 ¿Cuándo termina el programa? 474 00:20:33,400 --> 00:20:36,400 Cuando la password leída sea igual 475 00:20:36,400 --> 00:20:38,400 que la que se ha establecido de antes, 476 00:20:38,400 --> 00:20:40,400 la que esté guardada ahí arriba, en la variable. 477 00:20:40,400 --> 00:20:42,400 Bueno, pues en ese caso, 478 00:20:42,400 --> 00:20:44,400 cuando se haya establecido la contraseña nueva, 479 00:20:44,400 --> 00:20:46,400 ya salimos por aquí. 480 00:20:46,400 --> 00:20:49,400 Podemos ponerle y todo para que el programa 481 00:20:49,400 --> 00:20:52,400 quede más claro. 482 00:20:52,400 --> 00:20:53,400 Correcta. 483 00:20:53,400 --> 00:20:55,400 Vale. 484 00:20:55,400 --> 00:20:56,400 ¿Y ahora? 485 00:20:56,400 --> 00:20:57,400 ¿Ahora qué toca? 486 00:20:57,400 --> 00:20:59,400 Pues repetir el código de arriba. 487 00:20:59,400 --> 00:21:01,400 Repetir el código de arriba que pide una contraseña nueva 488 00:21:01,400 --> 00:21:03,400 y se está en un bucle de validación, 489 00:21:03,400 --> 00:21:05,400 ahí bla, bla, bla, bla, bla, bla, bla, 490 00:21:05,400 --> 00:21:07,400 hasta que sea válida. 491 00:21:07,400 --> 00:21:10,400 Aquí, claro, si lo saco una función, mejor. 492 00:21:10,400 --> 00:21:12,400 Pero vamos a... 493 00:21:13,400 --> 00:21:14,400 ¿Vale? 494 00:21:14,400 --> 00:21:16,400 Todo este código, tal cual, 495 00:21:16,400 --> 00:21:18,400 lo puedo cascar enterito. 496 00:21:18,400 --> 00:21:20,400 Este. 497 00:21:26,400 --> 00:21:28,400 ¿Vale? O sea, lo... 498 00:21:28,400 --> 00:21:31,400 Si ya hay contraseña establecida, 499 00:21:31,400 --> 00:21:33,400 es lo mismo que arriba, 500 00:21:33,400 --> 00:21:37,400 pero tengo que antes hacer esto de aquí. 501 00:21:41,400 --> 00:21:46,400 ¿Vale? Pues el caso 1 de la contraseña ya está. 502 00:21:46,400 --> 00:21:49,400 Claro, como lo vamos resolviendo, 503 00:21:49,400 --> 00:21:51,400 pues según se nos van ocurriendo, 504 00:21:51,400 --> 00:21:54,400 vamos viendo que es la manera en realidad de hacerlo 505 00:21:54,400 --> 00:21:58,400 cuando uno no tiene todavía las ideas muy claras, 506 00:21:58,400 --> 00:22:00,400 pues vamos resolviendo, vamos... 507 00:22:00,400 --> 00:22:02,400 Pues nos ha quedado claro un código muy largo. 508 00:22:02,400 --> 00:22:04,400 Luego esto lo ideal sería, oye, 509 00:22:04,400 --> 00:22:06,400 estoy repitiendo lo mismo dos veces. 510 00:22:06,400 --> 00:22:08,400 Voy a sacar una función 511 00:22:08,400 --> 00:22:10,400 y llamo a la función 512 00:22:10,400 --> 00:22:12,400 y no tengo que repetir el mismo código aquí 513 00:22:12,400 --> 00:22:13,400 y el mismo código ahí. 514 00:22:13,400 --> 00:22:16,400 ¿Vale? Y eso ya luego son refinados 515 00:22:16,400 --> 00:22:17,400 que podemos hacer después 516 00:22:17,400 --> 00:22:19,400 para que quede un código más bonito, 517 00:22:19,400 --> 00:22:20,400 cuando ya pues tenemos más control, 518 00:22:20,400 --> 00:22:22,400 más dominio, lo que sea. 519 00:22:22,400 --> 00:22:23,400 ¿Vale? 520 00:22:24,400 --> 00:22:26,400 Pero lo que hemos entendido, 521 00:22:26,400 --> 00:22:28,400 ¿está claro? 522 00:22:32,400 --> 00:22:35,400 Repito, a la máquina virtual, a la CPU, 523 00:22:35,400 --> 00:22:37,400 le da igual que esté en una función que esté ahí. 524 00:22:37,400 --> 00:22:38,400 Si él va a ejecutar lo mismo, 525 00:22:38,400 --> 00:22:40,400 va a ejecutar las mismas sentencias. 526 00:22:40,400 --> 00:22:42,400 Es de cara a que el código esté organizado, 527 00:22:42,400 --> 00:22:44,400 sea legible para los demás. 528 00:22:47,400 --> 00:22:49,400 Bueno, pues el caso de la contraseña, 529 00:22:49,400 --> 00:22:52,400 el caso 1, a falta, 530 00:22:52,400 --> 00:22:54,400 y esta llave es del... 531 00:22:54,400 --> 00:22:56,400 el ELSI este. 532 00:22:58,400 --> 00:23:00,400 El caso 1, a falta de hacer pruebas, 533 00:23:00,400 --> 00:23:03,400 porque se nos pueden haber escapado cosas raras, 534 00:23:03,400 --> 00:23:06,400 alguna cosa que no hemos tenido en cuenta, 535 00:23:06,400 --> 00:23:08,400 se nos ha traspapelado un... 536 00:23:08,400 --> 00:23:10,400 un i, un mayor o igual, un menor, 537 00:23:10,400 --> 00:23:11,400 a falta de hacer pruebas 538 00:23:11,400 --> 00:23:13,400 para ver si hay un problema, 539 00:23:13,400 --> 00:23:14,400 en principio parece que, bueno, 540 00:23:14,400 --> 00:23:15,400 que este sería el caso 1, ¿no? 541 00:23:15,400 --> 00:23:17,400 Completo. 542 00:23:17,400 --> 00:23:19,400 ¿Vale? 543 00:23:21,400 --> 00:23:24,400 Entonces, repito, importante, 544 00:23:24,400 --> 00:23:26,400 no olvidéis lo de que los caracteres 545 00:23:26,400 --> 00:23:29,400 los puedo usar indistintamente, 546 00:23:29,400 --> 00:23:30,400 como carácter, 547 00:23:30,400 --> 00:23:32,400 y entonces se da el símbolo 548 00:23:32,400 --> 00:23:33,400 entre comillado con comillas simples, 549 00:23:33,400 --> 00:23:34,400 o como número, 550 00:23:34,400 --> 00:23:36,400 y compararlo con números, 551 00:23:36,400 --> 00:23:37,400 según la correspondiente tabla este, 552 00:23:37,400 --> 00:23:39,400 y eso nos facilita las cosas. 553 00:23:39,400 --> 00:23:41,400 Eso por un lado. 554 00:23:41,400 --> 00:23:42,400 Y otra cosa interesante, 555 00:23:42,400 --> 00:23:44,400 cosas que tenéis que ir registrando, 556 00:23:44,400 --> 00:23:45,400 pues cuando uno hace un bucle 557 00:23:45,400 --> 00:23:47,400 para validar algo, 558 00:23:47,400 --> 00:23:48,400 la condición de arriba 559 00:23:48,400 --> 00:23:50,400 puede ser muy fácil de poner, 560 00:23:50,400 --> 00:23:52,400 o no puede ser inmediata. 561 00:23:52,400 --> 00:23:53,400 Si no es inmediata, 562 00:23:53,400 --> 00:23:55,400 tendremos que construirla aquí, 563 00:23:55,400 --> 00:23:57,400 construirla, 564 00:23:57,400 --> 00:23:59,400 guardarla en un Boolean, 565 00:23:59,400 --> 00:24:01,400 y ya ponerla en el GUIDE. 566 00:24:01,400 --> 00:24:02,400 ¿Vale? 567 00:24:02,400 --> 00:24:04,400 Porque no todas las condiciones 568 00:24:04,400 --> 00:24:05,400 son inmediatas. 569 00:24:05,400 --> 00:24:06,400 En M hay igual que cero, ¿no? 570 00:24:06,400 --> 00:24:07,400 Hay veces que tenemos que 571 00:24:07,400 --> 00:24:09,400 construirlas con contadores, 572 00:24:09,400 --> 00:24:10,400 con cosas, 573 00:24:10,400 --> 00:24:11,400 y cuando ya las tenemos, 574 00:24:11,400 --> 00:24:13,400 pues ya se puede ir arriba. 575 00:24:16,400 --> 00:24:18,400 ¿Vale? 576 00:24:18,400 --> 00:24:20,400 Este caso uno está... 577 00:24:20,400 --> 00:24:22,400 Venga, pues a ver, 578 00:24:22,400 --> 00:24:25,400 ya los otros dos son mucho más cortitos. 579 00:24:25,400 --> 00:24:27,400 En el Login, 580 00:24:27,400 --> 00:24:29,400 en Login, 581 00:24:29,400 --> 00:24:31,400 de nuevo aquí ya podemos copiar y pegar. 582 00:24:32,400 --> 00:24:34,400 Porque aquí es pedir la contraseña 583 00:24:34,400 --> 00:24:36,400 y estar ahí enganchado 584 00:24:36,400 --> 00:24:38,400 hasta el infinito, 585 00:24:38,400 --> 00:24:41,400 hasta que nos dé la contraseña nueva. 586 00:24:42,400 --> 00:24:43,400 ¿Vale? 587 00:24:43,400 --> 00:24:44,400 Ah, bueno, aquí es donde, 588 00:24:44,400 --> 00:24:45,400 no, claro, 589 00:24:45,400 --> 00:24:46,400 aquí es donde digo yo 590 00:24:46,400 --> 00:24:47,400 que no estaba muy claro 591 00:24:47,400 --> 00:24:49,400 que podías haber optado por dos cosas. 592 00:24:49,400 --> 00:24:52,400 El tenerte ahí hasta el infinito, 593 00:24:52,400 --> 00:24:55,400 hasta que introduzca la contraseña nueva, 594 00:24:55,400 --> 00:24:57,400 o si no le pones la contraseña, 595 00:24:57,400 --> 00:24:58,400 la nueva no, 596 00:24:58,400 --> 00:24:59,400 la contraseña del programa, 597 00:24:59,400 --> 00:25:00,400 o simplemente pedirla una vez 598 00:25:00,400 --> 00:25:01,400 y no se la pones decir, 599 00:25:01,400 --> 00:25:02,400 no puede acceder, 600 00:25:02,400 --> 00:25:03,400 y ya está. 601 00:25:03,400 --> 00:25:05,400 No sé por qué camino habéis optado, 602 00:25:05,400 --> 00:25:07,400 habéis optado por diferentes caminos, 603 00:25:07,400 --> 00:25:08,400 da igual, 604 00:25:08,400 --> 00:25:09,400 da lo mismo. 605 00:25:09,400 --> 00:25:10,400 ¿Vale? 606 00:25:10,400 --> 00:25:12,400 Me explico lo que estoy diciendo, ¿no? 607 00:25:12,400 --> 00:25:13,400 Que a lo mejor algunos habéis interpretado, 608 00:25:13,400 --> 00:25:14,400 en el Login, 609 00:25:14,400 --> 00:25:16,400 pides la contraseña, 610 00:25:16,400 --> 00:25:17,400 si no te da la buena, 611 00:25:17,400 --> 00:25:19,400 te dice directamente, 612 00:25:19,400 --> 00:25:20,400 no puedes entrar, 613 00:25:20,400 --> 00:25:21,400 y se acabó. 614 00:25:21,400 --> 00:25:22,400 O pides la contraseña 615 00:25:22,400 --> 00:25:23,400 y te estás ahí en un bucle 616 00:25:23,400 --> 00:25:24,400 todo el rato 617 00:25:24,400 --> 00:25:26,400 hasta que pidas la buena. 618 00:25:26,400 --> 00:25:29,400 No sé cuál os resulta más natural. 619 00:25:29,400 --> 00:25:30,400 En un caso real, 620 00:25:30,400 --> 00:25:31,400 lo normal no es que se esté ahí 621 00:25:31,400 --> 00:25:32,400 hasta el infinito, ¿no? 622 00:25:32,400 --> 00:25:33,400 Si tú le pones la contraseña 623 00:25:33,400 --> 00:25:34,400 y no te dice, 624 00:25:34,400 --> 00:25:35,400 no puedes, 625 00:25:35,400 --> 00:25:36,400 se acabó, ¿no? 626 00:25:36,400 --> 00:25:37,400 Y tienes que volver a hacer 627 00:25:37,400 --> 00:25:40,400 Login otra vez. 628 00:25:40,400 --> 00:25:41,400 Bueno, pues a ver, 629 00:25:41,400 --> 00:25:44,400 hacer Login entonces. 630 00:25:44,400 --> 00:25:45,400 El caso 2, 631 00:25:45,400 --> 00:25:47,400 si o si hay que pedir la contraseña, 632 00:25:47,400 --> 00:25:48,400 otra vez, 633 00:25:48,400 --> 00:25:50,400 si o si hay que pedir la contraseña, 634 00:25:50,400 --> 00:25:51,400 es decir, 635 00:25:51,400 --> 00:25:55,400 esto, 636 00:25:55,400 --> 00:25:57,400 si o si hay que pedirla, 637 00:25:57,400 --> 00:26:01,400 introduzca la password 638 00:26:01,400 --> 00:26:03,400 para hacer Login. 639 00:26:03,400 --> 00:26:05,400 Vale. 640 00:26:05,400 --> 00:26:06,400 ¿Vale? 641 00:26:06,400 --> 00:26:12,400 Password leída. 642 00:26:12,400 --> 00:26:14,400 Aquí es que no la tengo declarada, 643 00:26:14,400 --> 00:26:15,400 entonces por eso tengo que declararla. 644 00:26:15,400 --> 00:26:16,400 Password leída, 645 00:26:16,400 --> 00:26:18,400 esta. 646 00:26:18,400 --> 00:26:20,400 Y aquí de nuevo, 647 00:26:20,400 --> 00:26:21,400 repito, 648 00:26:21,400 --> 00:26:22,400 podemos plantearnos, 649 00:26:22,400 --> 00:26:24,400 ¿no estaba claro en el enunciado? 650 00:26:24,400 --> 00:26:26,400 Directamente, 651 00:26:26,400 --> 00:26:28,400 que es buena, 652 00:26:28,400 --> 00:26:29,400 le digo Login, 653 00:26:29,400 --> 00:26:30,400 entras, 654 00:26:30,400 --> 00:26:31,400 que es mala, 655 00:26:31,400 --> 00:26:32,400 no entras, 656 00:26:32,400 --> 00:26:33,400 y se acabó, 657 00:26:33,400 --> 00:26:34,400 y nos complicamos la vida. 658 00:26:34,400 --> 00:26:35,400 O lo podemos meter en un bucle, 659 00:26:35,400 --> 00:26:36,400 que ya está en infinito, 660 00:26:36,400 --> 00:26:37,400 lo que hayáis optado, 661 00:26:37,400 --> 00:26:39,400 ¿vale? 662 00:26:39,400 --> 00:26:42,400 Vamos a simplemente hacer esto, 663 00:26:42,400 --> 00:26:44,400 que es lo más natural en los programas, 664 00:26:44,400 --> 00:26:46,400 ¿no? 665 00:26:46,400 --> 00:26:50,400 Si la contraseña 666 00:26:50,400 --> 00:26:53,400 resulta que no es igual, 667 00:26:53,400 --> 00:26:55,400 que no lo es, 668 00:26:55,400 --> 00:26:56,400 que no delante, 669 00:26:56,400 --> 00:26:57,400 que no se me olvide, 670 00:26:57,400 --> 00:26:58,400 no es igual a esta, 671 00:26:58,400 --> 00:27:00,400 entonces le decimos, 672 00:27:00,400 --> 00:27:01,400 no puede entrar, 673 00:27:01,400 --> 00:27:06,400 y se acabó. 674 00:27:06,400 --> 00:27:07,400 Y ya está, 675 00:27:07,400 --> 00:27:08,400 ya se ha acabado, 676 00:27:08,400 --> 00:27:09,400 no hay más que hacer, 677 00:27:09,400 --> 00:27:10,400 no puede entrar. 678 00:27:10,400 --> 00:27:11,400 Y volverá a salir el menú, 679 00:27:11,400 --> 00:27:12,400 y se acabó. 680 00:27:12,400 --> 00:27:13,400 Y si el tío quiere hacer Login de nuevo, 681 00:27:13,400 --> 00:27:14,400 pues que otra vez le dé a Login, 682 00:27:14,400 --> 00:27:16,400 y otra vez a meter contraseña, 683 00:27:16,400 --> 00:27:17,400 no puede entrar, 684 00:27:17,400 --> 00:27:18,400 se acabó. 685 00:27:18,400 --> 00:27:22,400 Que es igual, 686 00:27:22,400 --> 00:27:24,400 que es igual, 687 00:27:24,400 --> 00:27:25,400 que puede entrar, 688 00:27:25,400 --> 00:27:26,400 y se ponía el mensajito, 689 00:27:26,400 --> 00:27:27,400 ¿verdad? 690 00:27:27,400 --> 00:27:28,400 Pero, 691 00:27:28,400 --> 00:27:30,400 ¿qué más hay que hacer? 692 00:27:30,400 --> 00:27:32,400 Que esa era la clave de todo esto, 693 00:27:32,400 --> 00:27:34,400 ¿qué más hay que hacer? 694 00:27:34,400 --> 00:27:35,400 Claro, justo, 695 00:27:35,400 --> 00:27:36,400 ya está, 696 00:27:36,400 --> 00:27:47,400 poner el usuario logado a True, 697 00:27:47,400 --> 00:27:48,400 ¿vale? 698 00:27:48,400 --> 00:27:50,400 Y al poner usuario logado a True, 699 00:27:50,400 --> 00:27:51,400 esto ahora ya hace 700 00:27:51,400 --> 00:27:53,400 que el funcionamiento del menú 701 00:27:53,400 --> 00:27:57,400 me permita que el logout aparezca, 702 00:27:57,400 --> 00:27:58,400 gracias a esta variable. 703 00:27:58,400 --> 00:27:59,400 Entonces, 704 00:27:59,400 --> 00:28:01,400 esa variable va cambiando 705 00:28:01,400 --> 00:28:04,400 según se va dando a Login. 706 00:28:04,400 --> 00:28:05,400 Bueno, 707 00:28:05,400 --> 00:28:06,400 pues la opción de Login ya está. 708 00:28:06,400 --> 00:28:07,400 Repito, 709 00:28:07,400 --> 00:28:08,400 salvo la variante, 710 00:28:08,400 --> 00:28:10,400 si uno la ha hecho, 711 00:28:10,400 --> 00:28:12,400 de meter esto ahí en un bucle, 712 00:28:12,400 --> 00:28:15,400 en lugar de leerla solo una vez y comparar, 713 00:28:15,400 --> 00:28:16,400 meter esto en un bucle, 714 00:28:16,400 --> 00:28:18,400 que se esté ahí todo el rato, 715 00:28:18,400 --> 00:28:20,400 hasta que introduja la correcta. 716 00:28:20,400 --> 00:28:21,400 Pero vamos, 717 00:28:21,400 --> 00:28:22,400 sería lo mismo que aquí, 718 00:28:22,400 --> 00:28:24,400 meterla aquí en un bucle como este, 719 00:28:24,400 --> 00:28:27,400 lo mismo. 720 00:28:27,400 --> 00:28:28,400 Bueno, 721 00:28:28,400 --> 00:28:29,400 ¿y la opción de Logout? 722 00:28:29,400 --> 00:28:31,400 En la opción de Logout hemos dicho que 723 00:28:31,400 --> 00:28:32,400 tendrá que decir, 724 00:28:32,400 --> 00:28:35,400 ala, 725 00:28:35,400 --> 00:28:39,400 has salido del programa, 726 00:28:39,400 --> 00:28:43,400 ¿y qué faltará aquí? 727 00:28:43,400 --> 00:28:45,400 Usuario logado a False, 728 00:28:45,400 --> 00:28:46,400 ¿vale? 729 00:28:46,400 --> 00:28:47,400 Para que otra vez ya 730 00:28:47,400 --> 00:28:54,400 no vuelva a salir Logout. 731 00:28:54,400 --> 00:28:58,400 Y ya están todas las opciones hechas. 732 00:28:58,400 --> 00:28:59,400 Vale, 733 00:28:59,400 --> 00:29:00,400 luego este ejercicio tenía 734 00:29:00,400 --> 00:29:01,400 las dos cosas 735 00:29:01,400 --> 00:29:02,400 que evaluaba, 736 00:29:02,400 --> 00:29:03,400 de alguna manera, 737 00:29:03,400 --> 00:29:04,400 una es 738 00:29:04,400 --> 00:29:07,400 la de identificar 739 00:29:07,400 --> 00:29:08,400 que en función de si 740 00:29:08,400 --> 00:29:11,400 el usuario está logado o no, 741 00:29:11,400 --> 00:29:12,400 hay que hacer, 742 00:29:12,400 --> 00:29:14,400 el menú funciona de una manera u otra, 743 00:29:14,400 --> 00:29:15,400 porque muestra o no muestra, 744 00:29:15,400 --> 00:29:16,400 con lo cual necesito una boolea, 745 00:29:17,400 --> 00:29:18,400 necesito una boolea, 746 00:29:18,400 --> 00:29:21,400 obligatoriamente, 747 00:29:21,400 --> 00:29:24,400 para ponerla aquí. 748 00:29:24,400 --> 00:29:26,400 Necesito una boolea para ponerla ahí, 749 00:29:26,400 --> 00:29:28,400 porque el menú 750 00:29:28,400 --> 00:29:29,400 hace aparecer esa opción, 751 00:29:29,400 --> 00:29:30,400 o no, 752 00:29:30,400 --> 00:29:31,400 en función de la variable, 753 00:29:31,400 --> 00:29:32,400 la necesito. 754 00:29:32,400 --> 00:29:33,400 Entonces esa es la clave, 755 00:29:33,400 --> 00:29:34,400 pues, 756 00:29:34,400 --> 00:29:35,400 ah, vale, 757 00:29:35,400 --> 00:29:36,400 necesito una variable boolea 758 00:29:36,400 --> 00:29:37,400 para que esto aparezca o desaparezca, 759 00:29:37,400 --> 00:29:39,400 pues variable boolea al canto. 760 00:29:39,400 --> 00:29:41,400 Y ahora ya decidir esa variable, 761 00:29:41,400 --> 00:29:43,400 como se inicializa, 762 00:29:43,400 --> 00:29:44,400 que en este caso será False, 763 00:29:44,400 --> 00:29:46,400 para que de partida esto no salga, 764 00:29:46,400 --> 00:29:48,400 y en qué puntos de la aplicación se cambia, 765 00:29:48,400 --> 00:29:50,400 en qué puntos se cambia, 766 00:29:50,400 --> 00:29:51,400 pues en este caso, 767 00:29:51,400 --> 00:29:54,400 esta variable se va a cambiar, 768 00:29:54,400 --> 00:29:55,400 en este punto, 769 00:29:55,400 --> 00:29:56,400 cuando se hace Login, 770 00:29:56,400 --> 00:29:57,400 que se cambia a True, 771 00:29:57,400 --> 00:29:58,400 y en este otro, 772 00:29:58,400 --> 00:29:59,400 cuando se vuelve a hacer Logout, 773 00:29:59,400 --> 00:30:00,400 que se cambia a False, 774 00:30:00,400 --> 00:30:01,400 y ya está, 775 00:30:01,400 --> 00:30:02,400 y ese boolea ya no tiene más que pintar, 776 00:30:02,400 --> 00:30:03,400 ni más historia, 777 00:30:03,400 --> 00:30:05,400 se acabó. 778 00:30:05,400 --> 00:30:06,400 Y luego ya la otra parte, 779 00:30:06,400 --> 00:30:07,400 ¿cuál era? 780 00:30:07,400 --> 00:30:09,400 Pues la de la contraseña, 781 00:30:09,400 --> 00:30:10,400 distinguir la situación, 782 00:30:10,400 --> 00:30:12,400 ¿hay contraseña o no la hay? 783 00:30:12,400 --> 00:30:14,400 Si no la hay, 784 00:30:14,400 --> 00:30:16,400 la pido de nuevas validándola, 785 00:30:16,400 --> 00:30:18,400 y si la hay, 786 00:30:18,400 --> 00:30:19,400 pido la vieja, 787 00:30:19,400 --> 00:30:21,400 ahí me quedo atascado pidiendo la vieja, 788 00:30:21,400 --> 00:30:24,400 y luego otra vez pido la nueva y validándola. 789 00:30:24,400 --> 00:30:25,400 Y ya, 790 00:30:25,400 --> 00:30:27,400 creo que está todo lo que pide, 791 00:30:27,400 --> 00:30:33,400 el ejercicio. 792 00:30:33,400 --> 00:30:35,400 ¿Vale? 793 00:30:35,400 --> 00:30:36,400 Bueno, aquí repito, 794 00:30:36,400 --> 00:30:38,400 natural sería sacar este código, 795 00:30:38,400 --> 00:30:39,400 que hemos repetido dos veces, 796 00:30:39,400 --> 00:30:40,400 y que es tan largo, 797 00:30:40,400 --> 00:30:42,400 sacarlo a una función. 798 00:30:42,400 --> 00:30:43,400 Vamos a probarlo, 799 00:30:43,400 --> 00:30:45,400 porque cuando uno ya hace un código largo, 800 00:30:45,400 --> 00:30:47,400 es muy fácil que se le hayan escapado mil cosas, 801 00:30:47,400 --> 00:30:50,400 y esto de repente no funcione. 802 00:30:50,400 --> 00:30:51,400 Aparte de que tenemos el problema 803 00:30:51,400 --> 00:30:54,400 de que estamos leyendo números, 804 00:30:54,400 --> 00:30:58,400 y luego después estamos leyendo también líneas. 805 00:30:58,400 --> 00:30:59,400 Y eso da un error, 806 00:30:59,400 --> 00:31:00,400 ¿os acordáis? 807 00:31:00,400 --> 00:31:02,400 Si hacemos un NextInt, 808 00:31:02,400 --> 00:31:03,400 y luego hacemos un Slime, 809 00:31:03,400 --> 00:31:06,400 el NextLine coge el salto de línea del NextInt, 810 00:31:06,400 --> 00:31:10,400 y no se nos queda ahí esperando el carácter. 811 00:31:10,400 --> 00:31:12,400 Entonces, 812 00:31:12,400 --> 00:31:14,400 ¿esa en qué situaciones ocurre? 813 00:31:14,400 --> 00:31:15,400 Pues aquí, 814 00:31:15,400 --> 00:31:19,400 después de hacer el NextInt, 815 00:31:19,400 --> 00:31:20,400 ¿vale? 816 00:31:20,400 --> 00:31:22,400 Luego va a venir el NextLine de aquí, 817 00:31:22,400 --> 00:31:23,400 el NextLine de aquí, 818 00:31:23,400 --> 00:31:25,400 entonces yo creo que 819 00:31:25,400 --> 00:31:26,400 puede que ya, 820 00:31:26,400 --> 00:31:27,400 poniéndolo aquí, 821 00:31:27,400 --> 00:31:28,400 ya lo arreglemos de partida, 822 00:31:28,400 --> 00:31:33,400 y no tengamos ni que andar. 823 00:31:33,400 --> 00:31:34,400 ¿Vale? 824 00:31:34,400 --> 00:31:36,400 Y al poder olvidarnos de este problema, 825 00:31:36,400 --> 00:31:38,400 del NextLine que nos atasca tanto, 826 00:31:38,400 --> 00:31:39,400 ya enseguida, 827 00:31:39,400 --> 00:31:41,400 en cuanto ya veamos un poco más de los objetos, 828 00:31:41,400 --> 00:31:43,400 nos vamos a hacer una clase aparte, 829 00:31:43,400 --> 00:31:46,400 con una utilidad para leer por teclado, 830 00:31:46,400 --> 00:31:48,400 que ya haga todos los limpiados, 831 00:31:48,400 --> 00:31:49,400 y lo haga todo, 832 00:31:49,400 --> 00:31:51,400 y así este problema ya 833 00:31:51,400 --> 00:31:53,400 no vamos a tener que resolverlo a mano, 834 00:31:53,400 --> 00:31:54,400 como lo estamos haciendo. 835 00:31:54,400 --> 00:31:55,400 ¿Vale? 836 00:31:55,400 --> 00:31:57,400 Pero lo importante es que identifiquemos 837 00:31:57,400 --> 00:31:58,400 lo que nos está pasando, 838 00:31:58,400 --> 00:32:00,400 que cuando leemos un numerito, 839 00:32:00,400 --> 00:32:01,400 con el escáner, 840 00:32:01,400 --> 00:32:02,400 sea NextInt, 841 00:32:02,400 --> 00:32:03,400 NextDab, 842 00:32:03,400 --> 00:32:05,400 y después hacemos un NextLine, 843 00:32:05,400 --> 00:32:07,400 este NextLine no se queda parado 844 00:32:07,400 --> 00:32:08,400 esperando la cadena, 845 00:32:08,400 --> 00:32:10,400 sino que coge el salto de línea, 846 00:32:10,400 --> 00:32:13,400 con lo cual no funciona mal. 847 00:32:13,400 --> 00:32:14,400 Venga, vamos a hacer la prueba, 848 00:32:14,400 --> 00:32:15,400 a ver si hemos conseguido 849 00:32:15,400 --> 00:32:19,400 que esto funcione a la primera. 850 00:32:19,400 --> 00:32:22,400 A ver. 851 00:32:22,400 --> 00:32:26,400 Que esto siempre es lo más divertido. 852 00:32:26,400 --> 00:32:27,400 Bueno, 853 00:32:27,400 --> 00:32:28,400 la primera parte está bien, 854 00:32:28,400 --> 00:32:30,400 el logout no sale, 855 00:32:30,400 --> 00:32:33,400 pero algo es algo. 856 00:32:33,400 --> 00:32:34,400 Hombre, 857 00:32:34,400 --> 00:32:36,400 ya sería rizarle el rizo un montón, 858 00:32:36,400 --> 00:32:37,400 claro, 859 00:32:37,400 --> 00:32:38,400 es que esto queda muy feo, 860 00:32:38,400 --> 00:32:39,400 ¿no? 861 00:32:39,400 --> 00:32:40,400 Lo ideal sería 862 00:32:40,400 --> 00:32:41,400 que cuando no sale el logout 863 00:32:41,400 --> 00:32:42,400 de esto estuviera un 3, 864 00:32:42,400 --> 00:32:43,400 y cuando sí sale esto 865 00:32:43,400 --> 00:32:44,400 estuviera un 4. 866 00:32:44,400 --> 00:32:45,400 Sería lo ideal, 867 00:32:45,400 --> 00:32:46,400 pero bueno, 868 00:32:46,400 --> 00:32:47,400 esto es meter el salir 869 00:32:47,400 --> 00:32:49,400 dentro del if, 870 00:32:49,400 --> 00:32:50,400 y ya está, 871 00:32:50,400 --> 00:32:51,400 pero bueno, 872 00:32:51,400 --> 00:32:52,400 que eso es una pijería. 873 00:32:52,400 --> 00:32:53,400 ¿Vale? 874 00:32:53,400 --> 00:32:54,400 Bueno, 875 00:32:54,400 --> 00:32:55,400 pues ya está, 876 00:32:55,400 --> 00:32:56,400 ¿qué opción quiero? 877 00:32:56,400 --> 00:32:57,400 Vamos a ponerle 878 00:32:57,400 --> 00:32:58,400 la de establecer, 879 00:32:58,400 --> 00:32:59,400 modificar password. 880 00:32:59,400 --> 00:33:00,400 Introduzca password. 881 00:33:00,400 --> 00:33:02,400 Vamos a ponerle una no válida. 882 00:33:02,400 --> 00:33:03,400 Esta es no válida. 883 00:33:03,400 --> 00:33:04,400 Me sigue pidiendo. 884 00:33:04,400 --> 00:33:06,400 Esta también es no válida. 885 00:33:06,400 --> 00:33:08,400 Le vamos a poner ahora una válida. 886 00:33:08,400 --> 00:33:10,400 KH6. 887 00:33:10,400 --> 00:33:11,400 Vale. 888 00:33:11,400 --> 00:33:12,400 En principio 889 00:33:12,400 --> 00:33:13,400 le ha debido parecer válida 890 00:33:13,400 --> 00:33:14,400 porque me ha vuelto 891 00:33:14,400 --> 00:33:16,400 a ponerle pedir el menú. 892 00:33:16,400 --> 00:33:17,400 Vale, 893 00:33:17,400 --> 00:33:18,400 pero me sigue sin salir el logout, 894 00:33:18,400 --> 00:33:19,400 claro, 895 00:33:19,400 --> 00:33:21,400 porque no hemos hecho login. 896 00:33:21,400 --> 00:33:23,400 Vamos a modificarla. 897 00:33:23,400 --> 00:33:24,400 La contraseña, 898 00:33:24,400 --> 00:33:25,400 antes de hacer login 899 00:33:25,400 --> 00:33:26,400 vamos a modificarla. 900 00:33:26,400 --> 00:33:27,400 Le vuelvo a dar a 1. 901 00:33:27,400 --> 00:33:29,400 Introduzca password anterior. 902 00:33:29,400 --> 00:33:31,400 Vamos a ponerle una que no es. 903 00:33:32,400 --> 00:33:34,400 Me la sigue pidiendo. 904 00:33:34,400 --> 00:33:36,400 Le vamos a poner ahora la buena. 905 00:33:36,400 --> 00:33:38,400 La buena que era esta. 906 00:33:43,400 --> 00:33:44,400 Esta. 907 00:33:44,400 --> 00:33:45,400 Correcta. 908 00:33:45,400 --> 00:33:46,400 Vale. 909 00:33:46,400 --> 00:33:47,400 Ahora, 910 00:33:47,400 --> 00:33:48,400 introduzca password nueva. 911 00:33:48,400 --> 00:33:49,400 Introduzca password nueva. 912 00:33:49,400 --> 00:33:50,400 Pues de nuevo, 913 00:33:50,400 --> 00:33:52,400 si le pido una que no es válida, 914 00:33:52,400 --> 00:33:53,400 ahí se me queda 915 00:33:53,400 --> 00:33:55,400 hasta que le introduzca una válida. 916 00:33:55,400 --> 00:33:56,400 Vamos a ponerle una válida. 917 00:33:56,400 --> 00:33:58,400 JJJJ88. 918 00:34:00,400 --> 00:34:01,400 Vale. 919 00:34:01,400 --> 00:34:02,400 Esa parece ser 920 00:34:02,400 --> 00:34:04,400 que es nuestra nueva contraseña 921 00:34:04,400 --> 00:34:06,400 que le acabamos de modificar. 922 00:34:06,400 --> 00:34:07,400 Vamos a hacer login 923 00:34:07,400 --> 00:34:08,400 a ver si es verdad 924 00:34:08,400 --> 00:34:10,400 que es esa contraseña. 925 00:34:10,400 --> 00:34:11,400 2. Login. 926 00:34:11,400 --> 00:34:12,400 Me pide la contraseña. 927 00:34:12,400 --> 00:34:14,400 Le pongo una que no es. 928 00:34:14,400 --> 00:34:15,400 No puede entrar. 929 00:34:15,400 --> 00:34:16,400 Y ya está, 930 00:34:16,400 --> 00:34:17,400 no puede entrar y sale. 931 00:34:17,400 --> 00:34:18,400 Vale, 932 00:34:18,400 --> 00:34:19,400 pues ha hecho lo que tiene que hacer. 933 00:34:19,400 --> 00:34:21,400 Vamos a volver a hacer login otra vez. 934 00:34:21,400 --> 00:34:22,400 Vamos a volver a hacer login. 935 00:34:22,400 --> 00:34:24,400 Ahora poniéndole la buena. 936 00:34:24,400 --> 00:34:25,400 La nueva que era 937 00:34:26,400 --> 00:34:29,400 JJJJ88. 938 00:34:30,400 --> 00:34:31,400 Puede entrar. 939 00:34:31,400 --> 00:34:32,400 Vale. 940 00:34:32,400 --> 00:34:33,400 Y efectivamente, 941 00:34:33,400 --> 00:34:34,400 ahora sí que me sale el logout. 942 00:34:34,400 --> 00:34:35,400 A ver si me sale. 943 00:34:35,400 --> 00:34:36,400 Bueno. 944 00:34:36,400 --> 00:34:37,400 Vamos a hacer logout. 945 00:34:37,400 --> 00:34:39,400 Hago logout. 946 00:34:39,400 --> 00:34:41,400 Ha salido y ya no me sale. 947 00:34:42,400 --> 00:34:43,400 Bueno, 948 00:34:43,400 --> 00:34:45,400 pues parece que hemos acertado la primera. 949 00:34:45,400 --> 00:34:46,400 Todo no funciona. 950 00:34:46,400 --> 00:34:47,400 A lo margen de que el código 951 00:34:47,400 --> 00:34:48,400 sea más largo, más corto, 952 00:34:48,400 --> 00:34:49,400 lo que sea. 953 00:34:52,400 --> 00:34:53,400 Bueno, pues ya está. 954 00:34:53,400 --> 00:34:54,400 Salimos. 955 00:34:55,400 --> 00:34:56,400 Y listo. 956 00:34:59,400 --> 00:35:00,400 Bueno, 957 00:35:00,400 --> 00:35:01,400 más o menos visto. 958 00:35:04,400 --> 00:35:05,400 ¿Sí? 959 00:35:11,400 --> 00:35:12,400 Venga, 960 00:35:12,400 --> 00:35:13,400 pues hacemos el 3. 961 00:35:23,400 --> 00:35:24,400 ¿Qué no entiendes? 962 00:35:26,400 --> 00:35:27,400 No. 963 00:35:28,400 --> 00:35:29,400 A ver el 3. 964 00:35:33,400 --> 00:35:35,400 Añadir números positivos 965 00:35:36,400 --> 00:35:37,400 en un array. 966 00:35:37,400 --> 00:35:38,400 Vale. 967 00:35:40,400 --> 00:35:41,400 Finalizando el programa 968 00:35:41,400 --> 00:35:42,400 cuando se introduzca un 0. 969 00:35:44,400 --> 00:35:46,400 Una vez introducidos 970 00:35:46,400 --> 00:35:48,400 el número que más veces aparece. 971 00:35:48,400 --> 00:35:49,400 Bueno, 972 00:35:49,400 --> 00:35:50,400 tampoco es tan fácil. 973 00:35:50,400 --> 00:35:51,400 Puedes hacer un máximo, 974 00:35:52,400 --> 00:35:53,400 pero un máximo 975 00:35:53,400 --> 00:35:55,400 no de los valores del array, 976 00:35:55,400 --> 00:35:57,400 sino del número de apariciones 977 00:35:57,400 --> 00:35:58,400 de cada número. 978 00:35:59,400 --> 00:36:01,400 Es un poquito más complicado. 979 00:36:02,400 --> 00:36:03,400 Bueno, 980 00:36:03,400 --> 00:36:04,400 entonces empezamos a pensar 981 00:36:04,400 --> 00:36:05,400 y a decidir, 982 00:36:05,400 --> 00:36:06,400 vale, 983 00:36:06,400 --> 00:36:07,400 mis datos de entrada, 984 00:36:07,400 --> 00:36:08,400 ¿qué son? 985 00:36:08,400 --> 00:36:09,400 Son muchos números. 986 00:36:09,400 --> 00:36:10,400 Muchos. 987 00:36:10,400 --> 00:36:11,400 Pues aunque no me lo dijeran ahí 988 00:36:11,400 --> 00:36:12,400 que me lo dicen, 989 00:36:12,400 --> 00:36:13,400 automáticamente 990 00:36:13,400 --> 00:36:14,400 ya tengo que decidir 991 00:36:14,400 --> 00:36:15,400 que para guardar muchos números 992 00:36:15,400 --> 00:36:16,400 un array. 993 00:36:16,400 --> 00:36:17,400 Un array. 994 00:36:17,400 --> 00:36:18,400 Vale. 995 00:36:18,400 --> 00:36:19,400 Entonces ya hemos decidido, 996 00:36:19,400 --> 00:36:20,400 aparte es que nos lo han dicho, 997 00:36:20,400 --> 00:36:21,400 que necesitamos un array. 998 00:36:22,400 --> 00:36:23,400 Cuando uno decide 999 00:36:23,400 --> 00:36:24,400 que necesita un array, 1000 00:36:24,400 --> 00:36:26,400 la siguiente pregunta automática 1001 00:36:26,400 --> 00:36:27,400 que le surge es, 1002 00:36:27,400 --> 00:36:28,400 ¿y de qué tamaño? 1003 00:36:28,400 --> 00:36:29,400 Cuando uno declara un array 1004 00:36:29,400 --> 00:36:30,400 tiene que tener un tamaño, 1005 00:36:30,400 --> 00:36:31,400 tiene que decir ya, 1006 00:36:31,400 --> 00:36:32,400 de 20, 1007 00:36:32,400 --> 00:36:33,400 de 30, 1008 00:36:33,400 --> 00:36:34,400 de 40, 1009 00:36:34,400 --> 00:36:35,400 ¿de qué tamaño? 1010 00:36:35,400 --> 00:36:36,400 Vale, 1011 00:36:36,400 --> 00:36:37,400 pues sabéis que tenemos 1012 00:36:37,400 --> 00:36:38,400 dos posibilidades. 1013 00:36:38,400 --> 00:36:39,400 Inicialmente, 1014 00:36:39,400 --> 00:36:40,400 que ese array 1015 00:36:40,400 --> 00:36:41,400 no tenga ningún tamaño, 1016 00:36:42,400 --> 00:36:43,400 o sea, 1017 00:36:43,400 --> 00:36:44,400 sea un array 1018 00:36:44,400 --> 00:36:45,400 sin posiciones 1019 00:36:45,400 --> 00:36:46,400 y según quiero yo 1020 00:36:46,400 --> 00:36:47,400 irle metiendo, 1021 00:36:48,400 --> 00:36:49,400 pues hago uno nuevo 1022 00:36:49,400 --> 00:36:50,400 con una posición 1023 00:36:50,400 --> 00:36:51,400 más, 1024 00:36:51,400 --> 00:36:52,400 copio el viejo 1025 00:36:52,400 --> 00:36:53,400 en el nuevo 1026 00:36:53,400 --> 00:36:54,400 y añado 1027 00:36:54,400 --> 00:36:55,400 el nuevo valor 1028 00:36:55,400 --> 00:36:56,400 en la nueva posición. 1029 00:36:56,400 --> 00:36:57,400 O eso, 1030 00:36:57,400 --> 00:36:58,400 que sirve haciendo crecer, 1031 00:36:59,400 --> 00:37:00,400 o otra opción 1032 00:37:00,400 --> 00:37:01,400 más sencilla. 1033 00:37:02,400 --> 00:37:03,400 Dejo un array muy grandote 1034 00:37:04,400 --> 00:37:05,400 y cruzo los dedos 1035 00:37:05,400 --> 00:37:06,400 para que el que lo está usando 1036 00:37:06,400 --> 00:37:07,400 no se pase 1037 00:37:08,400 --> 00:37:09,400 de tamaño 1038 00:37:09,400 --> 00:37:10,400 y no me meta 1039 00:37:10,400 --> 00:37:11,400 más números 1040 00:37:11,400 --> 00:37:12,400 que lo que yo he declarado. 1041 00:37:12,400 --> 00:37:13,400 Dos caminos. 1042 00:37:13,400 --> 00:37:14,400 Cualquiera de los dos 1043 00:37:14,400 --> 00:37:15,400 que hubierais hecho, 1044 00:37:15,400 --> 00:37:16,400 nos valía. 1045 00:37:16,400 --> 00:37:17,400 El óptimo, 1046 00:37:17,400 --> 00:37:18,400 obviamente, 1047 00:37:19,400 --> 00:37:20,400 el declarar un array 1048 00:37:21,400 --> 00:37:22,400 sin posiciones 1049 00:37:22,400 --> 00:37:23,400 todavía 1050 00:37:23,400 --> 00:37:24,400 y cada vez que me llega 1051 00:37:24,400 --> 00:37:25,400 un nuevo valor, 1052 00:37:25,400 --> 00:37:26,400 hago un nuevo. 1053 00:37:27,400 --> 00:37:28,400 Vamos a hacer de las dos maneras. 1054 00:37:33,400 --> 00:37:34,400 Bueno, 1055 00:37:34,400 --> 00:37:35,400 no se utiliza 1056 00:37:35,400 --> 00:37:36,400 porque ya lo hace 1057 00:37:36,400 --> 00:37:37,400 el array list. 1058 00:37:37,400 --> 00:37:38,400 A ver, 1059 00:37:38,400 --> 00:37:39,400 no hay otra manera 1060 00:37:39,400 --> 00:37:40,400 de hacerlo. 1061 00:37:40,400 --> 00:37:41,400 Me refiero, 1062 00:37:41,400 --> 00:37:42,400 la única estructura 1063 00:37:42,400 --> 00:37:43,400 de datos 1064 00:37:43,400 --> 00:37:44,400 que puede guardar 1065 00:37:44,400 --> 00:37:45,400 muchos tipos, 1066 00:37:45,400 --> 00:37:46,400 muchos datos 1067 00:37:46,400 --> 00:37:47,400 de un mismo tipo 1068 00:37:48,400 --> 00:37:49,400 pero claro, 1069 00:37:49,400 --> 00:37:50,400 el array es complejo 1070 00:37:50,400 --> 00:37:51,400 de manejar, 1071 00:37:51,400 --> 00:37:52,400 entre otras cosas, 1072 00:37:52,400 --> 00:37:53,400 por esto que decimos. 1073 00:37:53,400 --> 00:37:54,400 Entonces, 1074 00:37:54,400 --> 00:37:55,400 lo que hay es 1075 00:37:56,400 --> 00:37:57,400 programas ya hechos 1076 00:37:58,400 --> 00:37:59,400 que hacen esto 1077 00:37:59,400 --> 00:38:00,400 que estamos diciendo 1078 00:38:00,400 --> 00:38:01,400 pero hacen esto 1079 00:38:01,400 --> 00:38:02,400 y entonces, 1080 00:38:02,400 --> 00:38:03,400 ¿qué es lo que hace uno? 1081 00:38:03,400 --> 00:38:04,400 Usa eso, 1082 00:38:04,400 --> 00:38:05,400 que es el array list. 1083 00:38:05,400 --> 00:38:06,400 El array list 1084 00:38:06,400 --> 00:38:07,400 es esto que estamos haciendo. 1085 00:38:10,400 --> 00:38:11,400 Bueno, 1086 00:38:11,400 --> 00:38:12,400 a ver, 1087 00:38:12,400 --> 00:38:13,400 me refiero a clases. 1088 00:38:13,400 --> 00:38:14,400 Como ya vamos 1089 00:38:14,400 --> 00:38:15,400 a empezar 1090 00:38:15,400 --> 00:38:16,400 la producción 1091 00:38:16,400 --> 00:38:17,400 pues ya lo que 1092 00:38:17,400 --> 00:38:18,400 vamos a empezar 1093 00:38:18,400 --> 00:38:19,400 a ver claro 1094 00:38:19,400 --> 00:38:20,400 es que una aplicación 1095 00:38:20,400 --> 00:38:21,400 de Java 1096 00:38:21,400 --> 00:38:22,400 son muchas clases 1097 00:38:22,400 --> 00:38:23,400 y cada clase 1098 00:38:23,400 --> 00:38:24,400 tiene trocitos 1099 00:38:24,400 --> 00:38:25,400 de código. 1100 00:38:25,400 --> 00:38:26,400 Alguna de esas clases 1101 00:38:26,400 --> 00:38:27,400 las hace uno 1102 00:38:28,400 --> 00:38:29,400 y otras clases 1103 00:38:29,400 --> 00:38:30,400 las coge 1104 00:38:30,400 --> 00:38:31,400 porque ya están 1105 00:38:31,400 --> 00:38:32,400 hechas en librerías. 1106 00:38:32,400 --> 00:38:33,400 Bueno, 1107 00:38:33,400 --> 00:38:34,400 pues una de las clases 1108 00:38:34,400 --> 00:38:35,400 de las miles 1109 00:38:35,400 --> 00:38:36,400 que ya están hechas 1110 00:38:36,400 --> 00:38:37,400 en librerías 1111 00:38:37,400 --> 00:38:38,400 es esta que digo yo, 1112 00:38:38,400 --> 00:38:39,400 ArrayList 1113 00:38:39,400 --> 00:38:40,400 y esa clase 1114 00:38:40,400 --> 00:38:41,400 que hace, 1115 00:38:41,400 --> 00:38:42,400 que tiene, 1116 00:38:42,400 --> 00:38:43,400 tiene un código 1117 00:38:43,400 --> 00:38:44,400 que hace esto mismo. 1118 00:38:44,400 --> 00:38:45,400 Entonces, 1119 00:38:45,400 --> 00:38:46,400 el código, 1120 00:38:46,400 --> 00:38:47,400 él, 1121 00:38:47,400 --> 00:38:48,400 usa el que está 1122 00:38:48,400 --> 00:38:49,400 en la clase ArrayList 1123 00:38:49,400 --> 00:38:50,400 pero lo que tiene 1124 00:38:50,400 --> 00:38:51,400 dentro de esa clase 1125 00:38:51,400 --> 00:38:52,400 es esto mismo. 1126 00:38:52,400 --> 00:38:53,400 Entonces, 1127 00:38:53,400 --> 00:38:54,400 claro, 1128 00:38:54,400 --> 00:38:55,400 aquí sobre todo 1129 00:38:55,400 --> 00:38:56,400 de lo que se trata 1130 00:38:56,400 --> 00:38:57,400 realmente uno 1131 00:38:57,400 --> 00:38:58,400 no va a extender 1132 00:38:58,400 --> 00:38:59,400 el array a mano, 1133 00:38:59,400 --> 00:39:00,400 va a usar esa clase. 1134 00:39:00,400 --> 00:39:01,400 Lo que se trata 1135 00:39:01,400 --> 00:39:02,400 es de que desarrollemos 1136 00:39:02,400 --> 00:39:03,400 de alguna manera 1137 00:39:03,400 --> 00:39:04,400 pues habilidades 1138 00:39:04,400 --> 00:39:05,400 y destrezas 1139 00:39:05,400 --> 00:39:06,400 de programación 1140 00:39:06,400 --> 00:39:07,400 y de saber 1141 00:39:07,400 --> 00:39:08,400 cómo están hechas 1142 00:39:08,400 --> 00:39:09,400 las cosas, 1143 00:39:09,400 --> 00:39:10,400 claro. 1144 00:39:10,400 --> 00:39:11,400 Vale, 1145 00:39:11,400 --> 00:39:12,400 pues entonces, 1146 00:39:12,400 --> 00:39:13,400 vamos a hacer 1147 00:39:13,400 --> 00:39:14,400 ejercicio 3, 1148 00:39:14,400 --> 00:39:15,400 vale. 1149 00:39:15,400 --> 00:39:16,400 Pues si tenemos 1150 00:39:16,400 --> 00:39:17,400 muchos datos 1151 00:39:17,400 --> 00:39:18,400 de un mismo tipo 1152 00:39:18,400 --> 00:39:19,400 que tenemos 1153 00:39:19,400 --> 00:39:20,400 que conservar, 1154 00:39:20,400 --> 00:39:21,400 tenemos el array, 1155 00:39:21,400 --> 00:39:22,400 ala. 1156 00:39:22,400 --> 00:39:23,400 Y aquí es donde 1157 00:39:23,400 --> 00:39:24,400 nos ha venido 1158 00:39:24,400 --> 00:39:25,400 esta gran pregunta, 1159 00:39:25,400 --> 00:39:26,400 esta gran pregunta 1160 00:39:26,400 --> 00:39:27,400 ¿qué es un array? 1161 00:39:27,400 --> 00:39:28,400 ¿qué es un array? 1162 00:39:28,400 --> 00:39:29,400 Bueno, 1163 00:39:29,400 --> 00:39:30,400 si tenemos 1164 00:39:30,400 --> 00:39:31,400 muchos datos 1165 00:39:31,400 --> 00:39:32,400 de un mismo tipo 1166 00:39:32,400 --> 00:39:33,400 que tenemos 1167 00:39:33,400 --> 00:39:34,400 que conservar, 1168 00:39:34,400 --> 00:39:35,400 tenemos el array, 1169 00:39:35,400 --> 00:39:36,400 ala. 1170 00:39:36,400 --> 00:39:37,400 Y aquí es donde 1171 00:39:37,400 --> 00:39:38,400 nos ha venido 1172 00:39:38,400 --> 00:39:39,400 esta gran pregunta, 1173 00:39:39,400 --> 00:39:40,400 esta gran pregunta, 1174 00:39:40,400 --> 00:39:41,400 esta gran pregunta, 1175 00:39:41,400 --> 00:39:42,400 ¿de qué tamaño? 1176 00:39:42,400 --> 00:39:43,400 ¿de qué tamaño? 1177 00:39:43,400 --> 00:39:44,400 Pues inicialmente 1178 00:39:44,400 --> 00:39:45,400 de ningún tamaño 1179 00:39:45,400 --> 00:39:46,400 ni una posición 1180 00:39:46,400 --> 00:39:47,400 y lo vamos ampliando 1181 00:39:47,400 --> 00:39:48,400 o inicialmente 1182 00:39:48,400 --> 00:39:49,400 de 10.000, 1183 00:39:49,400 --> 00:39:50,400 por ejemplo 1184 00:39:50,400 --> 00:39:51,400 y cruzamos los dedos 1185 00:39:51,400 --> 00:39:52,400 porque el usuario 1186 00:39:52,400 --> 00:39:53,400 no meta más 1187 00:39:53,400 --> 00:39:54,400 de 10.000 números, 1188 00:39:54,400 --> 00:39:55,400 vale. 1189 00:39:55,400 --> 00:39:56,400 Vamos, 1190 00:39:56,400 --> 00:39:57,400 cualquiera 1191 00:39:57,400 --> 00:39:58,400 de los dos 1192 00:39:58,400 --> 00:39:59,400 que hubierais usado 1193 00:39:59,400 --> 00:40:00,400 nos vale. 1194 00:40:00,400 --> 00:40:01,400 Vamos a empezar 1195 00:40:01,400 --> 00:40:02,400 por la clave 1196 00:40:02,400 --> 00:40:03,400 ¿qué es un array? 1197 00:40:03,400 --> 00:40:04,400 ¿qué es un array? 1198 00:40:04,400 --> 00:40:05,400 Bueno, 1199 00:40:05,400 --> 00:40:06,400 vamos a empezar 1200 00:40:06,400 --> 00:40:07,400 por la clave 1201 00:40:07,400 --> 00:40:08,400 ¿qué es un array? 1202 00:40:08,400 --> 00:40:09,400 Bueno, 1203 00:40:09,400 --> 00:40:10,400 nos vale. 1204 00:40:10,400 --> 00:40:11,400 Vamos a empezar 1205 00:40:11,400 --> 00:40:12,400 por la complicada. 1206 00:40:12,400 --> 00:40:13,400 Inicialmente 1207 00:40:13,400 --> 00:40:14,400 un array 1208 00:40:14,400 --> 00:40:15,400 ala, 1209 00:40:15,400 --> 00:40:16,400 de ninguna posición. 1210 00:40:16,400 --> 00:40:17,400 Esto es como 1211 00:40:17,400 --> 00:40:18,400 ponerle un null 1212 00:40:18,400 --> 00:40:19,400 en realidad. 1213 00:40:19,400 --> 00:40:20,400 Pero bueno, 1214 00:40:20,400 --> 00:40:21,400 para que quede así 1215 00:40:21,400 --> 00:40:22,400 más claro, 1216 00:40:22,400 --> 00:40:23,400 que veamos claro 1217 00:40:23,400 --> 00:40:24,400 que no tiene 1218 00:40:24,400 --> 00:40:25,400 ninguna posición. 1219 00:40:25,400 --> 00:40:26,400 Bueno, 1220 00:40:26,400 --> 00:40:27,400 este es mi array 1221 00:40:27,400 --> 00:40:28,400 que iremos 1222 00:40:28,400 --> 00:40:29,400 extendiendo 1223 00:40:29,400 --> 00:40:30,400 según vayamos 1224 00:40:30,400 --> 00:40:31,400 necesitando, 1225 00:40:31,400 --> 00:40:32,400 según vayamos 1226 00:40:32,400 --> 00:40:33,400 necesitando. 1227 00:40:33,400 --> 00:40:34,400 Ese es mi array. 1228 00:40:34,400 --> 00:40:35,400 Vale, 1229 00:40:35,400 --> 00:40:36,400 ¿qué tengo que hacer 1230 00:40:36,400 --> 00:40:37,400 con este array? 1231 00:40:37,400 --> 00:40:38,400 Llevar al array. 1232 00:40:38,400 --> 00:40:39,400 Leer número, 1233 00:40:39,400 --> 00:40:40,400 llevar al array. 1234 00:40:40,400 --> 00:40:41,400 Leer número, 1235 00:40:41,400 --> 00:40:42,400 llevar al array. 1236 00:40:42,400 --> 00:40:43,400 Y todo eso 1237 00:40:43,400 --> 00:40:44,400 mientras 1238 00:40:44,400 --> 00:40:45,400 el número leído 1239 00:40:45,400 --> 00:40:46,400 sea diferente 1240 00:40:46,400 --> 00:40:47,400 de cero. 1241 00:40:47,400 --> 00:40:48,400 Porque el cero 1242 00:40:48,400 --> 00:40:49,400 terminaba, 1243 00:40:49,400 --> 00:40:50,400 ¿no? 1244 00:40:50,400 --> 00:40:51,400 Mientras el número 1245 00:40:51,400 --> 00:40:52,400 sea diferente de cero 1246 00:40:52,400 --> 00:40:53,400 leo número, 1247 00:40:53,400 --> 00:40:54,400 llevo al array. 1248 00:40:54,400 --> 00:40:55,400 Leo número, 1249 00:40:55,400 --> 00:40:56,400 llevo al array. 1250 00:40:56,400 --> 00:40:57,400 Pues venga, 1251 00:40:57,400 --> 00:40:58,400 ahora declaramos variables 1252 00:40:58,400 --> 00:40:59,400 que nos hacen falta. 1253 00:40:59,400 --> 00:41:00,400 El scanner. 1254 00:41:07,400 --> 00:41:16,400 Venga, 1255 00:41:16,400 --> 00:41:22,400 pues le decimos, 1256 00:41:22,400 --> 00:41:23,400 introduzca positivo. 1257 00:41:23,400 --> 00:41:32,400 Leemos el positivo. 1258 00:41:33,400 --> 00:41:36,400 Leemos el numerito. 1259 00:41:36,400 --> 00:41:37,400 Vale, 1260 00:41:37,400 --> 00:41:38,400 y ahora, 1261 00:41:38,400 --> 00:41:39,400 esta variable 1262 00:41:39,400 --> 00:41:40,400 tiene que estar declarada 1263 00:41:40,400 --> 00:41:41,400 antes, 1264 00:41:41,400 --> 00:41:42,400 claro. 1265 00:41:42,400 --> 00:41:43,400 Vale, 1266 00:41:43,400 --> 00:41:44,400 ya podemos ir haciendo 1267 00:41:44,400 --> 00:41:45,400 seguido 1268 00:41:45,400 --> 00:41:46,400 como queremos 1269 00:41:46,400 --> 00:41:47,400 que entre 1270 00:41:47,400 --> 00:41:48,400 la primera vez 1271 00:41:48,400 --> 00:41:49,400 sí o sí, 1272 00:41:49,400 --> 00:41:50,400 pues inicializo a uno, 1273 00:41:50,400 --> 00:41:51,400 así entre 1274 00:41:51,400 --> 00:41:52,400 la segunda vez 1275 00:41:52,400 --> 00:41:53,400 sí o sí, 1276 00:41:53,400 --> 00:41:54,400 pues inicializo 1277 00:41:54,400 --> 00:41:55,400 a uno, 1278 00:41:55,400 --> 00:41:56,400 así entre 1279 00:41:56,400 --> 00:41:57,400 la primera vez 1280 00:41:57,400 --> 00:41:58,400 sí o sí, 1281 00:41:58,400 --> 00:41:59,400 pues inicializo 1282 00:41:59,400 --> 00:42:00,400 a uno, 1283 00:42:00,400 --> 00:42:01,400 así entre 1284 00:42:02,400 --> 00:42:03,400 la primera vez 1285 00:42:03,400 --> 00:42:04,400 sí o sí, 1286 00:42:04,400 --> 00:42:05,400 introduzca positivo, 1287 00:42:05,400 --> 00:42:06,400 leo el numerito, 1288 00:42:06,400 --> 00:42:07,400 vale, 1289 00:42:07,400 --> 00:42:08,400 y ahora 1290 00:42:08,400 --> 00:42:09,400 vamos a guardar 1291 00:42:09,400 --> 00:42:10,400 en el array, 1292 00:42:10,400 --> 00:42:11,400 vale. 1293 00:42:11,400 --> 00:42:12,400 Entonces, 1294 00:42:12,400 --> 00:42:13,400 ahora si vamos a extender, 1295 00:42:13,400 --> 00:42:14,400 esta es la parte 1296 00:42:14,400 --> 00:42:15,400 más complicada, 1297 00:42:15,400 --> 00:42:16,400 si vamos a extender 1298 00:42:16,400 --> 00:42:17,400 tenemos que distinguir, 1299 00:42:17,400 --> 00:42:18,400 ¿no? 1300 00:42:18,400 --> 00:42:19,400 A ver, 1301 00:42:19,400 --> 00:42:20,400 esto, 1302 00:42:20,400 --> 00:42:21,400 así es como 1303 00:42:21,400 --> 00:42:22,400 lo explicó Stefano, 1304 00:42:22,400 --> 00:42:23,400 vamos a ver, 1305 00:42:23,400 --> 00:42:24,400 vamos a ver, 1306 00:42:24,400 --> 00:42:25,400 vamos a ver, 1307 00:42:25,400 --> 00:42:26,400 vamos a ver, 1308 00:42:26,400 --> 00:42:27,400 vamos a ver, 1309 00:42:27,400 --> 00:42:28,400 vamos a ver, 1310 00:42:28,400 --> 00:42:29,400 vamos a ver, 1311 00:42:29,400 --> 00:42:30,400 vamos a ver, 1312 00:42:30,400 --> 00:42:31,400 vamos a ver, 1313 00:42:31,400 --> 00:42:32,400 creo que voy a poner 1314 00:42:32,400 --> 00:42:33,400 el mismo nombre 1315 00:42:33,400 --> 00:42:34,400 de variables 1316 00:42:34,400 --> 00:42:35,400 que usa él 1317 00:42:35,400 --> 00:42:36,400 para que no os hagáis 1318 00:42:36,400 --> 00:42:37,400 un lío, 1319 00:42:37,400 --> 00:42:38,400 esto que hacía, 1320 00:42:38,400 --> 00:42:39,400 hacía 1321 00:42:39,400 --> 00:42:40,400 un 1322 00:42:40,400 --> 00:42:41,400 array nuevo 1323 00:42:41,400 --> 00:42:42,400 o temporal 1324 00:42:42,400 --> 00:42:43,400 o aux 1325 00:42:43,400 --> 00:42:44,400 un array nuevo 1326 00:42:44,400 --> 00:42:45,400 que fuera igual, 1327 00:42:45,400 --> 00:42:46,400 es decir, 1328 00:42:46,400 --> 00:42:47,400 que fuera igual 1329 00:42:47,400 --> 00:42:48,400 a 1330 00:42:48,400 --> 00:42:49,400 un 1331 00:42:49,400 --> 00:42:50,400 array nuevo 1332 00:42:50,400 --> 00:42:51,400 que era 1333 00:42:51,400 --> 00:42:52,400 que era 1334 00:42:52,400 --> 00:42:53,400 un 1335 00:42:53,400 --> 00:42:54,400 no 1336 00:42:54,400 --> 00:42:55,400 que 1337 00:42:55,400 --> 00:42:56,400 fuese 1338 00:42:56,400 --> 00:42:57,400 igual 1339 00:42:57,400 --> 00:42:58,400 a 1340 00:42:58,400 --> 00:42:59,400 un 1341 00:43:00,400 --> 00:43:03,400 que tuviera como tamaño 1342 00:43:03,400 --> 00:43:04,400 el array 1343 00:43:04,400 --> 00:43:05,400 antiguo 1344 00:43:05,400 --> 00:43:07,400 más uno 1345 00:43:08,400 --> 00:43:09,400 ¿vale? 1346 00:43:10,400 --> 00:43:11,400 es decir, 1347 00:43:11,400 --> 00:43:12,400 una posición más 1348 00:43:12,400 --> 00:43:14,400 hacemos un array nuevo 1349 00:43:14,400 --> 00:43:15,400 uno nuevo 1350 00:43:15,400 --> 00:43:16,400 que tenga 1351 00:43:16,400 --> 00:43:17,400 una posición más 1352 00:43:17,400 --> 00:43:18,400 que tenía el otro 1353 00:43:18,400 --> 00:43:19,400 el otro inicialmente 1354 00:43:19,400 --> 00:43:20,400 era cero 1355 00:43:20,400 --> 00:43:21,400 ¿vale? 1356 00:43:21,400 --> 00:43:22,400 con lo cual la primera vez 1357 00:43:22,400 --> 00:43:23,400 tendrá una posición 1358 00:43:23,400 --> 00:43:24,400 que la siguiente vez 1359 00:43:24,400 --> 00:43:25,400 tendrá dos 1360 00:43:25,400 --> 00:43:26,400 y la siguiente tres 1361 00:43:26,400 --> 00:43:27,400 entonces hacemos uno nuevo 1362 00:43:27,400 --> 00:43:28,400 que tenga una posición más 1363 00:43:28,400 --> 00:43:29,400 que la anterior 1364 00:43:29,400 --> 00:43:30,400 ¿ahora qué hacíamos? 1365 00:43:30,400 --> 00:43:31,400 copiábamos 1366 00:43:31,400 --> 00:43:32,400 cada posición 1367 00:43:32,400 --> 00:43:33,400 del viejo 1368 00:43:33,400 --> 00:43:34,400 en el nuevo 1369 00:43:34,400 --> 00:43:35,400 ¿vale? 1370 00:43:35,400 --> 00:43:36,400 pues vamos a hacer eso 1371 00:43:36,400 --> 00:43:37,400 copiamos cada posición 1372 00:43:37,400 --> 00:43:38,400 del viejo 1373 00:43:38,400 --> 00:43:39,400 en el nuevo 1374 00:43:39,400 --> 00:43:40,400 pues venga 1375 00:43:40,400 --> 00:43:41,400 desde igual a cero 1376 00:43:41,400 --> 00:43:42,400 mientras i sea menor 1377 00:43:42,400 --> 00:43:43,400 que 1378 00:43:43,400 --> 00:43:44,400 números 1379 00:43:44,400 --> 00:43:45,400 perdón 1380 00:43:45,400 --> 00:43:46,400 que el viejo 1381 00:43:46,400 --> 00:43:47,400 se llama números 1382 00:43:47,400 --> 00:43:48,400 números.length 1383 00:43:48,400 --> 00:43:49,400 incrementando i 1384 00:43:49,400 --> 00:43:50,400 ¿qué hacemos? 1385 00:43:50,400 --> 00:43:51,400 array 1386 00:43:51,400 --> 00:43:52,400 vamos a terminar esto 1387 00:43:52,400 --> 00:43:53,400 si queréis 1388 00:43:53,400 --> 00:43:54,400 luego paramos 1389 00:43:54,400 --> 00:43:55,400 un 1390 00:43:55,400 --> 00:43:56,400 array 1391 00:43:56,400 --> 00:43:57,400 nuevo 1392 00:43:57,400 --> 00:43:58,400 si queréis 1393 00:43:58,400 --> 00:43:59,400 luego paramos 1394 00:43:59,400 --> 00:44:00,400 unos minutos 1395 00:44:00,400 --> 00:44:01,400 números de i 1396 00:44:01,400 --> 00:44:02,400 vale 1397 00:44:02,400 --> 00:44:03,400 ya hemos copiado 1398 00:44:03,400 --> 00:44:04,400 todas las posiciones 1399 00:44:04,400 --> 00:44:05,400 del viejo 1400 00:44:05,400 --> 00:44:06,400 en el nuevo 1401 00:44:06,400 --> 00:44:07,400 pero la nueva 1402 00:44:07,400 --> 00:44:08,400 extra 1403 00:44:08,400 --> 00:44:09,400 en la nueva 1404 00:44:09,400 --> 00:44:10,400 extra 1405 00:44:10,400 --> 00:44:11,400 ya valen 1406 00:44:11,400 --> 00:44:12,400 ¿eh? 1407 00:44:12,400 --> 00:44:13,400 ¿vale? 1408 00:44:13,400 --> 00:44:14,400 y la extra 1409 00:44:14,400 --> 00:44:15,400 es 1410 00:44:15,400 --> 00:44:16,400 array 1411 00:44:16,400 --> 00:44:17,400 nuevo 1412 00:44:17,400 --> 00:44:18,400 de su última 1413 00:44:18,400 --> 00:44:19,400 posición 1414 00:44:19,400 --> 00:44:20,400 que es 1415 00:44:20,400 --> 00:44:21,400 su última 1416 00:44:21,400 --> 00:44:22,400 posición 1417 00:44:22,400 --> 00:44:23,400 ¿cuál es? 1418 00:44:23,400 --> 00:44:24,400 array 1419 00:44:24,400 --> 00:44:25,400 nuevo 1420 00:44:25,400 --> 00:44:26,400 punto 1421 00:44:26,400 --> 00:44:27,400 menos uno 1422 00:44:27,400 --> 00:44:28,400 esta es su última 1423 00:44:28,400 --> 00:44:29,400 esta va en 1424 00:44:29,400 --> 00:44:30,400 vale 1425 00:44:30,400 --> 00:44:31,400 y ahora ya 1426 00:44:31,400 --> 00:44:32,400 ¿qué nos faltaba? 1427 00:44:32,400 --> 00:44:33,400 vamos a pisar 1428 00:44:33,400 --> 00:44:34,400 el array 1429 00:44:34,400 --> 00:44:35,400 antiguo 1430 00:44:35,400 --> 00:44:36,400 con el nuevo 1431 00:44:36,400 --> 00:44:37,400 ¿vale? 1432 00:44:37,400 --> 00:44:38,400 uy 1433 00:44:38,400 --> 00:44:39,400 es que no se llama 1434 00:44:39,400 --> 00:44:40,400 array 1435 00:44:40,400 --> 00:44:41,400 se llama 1436 00:44:41,400 --> 00:44:42,400 números 1437 00:44:42,400 --> 00:44:43,400 ¿vale? 1438 00:44:43,400 --> 00:44:44,400 ¿vale? 1439 00:44:44,400 --> 00:44:45,400 ¿vale? 1440 00:44:45,400 --> 00:44:46,400 ¿vale? 1441 00:44:46,400 --> 00:44:47,400 ¿vale? 1442 00:44:47,400 --> 00:44:48,400 ¿vale? 1443 00:44:48,400 --> 00:44:49,400 ¿vale? 1444 00:44:49,400 --> 00:44:50,400 ¿vale? 1445 00:44:50,400 --> 00:44:51,400 ¿vale? 1446 00:44:51,400 --> 00:44:52,400 ¿vale? 1447 00:44:52,400 --> 00:44:53,400 ¿vale? 1448 00:44:53,400 --> 00:44:54,400 ¿vale? 1449 00:44:54,400 --> 00:44:55,400 ¿vale? 1450 00:44:56,400 --> 00:44:57,400 bueno, da igual 1451 00:44:57,400 --> 00:44:58,400 a que igual eso lo decís 1452 00:44:58,400 --> 00:44:59,400 en otro orden 1453 00:44:59,400 --> 00:45:00,400 da lo mismo 1454 00:45:00,400 --> 00:45:01,400 da lo mismo 1455 00:45:01,400 --> 00:45:02,400 da igual 1456 00:45:04,400 --> 00:45:05,400 ¿vale? 1457 00:45:05,400 --> 00:45:06,400 lo que importa es 1458 00:45:06,400 --> 00:45:07,400 lo que tenemos que hacer 1459 00:45:07,400 --> 00:45:08,400 ¿qué es? 1460 00:45:08,400 --> 00:45:09,400 nos hacemos uno 1461 00:45:09,400 --> 00:45:10,400 de una posición más 1462 00:45:10,400 --> 00:45:11,400 copiamos 1463 00:45:11,400 --> 00:45:12,400 todas y cada una 1464 00:45:12,400 --> 00:45:13,400 de las posiciones 1465 00:45:13,400 --> 00:45:14,400 del viejo 1466 00:45:14,400 --> 00:45:15,400 en el nuevo 1467 00:45:15,400 --> 00:45:16,400 en la posición 1468 00:45:16,400 --> 00:45:17,400 adicional 1469 00:45:17,400 --> 00:45:18,400 que es esta 1470 00:45:18,400 --> 00:45:19,400 en la adicional 1471 00:45:19,400 --> 00:45:20,400 copiamos 1472 00:45:20,400 --> 00:45:21,400 el nuevo dato 1473 00:45:21,400 --> 00:45:22,400 y ahora ya 1474 00:45:22,400 --> 00:45:23,400 piso 1475 00:45:23,400 --> 00:45:24,400 mi array 1476 00:45:24,400 --> 00:45:25,400 el antiguo 1477 00:45:25,400 --> 00:45:26,400 lo piso con este 1478 00:45:26,400 --> 00:45:27,400 o lo puedo pisar antes 1479 00:45:27,400 --> 00:45:28,400 me da lo mismo 1480 00:45:28,400 --> 00:45:29,400 porque apuntan 1481 00:45:29,400 --> 00:45:30,400 al mismo sitio 1482 00:45:30,400 --> 00:45:31,400 yo es que así 1483 00:45:31,400 --> 00:45:32,400 lo veo más claro 1484 00:45:32,400 --> 00:45:33,400 porque si se pone antes 1485 00:45:33,400 --> 00:45:34,400 hay que tener muy claro 1486 00:45:34,400 --> 00:45:35,400 que eso son 1487 00:45:35,400 --> 00:45:36,400 direcciones de memoria 1488 00:45:36,400 --> 00:45:37,400 y que luego aquí 1489 00:45:37,400 --> 00:45:38,400 pero bueno 1490 00:45:38,400 --> 00:45:39,400 da igual 1491 00:45:39,400 --> 00:45:40,400 ¿vale? 1492 00:45:40,400 --> 00:45:41,400 o sea, esta parte 1493 00:45:41,400 --> 00:45:42,400 cuando hacemos esto 1494 00:45:42,400 --> 00:45:43,400 tenéis claro 1495 00:45:43,400 --> 00:45:44,400 lo que hacemos 1496 00:45:44,400 --> 00:45:45,400 ¿no? 1497 00:45:45,400 --> 00:45:46,400 lo tenéis claro 1498 00:45:46,400 --> 00:45:47,400 estamos metiendo 1499 00:45:47,400 --> 00:45:48,400 un dato nuevo 1500 00:45:48,400 --> 00:45:49,400 en el array 1501 00:45:49,400 --> 00:45:50,400 pues tengo que agrandarlo 1502 00:45:50,400 --> 00:45:51,400 le pongo una posición más 1503 00:45:51,400 --> 00:45:52,400 copio el viejo 1504 00:45:52,400 --> 00:45:53,400 en el nuevo 1505 00:45:54,400 --> 00:45:55,400 pongo la posición extra 1506 00:45:55,400 --> 00:45:56,400 y sustituyo una por otra 1507 00:45:56,400 --> 00:45:57,400 ¿vale? 1508 00:45:57,400 --> 00:45:58,400 bueno 1509 00:45:58,400 --> 00:45:59,400 y ahora ya 1510 00:45:59,400 --> 00:46:00,400 pues ya está 1511 00:46:00,400 --> 00:46:01,400 a ver que repase 1512 00:46:01,400 --> 00:46:02,400 si he hecho algo mal 1513 00:46:02,400 --> 00:46:03,400 leemos el numerito 1514 00:46:03,400 --> 00:46:04,400 y se va 1515 00:46:04,400 --> 00:46:05,400 a la extra 1516 00:46:05,400 --> 00:46:06,400 de aquí 1517 00:46:06,400 --> 00:46:07,400 ¿vale? 1518 00:46:07,400 --> 00:46:08,400 pues ya está 1519 00:46:08,400 --> 00:46:09,400 ¿no? 1520 00:46:09,400 --> 00:46:10,400 a ver 1521 00:46:10,400 --> 00:46:11,400 que repase 1522 00:46:11,400 --> 00:46:12,400 si he hecho algo mal 1523 00:46:12,400 --> 00:46:13,400 leemos el numerito 1524 00:46:13,400 --> 00:46:14,400 y se va 1525 00:46:14,400 --> 00:46:15,400 a la extra 1526 00:46:15,400 --> 00:46:16,400 de aquí 1527 00:46:16,400 --> 00:46:17,400 ¿vale? 1528 00:46:17,400 --> 00:46:18,400 pues ya está 1529 00:46:18,400 --> 00:46:19,400 ¿no? 1530 00:46:19,400 --> 00:46:20,400 a ver 1531 00:46:20,400 --> 00:46:21,400 que repase 1532 00:46:21,400 --> 00:46:22,400 si he hecho algo mal 1533 00:46:22,400 --> 00:46:23,400 le pongo la extra 1534 00:46:23,400 --> 00:46:24,400 de aquí 1535 00:46:24,400 --> 00:46:25,400 ¿vale? 1536 00:46:25,400 --> 00:46:26,400 aquí lo único 1537 00:46:26,400 --> 00:46:27,400 es que 1538 00:46:27,400 --> 00:46:28,400 si el numero es cero 1539 00:46:28,400 --> 00:46:29,400 también lo está guardando 1540 00:46:29,400 --> 00:46:30,400 en el array 1541 00:46:30,400 --> 00:46:31,400 ¿verdad? 1542 00:46:31,400 --> 00:46:32,400 porque no se va 1543 00:46:32,400 --> 00:46:33,400 al while 1544 00:46:33,400 --> 00:46:34,400 a mirar si es diferente 1545 00:46:34,400 --> 00:46:35,400 de cero para salir 1546 00:46:35,400 --> 00:46:36,400 hasta después 1547 00:46:36,400 --> 00:46:37,400 de haberlo leído 1548 00:46:37,400 --> 00:46:38,400 y guardado 1549 00:46:38,400 --> 00:46:39,400 entonces 1550 00:46:39,400 --> 00:46:40,400 si yo no quiero 1551 00:46:40,400 --> 00:46:41,400 que el cero 1552 00:46:41,400 --> 00:46:42,400 vaya al array 1553 00:46:42,400 --> 00:46:43,400 esto de aquí 1554 00:46:43,400 --> 00:46:44,400 lo meto en un if 1555 00:46:44,400 --> 00:46:45,400 simplemente 1556 00:46:45,400 --> 00:46:46,400 ¿entendéis? 1557 00:46:46,400 --> 00:46:47,400 ¿no? 1558 00:46:47,400 --> 00:46:48,400 que este mete 1559 00:46:48,400 --> 00:46:49,400 todos los números 1560 00:46:49,400 --> 00:46:50,400 incluido el cero 1561 00:46:50,400 --> 00:46:51,400 y ya no va 1562 00:46:51,400 --> 00:46:52,400 a pedir más 1563 00:46:52,400 --> 00:46:53,400 porque como ya he metido 1564 00:46:53,400 --> 00:46:54,400 un cero 1565 00:46:54,400 --> 00:46:55,400 la siguiente vez 1566 00:46:55,400 --> 00:46:56,400 que el while 1567 00:46:56,400 --> 00:46:57,400 vaya arriba 1568 00:46:57,400 --> 00:46:58,400 va a salir 1569 00:46:58,400 --> 00:46:59,400 entonces 1570 00:46:59,400 --> 00:47:00,400 mete todos los números 1571 00:47:00,400 --> 00:47:01,400 más el cero final 1572 00:47:01,400 --> 00:47:02,400 bueno 1573 00:47:02,400 --> 00:47:03,400 eso ya es cuestión 1574 00:47:03,400 --> 00:47:04,400 de preguntarle 1575 00:47:04,400 --> 00:47:05,400 a quien lo haya puesto 1576 00:47:05,400 --> 00:47:06,400 ¿el cero del final 1577 00:47:06,400 --> 00:47:07,400 quieres que también 1578 00:47:07,400 --> 00:47:08,400 vaya al array 1579 00:47:08,400 --> 00:47:09,400 o no quieres que vaya? 1580 00:47:09,400 --> 00:47:10,400 que no queremos que vaya 1581 00:47:10,400 --> 00:47:11,400 se puede meter 1582 00:47:11,400 --> 00:47:12,400 todo esto 1583 00:47:12,400 --> 00:47:13,400 en un if 1584 00:47:13,400 --> 00:47:14,400 if n 1585 00:47:14,400 --> 00:47:15,400 diferente de cero 1586 00:47:15,400 --> 00:47:16,400 entonces haz todo eso 1587 00:47:16,400 --> 00:47:17,400 simplemente 1588 00:47:17,400 --> 00:47:18,400 if n 1589 00:47:18,400 --> 00:47:19,400 diferente de eso 1590 00:47:19,400 --> 00:47:20,400 haz todo eso 1591 00:47:20,400 --> 00:47:21,400 bueno, ese while 1592 00:47:21,400 --> 00:47:22,400 está entendido 1593 00:47:22,400 --> 00:47:23,400 el bucle 1594 00:47:23,400 --> 00:47:24,400 que va rellenando 1595 00:47:24,400 --> 00:47:25,400 el array 1596 00:47:25,400 --> 00:47:26,400 ¿vale? 1597 00:47:26,400 --> 00:47:27,400 venga 1598 00:47:27,400 --> 00:47:28,400 vamos a parar 1599 00:47:28,400 --> 00:47:29,400 dos minutos entonces 1600 00:47:29,400 --> 00:47:32,400 por si habéis desconectado