1 00:00:02,419 --> 00:00:04,599 Vale, pues venga, ejemplo char y boolean. 2 00:00:05,740 --> 00:00:09,119 El tipo char primitivo, siguiente que nos falta. 3 00:00:10,759 --> 00:00:13,500 Este nombre para una variable es un nombre feísimo, 4 00:00:14,099 --> 00:00:17,579 recordad siempre el principio que hemos dicho que los nombres de las variables 5 00:00:17,579 --> 00:00:23,120 lo más explicativos posible respecto al sentido de lo que guardan. 6 00:00:24,000 --> 00:00:27,320 Ahora mismo es que él no está guardando nada, nada más que un ejemplo para mí, 7 00:00:27,320 --> 00:00:30,699 lo llamo c, pero hombre, una variable que se llama abcxjk 8 00:00:30,699 --> 00:00:35,560 suele venir de un programa un poquito mal pensado y mal hecho. 9 00:00:37,140 --> 00:00:39,420 Lo digo para que vuelva a surgir este tema. 10 00:00:39,560 --> 00:00:41,460 Pero bueno, en mi caso, por comodidad, no escribir mucho, 11 00:00:41,520 --> 00:00:42,399 lo voy a llamar c y ya está. 12 00:00:43,340 --> 00:00:46,060 Bueno, pues las variables char c ya sabemos que sirven 13 00:00:46,060 --> 00:00:49,679 para guardar un único carácter y uno solo y nada más. 14 00:00:51,299 --> 00:00:55,039 ¿Y cómo se expresa un único carácter en Java? 15 00:00:55,039 --> 00:00:57,899 no se expresa con las comillas dobles 16 00:00:57,899 --> 00:01:00,659 o sea, uno podría decir 17 00:01:00,659 --> 00:01:02,539 oye, esto es un único carácter 18 00:01:02,539 --> 00:01:04,060 V, ¿por qué no me dejas guardarlo en C? 19 00:01:04,719 --> 00:01:06,319 porque no es la manera que tiene 20 00:01:06,319 --> 00:01:07,739 Java de entender 21 00:01:07,739 --> 00:01:09,079 un único carácter 22 00:01:09,079 --> 00:01:12,219 esto para Java es toda una 23 00:01:12,219 --> 00:01:14,299 cadena de caracteres y eso se tiene que usar 24 00:01:14,299 --> 00:01:15,659 de otra manera, ya veremos cómo 25 00:01:15,659 --> 00:01:18,299 ¿que esta cadena de caracteres coincide que solo tiene 26 00:01:18,299 --> 00:01:20,019 un carácter? bueno, coincide que solo tiene uno 27 00:01:20,019 --> 00:01:21,859 pero es una cadena de caracteres 28 00:01:21,859 --> 00:01:24,420 y una cadena de caracteres nunca puede ir 29 00:01:24,420 --> 00:01:26,560 a un char, a un char solo puede ir 30 00:01:26,560 --> 00:01:28,480 un carácter, y como se le 31 00:01:28,480 --> 00:01:30,379 dice a java, oye que lo que te doy 32 00:01:30,379 --> 00:01:32,439 es solo un carácter, guárdamelo como 33 00:01:32,439 --> 00:01:34,359 un carácter, pues con una comilla 34 00:01:34,359 --> 00:01:36,560 simple, ya está, con la comilla 35 00:01:36,560 --> 00:01:38,480 simple en vertical, ahí ya 36 00:01:38,480 --> 00:01:40,459 sí, ahí ya sí le gusta y esa 37 00:01:40,459 --> 00:01:42,319 asignación ya es válida, ¿vale? y en la variable 38 00:01:42,319 --> 00:01:44,500 char solo puede ir un carácter, y solo 39 00:01:44,500 --> 00:01:46,560 uno, dentro 40 00:01:46,560 --> 00:01:48,739 de todos los caracteres posibles codificables 41 00:01:48,739 --> 00:01:49,939 ¿y cuáles son esos? 42 00:01:50,319 --> 00:01:51,980 los de la famosa tabla hasti 43 00:01:51,980 --> 00:01:54,299 a ver si encontramos una tabla ASCII 44 00:01:54,299 --> 00:01:55,099 aquí, estupenda 45 00:01:55,099 --> 00:02:05,349 bueno, esta está bastante bien 46 00:02:05,349 --> 00:02:12,919 esto es una 47 00:02:12,919 --> 00:02:16,240 ¿cómo lo puedo quitar sin contestarle? 48 00:02:17,379 --> 00:02:18,280 cago en la madre 49 00:02:18,280 --> 00:02:23,300 bueno, esto es una tabla 50 00:02:23,300 --> 00:02:25,300 ¿cómo puedo quitar esto sin 51 00:02:25,300 --> 00:02:26,979 darle a ninguna de las dos opciones? 52 00:02:37,710 --> 00:02:38,189 vale 53 00:02:38,189 --> 00:02:41,330 pues esto es una tabla ASCII 54 00:02:41,330 --> 00:02:43,689 la tabla ASCII 55 00:02:43,689 --> 00:02:47,349 concepto fundamental de cualquier informático 56 00:02:47,349 --> 00:02:47,810 claro 57 00:02:47,810 --> 00:02:51,090 es una tabla que como ya me he dicho otras veces 58 00:02:51,090 --> 00:02:52,830 hace corresponder 59 00:02:52,830 --> 00:02:55,050 cada uno de los caracteres 60 00:02:55,050 --> 00:02:56,030 que usamos 61 00:02:56,030 --> 00:02:59,110 a un numerito entero 62 00:02:59,110 --> 00:03:00,210 ¿por qué? 63 00:03:00,830 --> 00:03:03,229 porque lo único que se puede codificar en binario son bits 64 00:03:03,229 --> 00:03:05,449 entonces estos numeritos 65 00:03:05,449 --> 00:03:06,810 111, 112, 113 66 00:03:06,810 --> 00:03:08,490 se pueden codificar en binario 67 00:03:08,490 --> 00:03:11,169 entonces la codificación binaria 68 00:03:11,169 --> 00:03:12,030 del 82 69 00:03:12,030 --> 00:03:15,810 se corresponde la tabla ASCII con la R 70 00:03:15,810 --> 00:03:19,050 mayúscula, la del 83 con la S 71 00:03:19,050 --> 00:03:20,229 esto es la tabla ASCII 72 00:03:20,229 --> 00:03:23,169 y aquí están todos los caracteres que podemos usar 73 00:03:23,169 --> 00:03:25,030 pues un montonazo de caracteres 74 00:03:25,030 --> 00:03:27,110 la A con tilde, la A sin tilde 75 00:03:27,110 --> 00:03:29,330 los números, los guiones, los espacios 76 00:03:29,330 --> 00:03:31,110 los tabuladores, pues cualquier cosa 77 00:03:31,110 --> 00:03:35,430 ¿vale? por ejemplo 78 00:03:35,430 --> 00:03:37,349 yo aquí podría poner 79 00:03:37,349 --> 00:03:42,590 la A con tilde 80 00:03:42,590 --> 00:03:44,750 la con tilde es un carácter también 81 00:03:44,750 --> 00:03:46,210 es decir, a un char 82 00:03:46,210 --> 00:03:47,909 le puedo dar 83 00:03:47,909 --> 00:03:50,469 a un char le puedo asignar 84 00:03:50,469 --> 00:03:53,210 cualquiera 85 00:03:53,210 --> 00:03:55,509 de los caracteres que hay en esta tabla 86 00:03:55,509 --> 00:03:56,949 cualquiera, todos ellos son char 87 00:03:56,949 --> 00:03:57,810 ¿vale? 88 00:03:58,889 --> 00:04:00,669 cualquiera de los caracteres de esta tabla 89 00:04:00,669 --> 00:04:01,810 le puedo asignar 90 00:04:01,810 --> 00:04:02,990 ¿vale? 91 00:04:03,610 --> 00:04:04,710 un tabulador 92 00:04:04,710 --> 00:04:07,849 es un carácter 93 00:04:07,849 --> 00:04:10,009 un espacio, todo eso son char 94 00:04:10,009 --> 00:04:12,310 y se los puedo asignar a una variable char 95 00:04:12,310 --> 00:04:14,349 vale 96 00:04:14,349 --> 00:04:16,769 entonces por comodidad 97 00:04:16,769 --> 00:04:19,110 por comodidad a la hora de programar 98 00:04:19,110 --> 00:04:21,029 como según la tabla 99 00:04:21,029 --> 00:04:22,769 ASTI hay una correspondencia 100 00:04:22,769 --> 00:04:24,910 directa entre char 101 00:04:24,910 --> 00:04:26,209 y número entero 102 00:04:26,209 --> 00:04:28,269 una correspondencia unívoca, verdad 103 00:04:28,269 --> 00:04:30,550 hay una biyección ahí perfecta entre char 104 00:04:30,550 --> 00:04:33,089 y número entero, pues Java me permite 105 00:04:33,089 --> 00:04:35,050 trabajar indistintamente 106 00:04:35,050 --> 00:04:36,310 cuando uso una variable char 107 00:04:36,310 --> 00:04:38,209 con el carácter entre comillas simples 108 00:04:38,209 --> 00:04:39,569 y el numerito 109 00:04:39,569 --> 00:04:43,490 es decir, si yo busco esta A con tilde 110 00:04:43,490 --> 00:04:45,110 en la tabla ASCII 111 00:04:45,110 --> 00:04:47,730 y esta A con tilde, si no la encuentro rápido 112 00:04:47,730 --> 00:04:48,889 pues me busco otro carácter 113 00:04:48,889 --> 00:04:50,209 esta 114 00:04:50,209 --> 00:04:53,949 la A con tilde es el 160 115 00:04:53,949 --> 00:04:58,410 bueno, pues estas dos sentencias en Java son idénticas 116 00:04:58,410 --> 00:05:03,930 para Java son idénticas 117 00:05:03,930 --> 00:05:05,470 ¿vale? 118 00:05:06,389 --> 00:05:08,649 porque para él es equivalente 119 00:05:08,649 --> 00:05:11,990 cuando asigno una variable char, claro 120 00:05:11,990 --> 00:05:13,089 es equivalente 121 00:05:13,089 --> 00:05:15,689 el numerito entero de la tabla ASCII 122 00:05:15,689 --> 00:05:17,069 y el carácter entrecomillado 123 00:05:17,069 --> 00:05:19,490 claro, otra cosa es 124 00:05:19,490 --> 00:05:21,250 esto, ¿vale? 125 00:05:21,310 --> 00:05:23,310 imaginaos que yo tengo aquí una variable entera 126 00:05:23,310 --> 00:05:25,149 y hago 127 00:05:25,149 --> 00:05:27,009 n igual 128 00:05:27,009 --> 00:05:29,269 a 160 129 00:05:29,269 --> 00:05:30,750 ¿vale? 130 00:05:33,470 --> 00:05:35,910 estas dos asignaciones en realidad son distintas 131 00:05:35,910 --> 00:05:37,470 o sea, yo a c 132 00:05:37,470 --> 00:05:39,329 como es una variable char 133 00:05:39,329 --> 00:05:42,050 le estoy asignando 134 00:05:42,050 --> 00:05:43,930 el carácter que según la tabla 135 00:05:43,930 --> 00:05:45,370 ASCII se corresponde a este número 136 00:05:45,370 --> 00:05:47,990 pero sin embargo a n, como n 137 00:05:47,990 --> 00:05:49,889 es un entero, a n le estoy 138 00:05:49,889 --> 00:05:51,329 asignando el numerito 160 139 00:05:51,329 --> 00:05:54,050 son dos asignaciones con dos sentidos 140 00:05:54,050 --> 00:05:54,550 distintos 141 00:05:54,550 --> 00:05:57,670 vamos a mostrarlas con un 142 00:05:57,670 --> 00:05:58,350 system out 143 00:05:58,350 --> 00:06:02,050 yo aquí voy a mostrar la variable 144 00:06:02,050 --> 00:06:04,029 c y en otro system 145 00:06:04,029 --> 00:06:04,949 out aquí debajo 146 00:06:04,949 --> 00:06:07,290 voy a mostrar la variable n 147 00:06:07,290 --> 00:06:11,850 y de hecho voy a quitar esta asignación 148 00:06:11,850 --> 00:06:13,149 de aquí, la voy a quitar 149 00:06:13,149 --> 00:06:16,009 esta asignación, voy a asignarle 150 00:06:16,009 --> 00:06:17,189 a C 160 151 00:06:17,189 --> 00:06:18,810 y a N 160 152 00:06:18,810 --> 00:06:21,509 la única diferencia es que C es un char 153 00:06:21,509 --> 00:06:22,529 y N es un entero 154 00:06:22,529 --> 00:06:25,430 vale, vamos a ejecutar este código 155 00:06:25,430 --> 00:06:31,120 vale, a ver 156 00:06:31,120 --> 00:06:33,100 es que el editor de texto 157 00:06:33,100 --> 00:06:34,279 este, del eclipse 158 00:06:34,279 --> 00:06:37,259 no, hay que cambiar la fuente 159 00:06:37,259 --> 00:06:39,259 de codificación para que muestre las tildes 160 00:06:39,259 --> 00:06:41,220 por eso lo muestra así, voy a elegir 161 00:06:41,220 --> 00:06:42,459 uno que no sea con tilde porque 162 00:06:42,459 --> 00:06:44,379 pero es un problema del editor de texto 163 00:06:44,379 --> 00:06:45,319 de aquí 164 00:06:45,319 --> 00:06:47,180 voy a 165 00:06:47,180 --> 00:06:50,319 pero como veis son dos cosas distintas 166 00:06:50,319 --> 00:06:52,720 voy a elegir un carácter de la tabla 167 00:06:52,720 --> 00:06:54,899 ASCII que precisamente no sea una tilde 168 00:06:54,899 --> 00:06:56,600 pues 169 00:06:56,600 --> 00:06:58,500 cualquiera, 76 170 00:06:58,500 --> 00:07:00,500 voy a poner 76 171 00:07:00,500 --> 00:07:05,560 voy a asignarle 172 00:07:05,560 --> 00:07:12,540 76 y 76 173 00:07:12,540 --> 00:07:13,500 vale 174 00:07:13,500 --> 00:07:16,040 a las dos variables les he asignado lo mismo 175 00:07:16,040 --> 00:07:16,680 76 176 00:07:16,680 --> 00:07:18,519 y ahora la voy a mostrar 177 00:07:18,519 --> 00:07:34,000 C y N. Voy a mostrarlas. Ejecuto esto de nuevo y efectivamente la primera sentencia para mostrar me ha mostrado la L y la siguiente me ha mostrado el 76. 178 00:07:34,000 --> 00:07:37,279 claro, porque C es una variable char 179 00:07:37,279 --> 00:07:39,540 cuando a C se le hizo 180 00:07:39,540 --> 00:07:40,379 esa asignación 181 00:07:40,379 --> 00:07:42,959 en realidad lo que se hizo 182 00:07:42,959 --> 00:07:45,660 fue asumir que en C va el char 183 00:07:45,660 --> 00:07:47,480 que según la tabla ASTI 184 00:07:47,480 --> 00:07:48,980 está en el número 76 185 00:07:48,980 --> 00:07:51,360 pero cuando se hizo la de abajo 186 00:07:51,360 --> 00:07:53,620 N es un entero, aquí no hay tabla ASTI, no hay historias 187 00:07:53,620 --> 00:07:54,879 aquí asigno el 76 188 00:07:54,879 --> 00:07:57,079 pues el 76 y punto pelota 189 00:07:57,079 --> 00:07:59,579 ¿vale? y punto pelota 190 00:07:59,579 --> 00:08:03,459 76 y lo busco en la tabla ASTI 191 00:08:03,459 --> 00:08:04,920 tendrá que ser la L 192 00:08:04,920 --> 00:08:07,319 efectivamente es la L 193 00:08:07,319 --> 00:08:15,379 bueno, pues esto es lo más importante 194 00:08:15,379 --> 00:08:16,899 de tener presente de los char 195 00:08:16,899 --> 00:08:20,120 que se puede trabajar indistintamente 196 00:08:20,120 --> 00:08:21,480 con ellos, con el número entero 197 00:08:21,480 --> 00:08:23,899 y con la variable 198 00:08:23,899 --> 00:08:25,740 y con el char 199 00:08:25,740 --> 00:08:27,939 entre comillas siempre, se puede trabajar indistintamente 200 00:08:27,939 --> 00:08:39,149 esto luego 201 00:08:39,149 --> 00:08:42,629 ahora no quiero liaros mucho 202 00:08:42,629 --> 00:08:44,230 pero bueno, yo creo que sí que podemos 203 00:08:44,230 --> 00:08:47,889 mencionarlo un poquito más 204 00:08:47,889 --> 00:08:51,509 este hay que manejarlo con cuidado 205 00:08:51,509 --> 00:08:53,929 porque se puede prestar a error 206 00:08:53,929 --> 00:08:55,769 por ejemplo, vamos a crear 207 00:08:55,769 --> 00:08:57,169 dos variables char 208 00:08:57,169 --> 00:08:59,490 c1 y c2 209 00:08:59,490 --> 00:09:02,789 vale, a c1 le doy 76 210 00:09:02,789 --> 00:09:06,129 y a c2 211 00:09:06,129 --> 00:09:08,649 le doy 212 00:09:08,649 --> 00:09:15,600 76 213 00:09:15,600 --> 00:09:17,279 vale, le doy 6 214 00:09:17,279 --> 00:09:21,250 vale, doy 66 y 6 215 00:09:21,250 --> 00:09:27,529 vale, venga, vamos a seguir 216 00:09:27,529 --> 00:09:28,129 haciendo 217 00:09:28,129 --> 00:09:30,490 muestras de aquí 218 00:09:30,490 --> 00:09:33,309 voy a poner aquí un siso para 219 00:09:33,309 --> 00:09:34,230 dividirlo 220 00:09:34,230 --> 00:09:37,490 que tenga aquí muchos asteriscos 221 00:09:37,490 --> 00:09:39,210 para dividirlo, vale, aquí esto me va a mostrar 222 00:09:39,210 --> 00:09:41,629 esta cadena de texto, vale, ¿qué vamos a mostrar ahora? 223 00:09:41,809 --> 00:09:43,570 después de estos asteriscos, voy a mostrar 224 00:09:43,570 --> 00:09:47,629 esto 225 00:09:47,629 --> 00:10:02,769 voy a mostrar 226 00:10:02,769 --> 00:10:04,649 C1 227 00:10:04,649 --> 00:10:11,029 más ceros 228 00:10:11,029 --> 00:10:14,750 los operadores básicos 229 00:10:14,750 --> 00:10:18,809 que son suma, resta, multiplicación y división 230 00:10:18,809 --> 00:10:20,649 vamos, no hace falta 231 00:10:20,649 --> 00:10:23,289 cuando veamos operadores va a hacer falta decir poco de ellos 232 00:10:23,289 --> 00:10:24,210 porque son naturales 233 00:10:24,210 --> 00:10:26,289 uno sabe que más es la suma 234 00:10:26,289 --> 00:10:28,370 y si ponemos un número a un lado y otro al otro 235 00:10:28,370 --> 00:10:29,149 pues es una 236 00:10:29,149 --> 00:10:31,169 según el álgebra 237 00:10:31,169 --> 00:10:33,769 que conocemos 238 00:10:33,769 --> 00:10:36,110 todos sabemos sumar según nuestro álgebra 239 00:10:36,110 --> 00:10:38,730 bueno, pues entonces 240 00:10:38,730 --> 00:10:41,730 C1 más C2 en realidad es una suma 241 00:10:41,730 --> 00:10:43,289 ¿verdad? porque C1 es un número 242 00:10:43,289 --> 00:10:45,509 y C2 es otro número 243 00:10:45,509 --> 00:10:47,490 también, podemos trabajar 244 00:10:47,490 --> 00:10:48,870 directamente con ellos como si fuera entero 245 00:10:48,870 --> 00:10:51,669 entonces, esta operación tiene sentido 246 00:10:51,669 --> 00:10:53,509 ¿vale? C1 más C2 247 00:10:53,509 --> 00:10:54,129 tiene sentido 248 00:10:54,129 --> 00:10:56,870 vale, vamos a ver qué es lo que muestra 249 00:10:56,870 --> 00:10:58,889 C1 más C2, vamos a ejecutarlo 250 00:10:58,889 --> 00:11:03,159 ¿vale? 251 00:11:04,100 --> 00:11:05,220 C1 más C2 252 00:11:05,220 --> 00:11:07,039 me está dando 82 253 00:11:07,039 --> 00:11:09,539 esto no es un char 254 00:11:09,539 --> 00:11:12,960 entonces nosotros lo que podríamos haber esperado es 255 00:11:12,960 --> 00:11:17,080 a ver, c1 más c2 sería 256 00:11:17,080 --> 00:11:20,000 76 más 6, 82 257 00:11:20,000 --> 00:11:23,019 como estamos diciendo 258 00:11:23,019 --> 00:11:25,500 que cuando se trata de un char 259 00:11:25,500 --> 00:11:29,179 el char, cuando tiene un numerito entero 260 00:11:29,179 --> 00:11:32,580 en realidad es equivalente al carácter que codifica 261 00:11:32,580 --> 00:11:35,700 pues si yo he hecho 76 más 6 me da 82 262 00:11:35,700 --> 00:11:37,840 Entonces uno podría haber esperado 263 00:11:37,840 --> 00:11:39,000 Podría haber esperado 264 00:11:39,000 --> 00:11:41,000 Que al haber hecho C1 más C2 265 00:11:41,000 --> 00:11:42,720 Lo que me hubiera mostrado es 266 00:11:42,720 --> 00:11:45,460 Este 82 que me sale aquí 267 00:11:45,460 --> 00:11:46,539 Me voy a la tabla ASTI 268 00:11:46,539 --> 00:11:49,620 ¿Vale? Me voy a la tabla ASTI 269 00:11:49,620 --> 00:11:50,720 Y 270 00:11:50,720 --> 00:11:53,480 Me debería 271 00:11:53,480 --> 00:11:55,120 Podríamos esperar que me salga la R 272 00:11:55,120 --> 00:11:55,980 ¿Verdad? 273 00:11:57,700 --> 00:11:59,559 ¿No estáis perdidos? ¿Sabéis por dónde voy? 274 00:12:00,200 --> 00:12:00,620 Sí 275 00:12:00,620 --> 00:12:03,840 ¿Vale? Pero no nos ha mostrado la R 276 00:12:03,840 --> 00:12:05,120 Nos ha hecho la suma 277 00:12:05,120 --> 00:12:26,220 ¿Por qué? Cuidado. Cuando involucramos operadores algebraicos, él de nuevo hace conversiones automáticas, promociones automáticas. Este término ya lo hemos usado antes. Cuando él tenía que asignar un int a un long, ya hacía alguna pequeña conversión, que es del int al long, no puede. 278 00:12:26,220 --> 00:12:32,539 Entonces cuidado, Java hay determinadas situaciones que rápidamente cuando uno ya lleva un tiempo 279 00:12:32,539 --> 00:12:34,879 Ya las tiene todas identificadas y ya no le causa un problema 280 00:12:34,879 --> 00:12:43,899 Hace rápidamente conversiones automáticas 281 00:12:43,899 --> 00:12:48,059 Que si uno las controla y las entiende las puede usar 282 00:12:48,059 --> 00:12:49,700 Pero si no las controla y las entiende le pueden dar errores 283 00:12:49,700 --> 00:12:55,100 Pues cuando hay operadores algebraicos involucrados como más, menos, por y división 284 00:12:55,100 --> 00:12:57,000 cuando hay operadores algebraicos involucrados 285 00:12:57,000 --> 00:12:58,919 cuidado 286 00:12:58,919 --> 00:13:01,139 porque automáticamente lo que él hace 287 00:13:01,139 --> 00:13:02,460 es lo que tenga alrededor 288 00:13:02,460 --> 00:13:04,299 promocionarlo a número 289 00:13:04,299 --> 00:13:05,919 y convertirlo a número 290 00:13:05,919 --> 00:13:08,379 porque él dice, uy hay una operación matemática 291 00:13:08,379 --> 00:13:11,019 hay una operación matemática, para hacer operaciones matemáticas 292 00:13:11,019 --> 00:13:13,340 me hacen falta números, pues lo convierto a número 293 00:13:13,340 --> 00:13:14,419 y es lo que hace 294 00:13:14,419 --> 00:13:16,279 hace esa promoción, vale 295 00:13:16,279 --> 00:13:17,559 lo convierte a número 296 00:13:17,559 --> 00:13:21,080 es lo que ha hecho, C1 más C2 297 00:13:21,080 --> 00:13:22,580 ha visto que hay un más 298 00:13:22,580 --> 00:13:24,100 lo ha convertido a número 299 00:13:24,100 --> 00:13:25,860 Y me muestra el número 82. 300 00:13:27,200 --> 00:13:31,120 Y bueno, pues ya, si uno sabe, controla eso, pues no pasa nada. 301 00:13:33,620 --> 00:13:34,980 Bueno, vamos a indicarlo aquí. 302 00:13:41,649 --> 00:13:46,950 Los operadores algebraicos, vamos a llamarlo algebraicos, los que hacen operaciones algebraicas. 303 00:13:49,330 --> 00:13:57,610 Algebraicos, si lo necesitan, convierten los operandos a números. 304 00:13:57,610 --> 00:14:01,690 y eso puede dar efectos secundarios 305 00:14:01,690 --> 00:14:03,149 que podemos no entender 306 00:14:03,149 --> 00:14:10,100 vale, pues lo pongo aquí 307 00:14:10,100 --> 00:14:14,090 cuidado, vale 308 00:14:14,090 --> 00:14:17,509 es decir, lo vamos a explicar un poco más 309 00:14:17,509 --> 00:14:21,019 lo vamos a explicar un poco más 310 00:14:21,019 --> 00:14:21,940 lo siguiente 311 00:14:21,940 --> 00:14:24,679 no muestra 312 00:14:24,679 --> 00:14:27,519 el carácter 313 00:14:27,519 --> 00:14:34,000 el carácter ASCII 314 00:14:34,000 --> 00:14:36,139 76 más 6 315 00:14:36,139 --> 00:14:37,299 82 316 00:14:37,299 --> 00:14:41,480 Sino el número 82 directamente 317 00:14:41,480 --> 00:14:48,240 ¿Vale? 318 00:14:49,379 --> 00:14:50,279 Todo lo ha convertido 319 00:14:50,279 --> 00:14:56,990 ¿Cómo puedo arreglar yo esto? 320 00:14:58,190 --> 00:14:59,230 No hay problema 321 00:14:59,230 --> 00:15:00,629 O sea, si yo quiero asegurarme 322 00:15:00,629 --> 00:15:01,629 Podría hacer 323 00:15:01,629 --> 00:15:03,350 Vamos a volver a repetir esto 324 00:15:03,350 --> 00:15:13,139 Que yo quiero 325 00:15:13,139 --> 00:15:14,240 Él lo ha convertido a número 326 00:15:14,240 --> 00:15:17,519 Pero yo quiero mostrar el carácter ASCII 82 327 00:15:17,519 --> 00:15:18,360 Número 82 328 00:15:18,360 --> 00:15:23,690 Alguien se aventuraría a decir 329 00:15:23,690 --> 00:15:24,429 ¿Qué puedo hacer? 330 00:15:24,429 --> 00:15:27,289 si yo quiero que eso sea un char, otras empeñan que sea un número 331 00:15:27,289 --> 00:15:28,070 pero quiero que sea un 332 00:15:28,070 --> 00:15:32,700 pues un casting 333 00:15:32,700 --> 00:15:34,899 que ya lo hemos visto antes 334 00:15:34,899 --> 00:15:36,500 pues venga, un casting 335 00:15:36,500 --> 00:15:39,919 y un casting de que no, que yo lo quiero como char 336 00:15:39,919 --> 00:15:40,899 que lo quiero como char 337 00:15:40,899 --> 00:15:46,750 pues venga, hago un casting 338 00:15:46,750 --> 00:15:48,429 este c1 más c2 339 00:15:48,429 --> 00:15:51,230 hable un casting a char 340 00:15:51,230 --> 00:15:52,090 hombre ya 341 00:15:52,090 --> 00:15:55,330 tú lo has interpretado como número 342 00:15:55,330 --> 00:15:56,990 porque has visto un operador numérico 343 00:15:56,990 --> 00:15:59,529 algebraico, perdón, lo has interpretado como número 344 00:15:59,529 --> 00:16:01,909 pero no 345 00:16:01,909 --> 00:16:03,289 yo lo quiero como char 346 00:16:03,289 --> 00:16:05,049 porque yo lo que ahí quería era 347 00:16:05,049 --> 00:16:09,610 el carácter char S 348 00:16:09,610 --> 00:16:20,779 vale, ahora ya sí 349 00:16:20,779 --> 00:16:21,840 ahora ya nos muestra la R 350 00:16:21,840 --> 00:16:24,440 que la R efectivamente es 351 00:16:24,440 --> 00:16:28,309 el carácter ASCII 352 00:16:28,309 --> 00:16:29,710 que está situado en el 82 353 00:16:29,710 --> 00:16:31,269 en el 82 354 00:16:31,269 --> 00:16:33,669 el que está en el 82 355 00:16:33,669 --> 00:16:36,750 bueno, esto es 356 00:16:36,750 --> 00:16:38,769 es 357 00:16:38,769 --> 00:16:52,909 Entonces hay muchas casuísticas que se pueden dar relacionadas con esto, pero lo importante es que tengamos más o menos clara la idea, por si nos sale algo que no esperamos, entender la base de por qué ha podido ser y arreglarla. 358 00:16:52,909 --> 00:17:17,630 No podemos ejemplificar todas las casuísticas que se pueden dar, ¿vale? Pero más o menos con esto tenemos las ideas básicas, que son, recopilamos un char y el numerito de la tabla ASTI que lo representa, son equivalentes a la hora de asignarlo a una variable char, son equivalentes, ¿vale? 359 00:17:17,630 --> 00:17:20,890 ahora el siguiente salto que podríamos dar 360 00:17:20,890 --> 00:17:23,529 como en una variable char 361 00:17:23,529 --> 00:17:24,809 en realidad va un entero 362 00:17:24,809 --> 00:17:27,049 yo puedo operar con él 363 00:17:27,049 --> 00:17:28,450 pero cuidado 364 00:17:28,450 --> 00:17:30,130 porque si usamos operadores algebraicos 365 00:17:30,130 --> 00:17:31,869 los operadores algebraicos 366 00:17:31,869 --> 00:17:33,569 lo convierten a número 367 00:17:33,569 --> 00:17:35,309 lo convierten a número 368 00:17:35,309 --> 00:17:37,710 entonces que yo quiero ese efecto 369 00:17:37,710 --> 00:17:39,250 ¿vale? quiero ese efecto 370 00:17:39,250 --> 00:17:40,670 pero que ahora quiero volver 371 00:17:40,670 --> 00:17:42,210 dar el otro salto 372 00:17:42,210 --> 00:17:43,210 y no, yo no quiero el número 373 00:17:43,210 --> 00:17:45,609 quiero el char que lo representa 374 00:17:45,609 --> 00:17:47,470 siempre tengo la opción del casting 375 00:17:47,470 --> 00:17:54,660 ¿Vale? Es como si yo hago aquí ahora 376 00:17:54,660 --> 00:17:59,400 Por ejemplo, en char, en otra variable, en otra cualquiera 377 00:17:59,400 --> 00:18:01,839 En char c3 378 00:18:01,839 --> 00:18:06,799 Yo le voy a asignar, vamos a intentar asignarle n 379 00:18:06,799 --> 00:18:10,160 Aquí tenemos claro que me va a decir 380 00:18:10,160 --> 00:18:13,599 No, el tipo no es compatible 381 00:18:13,599 --> 00:18:17,640 N es un número entero, es un int 382 00:18:17,640 --> 00:18:20,339 No puedes asignar un número entero 383 00:18:20,339 --> 00:18:22,160 a una variable char 384 00:18:22,160 --> 00:18:24,640 está claro, no se iba a salir un error de compilación 385 00:18:24,640 --> 00:18:26,559 porque no se pueden asignar 386 00:18:26,559 --> 00:18:28,599 tipos incompatibles 387 00:18:28,599 --> 00:18:30,519 salvo los dos matices 388 00:18:30,519 --> 00:18:32,039 que hemos visto hasta ahora, que él puede hacer 389 00:18:32,039 --> 00:18:33,980 pronunciación automática de int a da 390 00:18:33,980 --> 00:18:35,960 de int a lo ojo, de flow a da da 391 00:18:35,960 --> 00:18:40,960 pero este no, hay pronunciación automática que valga 392 00:18:40,960 --> 00:18:42,500 este, no puedes asignar un int 393 00:18:42,500 --> 00:18:43,400 a un char 394 00:18:43,400 --> 00:18:46,700 pero yo podría hacer un char 395 00:18:46,700 --> 00:18:48,640 podría hacer un casting, perdón 396 00:18:48,640 --> 00:18:51,839 si hago un casting, ningún problema 397 00:18:51,839 --> 00:18:55,119 y ahora que estaré asignando a C3 398 00:18:55,119 --> 00:18:56,859 estaré asignando a C3 399 00:18:56,859 --> 00:18:59,099 el carácter que está 400 00:18:59,099 --> 00:19:01,220 en la posición 401 00:19:01,220 --> 00:19:02,359 ASCII 76 402 00:19:02,359 --> 00:19:05,579 eso es lo que estaré asignando a C3 403 00:19:05,579 --> 00:19:09,109 vamos a mostrarlo 404 00:19:09,109 --> 00:19:10,650 a ver si es verdad que nos encaja 405 00:19:10,650 --> 00:19:18,700 vale, nos muestra la L 406 00:19:18,700 --> 00:19:20,400 la L 407 00:19:20,400 --> 00:19:22,140 debería estar en 408 00:19:22,140 --> 00:19:25,079 la posición 76 409 00:19:25,079 --> 00:19:26,839 porque yo he hecho aquí el char 410 00:19:26,839 --> 00:19:29,700 el casting de este, en la 76 411 00:19:29,700 --> 00:19:31,819 si buscamos aquí en la tabla 412 00:19:31,819 --> 00:19:34,240 ASCII, pues en la 76 413 00:19:34,240 --> 00:19:34,880 está la L 414 00:19:34,880 --> 00:19:37,339 ¿vale? en la 76 está la L 415 00:19:37,339 --> 00:19:43,059 bueno, pues todo esto os lo revisáis 416 00:19:43,059 --> 00:19:44,460 para tenerlo ahí en la mente 417 00:19:44,460 --> 00:19:46,880 porque hay aplicaciones 418 00:19:46,880 --> 00:19:47,480 en las que 419 00:19:47,480 --> 00:19:49,980 gran parte de los errores 420 00:19:49,980 --> 00:19:53,140 son este tipo de cosas 421 00:19:53,140 --> 00:19:54,660 de este tipo de cosas 422 00:19:54,660 --> 00:19:56,619 hasta que uno encuentra, porque uno a veces 423 00:19:56,619 --> 00:19:58,680 cuando una aplicación tocha enorme 424 00:19:58,680 --> 00:20:00,640 que hace cosas súper sofisticadas no le funciona 425 00:20:00,640 --> 00:20:02,579 como la aplicación es tocha 426 00:20:02,579 --> 00:20:04,079 sofisticada y no le funciona 427 00:20:04,079 --> 00:20:06,799 pues entonces busca errores 428 00:20:06,799 --> 00:20:08,480 tochos sofisticados y no 429 00:20:08,480 --> 00:20:10,680 la mayoría de las veces los errores son 430 00:20:10,680 --> 00:20:12,380 por detalles mínimos como este 431 00:20:12,380 --> 00:20:14,599 que yo no me he dado cuenta de que aquí 432 00:20:14,599 --> 00:20:15,460 estoy utilizando 433 00:20:15,460 --> 00:20:18,579 haciendo una suma de números cuando lo que quería hacer 434 00:20:18,579 --> 00:20:21,119 era concatenación, cosas de este estilo 435 00:20:21,119 --> 00:20:22,819 a lo mejor de formato 436 00:20:22,819 --> 00:20:23,740 cosas pequeñísimas 437 00:20:23,740 --> 00:20:26,980 y es muy difícil encontrarlos 438 00:20:26,980 --> 00:20:28,240 porque cuando uno los busca 439 00:20:28,240 --> 00:20:30,440 da por sentado que como esto es básico 440 00:20:30,440 --> 00:20:31,119 eso lo tiene bien 441 00:20:31,119 --> 00:20:34,359 y normalmente el ojo te filtra automáticamente 442 00:20:34,359 --> 00:20:35,700 la parte sencilla del código 443 00:20:35,700 --> 00:20:36,400 no la ve 444 00:20:36,400 --> 00:20:39,539 y se va a la conflictiva 445 00:20:39,539 --> 00:20:41,420 donde están los bucles, donde están las cosas 446 00:20:41,420 --> 00:20:44,779 y la otra la podemos mirar mil veces 447 00:20:44,779 --> 00:20:46,579 y no nos damos cuenta 448 00:20:46,579 --> 00:20:47,920 entonces tenemos que girar ese filtro 449 00:20:47,920 --> 00:20:49,619 porque los errores muchas veces están 450 00:20:49,619 --> 00:20:52,519 en este tipo de cosas sencillas 451 00:20:52,519 --> 00:20:54,079 ¿Vale? Un tipo de cosas sencillas. 452 00:20:54,940 --> 00:21:01,299 Entonces, como las ideas ya están, ahora lo tenéis que revisar, aseguraos de que lo tenéis interiorizado 453 00:21:01,299 --> 00:21:07,039 y que entendéis en qué medida se puede hacer equivaler el número entero con el char, ¿vale? 454 00:21:07,039 --> 00:21:09,819 Y evitar las conversiones de plazas de algebraicos, etc.