1 00:00:00,240 --> 00:00:07,879 Voy a grabar esta explicación, por lo tanto si habláis me estáis dando el permiso de grabaros 2 00:00:07,879 --> 00:00:11,300 Vale, entonces nosotros hemos visto variables 3 00:00:11,300 --> 00:00:14,720 Ahora vamos a ver constantes 4 00:00:14,720 --> 00:00:16,559 ¿Qué es una constante? 5 00:00:17,039 --> 00:00:23,500 Pues es como una variable a la que una vez asignado un valor no puedo modificarlo 6 00:00:23,500 --> 00:00:25,300 ¿Vale? 7 00:00:25,300 --> 00:00:29,640 Es lo mismo, es crear un espacio de memoria donde dentro le pondré un valor 8 00:00:29,640 --> 00:00:31,739 Pero una vez que he puesto este valor 9 00:00:31,739 --> 00:00:33,539 Si intento cambiarlo otra vez 10 00:00:33,539 --> 00:00:35,659 El programa me dirá, no puedes cambiarlo 11 00:00:35,659 --> 00:00:37,840 Porque esto no es una variable, es una constante 12 00:00:37,840 --> 00:00:39,100 ¿Para qué me sirve? 13 00:00:39,520 --> 00:00:41,380 No lo sé, a lo mejor en mi programa 14 00:00:41,380 --> 00:00:43,700 Hay algunos valores que no quiero 15 00:00:43,700 --> 00:00:45,759 Poder modificar, y por lo tanto 16 00:00:45,759 --> 00:00:47,619 Lo pongo allí, incrustados como 17 00:00:47,619 --> 00:00:49,579 Ese valor de allí, y ya está 18 00:00:49,579 --> 00:00:51,759 ¿Vale? O a lo mejor, por ejemplo 19 00:00:51,759 --> 00:00:54,060 Están algunas clases ya desarrolladas 20 00:00:54,060 --> 00:00:55,960 Como la clase matemática, la clase math 21 00:00:55,960 --> 00:00:57,700 ¿Vale? Que dentro tiene 22 00:00:57,700 --> 00:00:59,579 Algunas constantes, como por ejemplo pi 23 00:00:59,579 --> 00:01:01,820 ¿Vale? Y pi no vale 24 00:01:01,820 --> 00:01:04,500 No es que hoy vale 25 00:01:04,500 --> 00:01:06,680 3 y mañana 3,1 26 00:01:06,680 --> 00:01:08,540 Y pasado, no, es ese valor de allí 27 00:01:08,540 --> 00:01:10,939 ¿Vale? Entonces dentro de esa clase 28 00:01:10,939 --> 00:01:12,379 Que han desarrollado no sé quién 29 00:01:12,379 --> 00:01:14,019 Me han metido una constante 30 00:01:14,019 --> 00:01:15,359 Que es la constante pi 31 00:01:15,359 --> 00:01:17,219 Que vale lo que valga pi 32 00:01:17,219 --> 00:01:19,459 3,14 y algo más 33 00:01:19,459 --> 00:01:21,959 ¿Sí? Pues lo mismo puedo hacer 34 00:01:21,959 --> 00:01:23,120 De hecho, mira, ejemplo 35 00:01:23,120 --> 00:01:25,739 ¿Vale? Entonces, ¿cómo defino 36 00:01:25,739 --> 00:01:27,659 Una variable, una constante? 37 00:01:27,659 --> 00:01:30,439 Pues igual que una variable 38 00:01:30,439 --> 00:01:33,120 Pero con final delante 39 00:01:33,120 --> 00:01:35,359 Esta es una palabra reservada 40 00:01:35,359 --> 00:01:36,000 Final 41 00:01:36,000 --> 00:01:36,659 ¿Vale? 42 00:01:37,299 --> 00:01:39,560 Es como decir el valor final de esta variable 43 00:01:39,560 --> 00:01:40,939 Desde aquí no se puede mover 44 00:01:40,939 --> 00:01:44,760 Entonces si yo hago final double pi 45 00:01:44,760 --> 00:01:47,579 Es igual a 3,14 46 00:01:47,579 --> 00:01:49,480 Si es o no, desde esta cosa aquí 47 00:01:49,480 --> 00:01:52,900 Estoy definiendo una constante 48 00:01:52,900 --> 00:01:54,859 ¿Notáis algo distinto 49 00:01:54,859 --> 00:01:56,620 Entre una variable y una constante 50 00:01:56,620 --> 00:01:58,000 Por cómo está escrita así 51 00:01:58,000 --> 00:01:59,760 Mirando sólo esta línea aquí 52 00:01:59,760 --> 00:02:00,780 De final, double, pi 53 00:02:00,780 --> 00:02:08,419 Aparte el final, que es nuevo 54 00:02:08,419 --> 00:02:14,479 Mayúscula 55 00:02:14,479 --> 00:02:17,919 Las finales se escriben todas en mayúscula 56 00:02:17,919 --> 00:02:19,780 ¿Es necesario? 57 00:02:19,960 --> 00:02:20,699 ¿Si no, no funciona? 58 00:02:20,960 --> 00:02:22,599 No, podéis escribir lo que os da la gana 59 00:02:22,599 --> 00:02:25,319 Pero los programadores en Java 60 00:02:25,319 --> 00:02:27,659 Asumen que se encuentran un nombre 61 00:02:27,659 --> 00:02:28,819 Todo en mayúscula 62 00:02:28,819 --> 00:02:31,520 Eso es una final 63 00:02:31,520 --> 00:02:33,780 Una constante 64 00:02:33,780 --> 00:02:34,500 ¿Vale? 65 00:02:34,500 --> 00:02:37,319 Si lo encuentran todo en minúsculas 66 00:02:37,319 --> 00:02:38,039 De una variable 67 00:02:38,039 --> 00:02:40,360 Es una variable 68 00:02:40,360 --> 00:02:42,439 Si lo encuentran en minúsculas con la paréntesis 69 00:02:42,439 --> 00:02:44,020 Es un método 70 00:02:44,020 --> 00:02:46,800 Y si encuentras un nombre que empieza por mayúsculas 71 00:02:46,800 --> 00:02:48,719 Y sigue por minúsculas 72 00:02:48,719 --> 00:02:49,560 Es una clase 73 00:02:49,560 --> 00:02:52,599 Todas nuestras clases empiezan por mayúsculas y luego minúsculas 74 00:02:52,599 --> 00:02:54,680 Scanner es una clase 75 00:02:54,680 --> 00:02:57,500 System es una clase 76 00:02:57,500 --> 00:02:59,400 String es una clase 77 00:02:59,400 --> 00:03:01,780 ¿Dudas? 78 00:03:05,129 --> 00:03:05,370 ¿Vale? 79 00:03:05,370 --> 00:03:07,009 ¿Cómo? 80 00:03:08,430 --> 00:03:10,050 Los nombres 81 00:03:10,050 --> 00:03:11,449 De constante 82 00:03:11,449 --> 00:03:13,550 Todo en mayúsculas 83 00:03:13,550 --> 00:03:15,469 Entonces por ejemplo 84 00:03:15,469 --> 00:03:17,650 Pi es aceptable, MaxUsuarios 85 00:03:17,650 --> 00:03:19,770 Está aceptable, MaxUsuarios 86 00:03:19,770 --> 00:03:21,590 Todo pegado, también se lee 87 00:03:21,590 --> 00:03:22,849 Un poco mal, pero bueno 88 00:03:22,849 --> 00:03:29,800 Si pusiera un espacio aquí 89 00:03:29,800 --> 00:03:31,659 Colapsaría porque el 90 00:03:31,659 --> 00:03:33,979 Parcer que me va a sacar 91 00:03:33,979 --> 00:03:34,900 Los tokens 92 00:03:34,900 --> 00:03:37,620 El token final 93 00:03:37,620 --> 00:03:39,900 Ok, puede ser seguido de un tipo 94 00:03:39,900 --> 00:03:41,719 Vale, puede ser seguido de un identificador 95 00:03:41,719 --> 00:03:44,080 Y después del identificador no puede ir otro identificador 96 00:03:44,080 --> 00:03:45,379 Y por lo tanto hay un problema 97 00:03:45,379 --> 00:03:54,039 ¿Cuál es la diferencia entre...? 98 00:03:54,039 --> 00:03:55,400 Es que esta es la constante 99 00:03:55,400 --> 00:03:56,860 ¿Cómo defino una constante? 100 00:03:57,000 --> 00:03:58,259 Poniendo final delante 101 00:03:58,259 --> 00:04:02,500 Es la forma con la que defino la constante en Java 102 00:04:02,500 --> 00:04:04,180 Si no la pongo 103 00:04:04,180 --> 00:04:05,620 Esta es una variable 104 00:04:05,620 --> 00:04:09,080 Puedo hacer debajo pi igual a 4 105 00:04:09,080 --> 00:04:10,580 Si lo pongo 106 00:04:10,580 --> 00:04:12,979 Ahora si intento hacer pi igual a 4 107 00:04:12,979 --> 00:04:21,180 me dicen no lo puedes modificar porque es una constante. ¿Dudas? 108 00:04:21,180 --> 00:04:26,300 En mayúscula una constante no puede cambiar su valor. 109 00:04:26,300 --> 00:04:30,680 Ámbitos de las variables y de las constantes. Esto también es 110 00:04:30,680 --> 00:04:39,959 interesante. Una variable o una constante existe sólo en el bloque en 111 00:04:39,959 --> 00:04:41,879 En la que la he definido 112 00:04:41,879 --> 00:04:43,319 Que es un bloque 113 00:04:43,319 --> 00:04:45,420 Donde empieza una llave 114 00:04:45,420 --> 00:04:46,839 Y acaba otra llave 115 00:04:46,839 --> 00:04:48,339 ¿Vale? 116 00:04:48,939 --> 00:04:51,660 Si yo tengo un bloque 117 00:04:51,660 --> 00:04:53,740 Llave abierta 118 00:04:53,740 --> 00:04:54,180 ¿Vale? 119 00:04:54,540 --> 00:04:55,800 Declaro una variable allí 120 00:04:55,800 --> 00:04:57,980 Y luego sigo adelante 121 00:04:57,980 --> 00:04:59,639 Esta variable existe 122 00:04:59,639 --> 00:05:02,180 Hasta que yo cierre ese bloque 123 00:05:02,180 --> 00:05:03,699 O sea, ponga la llave de cerrar 124 00:05:03,699 --> 00:05:06,560 Si yo declaro una variable dentro del 125 00:05:06,560 --> 00:05:08,899 Del main 126 00:05:08,899 --> 00:05:11,139 Solo existe dentro del main 127 00:05:11,139 --> 00:05:12,759 No fuera del main 128 00:05:12,759 --> 00:05:15,819 Si yo la declaro dentro de clase 129 00:05:15,819 --> 00:05:17,399 Existirá en el main 130 00:05:17,399 --> 00:05:20,560 Y también en otros lados que estén dentro de la clase 131 00:05:20,560 --> 00:05:21,720 Lo veremos 132 00:05:21,720 --> 00:05:22,459 ¿Vale? 133 00:05:22,779 --> 00:05:25,560 Por ahora lo único que os tiene que quedar claro 134 00:05:25,560 --> 00:05:26,319 Es algo así 135 00:05:26,319 --> 00:05:30,259 Esto funciona 136 00:05:30,259 --> 00:05:32,759 Esto no 137 00:05:32,759 --> 00:05:37,610 ¿Por qué? 138 00:05:38,610 --> 00:05:40,069 Porque yo aquí tengo un bloque 139 00:05:40,069 --> 00:05:43,209 Aquí dentro he declarado A 140 00:05:43,209 --> 00:05:44,430 ¿Vale? 141 00:05:44,810 --> 00:05:46,990 Y cuando en un bloque interno 142 00:05:46,990 --> 00:05:49,490 Declaro B y uso esta A 143 00:05:49,490 --> 00:05:51,550 Esta A sigue existiendo 144 00:05:51,550 --> 00:05:53,670 Porque estoy dentro del bloque donde se ha creado 145 00:05:53,670 --> 00:05:56,750 Bloques internos 146 00:05:56,750 --> 00:05:58,110 Va, bien 147 00:05:58,110 --> 00:06:01,550 Sin embargo, si yo pongo 148 00:06:01,550 --> 00:06:03,209 Un bloque aquí interno 149 00:06:03,209 --> 00:06:04,449 Donde declaro A 150 00:06:04,449 --> 00:06:07,430 Y luego intento utilizarla 151 00:06:07,430 --> 00:06:09,310 En el bloque externo 152 00:06:09,310 --> 00:06:11,189 Este A ya no existe 153 00:06:11,189 --> 00:06:13,670 No está declarado en este bloque de aquí 154 00:06:13,670 --> 00:06:16,730 Existe solo dentro de este bloque de aquí 155 00:06:16,730 --> 00:06:18,509 ¿Se entiende? 156 00:06:18,870 --> 00:06:20,009 Variables constantes 157 00:06:20,009 --> 00:06:21,569 Variables constantes 158 00:06:21,569 --> 00:06:22,769 Y muchas otras cosas 159 00:06:22,769 --> 00:06:27,889 Esto se llama el ámbito de una variable 160 00:06:27,889 --> 00:06:29,290 ¿Vale? 161 00:06:29,629 --> 00:06:30,269 Scope 162 00:06:30,269 --> 00:06:32,209 Scope en inglés 163 00:06:32,209 --> 00:06:33,310 ¿Vale? 164 00:06:34,089 --> 00:06:37,410 Si yo me equivoco con el ámbito de una variable 165 00:06:37,410 --> 00:06:39,529 Y la uso donde no es su ámbito 166 00:06:39,529 --> 00:06:44,269 Se enfadará el Java diciendo 167 00:06:44,269 --> 00:06:46,110 Oye, mira, esta variable no está declarada 168 00:06:46,110 --> 00:06:47,310 ¿Cómo no? La he declarado aquí 169 00:06:47,310 --> 00:06:50,290 Pero la has declarado en un bloque que ya se ha cerrado 170 00:06:50,290 --> 00:06:52,329 Entonces, una vez cerrado este bloque 171 00:06:52,329 --> 00:06:53,850 Esa variable ya no existe 172 00:06:53,850 --> 00:06:55,649 Si tú la necesitas 173 00:06:55,649 --> 00:06:58,350 Lo que tienes que hacer es la declaración de esta variable 174 00:06:58,350 --> 00:06:59,529 Ponerla en el bloque ester 175 00:06:59,529 --> 00:07:03,430 ¿Me explico? 176 00:07:05,810 --> 00:07:07,069 Entonces, tened cuidado 177 00:07:07,069 --> 00:07:11,829 Ahora como nosotros utilizamos casi solo main 178 00:07:11,829 --> 00:07:13,589 Y escribimos todos allí dentro 179 00:07:13,589 --> 00:07:15,170 Todas nuestras variables están allí dentro 180 00:07:15,170 --> 00:07:17,089 No hay grandes problemas de 181 00:07:17,089 --> 00:07:19,110 Scope, de ámbito 182 00:07:19,110 --> 00:07:21,930 Pero más adelante cuando empezaremos a utilizar 183 00:07:21,930 --> 00:07:23,810 Bloques como el for, el while 184 00:07:23,810 --> 00:07:24,629 Y cosas por el estilo 185 00:07:24,629 --> 00:07:27,170 Según donde creas la variable 186 00:07:27,170 --> 00:07:30,430 No la puedes utilizar fuera de ese bloque 187 00:07:30,430 --> 00:07:31,529 O si 188 00:07:31,529 --> 00:07:33,189 Si la sacas fuera 189 00:07:33,189 --> 00:07:36,149 Pero acordaos siempre que 190 00:07:36,149 --> 00:07:37,970 Yo tengo una 191 00:07:37,970 --> 00:07:39,050 Un bloque 192 00:07:39,050 --> 00:07:41,350 Un bloque sería un bloque 193 00:07:41,350 --> 00:07:43,889 de secuencia, un bloque de instrucciones 194 00:07:43,889 --> 00:07:45,269 ¿vale? y 195 00:07:45,269 --> 00:07:48,009 para que pueda 196 00:07:48,009 --> 00:07:49,629 usar una variable 197 00:07:49,629 --> 00:07:51,769 dentro de ese bloque, tiene que estar 198 00:07:51,769 --> 00:07:53,870 creada, tiene que estar declarada 199 00:07:53,870 --> 00:07:55,889 en ese bloque o en un bloque 200 00:07:55,889 --> 00:07:57,610 más grande que contiene ese bloque 201 00:07:57,610 --> 00:08:00,129 ¿si? para poder utilizar 202 00:08:00,129 --> 00:08:02,110 A aquí, tiene que estar definida 203 00:08:02,110 --> 00:08:03,870 en ese bloque o en un bloque 204 00:08:03,870 --> 00:08:05,269 que incluye el bloque donde estoy 205 00:08:05,269 --> 00:08:06,870 o en un bloque que incluye el bloque 206 00:08:06,870 --> 00:08:08,430 donde estoy 207 00:08:08,430 --> 00:08:10,350 ¿si? 208 00:08:11,350 --> 00:08:17,009 ¿Dudas? ¿Se entiende más o menos? Vale. 209 00:08:19,829 --> 00:08:25,189 Bueno, puede tener el mismo nombre que otra declarada en el ámbito del método del que pertenece, ¿vale? 210 00:08:25,290 --> 00:08:30,970 O sea, si yo estoy en este ámbito aquí, ¿podría aquí dentro volver a declarar a? 211 00:08:31,750 --> 00:08:35,490 ¿Int a es igual a algo? Pues no, porque está ya declarada aquí. 212 00:08:35,590 --> 00:08:40,450 Me dice, ya existe. ¿Podría yo aquí volver a declarar a? 213 00:08:40,450 --> 00:08:43,009 Sí, porque esta existiría aquí 214 00:08:43,009 --> 00:08:44,629 Y luego no le he pasado, pues no 215 00:08:44,629 --> 00:08:51,029 Probablemente me daría error esto 216 00:08:51,029 --> 00:08:53,549 Porque me diría 217 00:08:53,549 --> 00:08:55,409 Ya está definida en este bloque exterior 218 00:08:55,409 --> 00:09:00,759 Vale, ejemplo de ámbito 219 00:09:00,759 --> 00:09:01,320 Vale 220 00:09:01,320 --> 00:09:03,779 Entonces si aquí tengo 221 00:09:03,779 --> 00:09:05,279 X que vale 12 222 00:09:05,279 --> 00:09:08,360 Fijaos que está en el ámbito del main 223 00:09:08,360 --> 00:09:09,179 Vale 224 00:09:09,179 --> 00:09:12,460 Y después creo Q que vale 96 225 00:09:12,460 --> 00:09:13,759 Ahora puedo hacer 226 00:09:13,759 --> 00:09:15,799 X más Q, porque aquí dentro 227 00:09:15,799 --> 00:09:18,100 Tengo a disposición tanto esta X 228 00:09:18,100 --> 00:09:19,559 Como esta Q, porque el ámbito 229 00:09:19,559 --> 00:09:21,179 Es correcto para los dos 230 00:09:21,179 --> 00:09:23,500 Fuera de este bloque de aquí 231 00:09:23,500 --> 00:09:25,080 No puedo utilizar Q 232 00:09:25,080 --> 00:09:26,919 Puedo solo utilizar X 233 00:09:26,919 --> 00:09:30,340 ¿Dudas sobre esto? 234 00:09:32,690 --> 00:09:32,870 Si 235 00:09:32,870 --> 00:09:36,830 Si os fijáis por como están hechos 236 00:09:36,830 --> 00:09:39,490 Los bloques 237 00:09:39,490 --> 00:09:40,250 ¿Vale? 238 00:09:40,889 --> 00:09:42,610 Aquí dentro he declarado X 239 00:09:42,610 --> 00:09:44,789 Entonces dentro de este bloque de aquí 240 00:09:44,789 --> 00:09:46,830 Puedo usar X donde me da la gana 241 00:09:46,830 --> 00:09:51,590 Sin embargo Q la he declarado dentro de este bloque de aquí 242 00:09:51,590 --> 00:09:56,549 Entonces dentro de este bloque yo tengo acceso tanto a Q como a X 243 00:09:56,549 --> 00:10:03,070 Sin embargo dentro del bloque externo solo puedo utilizar X 244 00:10:03,070 --> 00:10:06,830 Si intento utilizar aquí Q, me dice que Q no existe 245 00:10:06,830 --> 00:10:09,809 Porque solo existía dentro de este ámbito de aquí 246 00:10:09,809 --> 00:10:13,570 ¿Dudas? 247 00:10:18,980 --> 00:10:19,539 Vale 248 00:10:19,539 --> 00:10:24,519 Expresiones, ya hemos hablado de expresiones varias veces, ¿vale? 249 00:10:25,860 --> 00:10:29,519 Sostancialmente nosotros cuando creamos una variable o algo por el estilo 250 00:10:29,519 --> 00:10:34,000 Y decimos int x es igual a 3, pues 3 es un literal, ¿vale? 251 00:10:34,000 --> 00:10:38,120 En vez de poner 3 directamente, lo que puedo poner es una expresión 252 00:10:38,120 --> 00:10:44,080 Una expresión es un conjunto de operaciones, de operadores, etc, etc 253 00:10:44,080 --> 00:10:49,840 que me crean una expresión aritmética o una expresión booleana o lo que sea 254 00:10:49,840 --> 00:10:56,720 que yo tenga que, antes de poder asignar un valor a la variable donde estoy guardando esta expresión 255 00:10:56,720 --> 00:10:58,860 pues tengo que resolver esta expresión 256 00:10:58,860 --> 00:11:02,120 tengo que hacer el cálculo para ver que me sale de esta expresión 257 00:11:02,120 --> 00:11:05,960 y una vez que lo he hecho, pues eso será un literal 258 00:11:05,960 --> 00:11:10,419 y ese literal lo guardo en la variable 259 00:11:10,419 --> 00:11:13,320 Es un conjunto de tokens que el programa 260 00:11:13,320 --> 00:11:15,200 Puede resolver en tiempo de evolución 261 00:11:15,200 --> 00:11:16,460 A un valor concreto 262 00:11:16,460 --> 00:11:18,899 La expresión más simple consiste en un literal 263 00:11:18,899 --> 00:11:21,120 Un literal solo es una expresión 264 00:11:21,120 --> 00:11:22,559 3 es una expresión 265 00:11:22,559 --> 00:11:24,820 3 más 7 es una expresión 266 00:11:24,820 --> 00:11:27,360 A más 5 267 00:11:27,360 --> 00:11:28,659 Siendo A un entero 268 00:11:28,659 --> 00:11:30,159 Pues es una expresión 269 00:11:30,159 --> 00:11:33,100 A por 7 dividido B 270 00:11:33,100 --> 00:11:34,559 Más 5 271 00:11:34,559 --> 00:11:36,440 Por F 272 00:11:36,440 --> 00:11:38,059 Y o X 273 00:11:38,059 --> 00:11:57,250 si son todos int, pues es una expresión. ¿Se entiende? Sí, lo acabo de decir. Vale, una expresión es lo que pongo a la derecha del igual 274 00:11:57,250 --> 00:12:06,929 y que se puede resolver en un determinado valor. Me explico. Por ejemplo, 3 es una expresión. ¿Por qué? Porque es el valor 3. 275 00:12:06,929 --> 00:12:09,809 3 más 7 es una expresión 276 00:12:09,809 --> 00:12:13,809 3 más 7 dividido a 277 00:12:13,809 --> 00:12:15,370 Siendo a una variable 278 00:12:15,370 --> 00:12:17,169 Pues también es una expresión 279 00:12:17,169 --> 00:12:20,730 Lo que pasa es que cuando yo lo tengo 280 00:12:20,730 --> 00:12:23,049 3 más 7 dividido a 281 00:12:23,049 --> 00:12:25,230 Haré estos cálculos 282 00:12:25,230 --> 00:12:27,269 Me dará un resultado 283 00:12:27,269 --> 00:12:28,669 Pongamos el resultado sea 5 284 00:12:28,669 --> 00:12:31,669 Y este 5 es el que pongo dentro de la variable 285 00:12:31,669 --> 00:12:32,870 Que utilizo 286 00:12:32,870 --> 00:12:45,409 Estos son, por ejemplo, expresiones 287 00:12:45,409 --> 00:12:49,470 2 más 3 es una expresión 288 00:12:49,470 --> 00:12:53,789 3 por saldo, siendo saldo un identificador de una variable 289 00:12:53,789 --> 00:12:55,029 Es una expresión 290 00:12:55,029 --> 00:12:59,409 Saldo más incentivos, pues también es una expresión 291 00:12:59,409 --> 00:13:04,470 Paréntesis, paréntesis, saldo dividido por 2 cerrada paréntesis más 1000 módulo 10 292 00:13:04,470 --> 00:13:05,789 Pues es una expresión 293 00:13:05,789 --> 00:13:08,610 ¿Qué pasará? Que a tiempo de ejecución 294 00:13:08,610 --> 00:13:10,629 El programa 295 00:13:10,629 --> 00:13:12,289 La JavaScript Machine o quien por él 296 00:13:12,289 --> 00:13:14,470 Analizará esta expresión 297 00:13:14,470 --> 00:13:15,549 Sostituirá 298 00:13:15,549 --> 00:13:17,370 Las variables 299 00:13:17,370 --> 00:13:20,049 Que es un saldo por ejemplo, un saldo incentivo 300 00:13:20,049 --> 00:13:22,330 ¿Vale? Por el valor 301 00:13:22,330 --> 00:13:24,870 Que tienen en ese momento 302 00:13:24,870 --> 00:13:26,190 Estas variables 303 00:13:26,190 --> 00:13:27,809 O sea, os acordáis, saldo 304 00:13:27,809 --> 00:13:29,769 ¿Qué quiere decir? Que me voy a la memoria 305 00:13:29,769 --> 00:13:31,450 Que se llama saldo 306 00:13:31,450 --> 00:13:33,429 Miro que valor está ahí dentro 307 00:13:33,429 --> 00:13:34,649 Si ahí dentro hay 100 308 00:13:34,649 --> 00:13:36,289 Pues entonces esto vale 100 309 00:13:36,289 --> 00:13:39,450 Algo 100 dividido 2 más 1000 módulo 10 310 00:13:39,450 --> 00:13:41,409 Y el resultado de todo esto 311 00:13:41,409 --> 00:13:43,389 Es el resultado de esta expresión 312 00:13:43,389 --> 00:13:46,990 Dudas 313 00:13:46,990 --> 00:13:50,070 Y lo hemos utilizado 314 00:13:50,070 --> 00:13:51,610 Cuando nosotros hacemos 315 00:13:51,610 --> 00:13:54,529 Área del cuadrado 316 00:13:54,529 --> 00:13:56,169 Es igual a lado por lado 317 00:13:56,169 --> 00:13:58,269 Pues lado por lado es una expresión 318 00:13:58,269 --> 00:14:05,620 Nosotros por ahora hemos utilizado 319 00:14:05,620 --> 00:14:06,440 Principalmente 320 00:14:06,440 --> 00:14:09,679 Expresiones aritméticas 321 00:14:09,679 --> 00:14:12,740 Pero existen también expresiones booleanas 322 00:14:12,740 --> 00:14:14,840 El otro día hicimos ejemplos 323 00:14:14,840 --> 00:14:17,019 De cuando hacíamos a menor que 5 324 00:14:17,019 --> 00:14:19,159 A menor que 5 es una expresión 325 00:14:19,159 --> 00:14:21,940 Pero el resultado de a menor que 5 326 00:14:21,940 --> 00:14:23,960 No es un entero 327 00:14:23,960 --> 00:14:26,759 Sino es un valor de verdadero o falso 328 00:14:26,759 --> 00:14:27,899 ¿Ojotáis? 329 00:14:28,480 --> 00:14:30,259 Por lo tanto es una expresión booleana 330 00:14:30,259 --> 00:14:33,639 ¿Alguna pregunta? 331 00:14:33,940 --> 00:14:35,340 Ah, sí, te iba a decir 332 00:14:35,340 --> 00:14:37,919 En la parte anterior de expresiones 333 00:14:37,919 --> 00:14:40,679 Entonces si, por ejemplo 334 00:14:40,679 --> 00:14:47,580 Saldo es un identificador 335 00:14:47,580 --> 00:14:50,159 Si no he definido la variable saldo 336 00:14:50,159 --> 00:14:53,159 Pues no podría ni ejecutarlo 337 00:14:53,159 --> 00:14:53,759 Me diría 338 00:14:53,759 --> 00:14:56,600 No consigo resolver saldo como una variable 339 00:14:56,600 --> 00:14:58,279 Si yo lo he creado 340 00:14:58,279 --> 00:15:00,740 Pero no la he inicializado 341 00:15:00,740 --> 00:15:01,799 Me diría 342 00:15:01,799 --> 00:15:04,399 No puedo utilizar saldo porque no ha sido inicializado 343 00:15:04,399 --> 00:15:05,600 ¿Vale? 344 00:15:05,679 --> 00:15:06,320 Y explotaría 345 00:15:06,320 --> 00:15:08,299 Dependiendo de cómo lo hago 346 00:15:08,299 --> 00:15:10,720 O a tiempo de compilación o hasta tiempo de ejecución 347 00:15:10,720 --> 00:15:12,519 O sea que me permitiría ejecutarlo 348 00:15:12,519 --> 00:15:14,440 Pero cuando luego llegue a leer saldo 349 00:15:14,440 --> 00:15:16,200 Diría, oye, mira que aquí no has puesto nada 350 00:15:16,200 --> 00:15:17,259 Pues no puede hacerlo 351 00:15:17,259 --> 00:15:21,820 Si yo no le he puesto ningún valor 352 00:15:21,820 --> 00:15:24,019 Hemos reservado un trozo de memoria 353 00:15:24,019 --> 00:15:26,919 Con allí dentro que se llama saldo 354 00:15:26,919 --> 00:15:28,639 Pero no sé que hay allí dentro 355 00:15:28,639 --> 00:15:30,700 Porque en ningún momento me has escrito algo allí dentro 356 00:15:30,700 --> 00:15:33,840 Entonces podría ser que este es un trozo de memoria 357 00:15:33,840 --> 00:15:35,080 Que se había utilizado antes 358 00:15:35,080 --> 00:15:36,720 Y que ahora reutilizarlo 359 00:15:36,720 --> 00:15:38,200 Allí dentro hay datos 360 00:15:38,200 --> 00:15:42,019 Pero no son los datos reales actuales 361 00:15:42,019 --> 00:15:43,940 Entonces como no lo has inicializado se enfada 362 00:15:43,940 --> 00:15:45,200 Te dice, la tienes que inicializar 363 00:15:45,200 --> 00:15:47,700 De hecho, hay veces que 364 00:15:47,700 --> 00:15:49,139 Si no estás seguro, te dice 365 00:15:49,139 --> 00:15:52,500 Mira, que esta variable podría no ser inicializar 366 00:15:52,500 --> 00:15:53,840 Y te da como un error 367 00:15:53,840 --> 00:15:55,639 O sea, por algún lado la tienes que inicializar 368 00:15:55,639 --> 00:15:58,019 ¿Dudas? 369 00:16:00,080 --> 00:16:00,480 ¿Agrupación? 370 00:16:00,899 --> 00:16:01,600 Las paréntesis 371 00:16:01,600 --> 00:16:07,279 Si yo tengo 372 00:16:07,279 --> 00:16:10,299 2 más 3 por 5 373 00:16:10,299 --> 00:16:11,679 ¿Qué hago antes? 374 00:16:13,899 --> 00:16:15,600 Normalmente se hace antes las multiplicaciones 375 00:16:15,600 --> 00:16:16,500 Y luego las sumas 376 00:16:16,500 --> 00:16:18,720 Antes multiplicaciones y divisiones 377 00:16:18,720 --> 00:16:19,960 Luego sumas 378 00:16:19,960 --> 00:16:22,480 ¿Vale? Entonces si yo no tengo las paréntesis 379 00:16:22,480 --> 00:16:24,220 Me haría 3 por 5 380 00:16:24,220 --> 00:16:26,379 Y a 15 le suma 2 381 00:16:26,379 --> 00:16:27,240 ¿Vale? 382 00:16:27,659 --> 00:16:29,159 Si yo no quiero eso 383 00:16:29,159 --> 00:16:32,399 Pues puedo agrupar 2 más 3 384 00:16:32,399 --> 00:16:34,220 Y entonces le estoy diciendo 385 00:16:34,220 --> 00:16:36,320 Antes haz esta parte de aquí 386 00:16:36,320 --> 00:16:37,659 Agrupada entre paréntesis 387 00:16:37,659 --> 00:16:40,000 Y cuando has solucionado este de aquí 388 00:16:40,000 --> 00:16:42,480 Que 3 más 2 probablemente hace 5 389 00:16:42,480 --> 00:16:43,980 Pues lo haces por 5 390 00:16:43,980 --> 00:16:45,679 Y el resultado es 25 391 00:16:45,679 --> 00:16:52,600 Voy rápido 392 00:16:52,600 --> 00:16:54,679 Porque estas son todas cosas bastante básicas 393 00:16:54,679 --> 00:16:55,960 De las que hemos ya hecho 394 00:16:55,960 --> 00:16:58,299 Ejemplos 395 00:16:58,299 --> 00:17:00,580 Simplemente le estamos dando un nombre 396 00:17:00,580 --> 00:17:02,440 ¿Cómo se llaman las paréntesis? 397 00:17:02,580 --> 00:17:04,799 Pues es el operador de agrupación 398 00:17:04,799 --> 00:17:06,740 Ahora sí que tiene valor 399 00:17:06,740 --> 00:17:09,640 Antes era una paréntesis, ahora es el operador de agrupación 400 00:17:09,640 --> 00:17:10,299 Mucho mejor 401 00:17:10,299 --> 00:17:14,119 También porque si alguien nos habla de 402 00:17:14,119 --> 00:17:16,619 Operador de agrupación 403 00:17:16,619 --> 00:17:19,119 No digáis, eso nosotros no lo hemos visto 404 00:17:19,119 --> 00:17:22,019 De vuestra respuesta estándar 405 00:17:22,019 --> 00:17:24,079 Clasificación de operadores 406 00:17:24,079 --> 00:17:24,720 ¿Vale? 407 00:17:25,240 --> 00:17:27,519 ¿Qué tipo de operadores hay? 408 00:17:29,380 --> 00:17:30,519 Si me baso 409 00:17:30,519 --> 00:17:33,539 El número de expresiones que requiere 410 00:17:33,539 --> 00:17:35,059 Puede haber 411 00:17:35,059 --> 00:17:36,200 Unarios 412 00:17:36,200 --> 00:17:37,779 Binarios 413 00:17:37,779 --> 00:17:39,119 Oternarios 414 00:17:39,119 --> 00:17:41,579 Los operadores unarios 415 00:17:41,579 --> 00:17:43,740 Necesitan una expresión sola 416 00:17:43,740 --> 00:17:45,160 Como por ejemplo 417 00:17:45,160 --> 00:17:46,200 El menos 418 00:17:46,200 --> 00:17:48,640 Menos uno 419 00:17:48,640 --> 00:17:50,599 1 es la expresión 420 00:17:50,599 --> 00:17:52,799 Y el menos es como el operador que me dice 421 00:17:52,799 --> 00:17:55,119 Sí, pero multiplícalo por menos 1 422 00:17:55,119 --> 00:17:55,920 Y hazlo negativo 423 00:17:55,920 --> 00:17:57,380 ¿Sí? 424 00:17:57,859 --> 00:17:59,240 O esta cosa de aquí 425 00:17:59,240 --> 00:18:00,839 Que a lo mejor lo veremos en un futuro 426 00:18:00,839 --> 00:18:04,319 Binario 427 00:18:04,319 --> 00:18:05,660 Son los más básicos 428 00:18:05,660 --> 00:18:08,980 Los que conocemos como el más, el por, el dividido, el módulo 429 00:18:08,980 --> 00:18:09,940 ¿Vale? 430 00:18:09,980 --> 00:18:12,220 Entonces 2 más saldo 431 00:18:12,220 --> 00:18:14,259 O 2 más 3 432 00:18:14,259 --> 00:18:15,880 Más 4 por 7 433 00:18:15,880 --> 00:18:16,220 ¿Vale? 434 00:18:16,220 --> 00:18:18,319 Siempre hay dos expresiones 435 00:18:18,319 --> 00:18:21,039 Con en el medio el símbolo 436 00:18:21,039 --> 00:18:23,140 Si yo miro este porra de aquí 437 00:18:23,140 --> 00:18:25,240 Tengo una expresión 438 00:18:25,240 --> 00:18:27,420 Por otra expresión 439 00:18:27,420 --> 00:18:29,220 Binario, dos expresiones 440 00:18:29,220 --> 00:18:31,940 Luego que esta expresión sea más compleja 441 00:18:31,940 --> 00:18:32,839 No sea un número solo 442 00:18:32,839 --> 00:18:33,799 Me vale igual 443 00:18:33,799 --> 00:18:36,400 Pero es un operador 444 00:18:36,400 --> 00:18:38,660 O sea, un operando multiplicado 445 00:18:38,660 --> 00:18:39,640 Otro operando 446 00:18:39,640 --> 00:18:41,519 Si es binario 447 00:18:41,519 --> 00:18:44,779 Necesito dos operandos 448 00:18:44,779 --> 00:18:46,019 Dos expresiones 449 00:18:46,019 --> 00:18:47,640 ¿Me entiende? 450 00:18:48,839 --> 00:18:51,160 Y finalmente están unos operadores 451 00:18:51,160 --> 00:18:53,039 Que esto creo que es el único que veremos 452 00:18:53,039 --> 00:18:54,319 Que es ternario 453 00:18:54,319 --> 00:18:56,980 Por ejemplo, esta cosa de aquí 454 00:18:56,980 --> 00:19:00,660 Que miraremos ahora dentro de un rato un poquito mejor 455 00:19:00,660 --> 00:19:02,579 Hacemos un par de ejercicios de estos 456 00:19:02,579 --> 00:19:03,240 ¿Vale? 457 00:19:03,299 --> 00:19:07,079 Es un operador que necesita tres expresiones 458 00:19:07,079 --> 00:19:10,319 Una, dos y tres 459 00:19:10,319 --> 00:19:16,319 Es como un if simplificado 460 00:19:16,319 --> 00:19:20,019 Me dice, mírame esta cosa de aquí 461 00:19:20,019 --> 00:19:25,519 Si esto es verdadero, toda esta operación vale esto 462 00:19:25,519 --> 00:19:31,410 Si esto es falso, toda esta operación vale esto 463 00:19:31,410 --> 00:19:41,549 Por mil cosas posibles 464 00:19:41,549 --> 00:19:44,950 Y porque nos da paso a lo que luego es la raíz 465 00:19:44,950 --> 00:19:47,049 Que es una cosa que utiliza constantemente 466 00:19:47,049 --> 00:19:50,890 Si el número es mayor que cero 467 00:19:50,890 --> 00:19:52,529 Entonces el resultado es 468 00:19:52,529 --> 00:19:53,509 Soy positivo 469 00:19:53,509 --> 00:19:55,730 Si el número es menor que cero 470 00:19:55,730 --> 00:19:57,730 Pues entonces el resultado es soy negativo 471 00:19:57,730 --> 00:19:58,309 ¿Qué has hecho? 472 00:19:59,410 --> 00:20:02,349 Es un programa que dado un número te dice si es positivo o negativo 473 00:20:02,349 --> 00:20:06,549 Voy a hacer un ejemplo 474 00:20:06,549 --> 00:20:08,210 Ahora los hacemos 475 00:20:08,210 --> 00:20:11,589 No estamos viendo este operador 476 00:20:11,589 --> 00:20:13,650 Estamos viendo que existen 477 00:20:13,650 --> 00:20:15,109 Operadores externarios 478 00:20:15,109 --> 00:20:17,609 Por ahora lo que tenéis que haber entendido 479 00:20:17,609 --> 00:20:19,109 Es que hay operadores que requieren 480 00:20:19,109 --> 00:20:21,670 Una sola expresión 481 00:20:21,670 --> 00:20:23,710 Operadores que necesitan 482 00:20:23,710 --> 00:20:24,670 Dos expresiones 483 00:20:24,670 --> 00:20:27,210 Y operadores que necesitan tres expresiones 484 00:20:27,210 --> 00:20:29,150 ¿Eso lo hemos entendido? 485 00:20:35,640 --> 00:20:36,160 Not 486 00:20:36,160 --> 00:20:38,900 Not 487 00:20:38,900 --> 00:20:40,539 Es un operador unario 488 00:20:40,539 --> 00:20:42,859 Not, true, the false 489 00:20:42,859 --> 00:20:44,640 Eso, eso no es un 490 00:20:44,640 --> 00:20:46,039 Para hacer otro ejemplo de unario 491 00:20:46,039 --> 00:20:50,569 El not, ¿nos acordáis de la otra vez 492 00:20:50,569 --> 00:20:51,890 Vimos el operador not? 493 00:20:53,109 --> 00:20:54,130 Pues el not es unario 494 00:20:54,130 --> 00:20:56,349 Es not en una expresión 495 00:20:56,349 --> 00:20:58,910 Dame el resultado baleano de esta expresión 496 00:20:58,910 --> 00:21:00,869 Y yo te lo cambio al otro valor 497 00:21:00,869 --> 00:21:02,710 Es un operador unario 498 00:21:02,710 --> 00:21:06,259 Unar 499 00:21:06,259 --> 00:21:07,299 Unar 500 00:21:07,299 --> 00:21:09,819 Que solo necesita una expresión 501 00:21:09,819 --> 00:21:11,980 Not y una sola expresión 502 00:21:11,980 --> 00:21:14,259 Mientras el más 503 00:21:14,259 --> 00:21:15,240 No puedo decir 504 00:21:15,240 --> 00:21:16,920 Siete más 505 00:21:16,920 --> 00:21:19,400 ¿Siete más qué? 506 00:21:20,619 --> 00:21:21,920 Necesito dos expresiones 507 00:21:21,920 --> 00:21:22,960 ¿Sí? 508 00:21:22,960 --> 00:21:25,460 Y en este de aquí necesito tres expresiones 509 00:21:25,460 --> 00:21:26,259 Para que funcione 510 00:21:26,259 --> 00:21:28,980 Entonces, en base a cuantas expresiones 511 00:21:28,980 --> 00:21:31,140 Necesita, yo puedo declarar 512 00:21:31,140 --> 00:21:32,839 Que un operador X 513 00:21:32,839 --> 00:21:35,019 No sé que operador es, puede ser un ario 514 00:21:35,019 --> 00:21:35,980 Binario, ternario 515 00:21:35,980 --> 00:21:37,720 Si yo te digo 516 00:21:37,720 --> 00:21:39,859 Este operador es un ario 517 00:21:39,859 --> 00:21:43,140 Es porque tú estás usando no sé qué 518 00:21:43,140 --> 00:21:44,460 Operador no sé qué 519 00:21:44,460 --> 00:21:46,700 Y en vez de no necesitas dos expresiones 520 00:21:46,700 --> 00:21:48,039 Necesitas una expresión sola 521 00:21:48,039 --> 00:21:51,380 O si te digo, este operador es binario 522 00:21:51,380 --> 00:21:53,940 Es porque tú estás usando una sola expresión 523 00:21:53,940 --> 00:21:55,839 Y en vez necesitas dos expresiones 524 00:21:55,839 --> 00:22:04,069 Es como es 525 00:22:04,069 --> 00:22:05,369 Como esto es más 526 00:22:05,369 --> 00:22:07,210 Pues esta es interrogación de dos puntos 527 00:22:07,210 --> 00:22:09,509 Pero no lo hemos visto todavía 528 00:22:09,509 --> 00:22:10,069 Es un ejemplo 529 00:22:10,069 --> 00:22:15,700 Donde están las tres opciones 530 00:22:15,700 --> 00:22:18,380 Una antes de la interrogación 531 00:22:18,380 --> 00:22:20,400 Me estoy preguntando esta cosa 532 00:22:20,400 --> 00:22:21,680 ¿Vale? 533 00:22:21,980 --> 00:22:23,359 Y si es verdadera esto 534 00:22:23,359 --> 00:22:24,519 Dos puntos 535 00:22:24,519 --> 00:22:25,500 Si no esto 536 00:22:25,500 --> 00:22:26,359 ¿Vale? 537 00:22:27,680 --> 00:22:27,900 ¿Sí? 538 00:22:31,150 --> 00:22:31,789 ¿Dudas? 539 00:22:31,789 --> 00:22:36,390 Esto lo hago, ahora lo miramos con más calma 540 00:22:36,390 --> 00:22:37,750 ¿Vale? Tranquilos 541 00:22:37,750 --> 00:22:39,630 Como se usa esto, lo veremos 542 00:22:39,630 --> 00:22:41,109 Simplemente para que sepáis 543 00:22:41,109 --> 00:22:43,369 Que tipos estamos en clasificación 544 00:22:43,369 --> 00:22:45,230 De operadores 545 00:22:45,230 --> 00:22:47,470 Y si no 546 00:22:47,470 --> 00:22:49,509 Puedo mirar 547 00:22:49,509 --> 00:22:51,569 Donde está el operador 548 00:22:51,569 --> 00:22:53,849 Y hay tres posiciones también 549 00:22:53,849 --> 00:22:55,730 El operador puede estar antes 550 00:22:55,730 --> 00:22:57,569 De la expresión 551 00:22:57,569 --> 00:22:59,190 Entonces es prefijo 552 00:22:59,190 --> 00:23:00,589 Como el not 553 00:23:00,589 --> 00:23:01,690 Por ejemplo 554 00:23:01,690 --> 00:23:06,549 Puede estar después de la expresión 555 00:23:06,549 --> 00:23:08,230 Entonces es posfijo 556 00:23:08,230 --> 00:23:09,849 Como por ejemplo el más más 557 00:23:09,849 --> 00:23:11,930 ¿Os acordáis la otra vez que dijimos x más más 558 00:23:11,930 --> 00:23:14,809 Que era igual a poner x es igual a x más uno? 559 00:23:15,470 --> 00:23:17,329 Pues el más más va detrás 560 00:23:17,329 --> 00:23:18,349 Puede ir también delante 561 00:23:18,349 --> 00:23:20,009 Hay una pequeña diferencia 562 00:23:20,009 --> 00:23:21,549 Pero por ahora no me interesa 563 00:23:21,549 --> 00:23:22,109 ¿Vale? 564 00:23:23,250 --> 00:23:25,849 O puede ser infijo 565 00:23:25,849 --> 00:23:29,410 Cuando va entre medias de dos expresiones 566 00:23:29,410 --> 00:23:33,869 Prefijo va antes 567 00:23:33,869 --> 00:23:35,329 Posfijo va después 568 00:23:35,329 --> 00:23:36,769 Infijo va en el medio 569 00:23:36,769 --> 00:23:43,410 Sufijo sería al final también 570 00:23:43,410 --> 00:23:43,750 Pero 571 00:23:43,750 --> 00:23:47,009 Por como se llama aquí en Java 572 00:23:47,009 --> 00:23:47,869 Y por lo que sea 573 00:23:47,869 --> 00:23:51,190 Es pre, post o in 574 00:23:51,190 --> 00:23:53,890 ¿Dudas? 575 00:23:55,630 --> 00:23:56,190 Vale 576 00:23:56,190 --> 00:23:57,750 Esta es solo una nomenclatura 577 00:23:57,750 --> 00:24:00,549 Tipos de expresiones 578 00:24:00,549 --> 00:24:02,529 Vale 579 00:24:02,529 --> 00:24:06,759 Nosotros hemos dicho 580 00:24:06,759 --> 00:24:07,900 Que las expresiones 581 00:24:07,900 --> 00:24:10,720 Son un conjunto de símbolos 582 00:24:10,720 --> 00:24:12,200 Y literales 583 00:24:12,200 --> 00:24:14,359 Y variables, y constantes 584 00:24:14,359 --> 00:24:15,339 Y cosas raras 585 00:24:15,339 --> 00:24:18,640 Que yo luego puedo evaluar 586 00:24:18,640 --> 00:24:19,480 ¿Vale? 587 00:24:19,579 --> 00:24:22,519 Y al final, después de haber evaluado toda esta expresión 588 00:24:22,519 --> 00:24:23,680 Me da un valor 589 00:24:23,680 --> 00:24:24,920 ¿Sí? 590 00:24:25,680 --> 00:24:27,859 Este valor tendrá un tipo 591 00:24:27,859 --> 00:24:30,640 Si he sumado todos enteros 592 00:24:30,640 --> 00:24:33,019 El resultado final será un entero 593 00:24:33,019 --> 00:24:34,900 Y por lo tanto es un int 594 00:24:34,900 --> 00:24:36,079 ¿Sí? 595 00:24:36,079 --> 00:24:38,940 Si yo hago esta expresión de aquí, por ejemplo 596 00:24:38,940 --> 00:24:45,849 La escribo 597 00:24:45,849 --> 00:24:53,480 Se lee 598 00:24:53,480 --> 00:24:56,059 Muy grande 599 00:24:56,059 --> 00:25:01,619 Pongamos esta expresión de aquí 600 00:25:01,619 --> 00:25:03,259 2 más 7 601 00:25:03,259 --> 00:25:05,079 ¿Qué tipo tiene esta expresión? 602 00:25:08,839 --> 00:25:09,519 Tipo 603 00:25:09,519 --> 00:25:12,220 Vale, usa un operador 604 00:25:12,220 --> 00:25:14,380 Infijo, vale, fenomenal 605 00:25:14,380 --> 00:25:15,460 Operador de suma 606 00:25:15,460 --> 00:25:17,940 ¿Qué valor tiene esta? 607 00:25:17,940 --> 00:25:21,019 O sea, ¿qué tipo tiene esta expresión? 608 00:25:24,680 --> 00:25:25,700 ¿Esto qué tipo es? 609 00:25:26,319 --> 00:25:27,000 Int 610 00:25:27,000 --> 00:25:29,720 ¿Esto qué tipo es? 611 00:25:31,039 --> 00:25:32,400 Más int 612 00:25:32,400 --> 00:25:33,460 ¿Qué me da? 613 00:25:34,420 --> 00:25:35,460 Pues int 614 00:25:35,460 --> 00:25:41,299 Entonces, el valor resultante de esto, que será 9, es un int 615 00:25:41,299 --> 00:25:48,059 El valor, el tipo de esta expresión es 616 00:25:48,059 --> 00:25:50,940 Int 617 00:25:50,940 --> 00:25:52,779 ¿Se entiende? 618 00:25:53,599 --> 00:25:53,900 Vale 619 00:25:53,900 --> 00:26:03,769 Esta sería int más double 620 00:26:03,769 --> 00:26:06,509 Por lo tanto todo el resultado este de aquí 621 00:26:06,509 --> 00:26:07,970 Esta expresión es de tipo 622 00:26:07,970 --> 00:26:09,609 Double 623 00:26:09,609 --> 00:26:30,000 ¿Qué tipo tiene esta expresión de aquí? 624 00:26:39,819 --> 00:26:40,460 Double 625 00:26:40,460 --> 00:26:43,299 Esta sería int 626 00:26:43,299 --> 00:26:47,220 Dividida 2.0 es un double 627 00:26:47,220 --> 00:26:48,819 Por 7 es un double 628 00:26:48,819 --> 00:26:51,740 ¿Sí? 629 00:26:53,000 --> 00:26:55,779 Porque he puesto esto 630 00:26:55,779 --> 00:26:56,460 Y esta 631 00:26:56,460 --> 00:27:02,170 Float 632 00:27:02,170 --> 00:27:05,730 Porque tengo int más int 633 00:27:05,730 --> 00:27:06,690 Este es un int 634 00:27:06,690 --> 00:27:10,230 Int dividido float 635 00:27:10,230 --> 00:27:11,450 Float 636 00:27:11,450 --> 00:27:13,549 Float por int 637 00:27:13,549 --> 00:27:14,369 Float 638 00:27:14,369 --> 00:27:17,539 Si o no? 639 00:27:18,599 --> 00:27:18,839 Va 640 00:27:18,839 --> 00:27:23,880 Int 641 00:27:23,880 --> 00:27:26,559 A es igual a 8 642 00:27:26,559 --> 00:27:29,220 int b es igual 643 00:27:29,220 --> 00:27:30,779 a 9 644 00:27:30,779 --> 00:27:35,480 doble t es igual 645 00:27:35,480 --> 00:27:37,019 a 3 646 00:27:37,019 --> 00:27:37,900 3 647 00:27:37,900 --> 00:27:41,380 y string s 648 00:27:41,380 --> 00:27:43,519 es igual a esto 649 00:27:43,519 --> 00:27:45,339 ¿estamos de acuerdo? 650 00:27:46,420 --> 00:27:47,440 vale 651 00:27:47,440 --> 00:27:50,019 esta expresión 652 00:27:50,019 --> 00:27:52,920 ¿qué tipo tiene? 653 00:27:59,150 --> 00:27:59,990 ¿cómo double? 654 00:27:59,990 --> 00:28:06,009 ¿Qué es esto? 655 00:28:10,809 --> 00:28:11,250 Double 656 00:28:11,250 --> 00:28:13,529 Este es int 657 00:28:13,529 --> 00:28:14,890 Más int es un int 658 00:28:14,890 --> 00:28:16,569 Más double 659 00:28:16,569 --> 00:28:18,529 Es double 660 00:28:18,529 --> 00:28:20,569 Eh, pero aquí está escrito 3 661 00:28:20,569 --> 00:28:22,069 Sí, sí, pero lo he guardado como double 662 00:28:22,069 --> 00:28:23,029 Su tipo es double 663 00:28:23,029 --> 00:28:26,480 ¿Sí o no? 664 00:28:27,279 --> 00:28:28,440 Sí, pero se va a enfadar 665 00:28:28,440 --> 00:28:29,299 Porque este es un int 666 00:28:29,299 --> 00:28:31,000 Debería haberlo puesto así 667 00:28:31,000 --> 00:28:33,460 Pero hemos dicho que 668 00:28:33,460 --> 00:28:35,619 Si yo pillo uno más pequeño 669 00:28:35,619 --> 00:28:37,140 Y lo pongo en algo más grande 670 00:28:37,140 --> 00:28:39,319 Él no se queja 671 00:28:39,319 --> 00:28:41,000 ¿Vale? 672 00:28:41,140 --> 00:28:42,779 ¿Sería más preciso ponerlo así? 673 00:28:43,039 --> 00:28:43,220 Sí 674 00:28:43,220 --> 00:28:44,420 ¿O ponerlo así? 675 00:28:44,700 --> 00:28:45,380 Sí, también 676 00:28:45,380 --> 00:28:46,740 ¿Vale? 677 00:28:46,779 --> 00:28:47,759 Pero si lo pongo así 678 00:28:47,759 --> 00:28:49,319 Es verdad que este es un int 679 00:28:49,319 --> 00:28:51,220 Pero está guardado en un double 680 00:28:51,220 --> 00:28:53,180 Ha ocupado el espacio de un double 681 00:28:53,180 --> 00:28:54,019 Son 8 bytes 682 00:28:54,019 --> 00:28:56,900 Entonces cuando aquí hago 683 00:28:56,900 --> 00:28:59,000 Int más int más double 684 00:28:59,000 --> 00:29:00,099 El resultado 685 00:29:00,099 --> 00:29:01,400 Es un double 686 00:29:01,400 --> 00:29:03,400 ¿Sí? 687 00:29:03,460 --> 00:29:12,200 ¿Qué tipo tiene esta expresión? 688 00:29:12,920 --> 00:29:17,440 Tipo string 689 00:29:17,440 --> 00:29:18,940 ¿Vale? 690 00:29:19,920 --> 00:29:21,180 A más B 691 00:29:21,180 --> 00:29:23,440 Será un int 692 00:29:23,440 --> 00:29:25,420 Más C será un double 693 00:29:25,420 --> 00:29:27,579 Pero como luego utilizo este más 694 00:29:27,579 --> 00:29:29,740 Que no es un más aritmético 695 00:29:29,740 --> 00:29:31,319 Sino es un más de concatenación 696 00:29:31,319 --> 00:29:32,059 Con un string 697 00:29:32,059 --> 00:29:33,480 El resultado total es un string 698 00:29:33,480 --> 00:29:37,289 ¿Y qué hace? 699 00:29:38,069 --> 00:29:40,170 Antes me hace esta suma de aquí 700 00:29:40,170 --> 00:29:42,069 Y luego le pega detrás 701 00:29:42,069 --> 00:29:43,369 El string 702 00:29:43,369 --> 00:29:44,630 O 703 00:29:44,630 --> 00:29:46,710 Con cadena todo 704 00:29:46,710 --> 00:29:48,750 O sea, el resultado es algo como 705 00:29:48,750 --> 00:29:50,609 8, 9, 3 706 00:29:50,609 --> 00:29:53,029 Y pongamos aquí una A 707 00:29:53,029 --> 00:29:55,869 O hace 708 00:29:55,869 --> 00:29:59,470 8, 8, 6, 6, 7, 6, 8, 9, 20 709 00:29:59,470 --> 00:30:00,589 20 710 00:30:00,589 --> 00:30:01,829 A 711 00:30:01,829 --> 00:30:11,259 Como son todos más 712 00:30:11,259 --> 00:30:14,839 Lo más probable es que vaya haciéndolo en orden 713 00:30:14,839 --> 00:30:17,000 Entonces me sale esto 714 00:30:17,000 --> 00:30:20,859 Y si quiero estar seguro, seguro, seguro 715 00:30:20,859 --> 00:30:21,700 Que salga esto 716 00:30:21,700 --> 00:30:30,910 Y si quiero estar seguro, seguro, seguro 717 00:30:30,910 --> 00:30:31,849 Que salga esto 718 00:30:31,849 --> 00:31:02,529 Yo quiero ser seguro, seguro, seguro 719 00:31:02,529 --> 00:31:06,150 Pues estoy seguro, seguro, seguro 720 00:31:06,150 --> 00:31:14,210 Hay formas de hacerlo más fácil 721 00:31:14,210 --> 00:31:16,990 Probablemente si pongo la S delante 722 00:31:16,990 --> 00:31:22,349 O sea que 723 00:31:22,349 --> 00:31:25,990 S más A más B más T 724 00:31:25,990 --> 00:31:27,210 Probablemente da esto 725 00:31:27,210 --> 00:31:30,049 Porque como va en orden 726 00:31:30,049 --> 00:31:31,829 Me haría S más A 727 00:31:31,829 --> 00:31:34,450 Entonces es un string, más B es un string 728 00:31:34,450 --> 00:31:35,549 Más C es un string 729 00:31:35,549 --> 00:31:40,660 Pero me pone la delante 730 00:31:40,660 --> 00:31:43,039 Está pensando en esto 731 00:31:43,039 --> 00:31:47,579 Me entendéis más o menos 732 00:31:47,579 --> 00:31:50,079 Y con esto funciona 733 00:31:50,079 --> 00:31:52,700 Entonces, ¿entendéis que es el tipo de una variable? 734 00:31:55,180 --> 00:31:57,079 Perdón, el tipo de una expresión 735 00:31:57,079 --> 00:31:58,579 Una expresión 736 00:31:58,579 --> 00:32:00,019 Compleja cuanto queráis 737 00:32:00,019 --> 00:32:02,980 La resuelvo, al final me sale algo 738 00:32:02,980 --> 00:32:04,859 El tipo de ese algo 739 00:32:04,859 --> 00:32:06,299 Es el tipo de la expresión 740 00:32:06,299 --> 00:32:08,720 Y puede ser un int, puede ser un double 741 00:32:08,720 --> 00:32:09,779 Puede ser un string 742 00:32:09,779 --> 00:32:12,500 ¿Dudas? 743 00:32:23,210 --> 00:32:24,450 Así funciona 744 00:32:24,450 --> 00:32:25,190 Con la A no 745 00:32:25,190 --> 00:32:31,380 Sería A893 746 00:32:31,380 --> 00:32:35,380 Es que como al principio lo he puesto así 747 00:32:35,380 --> 00:32:36,880 Y luego lo he puesto al lado después 748 00:32:36,880 --> 00:32:38,140 Pues estaba pensando 749 00:32:38,140 --> 00:32:39,460 Sí 750 00:32:39,460 --> 00:32:51,000 De la expresión 751 00:32:51,000 --> 00:32:55,680 Tú tienes la expresión, calculas el valor que representa esa expresión 752 00:32:55,680 --> 00:32:58,759 Y una vez que lo tengas, pues ese es tu tipo 753 00:32:58,759 --> 00:33:07,200 Pregunta, ¿puedo saber el tipo de una expresión antes de saber qué valores tengo en las variables? 754 00:33:08,099 --> 00:33:12,380 O sea, imaginaos que esto sea scan.nextin 755 00:33:12,380 --> 00:33:16,799 Esto no sé qué valor va a ir a 756 00:33:16,799 --> 00:33:21,079 ¿Puedo saberlo? 757 00:33:21,079 --> 00:33:23,000 Si A más B 758 00:33:23,000 --> 00:33:24,940 Pues estar seguro 759 00:33:24,940 --> 00:33:25,779 Que este es un int 760 00:33:25,779 --> 00:33:28,240 Si, porque me lo dice aquí, vale 761 00:33:28,240 --> 00:33:30,859 Cada variable 762 00:33:30,859 --> 00:33:31,960 Tiene su valor 763 00:33:31,960 --> 00:33:34,220 ¿Estamos de acuerdo? 764 00:33:35,200 --> 00:33:37,279 Vale, entonces vamos a ver esta cosa de aquí 765 00:33:37,279 --> 00:33:39,579 A veces 766 00:33:39,579 --> 00:33:40,599 Vale 767 00:33:40,599 --> 00:33:43,039 Las expresiones 768 00:33:43,039 --> 00:33:44,079 El tipo de valores 769 00:33:44,079 --> 00:33:46,700 El tipo de la expresión, la hemos dicho 770 00:33:46,700 --> 00:33:48,619 Es esta de aquí, pero a veces se hacen 771 00:33:48,619 --> 00:33:50,460 Conversiones automáticas 772 00:33:50,460 --> 00:33:52,000 lo que decíamos que si yo tengo 773 00:33:52,000 --> 00:33:53,859 double x es igual a 3 774 00:33:53,859 --> 00:33:55,779 3 no es un double 775 00:33:55,779 --> 00:33:58,579 pero él me lo hace automáticamente la conversión 776 00:33:58,579 --> 00:34:00,380 y me transforma el 3 que es un entero 777 00:34:00,380 --> 00:34:01,039 en un double 778 00:34:01,039 --> 00:34:03,059 esto pasa cuando 779 00:34:03,059 --> 00:34:05,619 son automáticas 780 00:34:05,619 --> 00:34:08,099 son implícitas estas conversiones 781 00:34:08,099 --> 00:34:10,559 cuando tengo un cambio 782 00:34:10,559 --> 00:34:11,940 de un tipo compatible 783 00:34:11,940 --> 00:34:14,460 más pequeño a uno más 784 00:34:14,460 --> 00:34:16,320 grande, por ejemplo 785 00:34:16,320 --> 00:34:24,059 así 786 00:34:24,059 --> 00:34:26,380 yo digo 787 00:34:26,380 --> 00:34:28,099 Aquí mira, para ser seguro 788 00:34:28,099 --> 00:34:28,920 Algo así 789 00:34:28,920 --> 00:34:33,579 Imaginaos que yo digo 790 00:34:33,579 --> 00:34:35,980 Tengo una variable 791 00:34:35,980 --> 00:34:37,940 Que se llama n1 que es de tipo float 792 00:34:37,940 --> 00:34:40,340 Y vale 3,4 como float 793 00:34:40,340 --> 00:34:41,539 ¿Vale? 794 00:34:42,260 --> 00:34:44,960 Ok, ahora pillo un double n2 795 00:34:44,960 --> 00:34:47,139 Y digo n2 es igual a n1 796 00:34:47,139 --> 00:34:48,280 Funciona esto 797 00:34:48,280 --> 00:34:51,619 Si 798 00:34:51,619 --> 00:34:53,179 Y lo hace de automático 799 00:34:53,179 --> 00:34:54,119 ¿Vale? 800 00:34:54,360 --> 00:34:58,000 Porque float son 4 bytes 801 00:34:58,000 --> 00:35:00,280 Y yo lo estoy metiendo 802 00:35:00,280 --> 00:35:02,219 En un espacio que son 803 00:35:02,219 --> 00:35:03,059 8 bytes 804 00:35:03,059 --> 00:35:05,380 Por lo tanto cabe 805 00:35:05,380 --> 00:35:06,659 No hay problema 806 00:35:06,659 --> 00:35:10,219 Lo mismo si yo tengo un int 807 00:35:10,219 --> 00:35:12,059 X y luego esta X 808 00:35:12,059 --> 00:35:13,159 La pongo en un long 809 00:35:13,159 --> 00:35:15,039 Ningún problema 810 00:35:15,039 --> 00:35:16,659 No me necesita nada 811 00:35:16,659 --> 00:35:18,719 No me dice nada Java 812 00:35:18,719 --> 00:35:20,400 No me avisa de oye mira 813 00:35:20,400 --> 00:35:21,679 Que aquí hay algo raro 814 00:35:21,679 --> 00:35:23,679 Lo hace de forma automática 815 00:35:23,679 --> 00:35:26,340 Hace esta conversión de tipo de forma automática 816 00:35:26,340 --> 00:35:38,599 conversiones explícitas vale que son de un tipo compatible más grande a un tipo a uno más pequeño 817 00:35:39,500 --> 00:35:49,250 sí pero cuidado que el charla es un inter considerado como flor entonces luego has 818 00:35:49,250 --> 00:35:57,010 perdido que echar que era pero lo que hace una casting explícito vale que es cuando yo 819 00:35:57,010 --> 00:36:02,630 tengo dos tipos compatibles que quiere decir un tipo compatible está hablando de números por 820 00:36:02,630 --> 00:36:10,289 ejemplo vale entonces flow a te da bolson compatibles inter 821 00:36:10,289 --> 00:36:17,090 el hombre son compatibles string e int son compatibles 822 00:36:17,090 --> 00:36:21,769 entonces qué pasa si quiero hacer al revés de esto o sea que yo pillo un 823 00:36:21,769 --> 00:36:30,150 double luego me creó una flor y quiero poner dentro de n 2 n 1 algo así 824 00:36:30,150 --> 00:36:33,130 si yo hiciera esto 825 00:36:33,130 --> 00:36:35,150 ¿funciona? 826 00:36:38,130 --> 00:36:38,409 no 827 00:36:38,409 --> 00:36:40,210 esto me va a dar un error 828 00:36:40,210 --> 00:36:42,829 me va a decir, oye mira, no puedo poner 829 00:36:42,829 --> 00:36:45,449 8 bytes dentro de 4 bytes 830 00:36:45,449 --> 00:36:48,489 te estás equivocando 831 00:36:48,489 --> 00:36:50,789 si yo estoy seguro 832 00:36:50,789 --> 00:36:52,710 que no me estoy equivocando y quiero hacerlo 833 00:36:52,710 --> 00:36:54,050 quiero hacerlo, quiero hacerlo 834 00:36:54,050 --> 00:36:56,829 pues entonces tengo que hacerlo con un 835 00:36:56,829 --> 00:36:58,389 casting explícito 836 00:36:58,389 --> 00:37:03,030 esto es como avisar 837 00:37:03,030 --> 00:37:04,449 A Java 838 00:37:04,449 --> 00:37:06,909 Que sé perfectamente que esto 839 00:37:06,909 --> 00:37:08,510 No se puede hacer 840 00:37:08,510 --> 00:37:10,989 Pero lo quiero hacer 841 00:37:10,989 --> 00:37:13,289 ¿Qué hará Java? 842 00:37:13,829 --> 00:37:14,769 Perder precisión 843 00:37:14,769 --> 00:37:17,610 ¿Sí? 844 00:37:17,889 --> 00:37:19,949 Ahora está intentando poner 845 00:37:19,949 --> 00:37:22,250 Un valor 846 00:37:22,250 --> 00:37:24,530 Que se define 847 00:37:24,530 --> 00:37:25,489 Con 8 bytes 848 00:37:25,489 --> 00:37:27,530 En un espacio de 4 bytes 849 00:37:27,530 --> 00:37:30,070 Entonces por algún lado tendrá que recortar bytes 850 00:37:30,070 --> 00:37:32,170 Entonces puede ser 851 00:37:32,170 --> 00:37:33,329 Que este valor de aquí 852 00:37:33,329 --> 00:37:41,219 no sea exactamente esto, pero has dicho tú que lo querías hacer 853 00:37:44,219 --> 00:37:49,659 si tú por ejemplo tienes un número con la coma y quieres solo la parte 854 00:37:49,659 --> 00:37:55,219 entera no redondeando, solo la parte entera puedes convertir 855 00:37:55,219 --> 00:37:59,619 lo hace en un int por ejemplo entonces estás pintando solo la parte entera, si pero el 856 00:37:59,619 --> 00:38:00,980 Double es demasiado grande 857 00:38:00,980 --> 00:38:01,920 Podría tener problemas 858 00:38:01,920 --> 00:38:04,239 Entonces 859 00:38:04,239 --> 00:38:07,239 Conversiones de dos tipos 860 00:38:07,239 --> 00:38:10,059 Automáticas o explícitas 861 00:38:10,059 --> 00:38:11,280 O casting 862 00:38:11,280 --> 00:38:13,260 Implícitas o explícitas 863 00:38:13,260 --> 00:38:14,780 Cuando no pierdo 864 00:38:14,780 --> 00:38:17,280 Ninguna precisión 865 00:38:17,280 --> 00:38:19,920 Me lo hace el en automático sin decirme nada 866 00:38:19,920 --> 00:38:21,659 Cuando tengo problemas 867 00:38:21,659 --> 00:38:23,519 El me dice que hay un error 868 00:38:23,519 --> 00:38:25,699 Y tengo que hacer una conversión 869 00:38:25,699 --> 00:38:26,780 Yo explícitamente 870 00:38:26,780 --> 00:38:29,139 Y luego un tercer tipo 871 00:38:29,139 --> 00:38:31,119 Que estas no se pueden hacer 872 00:38:31,119 --> 00:38:33,960 ¿Cuándo no se puede hacer? 873 00:38:35,760 --> 00:38:38,000 Cuando hay que hacer una conversión 874 00:38:38,000 --> 00:38:39,920 Entre tipos incompatibles 875 00:38:39,920 --> 00:38:41,679 Como por ejemplo 876 00:38:41,679 --> 00:38:42,920 Yo intento hacer 877 00:38:42,920 --> 00:38:46,239 String nombres igual a pp-n 878 00:38:46,239 --> 00:38:48,219 Menos 879 00:38:48,219 --> 00:38:50,699 Es un operador binario 880 00:38:50,699 --> 00:38:52,139 Infijo 881 00:38:52,139 --> 00:38:53,820 Que necesita 882 00:38:53,820 --> 00:38:55,539 Por ejemplo int-int 883 00:38:55,539 --> 00:38:57,360 ¿Vale? Este es un int 884 00:38:57,360 --> 00:38:58,460 Vale, fenomenal 885 00:38:58,460 --> 00:39:01,380 Pero esto es un string 886 00:39:01,380 --> 00:39:03,519 ¿Puedo convertir un string a int? 887 00:39:04,099 --> 00:39:04,579 No 888 00:39:04,579 --> 00:39:07,059 Entonces esta conversión no la puedo hacer 889 00:39:07,059 --> 00:39:08,420 Entonces esto me da un error 890 00:39:08,420 --> 00:39:10,119 Esto me dice, esto no lo puedes hacer 891 00:39:10,119 --> 00:39:12,280 ¿Por qué? Porque el menos 892 00:39:12,280 --> 00:39:14,920 No está definido para strings 893 00:39:14,920 --> 00:39:17,159 El más sí 894 00:39:17,159 --> 00:39:18,739 Si yo cambio esto con más 895 00:39:18,739 --> 00:39:20,199 Pues no funcionaría 896 00:39:20,199 --> 00:39:22,460 Porque haría string más int 897 00:39:22,460 --> 00:39:24,000 Y lo admite, ¿vale? 898 00:39:24,000 --> 00:39:25,219 No tiene que hacer conversiones 899 00:39:25,219 --> 00:39:27,860 Pero con el menos, como el menos solo está definido 900 00:39:27,860 --> 00:39:29,619 Entre int menos int, por ejemplo 901 00:39:29,619 --> 00:39:30,559 O double menos int 902 00:39:30,559 --> 00:39:33,139 Tiene que convertir este de aquí 903 00:39:33,139 --> 00:39:33,940 A un entero 904 00:39:33,940 --> 00:39:37,179 Y no puede, porque son tipos incompatibles 905 00:39:37,179 --> 00:39:39,079 Por lo tanto me da un error 906 00:39:39,079 --> 00:39:41,239 Esto no se puede hacer 907 00:39:41,239 --> 00:39:44,840 Oh, otra opción 908 00:39:44,840 --> 00:39:47,000 Es entre tipos compatibles 909 00:39:47,000 --> 00:39:48,780 Pero perdiendo precisión 910 00:39:48,780 --> 00:39:50,400 Y sin casting explícito 911 00:39:50,400 --> 00:39:55,280 Este es un entero, son 4 bytes 912 00:39:55,280 --> 00:39:56,940 Lo intento poner 913 00:39:56,940 --> 00:39:58,880 y convertir dentro de un byte 914 00:39:58,880 --> 00:40:01,119 me dice no puede hacer porque estoy perdiendo 915 00:40:01,119 --> 00:40:03,380 precisión, es un error, no te lo hago 916 00:40:03,380 --> 00:40:05,039 si yo aquí 917 00:40:05,039 --> 00:40:06,940 le pongo entre paréntesis byte 918 00:40:06,940 --> 00:40:09,360 hago un casting explícito, me lo hará 919 00:40:09,360 --> 00:40:11,280 porque asume 920 00:40:11,280 --> 00:40:13,099 que yo sé el riesgo a lo que 921 00:40:13,099 --> 00:40:15,420 a lo que me estoy arriesgando 922 00:40:15,420 --> 00:40:18,460 dudas 923 00:40:18,460 --> 00:40:20,920 bueno si 924 00:40:20,920 --> 00:40:22,880 estas cosas luego saldrán 925 00:40:22,880 --> 00:40:25,340 es teoría, luego practicamos 926 00:40:25,340 --> 00:40:25,960 si 927 00:40:25,960 --> 00:40:29,699 Es lo mismo que esto 928 00:40:29,699 --> 00:40:30,599 Pero sin el flow 929 00:40:30,599 --> 00:40:33,079 Aquí 930 00:40:33,079 --> 00:40:36,099 Yo no puedo poner 4 bytes 931 00:40:36,099 --> 00:40:37,019 Dentro de un byte 932 00:40:37,019 --> 00:40:39,960 Entonces si no lo hago explícitamente 933 00:40:39,960 --> 00:40:40,840 No me lo hace 934 00:40:40,840 --> 00:40:42,539 Este es un error 935 00:40:42,539 --> 00:40:43,739 ¿Vale? 936 00:40:44,739 --> 00:40:44,960 Sí 937 00:40:44,960 --> 00:40:49,480 Pero entonces caigo en este 938 00:40:49,480 --> 00:40:50,760 Estoy aquí 939 00:40:50,760 --> 00:40:55,469 Aquí lo que te está diciendo es 940 00:40:55,469 --> 00:40:57,849 Si son tipos compatibles 941 00:40:57,849 --> 00:40:59,670 Perdiendo precisión 942 00:40:59,670 --> 00:41:01,929 Y sin casting explícito 943 00:41:01,929 --> 00:41:03,170 Entonces esta es no factible 944 00:41:03,170 --> 00:41:05,429 Sin casting explícito no lo puede hacer 945 00:41:05,429 --> 00:41:08,289 Con casting explícito sí, pero entonces caigo en esta opción 946 00:41:08,289 --> 00:41:11,309 ¿Dudas? 947 00:41:11,309 --> 00:41:11,389 ¿Cómo? 948 00:41:21,710 --> 00:41:22,190 Así 949 00:41:22,190 --> 00:41:26,550 Lo que cambia es ponerle el casting o no 950 00:41:26,550 --> 00:41:29,610 Si le pongo el casting me deja, si no le pongo el casting no me deja 951 00:41:29,610 --> 00:41:32,949 ¿Dudas? 952 00:41:35,170 --> 00:41:37,789 Y llegamos a la transparencia a la que quería llegar 953 00:41:37,789 --> 00:41:38,170 ¿Vale? 954 00:41:38,590 --> 00:41:42,010 Los operadores que tenemos que saber 955 00:41:42,010 --> 00:41:51,880 Aritméticos 956 00:41:51,880 --> 00:41:53,699 Los sabemos 957 00:41:53,699 --> 00:41:55,099 Ya los hemos visto 958 00:41:55,099 --> 00:41:59,139 Más, menos, por, dividido, módulo 959 00:41:59,139 --> 00:42:03,820 ¿Alguien tiene dudas sobre qué hacen estos operadores? 960 00:42:03,940 --> 00:42:07,460 ¿Alguien me puede decir 961 00:42:07,460 --> 00:42:09,099 Esto 962 00:42:09,099 --> 00:42:12,559 ¿Cómo clasificaríamos este operador de aquí? 963 00:42:17,360 --> 00:42:18,179 Como división 964 00:42:18,179 --> 00:42:21,079 ¿Qué clasificación es como división? 965 00:42:21,980 --> 00:42:23,099 ¿Cómo es este operador? 966 00:42:26,690 --> 00:42:27,409 Binario 967 00:42:27,409 --> 00:42:29,650 ¿Y? 968 00:42:33,559 --> 00:42:34,960 Exacto, infijo 969 00:42:34,960 --> 00:42:38,840 Binario 970 00:42:38,840 --> 00:42:41,400 Soy vosotros que decís ternario 971 00:42:41,400 --> 00:42:42,340 Porque no sabéis qué decir 972 00:42:42,340 --> 00:42:43,860 ¿Sí? 973 00:42:44,880 --> 00:42:45,440 Binario 974 00:42:45,440 --> 00:42:47,639 Porque necesita dos expresiones 975 00:42:47,639 --> 00:42:50,179 Y va en el medio de las dos expresiones 976 00:42:50,179 --> 00:42:51,239 Entonces infijo 977 00:42:51,239 --> 00:42:53,699 Sin embargo, el módulo 978 00:42:53,699 --> 00:42:59,090 Binario 979 00:42:59,090 --> 00:43:03,539 E infijo 980 00:43:03,539 --> 00:43:04,340 Muy bien 981 00:43:04,340 --> 00:43:04,820 ¿Eh? 982 00:43:04,820 --> 00:43:05,960 No habéis caído en la trampa 983 00:43:05,960 --> 00:43:11,159 Entonces dice 5 módulo 7 984 00:43:11,159 --> 00:43:13,079 Hace 5 dividido 7 985 00:43:13,079 --> 00:43:14,760 Y luego el resto de esta división 986 00:43:14,760 --> 00:43:15,380 ¿Vale? 987 00:43:15,780 --> 00:43:16,380 Pues no 988 00:43:16,380 --> 00:43:17,579 Que... 989 00:43:17,579 --> 00:43:18,039 Es lo que hay 990 00:43:18,039 --> 00:43:20,619 Esto lo repasáis 991 00:43:20,619 --> 00:43:21,739 Porque deberíais saberlo 992 00:43:21,739 --> 00:43:23,239 Vamos a ver 993 00:43:23,239 --> 00:43:26,199 Los tipos de comparación 994 00:43:26,199 --> 00:43:28,300 Que también hemos visto 995 00:43:28,300 --> 00:43:29,539 El otro día 996 00:43:29,539 --> 00:43:31,699 Entonces está 997 00:43:31,699 --> 00:43:32,840 El igual, igual 998 00:43:32,840 --> 00:43:34,260 ¿Qué hace este de allí? 999 00:43:40,030 --> 00:43:41,289 ¿Cómo es? 1000 00:43:47,150 --> 00:43:47,750 ¿Cómo es? 1001 00:43:48,789 --> 00:43:50,210 Es un ario 1002 00:43:50,210 --> 00:43:51,469 Ah, perdón 1003 00:43:51,469 --> 00:43:52,610 Es binario 1004 00:43:52,610 --> 00:43:54,670 ¿Y cómo es? 1005 00:43:54,670 --> 00:43:55,530 ¿Cómo podría ser? 1006 00:43:55,530 --> 00:43:59,550 Es binario 1007 00:43:59,550 --> 00:44:00,469 Y es 1008 00:44:00,469 --> 00:44:02,670 Infijo 1009 00:44:02,670 --> 00:44:06,210 Entonces hay expresión booleana 1010 00:44:06,210 --> 00:44:07,869 Igual, igual 1011 00:44:07,869 --> 00:44:09,670 Expresión booleana 1012 00:44:09,670 --> 00:44:12,250 Y esto es true 1013 00:44:12,250 --> 00:44:14,409 Si las dos expresiones 1014 00:44:14,409 --> 00:44:16,210 Son o las dos true 1015 00:44:16,210 --> 00:44:17,489 O las dos false 1016 00:44:17,489 --> 00:44:19,070 ¿Si? 1017 00:44:19,070 --> 00:44:20,170 Y si no es false 1018 00:44:20,170 --> 00:44:21,730 ¿Se entiende? 1019 00:44:22,510 --> 00:44:23,050 Lo hago 1020 00:44:23,050 --> 00:44:29,699 Esquemita 1021 00:44:29,699 --> 00:44:32,699 Pongamos que haya dos expresiones 1022 00:44:32,699 --> 00:44:35,380 La expresión 1 y la expresión 2 1023 00:44:35,380 --> 00:44:36,400 Booleanas 1024 00:44:36,400 --> 00:44:37,159 ¿Vale? 1025 00:44:37,820 --> 00:44:40,860 Entonces, aquí pongo E1 1026 00:44:40,860 --> 00:44:41,300 ¿Vale? 1027 00:44:41,460 --> 00:44:42,099 ¿Cómo lo hago? 1028 00:44:42,320 --> 00:44:42,940 Así 1029 00:44:42,940 --> 00:44:46,699 Entonces, E1 puede ser 1030 00:44:46,699 --> 00:44:48,159 Verdadera 1031 00:44:48,159 --> 00:44:50,039 O falsa 1032 00:44:50,039 --> 00:44:50,820 ¿Sí? 1033 00:44:50,820 --> 00:44:52,820 Y E2 puede ser verdadera 1034 00:44:53,340 --> 00:44:54,920 O falsa 1035 00:44:54,920 --> 00:44:57,579 Y estamos mirando 1036 00:44:57,579 --> 00:44:59,840 El operador 1037 00:44:59,840 --> 00:45:00,420 Igual, igual 1038 00:45:00,420 --> 00:45:01,760 Entonces 1039 00:45:01,760 --> 00:45:05,420 E1 igual, igual, E2 1040 00:45:05,420 --> 00:45:06,260 ¿Estamos de acuerdo? 1041 00:45:07,179 --> 00:45:09,199 Si E1 es verdadera 1042 00:45:09,199 --> 00:45:11,340 Y E2 es verdadera 1043 00:45:11,340 --> 00:45:13,139 Igual, igual, ¿cómo es? 1044 00:45:14,940 --> 00:45:15,739 Verdadero 1045 00:45:15,739 --> 00:45:19,099 Porque esto es igual a esto 1046 00:45:19,099 --> 00:45:21,639 ¿Sí? 1047 00:45:23,260 --> 00:45:24,460 Y si 1048 00:45:24,460 --> 00:45:26,239 Ay, me estoy liando yo 1049 00:45:26,239 --> 00:45:31,090 Vale 1050 00:45:31,090 --> 00:45:34,650 Y si en vez de ir 1051 00:45:34,650 --> 00:45:36,090 Hagámoslo sin 1052 00:45:36,090 --> 00:45:37,329 Bulearnos 1053 00:45:37,329 --> 00:45:40,570 Si esto vale 2 y esto vale 3 1054 00:45:40,570 --> 00:45:44,219 Igual, igual 1055 00:45:44,219 --> 00:45:48,670 Falso, porque no son igual 1056 00:45:48,670 --> 00:45:50,429 Si esto vale 2 1057 00:45:50,429 --> 00:45:51,610 Y esto vale 5 1058 00:45:51,610 --> 00:45:54,989 2 y 2 1059 00:45:54,989 --> 00:45:57,820 Si 1060 00:45:57,820 --> 00:45:59,480 Si o no 1061 00:45:59,480 --> 00:46:02,039 Porque, perdóname 1062 00:46:02,039 --> 00:46:04,179 Esto del verdadero es falso, luego lo hacemos aquí. 1063 00:46:05,400 --> 00:46:07,760 Ahora, con esto nos sirve menos, ¿vale? 1064 00:46:08,639 --> 00:46:09,239 Simplificámoslo. 1065 00:46:10,400 --> 00:46:15,159 Entonces, yo tengo expresión 1 es igual a igual a expresión 2, ¿sí? 1066 00:46:15,159 --> 00:46:23,360 Si esto es 5 igual a igual a 3, ¿resultado? 1067 00:46:23,840 --> 00:46:24,260 Falso. 1068 00:46:24,579 --> 00:46:24,960 Falso. 1069 00:46:26,480 --> 00:46:26,679 ¿Sí? 1070 00:46:27,719 --> 00:46:30,099 3 es igual a igual a 3. 1071 00:46:30,099 --> 00:46:33,340 ¿Se entiende el igual a igual? 1072 00:46:33,659 --> 00:46:35,500 Vale, not igual 1073 00:46:35,500 --> 00:46:41,539 5 not igual a 3 1074 00:46:41,539 --> 00:46:49,449 3 not igual a 3 1075 00:46:49,449 --> 00:46:56,139 ¿Se entiende? 1076 00:46:57,400 --> 00:46:57,739 Vale 1077 00:46:57,739 --> 00:47:00,500 Miramos el mayor igual 1078 00:47:00,500 --> 00:47:01,400 Mayor 1079 00:47:01,400 --> 00:47:02,360 Venga 1080 00:47:02,360 --> 00:47:05,179 3 mayor que 5 1081 00:47:05,179 --> 00:47:07,699 Falso 1082 00:47:07,699 --> 00:47:11,340 Cinco mayor que tres 1083 00:47:11,340 --> 00:47:14,320 ¿Vale? 1084 00:47:14,440 --> 00:47:15,659 Y es igual con el menor 1085 00:47:15,659 --> 00:47:19,380 Menor o igual 1086 00:47:19,380 --> 00:47:23,179 Por ejemplo, tres mayor o igual que tres 1087 00:47:23,179 --> 00:47:26,179 Otra vez 1088 00:47:26,179 --> 00:47:29,159 ¿Están de acuerdo con esto? 1089 00:47:29,719 --> 00:47:31,219 Vale, estos son sencillos 1090 00:47:31,219 --> 00:47:32,159 ¿Sí? 1091 00:47:32,159 --> 00:47:35,519 Y tengo estos cinco, estos seis 1092 00:47:35,519 --> 00:47:40,360 Igual, igual, distinto, mayor, menor, mayor o igual y menor o igual 1093 00:47:40,360 --> 00:47:41,800 ¿Vale? 1094 00:47:42,039 --> 00:47:43,380 Y esto es fácil 1095 00:47:43,380 --> 00:47:46,579 Se puede hacer también 1096 00:47:46,579 --> 00:47:48,039 Entre booleanos 1097 00:47:48,039 --> 00:47:49,760 Entre coma fluctuantes 1098 00:47:49,760 --> 00:47:50,579 Entre char 1099 00:47:50,579 --> 00:47:51,760 O sea, yo puedo hacer 1100 00:47:51,760 --> 00:48:00,280 A 1101 00:48:00,280 --> 00:48:03,300 Igual, igual 1102 00:48:03,300 --> 00:48:04,659 A 1103 00:48:04,659 --> 00:48:12,190 Pero ve 1104 00:48:12,190 --> 00:48:18,449 Char inicial 1105 00:48:18,449 --> 00:48:20,869 Es igual a B 1106 00:48:20,869 --> 00:48:26,480 Inicial 1107 00:48:26,480 --> 00:48:28,380 Igual, igual 1108 00:48:28,380 --> 00:48:30,460 A 1109 00:48:30,460 --> 00:48:35,750 Alche 1110 00:48:35,750 --> 00:48:39,659 Si o no 1111 00:48:39,659 --> 00:48:41,260 Vale 1112 00:48:41,260 --> 00:48:45,380 Inicial 1113 00:48:45,380 --> 00:48:47,400 Mayor 1114 00:48:47,400 --> 00:48:50,030 Que A 1115 00:48:50,030 --> 00:49:05,380 ¿Os acordáis que con el código H 1116 00:49:05,380 --> 00:49:07,780 Cada carácter representa un número? 1117 00:49:08,960 --> 00:49:09,599 Que todo esto era 1118 00:49:09,599 --> 00:49:11,800 No me acuerdo, 63, este 64 1119 00:49:11,800 --> 00:49:14,119 Por lo tanto 64 es mayor que 63 1120 00:49:14,119 --> 00:49:22,030 Me daría truco 1121 00:49:22,030 --> 00:49:23,710 Estáis allí, teníais la cara de 1122 00:49:23,710 --> 00:49:24,510 Esto es muy fácil 1123 00:49:24,510 --> 00:49:30,650 Y lo mismo lo puedes hacer 1124 00:49:30,650 --> 00:49:32,710 Con booleanos, como habíamos empezado antes 1125 00:49:32,710 --> 00:49:34,710 Pero con booleanos, estos operadores de aquí 1126 00:49:34,710 --> 00:49:36,869 De booleanos, son un poquito más 1127 00:49:36,869 --> 00:49:40,889 Más fáciles 1128 00:49:40,889 --> 00:49:42,550 ¿Vale? Por lo tanto, entre enteros 1129 00:49:42,550 --> 00:49:44,050 O charro, o cosas por el estilo 1130 00:49:44,050 --> 00:49:45,670 Se pueden utilizar estos, eso entiende 1131 00:49:45,670 --> 00:49:48,849 Estos son nuevos, estos no los hemos visto nunca 1132 00:49:48,849 --> 00:49:50,090 Bueno, el norte lo hemos visto 1133 00:49:50,090 --> 00:49:52,050 ¿Vale? 1134 00:49:52,769 --> 00:49:54,530 Nos interesa esto y esto 1135 00:49:54,530 --> 00:49:57,570 Estos otros los dejamos 1136 00:49:57,570 --> 00:50:00,829 Son parecidos 1137 00:50:00,829 --> 00:50:02,650 ¿Qué es el AND y el OR? 1138 00:50:03,429 --> 00:50:03,650 ¿Vale? 1139 00:50:04,389 --> 00:50:05,690 Estos son operadores 1140 00:50:05,690 --> 00:50:07,829 Que reciben 1141 00:50:07,829 --> 00:50:10,130 Una expresión booleana 1142 00:50:10,130 --> 00:50:12,630 AND AND 1143 00:50:12,630 --> 00:50:13,510 Por ejemplo 1144 00:50:13,510 --> 00:50:15,769 Expresión booleana 2 1145 00:50:15,769 --> 00:50:18,289 ¿Si? 1146 00:50:19,030 --> 00:50:21,070 Entonces, aquí si que la tabla de antes 1147 00:50:21,070 --> 00:50:22,030 Es interesante 1148 00:50:22,030 --> 00:50:23,670 Verdadero o falso 1149 00:50:23,670 --> 00:50:27,269 verdadero, falso 1150 00:50:27,269 --> 00:50:30,730 estamos viendo lo que se llama el end 1151 00:50:30,730 --> 00:50:34,170 esto es el operador and, vale 1152 00:50:34,170 --> 00:50:36,349 operador y 1153 00:50:36,349 --> 00:50:43,730 esto es verdadero, o sea, esta cosa de aquí es verdadera 1154 00:50:43,730 --> 00:50:47,190 solo cuando esto es verdadero 1155 00:50:47,190 --> 00:50:50,130 y esto es verdadero 1156 00:50:50,130 --> 00:50:52,489 Es decir, que aquí 1157 00:50:52,489 --> 00:50:55,699 Verdadero 1158 00:50:55,699 --> 00:50:59,280 Y si esto fuera verdadero y esto falso 1159 00:50:59,280 --> 00:51:01,739 Pues todo es falso 1160 00:51:01,739 --> 00:51:10,340 Y si esto es falso y esto es verdadero 1161 00:51:10,340 --> 00:51:12,119 Falso 1162 00:51:12,119 --> 00:51:16,500 Y si esto es falso y esto es falso 1163 00:51:16,500 --> 00:51:18,440 Falso 1164 00:51:18,440 --> 00:51:22,690 ¿Sí? 1165 00:51:25,329 --> 00:51:26,489 El OR 1166 00:51:26,489 --> 00:51:30,889 Que se hace así 1167 00:51:30,889 --> 00:51:40,170 El 1 con alt gráfico 1168 00:51:40,170 --> 00:51:46,300 Es verdadero 1169 00:51:46,300 --> 00:51:48,059 O sea que esta cosa de aquí 1170 00:51:48,059 --> 00:51:49,800 Es verdadera 1171 00:51:49,800 --> 00:51:57,980 Si esta 1172 00:51:57,980 --> 00:51:59,380 O 1173 00:51:59,380 --> 00:52:00,639 Esta 1174 00:52:00,639 --> 00:52:02,239 Es verdadera 1175 00:52:02,239 --> 00:52:05,280 Por lo tanto, si esta es verdadera 1176 00:52:05,280 --> 00:52:06,480 Y esta es verdadera 1177 00:52:06,480 --> 00:52:09,059 Esto todo es verdadero 1178 00:52:09,059 --> 00:52:11,480 Si esta es falsa 1179 00:52:11,480 --> 00:52:12,739 Pero esta es verdadera 1180 00:52:12,739 --> 00:52:14,820 Verdadera 1181 00:52:14,820 --> 00:52:18,059 Si esta es verdadera 1182 00:52:18,059 --> 00:52:19,139 Y esta es falsa 1183 00:52:19,139 --> 00:52:20,760 Verdadero 1184 00:52:20,760 --> 00:52:22,820 Y si no 1185 00:52:22,820 --> 00:52:24,239 Falso 1186 00:52:24,239 --> 00:52:33,389 Ahora hacemos un ejemplo 1187 00:52:33,389 --> 00:52:34,329 Vamos a hacer un ejemplo 1188 00:52:34,329 --> 00:52:35,570 Si 1189 00:52:35,570 --> 00:52:39,289 Yo quiero verificar que un int 1190 00:52:39,289 --> 00:52:40,590 Que 1191 00:52:40,590 --> 00:52:42,889 Recibo desde 1192 00:52:42,889 --> 00:52:43,949 Scan 1193 00:52:43,949 --> 00:52:51,590 Sea entre 0 y 10 1194 00:52:51,590 --> 00:52:56,690 Quiero que sea una nota 1195 00:52:56,690 --> 00:52:58,769 Por lo tanto no puede ser 11 1196 00:52:58,769 --> 00:53:00,329 No puede ser menos 7 1197 00:53:00,329 --> 00:53:05,989 ¿Cómo puedo mirar? 1198 00:53:06,570 --> 00:53:07,989 ¿Qué tengo que hacer? 1199 00:53:07,989 --> 00:53:10,989 Con A para hacer una condición booleana 1200 00:53:10,989 --> 00:53:12,389 Que me diga true 1201 00:53:12,389 --> 00:53:15,550 Cuando el número A está entre 0 y 10 1202 00:53:15,550 --> 00:53:18,150 Y me diga false en cualquier otro caso 1203 00:53:18,150 --> 00:53:20,170 Me explico 1204 00:53:20,170 --> 00:53:22,730 A mayor que 0 1205 00:53:22,730 --> 00:53:24,250 Mayor o igual que 0 1206 00:53:24,250 --> 00:53:26,090 Esto funciona 1207 00:53:26,090 --> 00:53:29,110 Si me ponen A menos 1 1208 00:53:29,110 --> 00:53:30,010 Me dice true 1209 00:53:30,010 --> 00:53:33,789 Pero si me ponen A 157 1210 00:53:33,789 --> 00:53:35,130 Me dice true también 1211 00:53:35,130 --> 00:53:37,469 Por lo tanto esto no me vale 1212 00:53:37,469 --> 00:53:43,480 Entonces pruebo esta 1213 00:53:43,480 --> 00:53:45,380 A menor que 11 1214 00:53:45,380 --> 00:53:49,239 Esto si pongo 10 1215 00:53:49,239 --> 00:53:50,519 Me dice true 1216 00:53:50,519 --> 00:53:52,800 Si, si pongo 1 1217 00:53:52,800 --> 00:53:54,599 Si pongo 0 1218 00:53:54,599 --> 00:53:56,780 Si pongo menos 7 1219 00:53:56,780 --> 00:54:00,460 Menos 7 no es menor que 11 1220 00:54:00,460 --> 00:54:04,380 Entonces 1221 00:54:04,380 --> 00:54:08,099 Esta me vale porque me pilla los números de 0 por arriba 1222 00:54:08,099 --> 00:54:10,860 Esta me vale porque me pilla los números de 10 para abajo 1223 00:54:10,860 --> 00:54:13,699 Pero yo quiero las dos condiciones a la vez 1224 00:54:13,699 --> 00:54:15,239 ¿Cómo lo hago? 1225 00:54:21,590 --> 00:54:23,750 Que A sea mayor que 0 1226 00:54:23,750 --> 00:54:26,590 Y también menor que 11 1227 00:54:26,590 --> 00:54:31,500 Entonces probamos con el número 1228 00:54:31,500 --> 00:54:33,059 Cinco 1229 00:54:33,059 --> 00:54:35,860 ¿Es mayor que cero? 1230 00:54:36,460 --> 00:54:37,260 True 1231 00:54:37,260 --> 00:54:39,539 Verdadero 1232 00:54:39,539 --> 00:54:41,219 Y 1233 00:54:41,219 --> 00:54:44,280 ¿Es menor que once? 1234 00:54:45,800 --> 00:54:46,519 Sí 1235 00:54:46,519 --> 00:54:47,860 Verdadero 1236 00:54:47,860 --> 00:54:50,239 ¿Y verdadero y verdadero cómo era? 1237 00:54:50,820 --> 00:54:52,519 Verdadero y verdadero 1238 00:54:52,519 --> 00:54:55,019 Verdadero 1239 00:54:55,019 --> 00:54:56,860 Por lo tanto esta es verdadera 1240 00:54:56,860 --> 00:55:00,400 Si, por algo a la 5 1241 00:55:00,400 --> 00:55:01,159 Me funciona 1242 00:55:01,159 --> 00:55:02,780 Y si pongo 15 1243 00:55:02,780 --> 00:55:04,639 Veamos 1244 00:55:04,639 --> 00:55:07,219 ¿Es mayor que 0? 1245 00:55:08,159 --> 00:55:08,880 Verdadero 1246 00:55:08,880 --> 00:55:10,480 ¿Y? 1247 00:55:11,300 --> 00:55:12,719 ¿Es menor que 11? 1248 00:55:13,920 --> 00:55:15,500 No, es falso 1249 00:55:15,500 --> 00:55:18,039 Y este de aquí en la tabla 1250 00:55:18,039 --> 00:55:20,260 Si es verdadero 1251 00:55:20,260 --> 00:55:23,119 Perdón, verdadero esto 1252 00:55:23,119 --> 00:55:24,400 Pero falso este otro 1253 00:55:24,400 --> 00:55:27,619 Por lo tanto esto es falso 1254 00:55:27,619 --> 00:55:28,800 ¿Vale? 1255 00:55:29,420 --> 00:55:31,179 ¿Lo veis que esta condición de aquí 1256 00:55:31,179 --> 00:55:34,719 Me pilla solo los números entre 0 y 10? 1257 00:55:35,519 --> 00:55:38,980 Y así es como se usa el end 1258 00:55:38,980 --> 00:55:44,869 Y si yo quisiera pillar todos los números 1259 00:55:44,869 --> 00:55:47,809 Excepto entre 0 y 10 1260 00:55:47,809 --> 00:55:53,659 Quiero todos los números me valen 1261 00:55:53,659 --> 00:55:55,179 Pero entre 0 y 10 no 1262 00:55:55,179 --> 00:56:12,800 ¿Cómo lo diríais? 1263 00:56:13,760 --> 00:56:14,820 A menos sí, ¿no? 1264 00:56:14,820 --> 00:56:16,139 A menor que cero 1265 00:56:16,139 --> 00:56:18,760 A menor que cero 1266 00:56:18,760 --> 00:56:19,559 Y 1267 00:56:19,559 --> 00:56:31,719 Entonces esto 1268 00:56:31,719 --> 00:56:33,739 Estrictamente menos 1269 00:56:33,739 --> 00:56:35,599 ¿Esto funciona? 1270 00:56:36,960 --> 00:56:39,199 ¿Puede un número ser menor que cero 1271 00:56:39,199 --> 00:56:41,079 Y al mismo tiempo mayor que diez? 1272 00:56:42,179 --> 00:56:43,679 Esto estaría siempre falso 1273 00:56:43,679 --> 00:56:49,409 Sí 1274 00:56:49,409 --> 00:57:00,769 Si esto me pilla 1275 00:57:00,769 --> 00:57:02,610 Solo los números entre cero y diez 1276 00:57:02,610 --> 00:57:05,369 Esto me pillará los otros 1277 00:57:05,369 --> 00:57:08,329 Si 1278 00:57:08,329 --> 00:57:10,250 Bueno 1279 00:57:10,250 --> 00:57:12,010 Y con el or 1280 00:57:12,010 --> 00:57:14,110 Si a mi me valen 1281 00:57:14,110 --> 00:57:21,139 A ver 1282 00:57:21,139 --> 00:57:22,400 Hagamos con dos variables 1283 00:57:22,400 --> 00:57:24,639 Si yo tengo la variable A 1284 00:57:24,639 --> 00:57:26,059 Y la variable B 1285 00:57:26,059 --> 00:57:29,840 Y quiero que una de las dos 1286 00:57:29,840 --> 00:57:30,679 Sea positiva 1287 00:57:30,679 --> 00:57:33,599 Si una de las dos es positiva 1288 00:57:33,599 --> 00:57:34,079 A mi me vale 1289 00:57:34,079 --> 00:57:37,880 Que condición crearíais vosotros 1290 00:57:37,880 --> 00:57:40,500 Para verificar que 1291 00:57:40,500 --> 00:57:43,059 O A o B sea mayor que 0 1292 00:57:43,059 --> 00:57:44,539 Mayor que 0, sí, positivo 1293 00:57:44,539 --> 00:57:53,849 A mayor que 0 1294 00:57:53,849 --> 00:57:56,110 Or 1295 00:57:56,110 --> 00:57:58,909 B mayor que 0 1296 00:57:58,909 --> 00:58:05,130 Si este es positivo y este es positivo 1297 00:58:05,130 --> 00:58:06,150 Da positivo 1298 00:58:06,150 --> 00:58:08,889 Si este es positivo y este es negativo 1299 00:58:08,889 --> 00:58:10,070 Me da positivo igual 1300 00:58:10,070 --> 00:58:12,269 Porque con esto true y esto false 1301 00:58:12,269 --> 00:58:13,570 El or da fa true 1302 00:58:13,570 --> 00:58:18,210 Si este es negativo y este es positivo 1303 00:58:18,210 --> 00:58:19,110 True 1304 00:58:19,110 --> 00:58:21,530 Si los dos son negativos 1305 00:58:21,530 --> 00:58:22,650 Pues falso 1306 00:58:22,650 --> 00:58:28,280 Ahora, esto de aquí de la lógica booleana 1307 00:58:28,280 --> 00:58:31,019 Los send, los or, los mayores 1308 00:58:31,019 --> 00:58:31,980 Y cosas por el estilo 1309 00:58:31,980 --> 00:58:33,840 Son básicos en informática 1310 00:58:33,840 --> 00:58:40,909 El or 1311 00:58:40,909 --> 00:58:43,909 El or es verdadero cuando 1312 00:58:43,909 --> 00:58:46,829 Siempre, excepto cuando son falsas 1313 00:58:46,829 --> 00:58:47,949 Las dos expresiones 1314 00:58:47,949 --> 00:58:54,260 Si lo miras aquí 1315 00:58:54,260 --> 00:58:56,079 Es siempre verdadero 1316 00:58:56,079 --> 00:58:59,860 Excepto cuando los dos son falsos 1317 00:58:59,860 --> 00:59:01,519 ¿Sí? 1318 00:59:02,820 --> 00:59:03,300 Ok 1319 00:59:03,300 --> 00:59:05,159 Entonces 1320 00:59:05,159 --> 00:59:06,440 Estos de aquí 1321 00:59:06,440 --> 00:59:07,820 De la lógica 1322 00:59:07,820 --> 00:59:08,519 De los AND 1323 00:59:08,519 --> 00:59:09,139 De los OR 1324 00:59:09,139 --> 00:59:09,880 Etcétera, etcétera 1325 00:59:09,880 --> 00:59:11,239 Que son operadores lógicos 1326 00:59:11,239 --> 00:59:12,139 De lógica booleana 1327 00:59:12,139 --> 00:59:12,639 ¿Vale? 1328 00:59:12,920 --> 00:59:15,239 Son fundamentales en informática 1329 00:59:15,239 --> 00:59:17,920 Porque nosotros nos basamos mucho en condiciones 1330 00:59:17,920 --> 00:59:18,800 ¿Vale? 1331 00:59:19,360 --> 00:59:21,099 Muchas de las cosas que veremos 1332 00:59:21,099 --> 00:59:21,900 Que son los IF 1333 00:59:21,900 --> 00:59:23,760 Y son los WHILE 1334 00:59:23,760 --> 00:59:25,780 Se basan sobre una condición 1335 00:59:25,780 --> 00:59:27,860 Y también 1336 00:59:27,860 --> 00:59:29,500 Este señor de aquí 1337 00:59:29,500 --> 00:59:31,239 Se basa sobre una condición 1338 00:59:31,239 --> 00:59:33,679 ¿Vale? 1339 00:59:33,760 --> 00:59:35,400 Que es el operador ternario 1340 00:59:35,400 --> 00:59:37,360 El que decíamos antes 1341 00:59:37,360 --> 00:59:39,900 ¿Vale? Es decir, que este operador 1342 00:59:39,900 --> 00:59:41,260 Tiene tres partes 1343 00:59:41,260 --> 00:59:42,679 Separadas por esta 1344 00:59:42,679 --> 00:59:45,840 Interrogación y estos dos puntos 1345 00:59:45,840 --> 00:59:46,940 ¿Vale? 1346 00:59:47,420 --> 00:59:50,320 Aquí va una condición 1347 00:59:50,320 --> 00:59:51,900 Una expresión 1348 00:59:51,900 --> 00:59:53,900 Una expresión booleana 1349 00:59:53,900 --> 00:59:56,000 Algo que se pueda resolver 1350 00:59:56,000 --> 00:59:57,159 Con true o false 1351 00:59:57,159 --> 00:59:59,900 Sin embargo, aquí 1352 00:59:59,900 --> 01:00:01,380 Y aquí 1353 01:00:01,380 --> 01:00:03,260 Van otras expresiones 1354 01:00:03,260 --> 01:00:05,019 Pueden ser int, pueden ser 1355 01:00:05,019 --> 01:00:07,219 Lo que les da la gana 1356 01:00:07,219 --> 01:00:09,199 Tened en cuenta que 1357 01:00:09,199 --> 01:00:11,480 El tipo de estas dos expresiones 1358 01:00:11,480 --> 01:00:12,400 Tiene que ser el mismo 1359 01:00:12,400 --> 01:00:15,519 Si este es int, esto también es int 1360 01:00:15,519 --> 01:00:18,039 Si este es double, esto también es double 1361 01:00:18,039 --> 01:00:20,360 Si este es string, esto también es string 1362 01:00:21,900 --> 01:00:34,909 no vale mejor que no vale entonces cómo se usa esto ahora hacemos un ejemplo vale 1363 01:00:36,050 --> 01:00:44,570 estos de aquí yo no os los cuento vale existen son operadores a nivel de binario que mueven el 1364 01:00:44,570 --> 01:00:50,630 binario de una posición a destra sinistra y uno los he usado en mi vida vale entonces existen 1365 01:00:50,630 --> 01:00:52,969 están aquí, a lo mejor haremos 1366 01:00:52,969 --> 01:00:54,730 un ejercicio una vez para 1367 01:00:54,730 --> 01:00:56,829 probarlo, ¿vale? así de trampa 1368 01:00:56,829 --> 01:00:58,949 para que no se os olvide, no sabéis ni siquiera 1369 01:00:58,949 --> 01:01:00,809 que son, ¿vale? entonces son los operadores 1370 01:01:00,809 --> 01:01:02,329 de shift, ¿vale? 1371 01:01:02,849 --> 01:01:04,869 y se 1372 01:01:04,869 --> 01:01:06,949 usan en ciertos contextos 1373 01:01:06,949 --> 01:01:08,869 pero en lo que hagáis a hacer vosotros 1374 01:01:08,869 --> 01:01:10,809 este año, no lo vais a ver, ¿vale? 1375 01:01:10,809 --> 01:01:11,750 por lo tanto 1376 01:01:11,750 --> 01:01:14,909 tampoco quiero añadir 1377 01:01:14,909 --> 01:01:16,090 cosas, ¿vale? 1378 01:01:16,989 --> 01:01:18,730 entonces, este de aquí, ahora 1379 01:01:18,730 --> 01:01:19,730 hacemos ejemplos, ¿vale? 1380 01:01:20,630 --> 01:01:39,199 Pero, para que se quede en la grabación, este de aquí, si es verdadero, entonces todo esto vale esto, si esto es falso, todo esto vale esto. 1381 01:01:39,199 --> 01:01:41,159 Por ejemplo 1382 01:01:41,159 --> 01:01:44,119 Si yo digo 1383 01:01:44,119 --> 01:01:47,239 Int a es igual 1384 01:01:47,239 --> 01:01:48,039 A 1385 01:01:48,039 --> 01:01:51,260 Si 5 1386 01:01:51,260 --> 01:01:52,800 Es mayor que 7 1387 01:01:52,800 --> 01:01:56,079 Entonces 4 1388 01:01:56,079 --> 01:01:57,800 Si no 1389 01:01:57,800 --> 01:01:59,199 7 1390 01:01:59,199 --> 01:02:04,309 ¿Cuánto vale int? 1391 01:02:04,309 --> 01:02:05,349 ¿Cuánto vale a? 1392 01:02:06,750 --> 01:02:09,789 Miro esta cosa de aquí 1393 01:02:09,789 --> 01:02:13,619 ¿Es true o false? 1394 01:02:14,099 --> 01:02:14,860 False 1395 01:02:14,860 --> 01:02:16,280 Por lo tanto esto 1396 01:02:16,280 --> 01:02:18,380 Si yo 7 lo pongo dentro de A 1397 01:02:18,380 --> 01:02:23,610 6 1398 01:02:23,610 --> 01:02:31,420 4 1399 01:02:31,420 --> 01:02:37,300 6 1400 01:02:37,300 --> 01:02:42,719 Por ejemplo para 1401 01:02:42,719 --> 01:02:44,880 Vamos a un programa rápido 1402 01:02:44,880 --> 01:02:46,420 Me dan un int 1403 01:02:46,420 --> 01:02:47,880 Número 1404 01:02:47,880 --> 01:02:51,739 Scan.nextint 1405 01:02:51,739 --> 01:02:56,329 Y yo quiero saber 1406 01:02:56,329 --> 01:02:57,190 ¿Vale? 1407 01:02:57,190 --> 01:02:58,889 Si este número 1408 01:02:58,889 --> 01:03:00,949 Es positivo 1409 01:03:00,949 --> 01:03:02,210 O negativo 1410 01:03:02,210 --> 01:03:03,889 Y que me escriba 1411 01:03:03,889 --> 01:03:05,389 Por pantalla 1412 01:03:05,389 --> 01:03:06,750 Positivo o negativo 1413 01:03:06,750 --> 01:03:09,780 ¿Cómo lo puedo hacer? 1414 01:03:11,559 --> 01:03:12,440 Pues por ejemplo 1415 01:03:12,440 --> 01:03:15,719 String 1416 01:03:15,719 --> 01:03:17,440 Resultado 1417 01:03:17,440 --> 01:03:19,659 Es igual a 1418 01:03:19,659 --> 01:03:21,019 Sinum 1419 01:03:21,019 --> 01:03:24,760 Es mayor o igual a 0 1420 01:03:24,760 --> 01:03:30,800 ¿Qué vale? 1421 01:03:33,190 --> 01:03:33,869 El positivo 1422 01:03:33,869 --> 01:03:38,059 Sinum 1423 01:03:38,059 --> 01:03:45,829 Esperad que lo hago un poquito más pequeño para que se vea entero 1424 01:03:45,829 --> 01:03:49,679 ¿Lo veis? 1425 01:03:54,809 --> 01:03:56,170 Pues ya está, he hecho un programa 1426 01:03:56,170 --> 01:03:57,849 Que dame cualquier número 1427 01:03:57,849 --> 01:03:58,969 Y te digo si es positivo o negativo 1428 01:03:58,969 --> 01:04:05,369 ¿Si o no? 1429 01:04:08,070 --> 01:04:09,309 Compruebo esta cosa aquí 1430 01:04:09,309 --> 01:04:11,789 Si el número que me acaban de dar 1431 01:04:11,789 --> 01:04:12,809 Es mayor que cero 1432 01:04:12,809 --> 01:04:15,030 Entonces devuelvo esta cosa aquí 1433 01:04:15,030 --> 01:04:17,070 Es decir que pongo aquí dentro positivo 1434 01:04:17,070 --> 01:04:20,170 Si en vez de esta cosa aquí es falsa 1435 01:04:20,170 --> 01:04:21,969 Pues lo pondré aquí 1436 01:04:21,969 --> 01:04:46,940 ¿Qué hace esto? 1437 01:04:51,880 --> 01:04:53,579 Me dice si el número que me han puesto 1438 01:04:53,579 --> 01:04:54,420 Es igual a cero o no 1439 01:04:54,420 --> 01:04:56,179 ¿Si? 1440 01:04:56,179 --> 01:04:58,699 ¿Lo veis? La diferencia entre esto 1441 01:04:58,699 --> 01:05:00,119 Y esto 1442 01:05:00,119 --> 01:05:02,480 ¿Qué es esto? 1443 01:05:08,539 --> 01:05:09,860 Operador de asignación 1444 01:05:09,860 --> 01:05:11,300 ¿Qué es esto? 1445 01:05:14,840 --> 01:05:16,239 Operador de igualación, sí 1446 01:05:16,239 --> 01:05:18,360 Igualdad 1447 01:05:18,360 --> 01:05:21,119 ¿Sí? 1448 01:05:21,739 --> 01:05:23,320 Este de aquí es un operador booleano 1449 01:05:23,320 --> 01:05:24,780 Que me dará un true and false 1450 01:05:24,780 --> 01:05:26,559 Que compara las dos expresiones 1451 01:05:26,559 --> 01:05:29,400 A la izquierda y a la derecha, si son iguales 1452 01:05:29,400 --> 01:05:30,699 Sin embargo 1453 01:05:30,699 --> 01:05:32,500 Este de aquí es una operación 1454 01:05:32,500 --> 01:05:33,860 De asignación 1455 01:05:33,860 --> 01:05:35,659 Y antes de acabar 1456 01:05:35,659 --> 01:05:37,739 La última cosa importante 1457 01:05:37,739 --> 01:05:41,000 No se usa este operador 1458 01:05:41,000 --> 01:05:42,739 Entre palabras 1459 01:05:42,739 --> 01:05:45,619 Entre string 1460 01:05:45,619 --> 01:05:47,639 Esto está prohibido 1461 01:05:47,639 --> 01:05:50,059 Variables 1462 01:05:50,059 --> 01:05:51,719 Variables de tipo string no 1463 01:05:51,719 --> 01:05:53,900 Variables de tipo string no 1464 01:05:53,900 --> 01:05:55,519 Variables de tipo int 1465 01:05:55,519 --> 01:05:56,960 Variables de tipo lo que sea 1466 01:05:56,960 --> 01:05:59,260 Tipo primitivos 1467 01:05:59,260 --> 01:06:00,320 Uso esto 1468 01:06:00,320 --> 01:06:01,960 String no 1469 01:06:01,960 --> 01:06:04,199 veremos como se hace 1470 01:06:04,199 --> 01:06:06,300 vale, y aquí yo creo 1471 01:06:06,300 --> 01:06:08,219 que me paro, aquí hay otros 1472 01:06:08,219 --> 01:06:10,000 ejemplos y cosas por el estilo 1473 01:06:10,000 --> 01:06:11,460 lo veremos en otro momento