1 00:00:00,050 --> 00:00:05,410 Vale, pues ejercicios 2 00:00:05,410 --> 00:00:07,990 Era el 3 00:00:07,990 --> 00:00:10,990 El 8 sería, ¿verdad? 4 00:00:11,089 --> 00:00:11,630 Era este 5 00:00:11,630 --> 00:00:14,429 Entonces este ejercicio lo habíamos hecho 6 00:00:14,429 --> 00:00:17,170 Sacando las centenas, unidades y decenas 7 00:00:17,170 --> 00:00:20,489 Y sacando la cifra mayor, la mayor y la intermedia 8 00:00:20,489 --> 00:00:23,469 Pero claro, este programa es válido 9 00:00:23,469 --> 00:00:26,109 Si el número que me han introducido es positivo 10 00:00:26,109 --> 00:00:29,870 Pero si el número que me han introducido es negativo 11 00:00:29,870 --> 00:00:31,649 entonces 12 00:00:31,649 --> 00:00:33,229 lo que me han 13 00:00:33,229 --> 00:00:35,670 metido por consola 14 00:00:35,670 --> 00:00:49,740 es, o sea, si me han metido 15 00:00:49,740 --> 00:00:51,219 321 16 00:00:51,219 --> 00:00:53,780 este programa funcionaba perfectamente 17 00:00:53,780 --> 00:00:55,320 porque al hacer yo estas operaciones 18 00:00:55,320 --> 00:00:57,000 sacaba el 3 19 00:00:57,000 --> 00:00:58,719 el 2 y el 1 20 00:00:58,719 --> 00:01:01,179 pero si me meten un número negativo 21 00:01:01,179 --> 00:01:02,799 el menos 22 00:01:02,799 --> 00:01:04,719 512 23 00:01:04,719 --> 00:01:07,260 ¿vale? entonces 24 00:01:07,260 --> 00:01:09,819 bueno, las cifras las saco bien igualmente 25 00:01:09,819 --> 00:01:11,959 si me metí un número negativo 26 00:01:11,959 --> 00:01:13,900 las cifras las saco bien igualmente 27 00:01:13,900 --> 00:01:15,920 pero luego el negativo 28 00:01:15,920 --> 00:01:17,519 mayor posible 29 00:01:17,519 --> 00:01:19,219 tiene que ir al revés 30 00:01:19,219 --> 00:01:21,640 primero tiene que ir la cifra más pequeñita 31 00:01:21,640 --> 00:01:23,200 luego la mayor y luego esta 32 00:01:23,200 --> 00:01:26,340 el número negativo 33 00:01:26,340 --> 00:01:27,879 más grande 34 00:01:27,879 --> 00:01:30,340 que se puede construir con las cifras de 512 35 00:01:30,340 --> 00:01:32,439 es el menos 125 36 00:01:32,439 --> 00:01:33,680 este es el más grande 37 00:01:33,680 --> 00:01:36,459 sin embargo si el número fuera positivo 38 00:01:36,459 --> 00:01:38,459 el número más grande que se puede construir 39 00:01:38,459 --> 00:01:41,040 es el 521 40 00:01:41,040 --> 00:01:43,219 luego tenemos que 41 00:01:43,219 --> 00:01:44,819 meter aquí un if que distinga 42 00:01:44,819 --> 00:01:46,560 si el número es negativo o positivo 43 00:01:46,560 --> 00:01:48,299 porque si es negativo 44 00:01:48,299 --> 00:01:50,379 el número lo construyo 45 00:01:50,379 --> 00:01:52,180 a la inversa 46 00:01:52,180 --> 00:01:54,040 que si es positivo 47 00:01:54,040 --> 00:01:55,439 ¿está claro, no? 48 00:01:56,879 --> 00:01:57,340 ¿sí o no? 49 00:01:58,260 --> 00:02:00,959 pero las cifras se sacan igual, ¿verdad? 50 00:02:01,500 --> 00:02:02,959 si yo tengo el menos 51 00:02:02,959 --> 00:02:05,260 el menos 125 52 00:02:05,260 --> 00:02:06,299 por ejemplo 53 00:02:06,299 --> 00:02:09,580 el cociente, el resto 54 00:02:09,580 --> 00:02:10,740 todo eso será igual 55 00:02:10,740 --> 00:02:13,939 lo que pasa es que 56 00:02:13,939 --> 00:02:15,580 arrastraré el signo 57 00:02:15,580 --> 00:02:16,539 vamos a comprobarlo 58 00:02:16,539 --> 00:02:20,280 vamos a ver 59 00:02:20,280 --> 00:02:23,800 vamos a añadir aquí 60 00:02:23,800 --> 00:02:26,599 una comprobación que sea 61 00:02:26,599 --> 00:02:28,900 decenas 62 00:02:28,900 --> 00:02:30,280 que no lo veis 63 00:02:30,280 --> 00:02:34,840 una comprobación que sea 64 00:02:34,840 --> 00:02:36,800 vamos a ver las centenas del número 65 00:02:36,800 --> 00:02:38,879 las centenas del número 66 00:02:38,879 --> 00:02:40,479 será este 67 00:02:40,479 --> 00:02:45,139 vamos a comprobar las decenas 68 00:02:45,139 --> 00:02:45,879 del número 69 00:02:45,879 --> 00:02:55,849 y vamos a comprobar 70 00:02:55,849 --> 00:02:58,069 las unidades 71 00:02:58,069 --> 00:03:08,949 vale, si ejecutamos el programa 72 00:03:08,949 --> 00:03:10,210 metiendo un número positivo 73 00:03:10,210 --> 00:03:11,629 ya sabemos lo que nos va a sacar 74 00:03:11,629 --> 00:03:14,810 exactamente las centenas, las decenas y las unidades 75 00:03:14,810 --> 00:03:18,780 le meto 76 00:03:18,780 --> 00:03:20,539 el 3 cuadrado a este 77 00:03:20,539 --> 00:03:22,319 y me saca centenas 4 78 00:03:22,319 --> 00:03:24,539 decenas 5 79 00:03:24,539 --> 00:03:25,439 y unidades 3 80 00:03:25,439 --> 00:03:27,780 Y si le meto un número negativo 81 00:03:27,780 --> 00:03:28,759 Vamos a ver 82 00:03:28,759 --> 00:03:32,419 Que me saca 83 00:03:32,419 --> 00:03:35,199 Centenas 8, decenas 7 84 00:03:35,199 --> 00:03:37,319 Y unidades menos 1 85 00:03:37,319 --> 00:03:38,259 ¿Vale? 86 00:03:40,590 --> 00:03:41,189 Entonces 87 00:03:41,189 --> 00:03:44,449 Al sacarme las centenas 88 00:03:44,449 --> 00:03:46,349 Las decenas y las unidades 89 00:03:46,349 --> 00:03:47,430 Ya con el signo 90 00:03:47,430 --> 00:03:50,650 Me lo hace bien igualmente 91 00:03:50,650 --> 00:03:52,169 Es que no tenemos ni que tocar nada 92 00:03:52,169 --> 00:03:56,389 Porque al 93 00:03:56,389 --> 00:03:57,949 No tenemos ni que tocar nada 94 00:03:57,949 --> 00:03:59,810 Fijaos que listo 95 00:03:59,810 --> 00:04:01,250 No tenemos que tocar nada 96 00:04:01,250 --> 00:04:04,110 Porque si el número es negativo 97 00:04:04,110 --> 00:04:05,870 La operación que hemos hecho 98 00:04:05,870 --> 00:04:07,310 Nos sale con número negativo 99 00:04:07,310 --> 00:04:08,289 Con signo negativo 100 00:04:08,289 --> 00:04:10,050 Esta operación 101 00:04:10,050 --> 00:04:17,100 Que era el número 102 00:04:17,100 --> 00:04:17,680 N 103 00:04:17,680 --> 00:04:21,439 Entre 100 104 00:04:21,439 --> 00:04:23,379 Esta operación 105 00:04:23,379 --> 00:04:25,339 Ahora me da el menos 8 106 00:04:25,339 --> 00:04:27,120 En el cociente de N 107 00:04:27,120 --> 00:04:28,199 Entre 100 es 8 108 00:04:28,199 --> 00:04:31,360 Pero como el 109 00:04:31,360 --> 00:04:32,519 El signo de N es negativo 110 00:04:32,519 --> 00:04:34,959 pues ya sabéis la regla de los signos de la división 111 00:04:34,959 --> 00:04:36,019 luego esto es menos 8 112 00:04:36,019 --> 00:04:38,600 las decenas como las sacábamos 113 00:04:38,600 --> 00:04:40,720 las sacábamos 114 00:04:40,720 --> 00:04:43,959 las unidades 115 00:04:43,959 --> 00:04:46,379 las sacábamos como el resto de 116 00:04:46,379 --> 00:04:52,060 las unidades 117 00:04:52,060 --> 00:04:54,639 las sacábamos como el resto 118 00:04:54,639 --> 00:04:55,579 de dividir entre 10 119 00:04:55,579 --> 00:04:58,000 el resto de dividir entre 10 120 00:04:58,000 --> 00:05:00,459 efectivamente 121 00:05:00,459 --> 00:05:02,660 es 1 pero por la 122 00:05:02,660 --> 00:05:04,899 regla de los signos como n es negativo 123 00:05:04,899 --> 00:05:06,839 por la regla de los signos me saca menos 1 124 00:05:06,839 --> 00:05:08,259 y las unidades 125 00:05:08,259 --> 00:05:09,920 las sacábamos 126 00:05:09,920 --> 00:05:12,860 el número entre 127 00:05:12,860 --> 00:05:13,519 100 128 00:05:13,519 --> 00:05:16,220 no, por ciento 129 00:05:16,220 --> 00:05:19,139 100 y luego esto entre 10 130 00:05:19,139 --> 00:05:20,040 ¿vale? 131 00:05:21,850 --> 00:05:24,470 y esto me saca 132 00:05:24,470 --> 00:05:26,829 el menos 7 133 00:05:26,829 --> 00:05:31,430 entonces me ha sacado 134 00:05:31,430 --> 00:05:33,209 correctamente las centenas, las decenas 135 00:05:33,209 --> 00:05:35,170 y las unidades pero me las ha sacado por la regla 136 00:05:35,170 --> 00:05:37,069 de los signos, me la ha sacado con signo negativo 137 00:05:37,069 --> 00:05:38,709 eso me permite 138 00:05:38,709 --> 00:05:40,970 que ya el programa funcione bien 139 00:05:40,970 --> 00:05:43,230 porque ahora al tener todas un signo negativo 140 00:05:43,230 --> 00:05:44,810 ¿cuál va a ser 141 00:05:44,810 --> 00:05:46,269 la cifra mayor de todas? 142 00:05:46,810 --> 00:05:47,870 esta va a ser la mayor 143 00:05:47,870 --> 00:05:50,629 ¿cuál va a ser la intermedia? esta 144 00:05:50,629 --> 00:05:53,170 ¿y cuál va a ser la más pequeña? esta 145 00:05:53,170 --> 00:05:55,209 cuando el signo era positivo 146 00:05:55,209 --> 00:05:57,370 la mayor era 8 147 00:05:57,370 --> 00:05:58,589 porque esto era positivo 148 00:05:58,589 --> 00:06:01,009 luego era 7 la intermedia 149 00:06:01,009 --> 00:06:02,350 y luego 1 la más pequeña 150 00:06:02,350 --> 00:06:05,490 pero al sacármelo todo con el signo al revés 151 00:06:05,490 --> 00:06:07,350 al sacármelo con el signo al revés 152 00:06:07,350 --> 00:06:11,149 pues la más pequeñita 153 00:06:11,149 --> 00:06:13,490 ahora será el menos 8 154 00:06:13,490 --> 00:06:15,370 la intermedia el menos 7 155 00:06:15,370 --> 00:06:16,529 y la más grande la menos 1 156 00:06:16,529 --> 00:06:17,529 al tener el signo 157 00:06:17,529 --> 00:06:20,350 con lo cual cuando me reconstruya el número 158 00:06:20,350 --> 00:06:22,750 multiplicando la más grande por 100 159 00:06:22,750 --> 00:06:24,050 la intermedia por 10 160 00:06:24,050 --> 00:06:25,089 y sumando las unidades 161 00:06:25,089 --> 00:06:26,870 me lo hace correter también 162 00:06:26,870 --> 00:06:30,170 es que no tenemos ni que 163 00:06:30,170 --> 00:06:31,689 operar de forma distinta 164 00:06:31,689 --> 00:06:33,490 no tenemos ni que distinguirse 165 00:06:33,490 --> 00:06:34,550 el número es positivo o negativo 166 00:06:34,550 --> 00:06:35,589 el programa que hemos hecho 167 00:06:35,589 --> 00:06:37,029 ya me lo hace bien 168 00:06:41,879 --> 00:06:42,939 Pero entendéis por qué, ¿no? 169 00:06:42,980 --> 00:06:45,620 Porque menos 1 es mayor que menos 7, 170 00:06:45,740 --> 00:06:47,800 que a su vez menos 7 es mayor que menos 8. 171 00:06:49,199 --> 00:06:52,540 Sin embargo, 1 es menor que 7 y 1 es menor que 8. 172 00:06:52,699 --> 00:06:53,500 Esto está claro, ¿no? 173 00:06:54,699 --> 00:06:56,319 Entonces, cuando el número es negativo, 174 00:06:57,360 --> 00:07:00,620 la que antes era la cifra más pequeña, 175 00:07:00,819 --> 00:07:02,339 ahora se convierte en la cifra más grande. 176 00:07:03,259 --> 00:07:05,079 Y la que antes era la cifra más grande, 177 00:07:05,160 --> 00:07:06,439 ahora se convierte en la más pequeñita. 178 00:07:07,420 --> 00:07:08,740 Luego, a la hora de reconstruir el número, 179 00:07:09,000 --> 00:07:10,740 me sigue saliendo el más grande posible. 180 00:07:11,160 --> 00:07:15,089 luego no tenemos ni que distinguir con un if 181 00:07:15,089 --> 00:07:15,730 ni con nada 182 00:07:15,730 --> 00:07:21,290 si hubiéramos hecho este programa usando 183 00:07:21,290 --> 00:07:23,689 la clase string, descomponiendo el número 184 00:07:23,689 --> 00:07:24,910 pasándolo a cadena 185 00:07:24,910 --> 00:07:27,610 por cifras, pues sí 186 00:07:27,610 --> 00:07:29,269 tendría que distinguir si es negativo o no 187 00:07:29,269 --> 00:07:30,550 pero haciéndolo con cifras 188 00:07:30,550 --> 00:07:39,339 bueno, pues con esto el ejercicio 8 189 00:07:39,339 --> 00:07:41,800 no tenemos nada que añadir, está completo 190 00:07:41,800 --> 00:07:44,079 vale 191 00:07:44,079 --> 00:07:46,100 ¿cuál otro decíais que hiciéramos? 192 00:07:48,959 --> 00:07:50,279 vamos cogiendo al azar 193 00:07:50,279 --> 00:07:51,500 me vais diciendo, ok 194 00:07:51,500 --> 00:08:00,839 vienen a ser todos un poco lo mismo 195 00:08:00,839 --> 00:08:02,180 venga, ¿cuál? 196 00:08:08,269 --> 00:08:09,329 el 17, este 197 00:08:09,329 --> 00:08:12,470 ah, perdón 198 00:08:12,470 --> 00:08:15,449 hola 199 00:08:15,449 --> 00:08:18,129 a ver, este en realidad 200 00:08:18,129 --> 00:08:20,290 es una chorrada 201 00:08:20,290 --> 00:08:22,509 es comprobar que el primer char 202 00:08:22,509 --> 00:08:24,430 es este, el segundo este, el tercero este 203 00:08:24,430 --> 00:08:26,709 y el cuarto este, ya está, nada más 204 00:08:26,709 --> 00:08:28,329 claro, es que con if 205 00:08:28,329 --> 00:08:29,829 es que hay pocas cosas que se puedan hacer 206 00:08:29,829 --> 00:08:33,919 entonces, esto era 207 00:08:33,919 --> 00:08:35,799 usando algoritmo distinto 208 00:08:35,799 --> 00:08:37,620 pues convirtiéndolo al 209 00:08:37,620 --> 00:08:39,759 string correspondiente y comparando 210 00:08:39,759 --> 00:08:41,179 por ejemplo, vamos a hacer el 17 y 18 211 00:08:41,179 --> 00:08:43,679 es una tontería, pero bueno, así practicamos con cosas 212 00:08:43,679 --> 00:08:44,980 desde las más sencillitas 213 00:08:44,980 --> 00:08:46,539 a las más raras 214 00:08:46,539 --> 00:08:51,950 el 19 ahora lo haremos, tranquilos 215 00:08:51,950 --> 00:08:53,830 vamos primero con cosas 216 00:08:53,830 --> 00:08:56,289 más fáciles, porque habrá gente que esté un poquito más 217 00:08:56,289 --> 00:08:58,129 más perdida 218 00:08:58,129 --> 00:09:00,049 y necesite un poquito más de consolidación 219 00:09:00,049 --> 00:09:02,409 17 y 18 220 00:09:02,409 --> 00:09:23,419 vale, como vamos a recibir 221 00:09:23,419 --> 00:09:24,240 por teclado 222 00:09:24,240 --> 00:09:34,960 pues un escáner 223 00:09:34,960 --> 00:09:42,340 como vamos a recibir por teclado 224 00:09:42,340 --> 00:09:43,200 un escáner, vale 225 00:09:43,200 --> 00:09:46,240 y ahora vamos a recibir 4 char 226 00:09:46,240 --> 00:09:48,039 vamos a 227 00:09:48,039 --> 00:09:50,279 fijarle al 228 00:09:50,279 --> 00:09:51,779 que lo va a meter que char 229 00:09:51,779 --> 00:09:54,059 enter, char, enter, char, enter 230 00:09:54,059 --> 00:09:56,120 char, enter, con lo cual 4 lecturas 231 00:09:56,120 --> 00:09:56,879 tenemos que hacer 232 00:09:56,879 --> 00:10:00,419 si decidimos que lo haga así, separados por enter cada uno de ellos 233 00:10:00,419 --> 00:10:01,799 pues venga 234 00:10:01,799 --> 00:10:03,639 carácter1 igual a 235 00:10:03,639 --> 00:10:06,200 scan.nextline 236 00:10:06,200 --> 00:10:10,700 y como leíamos un carácter por teclado 237 00:10:10,700 --> 00:10:12,620 scan next line 238 00:10:12,620 --> 00:10:14,940 te lee lo que tú le hayas puesto hasta el enter 239 00:10:14,940 --> 00:10:16,799 pero te lo guarda en formato string 240 00:10:16,799 --> 00:10:18,500 entonces 241 00:10:18,500 --> 00:10:19,860 nosotros lo queremos en char 242 00:10:19,860 --> 00:10:21,840 pues como esto es un string 243 00:10:21,840 --> 00:10:23,340 todo esto es un string 244 00:10:23,340 --> 00:10:24,759 el string que me ha leído 245 00:10:24,759 --> 00:10:27,399 es un objeto, objeto string 246 00:10:27,399 --> 00:10:30,139 entonces yo puedo llamar a este método 247 00:10:30,139 --> 00:10:33,600 y quedarme con el carácter 248 00:10:33,600 --> 00:10:34,360 en posición 0 249 00:10:34,360 --> 00:10:37,500 luego este es el string 250 00:10:37,500 --> 00:10:38,940 la cadena que me han metido 251 00:10:38,940 --> 00:10:40,860 se supone que es A 252 00:10:40,860 --> 00:10:43,539 porque yo le estoy diciendo al tío 253 00:10:43,539 --> 00:10:45,259 que es solo un carácter, A, vale 254 00:10:45,259 --> 00:10:47,500 pero está guardado en formato string, como si fuera 255 00:10:47,500 --> 00:10:48,620 el A con dobles comillas 256 00:10:48,620 --> 00:10:51,440 pero yo lo quiero en formato 257 00:10:51,440 --> 00:10:53,419 char, pues como esto es 258 00:10:53,419 --> 00:10:54,980 un string, ya sabemos 259 00:10:54,980 --> 00:10:57,679 y ya estamos usando de vez en cuando 260 00:10:57,679 --> 00:10:59,460 funciones a las que 261 00:10:59,460 --> 00:11:00,759 puede llamar el objeto string 262 00:11:00,759 --> 00:11:03,419 y una de las funciones a la que puede llamar 263 00:11:03,419 --> 00:11:05,559 el objeto string es esta 264 00:11:05,559 --> 00:11:07,259 charA que tú le pasas aquí 265 00:11:07,259 --> 00:11:10,679 un numerito y te da el carácter 266 00:11:10,679 --> 00:11:12,220 de ese string en esa 267 00:11:12,220 --> 00:11:14,259 posición, asumiendo que la primera 268 00:11:14,259 --> 00:11:15,220 posición es la 0 269 00:11:15,220 --> 00:11:18,279 luego esta es la forma más cómoda 270 00:11:18,279 --> 00:11:19,399 de leer un char 271 00:11:19,399 --> 00:11:23,990 pues vamos a hacer lo mismo con c1, c2, c3 272 00:11:23,990 --> 00:11:24,610 y c4 273 00:11:24,610 --> 00:11:38,720 pues ya tendremos 4 char 274 00:11:38,720 --> 00:11:44,500 esto 275 00:11:44,500 --> 00:11:46,340 a ver, esto es 276 00:11:46,340 --> 00:11:48,460 una funcionalidad 277 00:11:48,460 --> 00:11:51,240 a la que puede llamar cualquier objeto string, ¿vale? 278 00:11:51,279 --> 00:11:54,200 Imagínate que tiene esto aquí, un objeto string, 279 00:11:54,919 --> 00:11:59,480 este, vamos a darle, por ejemplo, este valor, ¿vale? 280 00:12:00,159 --> 00:12:03,259 Esto es una variable string que esta en particular 281 00:12:03,259 --> 00:12:07,519 tiene esta cadena, pero además de ser una variable 282 00:12:07,519 --> 00:12:10,419 con un dato dentro, una cadena, además es un objeto 283 00:12:10,419 --> 00:12:12,220 por ser string. 284 00:12:13,200 --> 00:12:16,480 Entonces, por ser objeto, puede llamar a funcionalidades 285 00:12:16,480 --> 00:12:18,799 que hacen cosas, a un montón de ellas 286 00:12:18,799 --> 00:12:20,559 todas las que me aparecen 287 00:12:20,559 --> 00:12:21,840 aquí cuando le doy al punto 288 00:12:21,840 --> 00:12:24,519 bueno, pues en particular, puede llamar 289 00:12:24,519 --> 00:12:25,559 a esta funcionalidad 290 00:12:25,559 --> 00:12:28,659 que si tú le pasas aquí un numerito 291 00:12:28,659 --> 00:12:30,720 por ejemplo, 4 292 00:12:30,720 --> 00:12:32,899 te devuelve 293 00:12:32,899 --> 00:12:36,860 el carácter en la posición 294 00:12:36,860 --> 00:12:37,860 4 295 00:12:37,860 --> 00:12:40,440 teniendo en cuenta que 296 00:12:40,440 --> 00:12:41,279 la 0 es la primera 297 00:12:41,279 --> 00:12:44,320 entonces, en este caso, ¿qué nos devolvería 298 00:12:44,320 --> 00:12:46,279 esto? pues nos devolvería 299 00:12:46,279 --> 00:12:48,059 0, 1, 2, 3 y 4 300 00:12:48,059 --> 00:12:48,580 la Y 301 00:12:48,580 --> 00:12:50,720 si yo muestro C 302 00:12:50,720 --> 00:12:53,500 me devolverá la Y 303 00:12:53,500 --> 00:12:58,769 ¿vale? 304 00:12:59,129 --> 00:13:01,909 pero sin embargo le digo charat 0 305 00:13:01,909 --> 00:13:03,990 me devolverá 306 00:13:03,990 --> 00:13:06,009 la J, porque la que está en la posición 307 00:13:06,009 --> 00:13:07,850 0 y se asume que la primera 308 00:13:07,850 --> 00:13:09,570 es la 0, Java lo asume 309 00:13:09,570 --> 00:13:11,029 es la J 310 00:13:11,029 --> 00:13:13,830 ¿vale? y si le digo que me devuelva 311 00:13:13,830 --> 00:13:16,049 el carácter en posición 1 312 00:13:16,049 --> 00:13:19,250 pues me devolverá 313 00:13:19,250 --> 00:13:22,570 la h 314 00:13:22,570 --> 00:13:23,289 ¿vale? 315 00:13:24,230 --> 00:13:24,669 entonces 316 00:13:24,669 --> 00:13:28,789 claro, entonces 0, 1, 2, 3 y 4 317 00:13:28,789 --> 00:13:30,629 si yo le dijera 318 00:13:30,629 --> 00:13:32,070 al carácter en posición 8 319 00:13:32,070 --> 00:13:34,570 al compilador 320 00:13:34,570 --> 00:13:36,129 le parece muy bien, el problema es cuando yo 321 00:13:36,129 --> 00:13:38,690 luego lo ejecute, porque la posición 8 no existe 322 00:13:38,690 --> 00:13:40,730 solo existen la 0, la 1, la 2 323 00:13:40,730 --> 00:13:42,370 la 3 y la 4 en esta cadena 324 00:13:42,370 --> 00:13:44,450 entonces si yo le pidiera la 8 325 00:13:44,450 --> 00:13:46,169 cuidadito 326 00:13:46,169 --> 00:13:47,809 porque este programa me diría 327 00:13:47,809 --> 00:13:49,129 ups 328 00:13:49,129 --> 00:13:52,029 me daría un error 329 00:13:52,029 --> 00:13:53,870 que diría, perdona 330 00:13:53,870 --> 00:13:56,250 el índice 8 está fuera 331 00:13:56,250 --> 00:13:57,649 de los límites de ese string 332 00:13:57,649 --> 00:13:59,649 ¿vale? 333 00:14:00,210 --> 00:14:02,289 entonces, como ya estamos empezando 334 00:14:02,289 --> 00:14:04,009 a usar charac porque nos es útil 335 00:14:04,009 --> 00:14:05,750 para acceder a caracteres de un string 336 00:14:05,750 --> 00:14:08,090 acostumbrémonos ya 337 00:14:08,090 --> 00:14:10,570 a ver sin miedo 338 00:14:10,570 --> 00:14:14,450 a ver sin miedo 339 00:14:14,450 --> 00:14:17,870 este error cuando nos dé 340 00:14:17,870 --> 00:14:19,830 cuando nos da 341 00:14:19,830 --> 00:14:21,629 este error, cuando ejecutamos un código 342 00:14:21,629 --> 00:14:23,570 digamos, uy 343 00:14:23,570 --> 00:14:25,590 estoy tratando de acceder a una posición 344 00:14:25,590 --> 00:14:27,629 de un string que no existe 345 00:14:27,629 --> 00:14:29,690 porque el string es más corto que esa posición 346 00:14:29,690 --> 00:14:31,750 entonces si nos sale un error 347 00:14:31,750 --> 00:14:33,730 string out of bound exception 348 00:14:33,730 --> 00:14:35,450 pues ya 349 00:14:35,450 --> 00:14:37,269 tratemos de asociar, uy 350 00:14:37,269 --> 00:14:39,649 en algún sitio he tenido yo 351 00:14:39,649 --> 00:14:41,610 que tratar de acceder a una posición 352 00:14:41,610 --> 00:14:42,750 de un string que no existe 353 00:14:42,750 --> 00:14:45,070 En este caso ha sido aquí 354 00:14:45,070 --> 00:14:47,730 No existe la posición 8 355 00:14:47,730 --> 00:14:49,289 Pero la 3 sí que existe 356 00:14:49,289 --> 00:14:52,009 Entonces si yo ejecuto esto 357 00:14:52,009 --> 00:14:53,690 Pues la 3 sí que existe 358 00:14:53,690 --> 00:14:54,590 Que es la letra 1 359 00:14:54,590 --> 00:14:55,789 Vale 360 00:14:55,789 --> 00:14:59,049 Pues aprovechándonos de esto 361 00:14:59,049 --> 00:15:01,710 Aprovechándonos de esto 362 00:15:01,710 --> 00:15:03,470 Podemos aprovechar 363 00:15:03,470 --> 00:15:05,690 Para leer un carácter del teclado 364 00:15:05,690 --> 00:15:06,909 Y guardarlo en char 365 00:15:06,909 --> 00:15:09,750 Porque recordamos que el next line 366 00:15:09,750 --> 00:15:11,450 Me lee la cadena que yo le meta 367 00:15:11,450 --> 00:15:13,309 hasta el salto de línea y me la guarda 368 00:15:13,309 --> 00:15:13,830 en string 369 00:15:13,830 --> 00:15:16,909 pero yo la quiero en formato char 370 00:15:16,909 --> 00:15:18,789 pues como esa cadena que me han metido 371 00:15:18,789 --> 00:15:20,269 yo asumo que es un único carácter 372 00:15:20,269 --> 00:15:22,110 porque mi programa pide un único carácter 373 00:15:22,110 --> 00:15:25,009 pues me quedo con de esa cadena que me han metido 374 00:15:25,009 --> 00:15:26,529 el carácter en la posición 0 375 00:15:26,529 --> 00:15:28,590 y ya me devuelve 376 00:15:28,590 --> 00:15:30,230 ese carácter pero en char 377 00:15:30,230 --> 00:15:32,929 vale, pues ya tengo leídos aquí 378 00:15:32,929 --> 00:15:33,909 cuatro caracteres 379 00:15:33,909 --> 00:15:36,470 para comprobar si los he metido en ese orden 380 00:15:36,470 --> 00:15:38,529 tengo mil maneras de hacer eso 381 00:15:38,529 --> 00:15:39,950 desde esta 382 00:15:39,950 --> 00:16:08,179 Si C1 igual a G, ¿vale? Y C2 igual a A. Y C3 igual a T. Y C4 igual a O. 383 00:16:10,970 --> 00:16:17,440 Pues aquí podríamos poner, un segundito, el orden es correcto. 384 00:16:17,440 --> 00:16:18,740 y ya está, un momento 385 00:16:18,740 --> 00:16:20,980 el orden es 386 00:16:20,980 --> 00:16:25,669 correcto 387 00:16:25,669 --> 00:16:26,009 a ver 388 00:16:26,009 --> 00:16:29,909 y si no, podríamos plantar aquí un else 389 00:16:29,909 --> 00:16:39,210 así, para ser 390 00:16:39,210 --> 00:16:41,429 más cortos, abreviar, vale, dime 391 00:16:41,429 --> 00:16:53,639 nosotros a falta de información añadida 392 00:16:53,639 --> 00:16:55,519 los hemos dicho 393 00:16:55,519 --> 00:16:57,100 vamos a asumirlo que lo introduce así 394 00:16:57,100 --> 00:16:59,240 yo lo he decidido así para que viéramos 395 00:16:59,240 --> 00:17:00,779 esto de leer un carácter suelto 396 00:17:00,779 --> 00:17:07,420 Sí, en este caso cuatro 397 00:17:07,420 --> 00:17:08,059 ¿Vale? 398 00:17:15,700 --> 00:17:16,740 Claro, entonces 399 00:17:16,740 --> 00:17:18,380 Esta sería 400 00:17:18,380 --> 00:17:21,039 Una forma de trabajar 401 00:17:21,039 --> 00:17:21,759 Que es 402 00:17:21,759 --> 00:17:24,059 Introduzca 403 00:17:24,059 --> 00:17:32,190 Los caracteres 404 00:17:32,190 --> 00:17:34,730 Separados 405 00:17:34,730 --> 00:17:37,450 Por salto de línea 406 00:17:37,450 --> 00:17:38,750 Esta sería una forma de trabajar 407 00:17:38,750 --> 00:17:41,150 Vale, le decimos esto 408 00:17:41,150 --> 00:17:43,869 Entonces ahora ya ejecutamos esto 409 00:17:43,869 --> 00:17:50,650 Y ya está 410 00:17:50,650 --> 00:17:52,890 Pues venga, caracteres separados por salto de línea 411 00:17:52,890 --> 00:17:54,549 Pues G, A 412 00:17:54,549 --> 00:17:56,730 T, I, O, el orden es correcto 413 00:17:59,309 --> 00:18:00,029 Pues 414 00:18:00,029 --> 00:18:01,369 G 415 00:18:01,369 --> 00:18:03,150 Bueno, ya 416 00:18:03,150 --> 00:18:06,349 T, I, O, no lo es 417 00:18:06,349 --> 00:18:07,069 Vale, ya está 418 00:18:07,069 --> 00:18:11,380 Vale, otra forma de hacer esto 419 00:18:11,380 --> 00:18:20,809 Otra forma 420 00:18:21,130 --> 00:18:23,190 Vale, pues vamos a seguir manteniendo 421 00:18:23,190 --> 00:18:25,450 que el usuario meta los caracteres así 422 00:18:25,450 --> 00:18:26,490 pero 423 00:18:26,490 --> 00:18:29,029 en lugar de hacer esta condición tan fea 424 00:18:29,029 --> 00:18:31,529 que es compararlos por separado 425 00:18:31,529 --> 00:18:34,029 vamos a concatenarlos 426 00:18:34,029 --> 00:18:35,490 para que formen una cadena 427 00:18:35,490 --> 00:18:37,430 y comparo esa cadena directamente 428 00:18:37,430 --> 00:18:38,309 con la cadena gato 429 00:18:38,309 --> 00:18:40,250 entonces me queda 430 00:18:40,250 --> 00:18:43,009 string palabra 431 00:18:43,009 --> 00:18:44,589 que haríamos 432 00:18:44,589 --> 00:18:46,509 c1 más 433 00:18:46,509 --> 00:18:48,589 c2 más 434 00:18:48,589 --> 00:18:49,789 c3 435 00:18:49,789 --> 00:18:52,410 más 436 00:18:52,410 --> 00:18:54,589 C4 437 00:18:54,589 --> 00:18:55,730 ¿Vale? 438 00:18:56,309 --> 00:18:59,240 Y ahora 439 00:18:59,240 --> 00:19:02,319 Aquí nos da un error de compilación 440 00:19:02,319 --> 00:19:04,640 Que por estas particulares del char nos podíamos 441 00:19:04,640 --> 00:19:05,759 Imaginar 442 00:19:05,759 --> 00:19:08,019 Que es C1 443 00:19:08,019 --> 00:19:09,880 Efectivamente 444 00:19:09,880 --> 00:19:12,299 Están declarados aquí como char 445 00:19:12,299 --> 00:19:14,460 ¿Vale? C1 están declarados como char 446 00:19:14,460 --> 00:19:17,099 Pero recordad que los char y los in 447 00:19:17,099 --> 00:19:19,119 Son intercambiables 448 00:19:19,119 --> 00:19:20,460 Y generan mucha confusión 449 00:19:20,460 --> 00:19:23,359 Pues si yo pongo un operador más 450 00:19:23,359 --> 00:19:24,619 entre dos char 451 00:19:24,619 --> 00:19:27,400 aquí no interpretamos 452 00:19:27,400 --> 00:19:28,680 que esto es una concatenación 453 00:19:28,680 --> 00:19:31,460 solo interpretamos concatenación 454 00:19:31,460 --> 00:19:33,400 cuando alguno de los dos operadores 455 00:19:33,400 --> 00:19:34,960 es string, solo 456 00:19:34,960 --> 00:19:37,019 es el único contexto en el cual 457 00:19:37,019 --> 00:19:38,519 interpretamos concatenación 458 00:19:38,519 --> 00:19:40,940 cuando alguno de los dos es string 459 00:19:40,940 --> 00:19:43,160 aquí ninguno de los dos es string 460 00:19:43,160 --> 00:19:45,019 es char, con lo cual 461 00:19:45,019 --> 00:19:47,440 el este más lo interpreta como suma de enteros 462 00:19:47,440 --> 00:19:49,460 y haría la suma del entero 463 00:19:49,460 --> 00:19:51,119 que codifica C1 con el entero 464 00:19:51,119 --> 00:19:53,299 que codifica C2, el de la tabla string 465 00:19:53,299 --> 00:19:56,180 me daría un entero y cuando yo guardo 466 00:19:56,180 --> 00:19:58,140 entero en palabra, pues no le vale 467 00:19:58,140 --> 00:20:00,220 me dice, oye, esto es 468 00:20:00,220 --> 00:20:01,920 un entero, una suma de números enteros 469 00:20:01,920 --> 00:20:03,259 los enteros de la tabla ASTI 470 00:20:03,259 --> 00:20:05,960 no pasa nada, lo podemos arreglar así 471 00:20:05,960 --> 00:20:07,839 muy fácilmente 472 00:20:07,839 --> 00:20:09,799 no hace falta que nos metamos en más complicaciones 473 00:20:09,799 --> 00:20:18,130 de, ala, ya lo 474 00:20:18,130 --> 00:20:19,009 tenemos arreglado 475 00:20:19,009 --> 00:20:21,990 desde el momento en que estamos insertando 476 00:20:21,990 --> 00:20:24,190 bueno, estas de aquí 477 00:20:24,190 --> 00:20:25,930 me sobran, en realidad 478 00:20:25,930 --> 00:20:30,829 a ver, no hace falta 479 00:20:30,829 --> 00:20:31,930 porque ahora ya 480 00:20:31,930 --> 00:20:37,140 a lo mejor hasta lo vemos más claro 481 00:20:37,140 --> 00:20:39,039 si la ponemos al principio 482 00:20:39,039 --> 00:20:39,539 del todo 483 00:20:39,539 --> 00:20:44,400 ahora, concatenándolas 484 00:20:44,400 --> 00:20:46,099 al principio ya está, porque ahora 485 00:20:46,099 --> 00:20:48,319 ¿qué hace la máquina virtual? como todos son 486 00:20:48,319 --> 00:20:50,299 operadores de suma, no hay 487 00:20:50,299 --> 00:20:52,339 prioridad de operadores, no hay una multiplicación entre 488 00:20:52,339 --> 00:20:53,900 medias, pues como todos tienen la misma 489 00:20:53,900 --> 00:20:56,140 prioridad, porque todos son sumas 490 00:20:56,140 --> 00:20:58,259 luego todos tienen la misma prioridad, va de 491 00:20:58,259 --> 00:20:59,559 izquierda a derecha 492 00:20:59,559 --> 00:21:02,460 entonces al ir de izquierda a derecha, aquí ya ve 493 00:21:02,460 --> 00:21:05,549 aquí ya ve 494 00:21:05,549 --> 00:21:08,690 un string y un numerito int 495 00:21:08,690 --> 00:21:10,930 pues string 496 00:21:10,930 --> 00:21:12,890 más int es concatenación 497 00:21:12,890 --> 00:21:14,450 pues entonces ya 498 00:21:14,450 --> 00:21:17,049 concatena esto a string 499 00:21:17,049 --> 00:21:18,789 y al concatenarlo 500 00:21:18,789 --> 00:21:20,210 ya se queda con su versión char 501 00:21:20,210 --> 00:21:21,509 claro, su versión char 502 00:21:21,509 --> 00:21:24,269 y ahora el resultado de esta concatenación es un string 503 00:21:24,269 --> 00:21:26,210 porque ha convertido esta string 504 00:21:26,210 --> 00:21:28,230 a su versión char de la tabla 505 00:21:28,230 --> 00:21:29,170 y lo ha concatenado 506 00:21:29,170 --> 00:21:30,690 esto ya es un string 507 00:21:30,690 --> 00:21:33,650 luego un string más lo que sea 508 00:21:33,650 --> 00:21:35,309 de nuevo es concatenación 509 00:21:35,309 --> 00:21:37,089 luego esto ya es concatenación también 510 00:21:37,089 --> 00:21:38,650 porque lo que hay a la izquierda es un string 511 00:21:38,650 --> 00:21:40,369 pues me queda otro string 512 00:21:40,369 --> 00:21:43,490 ahora ya un string más este 513 00:21:43,490 --> 00:21:45,029 es un string también 514 00:21:45,029 --> 00:21:46,210 gana la concatenación 515 00:21:46,210 --> 00:21:49,490 tengo el string y ahora a este string 516 00:21:49,490 --> 00:21:50,690 le sumo este 517 00:21:50,690 --> 00:21:53,009 como lo de la izquierda es un string 518 00:21:53,009 --> 00:21:53,990 es concatenación 519 00:21:53,990 --> 00:21:56,529 luego aunque lo ponga aquí al principio ya está 520 00:21:56,529 --> 00:22:02,019 pero cuidadín 521 00:22:02,019 --> 00:22:02,559 porque 522 00:22:02,559 --> 00:22:05,259 si lo pusiéramos 523 00:22:05,259 --> 00:22:07,279 al final 524 00:22:14,720 --> 00:22:15,400 ¿No borra? 525 00:22:16,980 --> 00:22:17,759 ¡Ay, qué tonterías! 526 00:22:19,119 --> 00:22:20,259 ¡Ay, Dios mío! 527 00:22:22,400 --> 00:22:23,259 ¡Qué desilusión! 528 00:22:23,799 --> 00:22:25,359 ¡Ay, no quería yo esto! 529 00:22:28,240 --> 00:22:31,099 Sin embargo, si lo ponemos al final, 530 00:22:32,440 --> 00:22:34,119 cuidado porque aquí sí sería un problema. 531 00:22:34,839 --> 00:22:36,460 Porque el aire de izquierda a derecha 532 00:22:36,460 --> 00:22:38,200 haría esta suma, 533 00:22:38,259 --> 00:22:39,460 y eso es una suma de números. 534 00:22:40,000 --> 00:22:42,160 Luego haría la suma, y luego haría esta suma, 535 00:22:42,160 --> 00:22:43,140 y luego haría esta suma. 536 00:22:43,559 --> 00:22:45,660 Y ya solo al final concatenaría 537 00:22:45,660 --> 00:22:48,200 el resultado de la suma 538 00:22:48,200 --> 00:22:50,140 de la codificación binaria 539 00:22:50,140 --> 00:22:51,299 de esos caracteres. 540 00:22:51,720 --> 00:22:53,279 Pero antes había hecho las sumas. 541 00:22:54,200 --> 00:22:56,500 Entonces, al final no nos mola. 542 00:22:58,839 --> 00:22:59,859 Vale, pues entonces, 543 00:23:00,140 --> 00:23:02,640 hemos formado la palabra 544 00:23:02,640 --> 00:23:05,039 y ahora ya mi condición se queda más sencilla. 545 00:23:06,380 --> 00:23:07,240 Si palabra, 546 00:23:07,940 --> 00:23:09,880 ¿y cómo comparo dos strings entre sí? 547 00:23:10,539 --> 00:23:13,059 Dijimos que jamás nunca lo comparo así. 548 00:23:13,859 --> 00:23:17,000 Si palabra igual a la palabra gato, 549 00:23:17,220 --> 00:23:19,619 Entonces 550 00:23:19,619 --> 00:23:28,440 Vamos a ponerlo bien 551 00:23:28,440 --> 00:23:32,740 El se 552 00:23:32,740 --> 00:23:37,240 Mal 553 00:23:37,240 --> 00:23:40,059 Esta condición 554 00:23:40,059 --> 00:23:41,420 Es más bonita 555 00:23:41,420 --> 00:23:43,440 Que esta de arriba 556 00:23:43,440 --> 00:23:45,980 Más bonita que esta de aquí 557 00:23:45,980 --> 00:23:46,980 ¿Vale? 558 00:23:47,880 --> 00:23:50,480 Pero ojo, dijimos en su momento 559 00:23:50,480 --> 00:23:51,819 Y lo tenéis todo en la cabeza 560 00:23:51,819 --> 00:23:53,200 Porque lo vais memorizando todo 561 00:23:53,200 --> 00:23:54,640 Porque es importantísimo 562 00:23:54,640 --> 00:23:58,059 Que nunca comparo la igualdad entre cadenas 563 00:23:58,059 --> 00:23:59,099 con doble igual 564 00:23:59,099 --> 00:24:02,119 solo comparo la igualdad con doble igual 565 00:24:02,119 --> 00:24:03,740 de variables primitivas 566 00:24:03,740 --> 00:24:06,099 no la de cadenas 567 00:24:06,099 --> 00:24:07,440 la de din, la de double 568 00:24:07,440 --> 00:24:09,819 porque los objetos 569 00:24:09,819 --> 00:24:12,480 los objetos se almacenan de otra manera 570 00:24:12,480 --> 00:24:14,460 recordad, el objeto en realidad 571 00:24:14,460 --> 00:24:16,500 es su dirección 572 00:24:16,500 --> 00:24:18,140 de memoria que me lleva al dato 573 00:24:18,140 --> 00:24:20,119 entonces con doble igual 574 00:24:20,119 --> 00:24:22,660 comparo la dirección de memoria donde está palabra 575 00:24:22,660 --> 00:24:24,579 y la dirección de memoria donde está gato 576 00:24:24,579 --> 00:24:26,480 y palabra 577 00:24:26,480 --> 00:24:27,779 puede tener gato dentro 578 00:24:27,779 --> 00:24:30,859 pero estar en una dirección de memoria 579 00:24:30,859 --> 00:24:32,140 que no es en la que está esto 580 00:24:32,140 --> 00:24:33,400 es lo normal de hecho 581 00:24:33,400 --> 00:24:35,579 a menos que los casos que vimos 582 00:24:35,579 --> 00:24:37,779 que él se hace un buffer para ahorrar espacio 583 00:24:37,779 --> 00:24:39,859 entonces vamos a ejecutar esto 584 00:24:39,859 --> 00:24:43,880 yo le voy a meter 585 00:24:43,880 --> 00:24:46,480 G, A, P y O 586 00:24:46,480 --> 00:24:48,660 el orden es correcto 587 00:24:48,660 --> 00:24:51,099 pero si lo hago de la segunda manera 588 00:24:51,099 --> 00:24:52,200 me dice mal, claro 589 00:24:52,200 --> 00:24:54,200 porque esta condición está horriblemente mal 590 00:24:54,200 --> 00:24:57,240 yo comparo la igualdad 591 00:24:57,240 --> 00:24:59,039 entre dos objetos string 592 00:24:59,039 --> 00:25:00,000 de esta manera 593 00:25:00,000 --> 00:25:07,190 Así es como comparamos la igualdad 594 00:25:07,190 --> 00:25:08,349 Entre dos objetos string 595 00:25:08,349 --> 00:25:10,589 Poniendo aquí un objeto string 596 00:25:10,589 --> 00:25:12,009 Y aquí dentro el otro 597 00:25:12,009 --> 00:25:14,130 ¿Vale? 598 00:25:14,269 --> 00:25:15,450 Este es un objeto string 599 00:25:15,450 --> 00:25:17,769 Porque algo entrecomillado es un objeto string 600 00:25:17,769 --> 00:25:20,289 Y este es el otro objeto string 601 00:25:20,289 --> 00:25:21,829 Los comparo así 602 00:25:21,829 --> 00:25:24,809 Ahora ya sí 603 00:25:24,809 --> 00:25:28,450 Si ejecuto esto 604 00:25:28,450 --> 00:25:31,049 G, A, T y O 605 00:25:31,049 --> 00:25:33,569 Ya sí que me dice que sí 606 00:25:33,569 --> 00:25:34,630 Que son iguales los dos 607 00:25:34,630 --> 00:25:38,490 vale 608 00:25:38,490 --> 00:25:49,460 bueno, pues de nuevo 609 00:25:49,460 --> 00:25:51,880 que cualquier 610 00:25:51,880 --> 00:25:53,559 mínimo ejercicio os sepa 611 00:25:53,559 --> 00:25:55,319 para terminar de interiorizar 612 00:25:55,319 --> 00:25:56,920 ese que no lo tenéis hecho, que deberíais 613 00:25:56,920 --> 00:26:00,059 el tema de las concatenaciones 614 00:26:00,059 --> 00:26:01,380 cuando estamos mezclando 615 00:26:01,380 --> 00:26:03,660 diferentes tipos de datos, char, números 616 00:26:03,660 --> 00:26:05,619 string, pues el tema 617 00:26:05,619 --> 00:26:07,640 de las concatenaciones, que lo termine 618 00:26:07,640 --> 00:26:09,200 de tener claro, y 619 00:26:09,200 --> 00:26:10,980 el tema de la igualdad 620 00:26:10,980 --> 00:26:13,799 de variables string 621 00:26:13,799 --> 00:26:14,740 vale 622 00:26:14,740 --> 00:26:16,640 y ya de paso 623 00:26:16,640 --> 00:26:18,559 pues seguir familiarizándonos con esto 624 00:26:18,559 --> 00:26:20,619 para todo esto era 625 00:26:20,619 --> 00:26:21,539 este ejercicio