1 00:00:00,820 --> 00:00:25,210 Vale, pues este es el documento, ¿está proyectando? Sí. Vale, pues no perdamos el contexto de que lo que vamos a revisar ahora son operadores que nos ofrece Java para construir expresiones y como resultado de la evaluación de esas expresiones la máquina virtual de Java obtendrá valores resultado, ¿vale? 2 00:00:25,210 --> 00:00:29,070 Bueno, pues operadores aritméticos 3 00:00:29,070 --> 00:00:32,210 Aquí ya los conocemos casi todos 4 00:00:32,210 --> 00:00:33,070 Hay poco que decir 5 00:00:33,070 --> 00:00:35,590 Cuando necesitamos hacer suma de datos 6 00:00:35,590 --> 00:00:39,509 Resta, multiplicación, cualquier operador 7 00:00:39,509 --> 00:00:42,130 Cualquier operación aritmética de esta 8 00:00:42,130 --> 00:00:44,189 Pues tenemos estos cuatro operadores 9 00:00:44,189 --> 00:00:46,009 Que ya los hemos usado como son básicos 10 00:00:46,009 --> 00:00:48,869 Para sumar valores que habían variables 11 00:00:48,869 --> 00:00:51,170 O restar, o multiplicar, o dividir 12 00:00:51,170 --> 00:00:51,549 ¿Vale? 13 00:00:52,329 --> 00:00:54,630 Entonces, este operador que lo incluye 14 00:00:54,630 --> 00:00:56,390 pues cualquier lenguaje de programación 15 00:00:56,390 --> 00:00:58,850 lo conocéis, es el operador 16 00:00:58,850 --> 00:01:00,390 que se suele llamar operador módulo 17 00:01:00,390 --> 00:01:02,590 que no es más que la resta, perdón 18 00:01:02,590 --> 00:01:04,250 el resto, ¿vale? 19 00:01:05,310 --> 00:01:06,750 Entonces, cuando 20 00:01:06,750 --> 00:01:08,769 tenemos una división entre 21 00:01:08,769 --> 00:01:10,590 enteros, porque estos operadores 22 00:01:10,590 --> 00:01:12,170 recordad que 23 00:01:12,170 --> 00:01:14,989 todos en general pueden funcionar distinto 24 00:01:14,989 --> 00:01:16,950 en función del tipo 25 00:01:16,950 --> 00:01:18,510 de dato que tengan a cada lado 26 00:01:18,510 --> 00:01:20,909 del tipo de dato que tengan a cada lado 27 00:01:20,909 --> 00:01:22,590 el operador suma 28 00:01:22,590 --> 00:01:50,010 me da igual que tenga números enteros o números decimales, me da igual, va a hacer la suma, si tengo números enteros va a hacer la suma de dos enteros, si tengo dos decimales va a hacer la suma de dos decimales, claro, pero funciona siempre como nuestra suma de toda la vida, la resta igual, el producto igual, me da igual que tenga dos enteros a los lados o dos decimales a los lados, la resta y la multiplicación va a funcionar como la que conocemos, ¿vale? 29 00:01:50,010 --> 00:01:51,670 también sabemos 30 00:01:51,670 --> 00:01:53,310 porque lo hemos visto en ejemplos 31 00:01:53,310 --> 00:01:55,609 que en estos operadores aritméticos 32 00:01:55,609 --> 00:01:57,010 yo puedo mezclar y poner 33 00:01:57,010 --> 00:01:59,209 un int o entero a un lado 34 00:01:59,209 --> 00:02:00,849 y un decimal a otro 35 00:02:00,849 --> 00:02:03,329 ¿y qué es lo que hace la máquina virtual? 36 00:02:04,150 --> 00:02:05,409 pues promociona 37 00:02:05,409 --> 00:02:07,709 el entero a decimal poniéndole 38 00:02:07,709 --> 00:02:08,509 punto cero 39 00:02:08,509 --> 00:02:11,650 porque para poner un punto cero no pasa nada 40 00:02:11,650 --> 00:02:13,270 no alteras el número, me da igual 41 00:02:13,270 --> 00:02:14,909 3.0 que 3 42 00:02:14,909 --> 00:02:17,509 no lo altero porque el valor es el mismo 43 00:02:17,509 --> 00:02:18,330 es el mismo valor 44 00:02:18,330 --> 00:02:21,270 entonces cualquiera de estos operadores aritméticos 45 00:02:21,270 --> 00:02:23,389 si se encuentra un entero a un lado 46 00:02:23,389 --> 00:02:24,530 y un decimal a otro 47 00:02:24,530 --> 00:02:26,770 pues antes de hacer la operación 48 00:02:26,770 --> 00:02:29,069 el entero le pone un punto cero 49 00:02:29,069 --> 00:02:30,750 luego hace la operación 50 00:02:30,750 --> 00:02:32,169 y ya le queda en decimal 51 00:02:32,169 --> 00:02:33,909 vale 52 00:02:33,909 --> 00:02:35,389 y espera por tanto 53 00:02:35,389 --> 00:02:37,449 guardarlo en una variable decimal 54 00:02:37,449 --> 00:02:38,409 porque si no va a decir 55 00:02:38,409 --> 00:02:39,610 uy es decimal no cabe 56 00:02:39,610 --> 00:02:40,090 vale 57 00:02:40,090 --> 00:02:41,669 todo esto lo hemos visto en ejemplos 58 00:02:41,669 --> 00:02:42,830 bueno 59 00:02:42,830 --> 00:02:44,310 entonces estos operadores 60 00:02:44,310 --> 00:02:45,330 estos tres de aquí 61 00:02:45,330 --> 00:02:47,289 suma, resta y multiplicación 62 00:02:47,289 --> 00:02:49,590 Pues lo que acabamos de decir 63 00:02:49,590 --> 00:02:51,509 Me da igual que yo a los lados tenga 64 00:02:51,509 --> 00:02:53,430 Números enteros, números decimales 65 00:02:53,430 --> 00:02:56,310 La operación va a ser la misma 66 00:02:56,310 --> 00:02:57,830 La que conocemos nosotros 67 00:02:57,830 --> 00:02:59,949 Como suma, resta y multiplicación 68 00:02:59,949 --> 00:03:01,030 No funciona distinta 69 00:03:01,030 --> 00:03:02,990 Este 70 00:03:02,990 --> 00:03:05,650 Si que es el que funciona distinto 71 00:03:05,650 --> 00:03:07,289 Que también lo hemos visto en ejemplos 72 00:03:07,289 --> 00:03:09,710 En función de si tú tienes 73 00:03:09,710 --> 00:03:11,629 Operadores decimales 74 00:03:11,629 --> 00:03:13,490 O enteros a los lados 75 00:03:13,490 --> 00:03:14,169 Depende 76 00:03:14,169 --> 00:03:16,889 Si tienes enteros 77 00:03:16,889 --> 00:03:21,129 La división es la resta entera 78 00:03:21,129 --> 00:03:22,110 ¿Verdad? 79 00:03:23,009 --> 00:03:24,550 Si tenemos enteros 80 00:03:24,550 --> 00:03:29,680 Si tú tienes enteros a los lados 81 00:03:29,680 --> 00:03:31,379 7 entre 3 82 00:03:31,379 --> 00:03:37,080 Esto interpreta que este operador es el cociente 83 00:03:37,080 --> 00:03:40,960 La división entera, he dicho resta entera antes, creo 84 00:03:40,960 --> 00:03:42,620 El cociente 85 00:03:42,620 --> 00:03:44,539 Entonces 7 entre 3, pues 2 86 00:03:44,539 --> 00:03:45,460 Nos daría 2 87 00:03:45,460 --> 00:03:46,199 ¿Vale? 88 00:03:48,199 --> 00:03:49,199 Pero sin embargo 89 00:03:49,199 --> 00:03:51,879 si lo que tenemos son valores 90 00:03:51,879 --> 00:03:53,819 decimales, me da igual el valor 91 00:03:53,819 --> 00:03:55,800 directamente que una 92 00:03:55,800 --> 00:03:56,960 variable que lo contenga 93 00:03:56,960 --> 00:03:59,780 vale, me da igual, estoy poniendo el valor directamente 94 00:03:59,780 --> 00:04:01,620 pero ya sabemos que podríamos poner 95 00:04:01,620 --> 00:04:03,860 una variable y entonces 96 00:04:03,860 --> 00:04:05,740 se referiría al valor que contenga 97 00:04:05,740 --> 00:04:07,580 me da igual, si la variable es double 98 00:04:07,580 --> 00:04:08,800 contendrá un valor decimal 99 00:04:08,800 --> 00:04:11,740 bueno, pues si lo que tiene es números decimales 100 00:04:11,740 --> 00:04:13,539 a los lados, pues me dará 101 00:04:13,539 --> 00:04:15,599 la división decimal 102 00:04:15,599 --> 00:04:17,639 tal cual, con decimales, los que salgan 103 00:04:17,639 --> 00:04:19,879 Yo qué sé, no sé lo que sale, me da igual 104 00:04:19,879 --> 00:04:21,379 ¿Vale? 105 00:04:21,779 --> 00:04:25,040 Entonces, este operador sí que hace dos cosas distintas 106 00:04:25,040 --> 00:04:26,439 A diferencia de estos tres 107 00:04:26,439 --> 00:04:29,800 El operador división hace dos cosas distintas 108 00:04:29,800 --> 00:04:32,379 En función de si tenemos enteros o decimales 109 00:04:32,379 --> 00:04:36,319 Y de nuevo, también Java admite que mezclemos 110 00:04:36,319 --> 00:04:42,860 Y pasará lo mismo que si usamos los de arriba 111 00:04:42,860 --> 00:04:45,279 Si estamos mezclando tipos de datos 112 00:04:45,279 --> 00:04:47,439 Él lo que hace es, no pasa nada 113 00:04:47,439 --> 00:04:49,259 promociono este a decimal 114 00:04:49,259 --> 00:04:51,899 porque da igual 7, que 7.0 115 00:04:51,899 --> 00:04:53,420 no altera el valor 116 00:04:53,420 --> 00:04:55,399 lo promociono a decimal 117 00:04:55,399 --> 00:04:57,480 y entonces ahora ya sí que 118 00:04:57,480 --> 00:04:59,839 considero la división 119 00:04:59,839 --> 00:05:01,860 decimal, porque ahora tengo dos números 120 00:05:01,860 --> 00:05:04,240 decimales, y como ahora tengo dos números decimales 121 00:05:04,240 --> 00:05:05,899 considero 122 00:05:05,899 --> 00:05:07,480 que me estás pidiendo la división decimal 123 00:05:07,480 --> 00:05:10,160 ¿vale? esto lo hemos visto en ejemplos 124 00:05:10,160 --> 00:05:11,720 y también hemos visto que 125 00:05:11,720 --> 00:05:13,800 si la división es decimal, esto tiene que ir 126 00:05:13,800 --> 00:05:15,240 a un número decimal 127 00:05:15,240 --> 00:05:16,839 a un double o a un float 128 00:05:16,839 --> 00:05:19,480 ¿Vale? Esto no podría ir a un entero 129 00:05:19,480 --> 00:05:20,199 Lógicamente 130 00:05:20,199 --> 00:05:23,600 Y este operador 131 00:05:23,600 --> 00:05:26,639 El porciento, el operador resto módulo 132 00:05:26,639 --> 00:05:28,759 Está en cualquier lenguaje de programación 133 00:05:28,759 --> 00:05:30,439 Y es un operador matemático 134 00:05:30,439 --> 00:05:31,920 Que también conoces de matemáticas 135 00:05:31,920 --> 00:05:34,180 Que es muy útil para calcular 136 00:05:34,180 --> 00:05:37,579 O sea, sirve para calcular el resto de divisiones enteras 137 00:05:37,579 --> 00:05:39,420 Y es muy útil 138 00:05:39,420 --> 00:05:41,439 ¿Vale? Porque tiene un sentido matemático grande 139 00:05:41,439 --> 00:05:42,959 El resto de una división entera 140 00:05:42,959 --> 00:05:44,899 Tiene un sentido matemático grande 141 00:05:44,899 --> 00:05:45,540 ¿Vale? 142 00:05:46,720 --> 00:05:47,699 Respecto a si 143 00:05:47,699 --> 00:05:49,839 pues un número es múltiplo de otro 144 00:05:49,839 --> 00:05:51,699 si cabe exactamente en él, se puede usar 145 00:05:51,699 --> 00:05:53,680 para muchas cosas, entonces esto 146 00:05:53,680 --> 00:05:55,720 lo usamos cuando necesitamos 147 00:05:55,720 --> 00:05:57,519 el resto de una 148 00:05:57,519 --> 00:05:59,899 división entera, entonces 149 00:05:59,899 --> 00:06:01,699 7 por 150 00:06:01,699 --> 00:06:03,759 102, pues nos 151 00:06:03,759 --> 00:06:05,800 da 1, porque 152 00:06:05,800 --> 00:06:07,819 el resto de dividir 7 entre 2 153 00:06:07,819 --> 00:06:08,819 es 1 y ya está 154 00:06:08,819 --> 00:06:11,680 para eso lo usamos y a veces 155 00:06:11,680 --> 00:06:13,720 es útil, bueno 156 00:06:13,720 --> 00:06:15,040 pues sobre estos operadores 157 00:06:15,040 --> 00:06:18,300 No tenemos mucho más que decir 158 00:06:18,300 --> 00:06:21,079 Si hay dudas sobre algo 159 00:06:21,079 --> 00:06:21,939 Me paráis 160 00:06:21,939 --> 00:06:24,819 No, admite decimales 161 00:06:24,819 --> 00:06:25,939 Pero cuando le pones decimales 162 00:06:25,939 --> 00:06:28,399 No sé muy bien qué sentido tiene que le pongas decimales 163 00:06:28,399 --> 00:06:28,800 La verdad 164 00:06:28,800 --> 00:06:31,000 Pero tú le puedes poner decimales 165 00:06:31,000 --> 00:06:32,420 Y te lo hace 166 00:06:32,420 --> 00:06:35,060 Lo que pasa es que no sé muy bien 167 00:06:35,060 --> 00:06:37,120 Qué sentido tiene la operación módulo entre decimales 168 00:06:37,120 --> 00:06:38,160 No 169 00:06:38,160 --> 00:06:40,160 Alguno tendrá 170 00:06:40,160 --> 00:06:41,500 Porque si te deja ponerlo 171 00:06:41,500 --> 00:06:42,939 Alguno tendrá 172 00:06:42,939 --> 00:06:44,860 Vamos a preguntárselo 173 00:06:44,860 --> 00:06:45,920 A nuestro amigo. 174 00:06:47,420 --> 00:06:49,639 A ver si nos dice algo con sentido. 175 00:06:53,879 --> 00:06:57,259 ¿Qué sentido tiene hacer la... 176 00:06:57,259 --> 00:06:58,980 Ah, que no se ve, perdón. 177 00:07:00,079 --> 00:07:03,459 ¿Qué sentido tiene hacer la operación... 178 00:07:03,459 --> 00:07:08,540 ...módulo entre números decimales? 179 00:07:10,860 --> 00:07:12,279 A ver si tiene algún sentido. 180 00:07:16,279 --> 00:07:18,000 Bueno, el concepto se puede extender. 181 00:07:18,000 --> 00:07:23,870 Casi que no nos interesa 182 00:07:23,870 --> 00:07:25,410 Extender el concepto 183 00:07:25,410 --> 00:07:29,449 Bueno, se puede extender matemáticamente 184 00:07:29,449 --> 00:07:31,709 El concepto de operación módulo a decimales 185 00:07:31,709 --> 00:07:36,300 Según esta formulita 186 00:07:36,300 --> 00:07:39,660 Y entiendo entonces 187 00:07:39,660 --> 00:07:41,079 Que los lenguajes de programación 188 00:07:41,079 --> 00:07:42,699 Cuando le damos decimales 189 00:07:42,699 --> 00:07:43,959 Es esa lo que usa 190 00:07:43,959 --> 00:07:46,519 Por ejemplo, vamos a probar a hacer 7.5, 2.3 191 00:07:46,519 --> 00:07:47,560 A ver si nos da 0.6 192 00:07:47,560 --> 00:07:48,699 Que nos lo dará, supongo 193 00:07:48,699 --> 00:07:51,000 Vamos a probar un segundito 194 00:07:51,000 --> 00:08:00,329 Ejemplos operadores 195 00:08:00,329 --> 00:08:14,889 vale, vamos a poner aquí aritméticos 196 00:08:14,889 --> 00:08:19,730 por ejemplo, si yo me hago una variable double 197 00:08:19,730 --> 00:08:24,149 num y le voy a 198 00:08:24,149 --> 00:08:27,509 decir que esta variable double num me guarde 199 00:08:27,509 --> 00:08:31,009 7,5 entre 2,3 200 00:08:31,009 --> 00:08:40,190 el resto, perdón, módulo, 2,3 201 00:08:40,190 --> 00:08:47,940 Vale, entiendo que nos dará 0,6 202 00:08:47,940 --> 00:09:02,289 Sí, efectivamente 203 00:09:02,289 --> 00:09:03,950 Esto es lo que sale de la 204 00:09:03,950 --> 00:09:11,539 ¿Qué sentido matemático tiene la operación módulo en números decimales? 205 00:09:12,080 --> 00:09:13,779 No lo sé, yo no la he usado nunca 206 00:09:13,779 --> 00:09:16,500 No, alguno tendrá, ¿no? 207 00:09:17,259 --> 00:09:19,860 Reducción a intervalos, sí tiene sentido 208 00:09:19,860 --> 00:09:22,179 Obtienes un excedente 209 00:09:22,179 --> 00:09:24,740 bueno, si alguien tiene más curiosidad 210 00:09:24,740 --> 00:09:26,720 que indague, vale, a partir de ahí 211 00:09:26,720 --> 00:09:28,740 normalmente 212 00:09:28,740 --> 00:09:30,659 este operador se usa 213 00:09:30,659 --> 00:09:32,620 con números enteros y te da 214 00:09:32,620 --> 00:09:34,639 el resto de la división entera, que eso sí 215 00:09:34,639 --> 00:09:35,980 que es un concepto muy natural 216 00:09:35,980 --> 00:09:38,960 y que usamos 217 00:09:38,960 --> 00:09:40,519 a veces, pues para 218 00:09:40,519 --> 00:09:42,700 efectivamente ver el excedente 219 00:09:42,700 --> 00:09:45,039 entero que hay en determinadas situaciones 220 00:09:45,039 --> 00:09:46,240 el excedente decimal 221 00:09:46,240 --> 00:09:48,320 es un concepto que usamos menos 222 00:09:48,320 --> 00:09:50,000 cuando gestionamos cosas 223 00:09:50,000 --> 00:09:52,580 Una aplicación cuando gestiona cosas 224 00:09:52,580 --> 00:09:54,519 Suele gestionar cosas enteras 225 00:09:54,519 --> 00:09:56,159 Usuarios, facturas 226 00:09:56,159 --> 00:09:59,000 No gestiona tres usuarios 227 00:09:59,000 --> 00:10:01,120 Y medio o cuatro facturas y media 228 00:10:01,120 --> 00:10:03,200 Entonces el concepto de excedente decimal 229 00:10:03,200 --> 00:10:05,620 Es más extraño 230 00:10:05,620 --> 00:10:07,120 Que el de excedente entero 231 00:10:07,120 --> 00:10:07,799 Que es el resto 232 00:10:07,799 --> 00:10:17,299 Venga pues a ver 233 00:10:17,299 --> 00:10:19,840 En cuanto a esos operadores 234 00:10:19,840 --> 00:10:23,049 Vale 235 00:10:23,049 --> 00:10:29,139 Aquí lo tenéis además 236 00:10:29,139 --> 00:10:31,299 Si es verdad, si es que además esto lo escribí 237 00:10:31,299 --> 00:10:34,000 Si esto lo escribí yo el año pasado 238 00:10:34,000 --> 00:10:35,000 Porque lo estuve mirando 239 00:10:35,000 --> 00:10:36,519 Pero como no lo he vuelto a usar 240 00:10:36,519 --> 00:10:37,840 Me había olvidado de ello 241 00:10:37,840 --> 00:10:39,879 Pero esto está escrito aquí del año pasado 242 00:10:39,879 --> 00:10:41,159 Porque lo habíamos estado usando 243 00:10:41,159 --> 00:10:46,840 Operador de asignación 244 00:10:46,840 --> 00:10:48,240 De nuevo 245 00:10:48,240 --> 00:10:50,799 Lo conocemos perfectamente 246 00:10:50,799 --> 00:10:51,519 El igual 247 00:10:51,519 --> 00:10:53,639 El operador igual tiene 248 00:10:53,639 --> 00:10:55,340 Un único sentido 249 00:10:55,340 --> 00:10:58,500 Que es usarse en una expresión de asignación 250 00:10:58,500 --> 00:11:00,379 ¿Vale? 251 00:11:00,379 --> 00:11:03,019 Tampoco tenemos nada que decir sobre él 252 00:11:03,019 --> 00:11:04,279 Porque lo hemos usado todo el rato 253 00:11:04,279 --> 00:11:09,759 Aquí tenemos ejemplitos 254 00:11:09,759 --> 00:11:11,460 Varios, nada, vale 255 00:11:11,460 --> 00:11:13,100 Ahora sí 256 00:11:13,100 --> 00:11:15,899 Vamos a conocer el más igual 257 00:11:15,899 --> 00:11:18,059 Que es una forma de abreviar 258 00:11:18,059 --> 00:11:20,100 Operaciones estándar 259 00:11:20,100 --> 00:11:21,480 ¿Vale? Entonces 260 00:11:21,480 --> 00:11:24,059 Este ya sí que es algo nuevo 261 00:11:24,059 --> 00:11:26,600 Vamos a revisarlo 262 00:11:26,600 --> 00:11:27,539 Vamos a revisarlo 263 00:11:27,539 --> 00:11:29,980 Porque esto sí que se usa muy muy muy a menudo 264 00:11:29,980 --> 00:11:31,240 Esta abreviatura 265 00:11:31,240 --> 00:12:03,799 Vale, vamos a ponerlo aquí. Méticos con asignación. Vale, pues una situación muy habitual es que tengamos un dato y a ese dato queramos sumarle un valor o multiplicarle un valor a ese propio dato. 266 00:12:03,799 --> 00:12:05,519 por ejemplo, yo tengo 267 00:12:05,519 --> 00:12:08,059 mi conjunto de usuarios guardado en una variable 268 00:12:08,059 --> 00:12:11,740 por ejemplo, numusuarios 269 00:12:11,740 --> 00:12:13,460 que va a guardar el número de usuarios 270 00:12:13,460 --> 00:12:15,919 que yo tengo en un momento dado en mi aplicación 271 00:12:15,919 --> 00:12:17,480 para gestionar 272 00:12:17,480 --> 00:12:21,240 o lo que sea, vale 273 00:12:21,240 --> 00:12:23,059 entonces 274 00:12:23,059 --> 00:12:25,279 vamos a 275 00:12:25,279 --> 00:12:27,279 de partida, vamos a pedirle 276 00:12:27,279 --> 00:12:29,580 cuantos usuarios tiene, con lo cual voy a 277 00:12:29,580 --> 00:12:31,659 poner el escáner aquí arriba 278 00:12:31,659 --> 00:12:33,700 del todo, como solo lo creo 279 00:12:33,700 --> 00:12:35,539 una vez y luego lo uso todas las veces que quiera 280 00:12:35,539 --> 00:12:36,740 lo pongo arriba del todo 281 00:12:36,740 --> 00:12:39,299 así lo tengo ya creado y me olvido 282 00:12:39,299 --> 00:12:48,679 de él, vale, ya tengo este 283 00:12:48,679 --> 00:12:49,820 escáner aquí creado 284 00:12:49,820 --> 00:12:52,139 y me olvido de él 285 00:12:52,139 --> 00:12:54,620 olvidaos porque me 286 00:12:54,620 --> 00:12:56,919 preguntáis a veces cuando hay un 287 00:12:56,919 --> 00:12:58,080 simbolito amarillo 288 00:12:58,080 --> 00:13:00,580 eso es un aviso, no es un error de 289 00:13:00,580 --> 00:13:02,240 compilación, el error de compilación 290 00:13:02,240 --> 00:13:04,679 está en rojo y impide 291 00:13:04,679 --> 00:13:06,720 que el programa se pueda 292 00:13:06,720 --> 00:13:08,799 compilar y por tanto generar 293 00:13:08,799 --> 00:13:10,759 el punto clase, vale, entonces no 294 00:13:10,759 --> 00:13:12,559 ejecutamos un programa 295 00:13:12,559 --> 00:13:13,580 colores de compilación 296 00:13:13,580 --> 00:13:16,379 los tenemos que arreglar 297 00:13:16,379 --> 00:13:18,779 bueno, lo amarillo 298 00:13:18,779 --> 00:13:20,019 es un warning, es un aviso 299 00:13:20,019 --> 00:13:22,100 te dice cosas 300 00:13:22,100 --> 00:13:24,340 que podrían 301 00:13:24,340 --> 00:13:26,580 generarte problemas a la hora 302 00:13:26,580 --> 00:13:28,019 de ejecutar 303 00:13:28,019 --> 00:13:30,679 uy, esto que has hecho, cuidado, que se te olvida 304 00:13:30,679 --> 00:13:32,340 esto y podría generarte un problema 305 00:13:32,340 --> 00:13:34,639 en la ejecución, no es un problema 306 00:13:34,639 --> 00:13:36,919 ahora de compilación, yo puedo compilar y ya está 307 00:13:36,919 --> 00:13:38,700 pero cuidado que te puede generar un problema 308 00:13:38,700 --> 00:13:40,159 en la ejecución, ¿vale? 309 00:13:40,159 --> 00:14:02,500 Entonces, uno puede ignorar esto, este en particular lo puede ignorar, ahora os explicaré lo que significa ahora, aunque algunos ya os lo he dicho, pero este en particular se puede ignorar, habrá otros que no ignoremos porque sí que son avisos peligrosos y digo, uy, es que esto puede que me honore de ejecución en esta situación, pues bienvenido sea ese aviso. 310 00:14:03,000 --> 00:14:08,139 Este, como ya habéis visto, lo que dice es, cuidado que esto está sin cerrar o algo así dice, ¿no? 311 00:14:10,159 --> 00:14:12,480 Lo que me pasa en esta y en la anterior 312 00:14:12,480 --> 00:14:14,320 es que me salta el rojo 313 00:14:14,320 --> 00:14:15,960 y me pone que 314 00:14:15,960 --> 00:14:17,700 como que escáner no puede ser. 315 00:14:18,480 --> 00:14:20,480 Claro, porque tienes que hacer el import 316 00:14:20,480 --> 00:14:21,360 este de arriba. 317 00:14:24,419 --> 00:14:26,440 O lo escribes a mano o 318 00:14:26,440 --> 00:14:28,700 si te aparece... 319 00:14:28,700 --> 00:14:30,539 Por ejemplo, si yo no lo tuviera, me aparece 320 00:14:30,539 --> 00:14:32,500 aquí y me dice eso. 321 00:14:32,580 --> 00:14:34,519 Me dice, escáner no lo encuentro. 322 00:14:35,080 --> 00:14:35,320 Entonces, 323 00:14:36,399 --> 00:14:38,659 el Eclipse te ayuda para que no lo tengas 324 00:14:38,659 --> 00:14:40,379 que escribir tú a mano. Pinchas aquí 325 00:14:40,379 --> 00:14:41,879 y haces import. 326 00:14:42,360 --> 00:14:47,220 Y ala, ya te lo has escrito solito, ¿vale? 327 00:14:56,409 --> 00:14:59,169 Sí, sí, no, más que lo correcto es que hay que hacerlos ahí, 328 00:14:59,230 --> 00:15:00,190 no puedes hacerlo en otro sitio. 329 00:15:00,289 --> 00:15:03,590 Estas sentencias import tienen que ir después de esta, 330 00:15:04,009 --> 00:15:06,309 que te dice en qué directorio estás, 331 00:15:06,889 --> 00:15:08,110 y antes de la class. 332 00:15:08,710 --> 00:15:11,009 Tienen que ir ahí obligatoriamente, ¿vale? 333 00:15:15,179 --> 00:15:18,620 Bueno, pues entonces, aquí una vez arreglado el seguro de compilación, 334 00:15:19,179 --> 00:15:23,440 este nos dice, cuidado que el scan nunca lo cierras. 335 00:15:24,460 --> 00:15:26,299 Da igual, pero vamos a ver lo que significa. 336 00:15:26,299 --> 00:15:34,139 A ver, scan es un objeto, es una variable que hemos declarado de un tipo que no es primitivo, no es sin, no es dable, no es nada. 337 00:15:34,899 --> 00:15:39,100 Entonces, es que este es un tipo que ya está hecho, que es el tipo scanner, que es un tipo objeto. 338 00:15:39,980 --> 00:15:42,679 Recordad lo que dijimos que eran los tipos objetos del otro día. 339 00:15:43,919 --> 00:15:53,980 Entonces, este tipo objeto, como todos los objetos, tiene un montón de cosas dentro y además es capaz de llamar a código, como dijimos de los objetos el otro día. 340 00:15:53,980 --> 00:16:05,559 De hecho, este objeto scan es capaz de llamar al código, lee un entero, lee un decimal, o sea, es un objeto muy complejo, más que el string, que solamente son un montón de caracteres y ya está, este es más complejo. 341 00:16:06,159 --> 00:16:17,379 Bueno, pues este es tan complejo que cuando llama esos códigos, lo que hace es, como ya sabemos, automáticamente abre un flujo con el buffer del teclado, 342 00:16:17,379 --> 00:16:20,340 donde está lo que nosotros hemos escrito 343 00:16:20,340 --> 00:16:22,139 ahí está en el buffer hardware 344 00:16:22,139 --> 00:16:22,759 ahí puesto 345 00:16:22,759 --> 00:16:26,139 y de ese buffer saca lo que hay 346 00:16:26,139 --> 00:16:28,580 y lo guarda en una variable 347 00:16:28,580 --> 00:16:30,139 java para que nosotros 348 00:16:30,139 --> 00:16:31,960 ya lo cojamos y se lo demos 349 00:16:31,960 --> 00:16:34,320 a nuestra propia variable mediante una asignación 350 00:16:34,320 --> 00:16:34,919 o lo que sea 351 00:16:34,919 --> 00:16:38,440 entonces parte de lo que hace es conectarse 352 00:16:38,440 --> 00:16:40,000 a un recurso hardware externo 353 00:16:40,000 --> 00:16:40,580 como el buffer 354 00:16:40,580 --> 00:16:44,320 cuando java 355 00:16:44,320 --> 00:16:45,580 no solo mediante este objeto 356 00:16:45,580 --> 00:16:47,899 sino mediante muchos otros objetos que ya veremos 357 00:16:47,899 --> 00:16:50,200 se apodera de un recurso 358 00:16:50,200 --> 00:16:51,779 como el buffer del teclado 359 00:16:51,779 --> 00:16:53,320 como un fichero para sacar datos de él 360 00:16:53,320 --> 00:16:54,120 lo deja bloqueado 361 00:16:54,120 --> 00:16:56,980 y lo va a dejar así bloqueado 362 00:16:56,980 --> 00:16:58,860 hasta que no lo cerremos 363 00:16:58,860 --> 00:17:00,899 y digamos, uy, objeto cerrado 364 00:17:00,899 --> 00:17:03,379 con una cosa closed ya no nos importa 365 00:17:03,379 --> 00:17:05,200 entonces te dice, cuidado 366 00:17:05,200 --> 00:17:07,680 que desde el momento en que has creado esto 367 00:17:07,680 --> 00:17:10,079 te estás apoderando del buffer del teclado 368 00:17:10,079 --> 00:17:11,200 y lo has dejado bloqueado 369 00:17:11,200 --> 00:17:12,920 ¿nos importa? 370 00:17:12,920 --> 00:17:15,660 No nos importa porque no hay ningún otro programa 371 00:17:15,660 --> 00:17:18,000 Ejecutándose en paralelo que use el teclado 372 00:17:18,000 --> 00:17:20,079 Nosotros ejecutamos nuestro programa 373 00:17:20,079 --> 00:17:21,099 Y somos los 374 00:17:21,099 --> 00:17:23,720 Y somos los únicos 375 00:17:23,720 --> 00:17:25,140 Que estamos escribiendo en el teclado 376 00:17:25,140 --> 00:17:27,059 Cuando estamos ejecutando el programa, no nos importa 377 00:17:27,059 --> 00:17:29,220 Que lo deje bloqueado, nos da igual 378 00:17:29,220 --> 00:17:30,940 Por eso no lo cerramos 379 00:17:30,940 --> 00:17:33,940 Y porque tampoco entendemos muy bien 380 00:17:33,940 --> 00:17:35,660 Que hacemos cuando lo cerramos, etc 381 00:17:35,660 --> 00:17:37,759 Y no lo estamos usando sin entender este objeto 382 00:17:37,759 --> 00:17:39,599 Solo porque lo necesitamos para hablar del teclado 383 00:17:39,599 --> 00:17:41,839 Pero bueno, que sepáis que es lo que nos dice 384 00:17:41,839 --> 00:17:42,680 ¿Por qué nos dice eso? 385 00:17:43,660 --> 00:17:48,200 Que lo deje bloqueado no es problema porque en cuanto el programa termina, 386 00:17:48,319 --> 00:17:51,019 que el programa termina en las cuatro líneas que tiene, 387 00:17:51,619 --> 00:17:55,900 automáticamente todas las variables que tuviera desaparecen, entre ellas esta. 388 00:17:56,859 --> 00:17:59,039 Entonces el buffer se queda liberado. 389 00:17:59,039 --> 00:18:03,579 En cuanto el programa termina, ya está, este objeto ha desaparecido, el buffer se queda liberado. 390 00:18:03,640 --> 00:18:06,180 El problema sería que este programa no terminará nunca, 391 00:18:06,180 --> 00:18:08,599 Estuviera ahí todo el rato con el scan 392 00:18:08,599 --> 00:18:11,299 Y efectivamente el buffer del teclado 393 00:18:11,299 --> 00:18:13,599 Estaría ahí enganchado a este scan 394 00:18:13,599 --> 00:18:15,140 Y si otro hilo 395 00:18:15,140 --> 00:18:16,920 Tiene que usarlo, pues no podría 396 00:18:16,920 --> 00:18:18,339 Pero no es nuestra situación 397 00:18:18,339 --> 00:18:20,539 Así que podemos ignorar ese warning 398 00:18:20,539 --> 00:18:23,400 Vale, pues entonces, creamos el scan 399 00:18:23,400 --> 00:18:25,079 Vamos a leer 400 00:18:25,079 --> 00:18:26,660 El número de usuarios 401 00:18:26,660 --> 00:18:32,900 Este sistema, no sé qué hace aquí 402 00:18:32,900 --> 00:18:34,579 Vale 403 00:18:34,579 --> 00:18:38,460 Vamos a decirle aquí 404 00:18:38,460 --> 00:18:41,680 Así que iba yo a poner 405 00:18:41,680 --> 00:18:43,079 Introduzca número de usuarios 406 00:18:43,079 --> 00:18:43,980 Por eso está así 407 00:18:43,980 --> 00:18:49,579 Introduzca número 408 00:18:49,579 --> 00:18:52,279 De usuarios 409 00:18:52,279 --> 00:18:54,279 Vale 410 00:18:54,279 --> 00:18:56,880 Pues venga, número de usuarios 411 00:18:56,880 --> 00:18:58,880 Que sea igual a 412 00:18:58,880 --> 00:19:03,099 Scan.nextint 413 00:19:03,099 --> 00:19:04,140 Ala, ya está 414 00:19:04,140 --> 00:19:07,039 Ya sabemos como funciona esta sentencia 415 00:19:07,039 --> 00:19:07,740 Deja 416 00:19:07,740 --> 00:19:10,200 Al programa ahí cruzado de brazos 417 00:19:10,200 --> 00:19:12,400 esperando que llegue un número 418 00:19:12,400 --> 00:19:13,599 y cuando ese número llega 419 00:19:13,599 --> 00:19:16,140 lo recoge del buffer y lo guarda en la 420 00:19:16,140 --> 00:19:17,460 variable que le estamos asignando 421 00:19:17,460 --> 00:19:20,259 vale 422 00:19:20,259 --> 00:19:23,839 bueno pues ya está, este es el número de usuarios 423 00:19:23,839 --> 00:19:26,180 entonces, puede ser 424 00:19:26,180 --> 00:19:28,039 que ahora de repente el programa haga cosas 425 00:19:28,039 --> 00:19:28,640 bla bla bla 426 00:19:28,640 --> 00:19:32,180 y el número de usuarios aumente, me llegan usuarios 427 00:19:32,180 --> 00:19:32,599 nuevos 428 00:19:32,599 --> 00:19:35,640 vale, llegan usuarios nuevos 429 00:19:35,640 --> 00:19:36,420 por ejemplo 430 00:19:36,420 --> 00:19:58,869 vale, pues vamos a 431 00:19:58,869 --> 00:20:02,339 guardarlos aquí 432 00:20:02,339 --> 00:20:11,819 vale 433 00:20:11,819 --> 00:20:21,019 bueno, pues entonces, ahora yo que quiero hacer 434 00:20:21,019 --> 00:20:22,759 lo que yo quiero hacer ahora es 435 00:20:22,759 --> 00:20:25,160 actualizar esta variable 436 00:20:25,160 --> 00:20:28,319 para que se incremente 437 00:20:28,319 --> 00:20:30,700 en esta nueva cantidad 438 00:20:30,700 --> 00:20:32,839 vale, tengo dos variables diferentes 439 00:20:32,839 --> 00:20:34,259 primera 440 00:20:34,259 --> 00:20:35,839 mi número de usuarios original 441 00:20:35,839 --> 00:20:38,680 segunda, el incremento 442 00:20:38,680 --> 00:20:40,779 son dos datos distintos, mi número de usuarios 443 00:20:40,779 --> 00:20:42,259 original y el incremento 444 00:20:42,259 --> 00:20:53,759 Y ahora quiero que mi variable original se quede actualizada, se quede pisada con el valor que tenía antiguo más el incremento nuevo. 445 00:20:54,339 --> 00:20:54,920 ¿Vale? 446 00:20:56,039 --> 00:20:59,400 Entonces, ¿qué sentencia haríais aquí para conseguir eso? 447 00:20:59,940 --> 00:21:06,660 Que a la variable en un usuario se le asigne el valor que tenía de antes más el incremento. 448 00:21:08,670 --> 00:21:09,710 ¿Alguien me la dicta? 449 00:21:11,700 --> 00:21:12,240 ¿Perdón? 450 00:21:15,839 --> 00:21:18,220 No, más o igual no quiero que me uséis. 451 00:21:18,240 --> 00:21:19,980 Quiero que me uséis los operadores que conocemos 452 00:21:19,980 --> 00:21:21,299 Y la asignación que conocemos 453 00:21:21,299 --> 00:21:25,420 ¿Eh? ¿Qué alguien me diste? 454 00:21:27,599 --> 00:21:28,259 Num más 455 00:21:28,259 --> 00:21:31,960 Pero num no existe 456 00:21:31,960 --> 00:21:34,460 Número de usuarios más el otro 457 00:21:34,460 --> 00:21:40,019 Número de usuarios 458 00:21:40,019 --> 00:21:42,019 Más el otro 459 00:21:42,019 --> 00:21:45,319 Vale, pero esto 460 00:21:45,319 --> 00:21:45,960 ¿Qué hago con esto? 461 00:21:53,619 --> 00:21:55,859 Vale, pero yo quiero que este valor 462 00:21:55,859 --> 00:21:57,660 Que es el número de usuarios 463 00:21:57,660 --> 00:22:02,140 Yo quiero que este valor 464 00:22:02,140 --> 00:22:04,359 Que era el antiguo 465 00:22:04,359 --> 00:22:05,779 Más este num nuevos 466 00:22:05,779 --> 00:22:07,440 Que es el incremento 467 00:22:07,440 --> 00:22:08,900 ¿Dónde quiero que vaya este valor? 468 00:22:09,839 --> 00:22:11,519 Con lo cual ¿A quién se lo asigno? 469 00:22:12,420 --> 00:22:13,220 Vale, pues entonces 470 00:22:13,220 --> 00:22:14,220 Esto 471 00:22:14,220 --> 00:22:19,359 Usuarios 472 00:22:19,359 --> 00:22:22,119 Vale, esta sería la sentencia 473 00:22:22,119 --> 00:22:22,880 Que haría, ¿verdad? 474 00:22:25,339 --> 00:22:26,740 La máquina virtual ¿Qué hace? 475 00:22:26,940 --> 00:22:27,980 Lo primero de todo 476 00:22:27,980 --> 00:22:29,940 Se va a la derecha 477 00:22:29,940 --> 00:22:30,960 A ver la expresión 478 00:22:30,960 --> 00:22:32,539 A quien se le asigne 479 00:22:32,539 --> 00:22:34,079 Ahora mismo no le importa nada 480 00:22:34,079 --> 00:22:36,619 Recordad que siempre trabaja así 481 00:22:36,619 --> 00:22:38,680 Cuando ve una asignación 482 00:22:38,680 --> 00:22:40,720 Cuando ve una asignación 483 00:22:40,720 --> 00:22:43,279 Primero se va a la derecha 484 00:22:43,279 --> 00:22:45,039 A hacer la operación 485 00:22:45,039 --> 00:22:47,039 La operación es 486 00:22:47,039 --> 00:22:48,920 Uy, la suma de dos variables 487 00:22:48,920 --> 00:22:52,220 Vale, pues me cojo la primera variable 488 00:22:52,220 --> 00:22:54,599 Que es efectivamente el número antiguo 489 00:22:54,599 --> 00:22:55,319 Lo que tenga 490 00:22:55,319 --> 00:22:57,500 Me cojo la segunda variable 491 00:22:57,500 --> 00:22:59,440 que es el incremento, hago la suma 492 00:22:59,440 --> 00:23:00,900 y me da el valor 493 00:23:00,900 --> 00:23:03,400 si numu usuarios originalmente 494 00:23:03,400 --> 00:23:04,279 tenía 7 495 00:23:04,279 --> 00:23:07,240 y el incremento es 2 496 00:23:07,240 --> 00:23:09,000 pues efectivamente 497 00:23:09,000 --> 00:23:11,380 el número de usuarios original que era 7 498 00:23:11,380 --> 00:23:13,200 más el incremento 2 me da 9 499 00:23:13,200 --> 00:23:15,579 entonces se le evalúa su expresión y ya está 500 00:23:15,579 --> 00:23:17,240 y cuando ya todo eso está terminado 501 00:23:17,240 --> 00:23:19,619 ahora ya dice, ¿y ahora qué hago con esto? 502 00:23:20,059 --> 00:23:21,579 pues ahora ya se va 503 00:23:21,579 --> 00:23:23,019 a la izquierda a ver qué hace con eso 504 00:23:23,019 --> 00:23:24,839 y dice, ah, que lo quieres en numu usuarios 505 00:23:24,839 --> 00:23:26,819 muy bien, pues 506 00:23:26,819 --> 00:23:29,500 pisó el valor anterior 507 00:23:29,500 --> 00:23:31,380 antes tenía 7 numus 508 00:23:31,380 --> 00:23:32,539 usuarios, pisado 509 00:23:32,539 --> 00:23:34,940 ahora se queda en 9 510 00:23:34,940 --> 00:23:38,859 ¿vale? entonces 511 00:23:38,859 --> 00:23:40,960 no hay problema 512 00:23:40,960 --> 00:23:41,819 lógicamente 513 00:23:41,819 --> 00:23:44,839 cuando asignamos a 514 00:23:44,839 --> 00:23:47,140 una variable una expresión 515 00:23:47,140 --> 00:23:48,819 que involucra la propia variable 516 00:23:48,819 --> 00:23:50,119 de hecho 517 00:23:50,119 --> 00:23:52,500 es lo natural porque las variables 518 00:23:52,500 --> 00:23:55,019 las podemos modificar normalmente 519 00:23:55,019 --> 00:23:56,319 para que cambien su valor 520 00:23:56,319 --> 00:23:58,420 y a veces esa modificación 521 00:23:58,420 --> 00:24:00,220 depende del valor antiguo. 522 00:24:01,740 --> 00:24:02,940 Entonces, la modificación 523 00:24:02,940 --> 00:24:04,839 del nuevo valor de esta variable 524 00:24:04,839 --> 00:24:06,140 depende del valor antiguo. 525 00:24:06,319 --> 00:24:07,680 Es el antiguo más 2. 526 00:24:08,019 --> 00:24:09,019 Depende del valor antiguo. 527 00:24:09,119 --> 00:24:10,079 Esto es como cuando hacemos 528 00:24:10,079 --> 00:24:11,420 esta operación, 529 00:24:11,579 --> 00:24:12,660 esta función matemática. 530 00:24:13,640 --> 00:24:15,180 fx igual a x más 2. 531 00:24:15,660 --> 00:24:18,059 El nuevo valor es el antiguo más 2. 532 00:24:18,519 --> 00:24:20,779 El nuevo valor es el antiguo más 2. 533 00:24:20,880 --> 00:24:21,779 Que el antiguo es 10, 534 00:24:22,480 --> 00:24:23,420 pues el nuevo será 12. 535 00:24:24,079 --> 00:24:25,380 Que el antiguo es 8, 536 00:24:25,380 --> 00:24:27,539 pues el nuevo será 10, ¿vale? 537 00:24:28,660 --> 00:24:31,059 Entonces, muchas veces, repito, 538 00:24:31,960 --> 00:24:33,940 una asignación a una variable 539 00:24:33,940 --> 00:24:36,420 se hace a través de una expresión 540 00:24:36,420 --> 00:24:38,460 que involucra la propia variable, no pasa nada. 541 00:24:39,200 --> 00:24:41,700 La máquina virtual cogerá su valor antiguo 542 00:24:41,700 --> 00:24:42,839 para hacer la operación, 543 00:24:43,039 --> 00:24:45,500 cogerá el valor que tenga en ese momento, el antiguo. 544 00:24:46,000 --> 00:24:47,839 Cuando ya ha construido la operación, 545 00:24:48,640 --> 00:24:50,859 pisa ese valor antiguo, lo pisa 546 00:24:50,859 --> 00:24:54,359 y esa variable se queda con el valor nuevo, ¿vale? 547 00:24:55,380 --> 00:24:59,259 El valor antiguo se coge para hacer la evaluación de la expresión. 548 00:25:00,000 --> 00:25:10,279 Cuando ya esté evaluado, automáticamente se pisa ese valor antiguo que hemos cogido para hacer la evaluación, se pisa con el resultante. 549 00:25:11,299 --> 00:25:11,480 ¿Vale? 550 00:25:12,619 --> 00:25:14,920 Entendida esa idea, ¿no? 551 00:25:15,420 --> 00:25:19,920 Y quien dice numusorios más nuevos podría ser numusuarios por dos menos numusuarios. 552 00:25:20,700 --> 00:25:24,900 Podría ser una expresión todo lo compleja que uno quisiera y no pasa nada. 553 00:25:25,380 --> 00:25:36,450 En lugar de esta, pues podríamos tener numUsuarios igual a numUsuarios por 7 menos numUsuarios. 554 00:25:39,089 --> 00:25:43,150 No pasa nada, la máquina virtual dice, ah, vale, voy a hacer esta expresión. 555 00:25:43,769 --> 00:25:52,230 Valor en este momento de numUsuarios por 7 menos valor en este momento de numUsuarios, el original, el antiguo, el que tenga en ese momento. 556 00:25:52,230 --> 00:25:54,730 cuando ya lo he construido 557 00:25:54,730 --> 00:25:57,329 sustituyendo esto por su valor 558 00:25:57,329 --> 00:25:59,130 en ese momento, o sea, el antiguo 559 00:25:59,130 --> 00:26:01,029 en ese momento, cuando ya lo he construido 560 00:26:01,029 --> 00:26:01,890 tengo un nuevo valor 561 00:26:01,890 --> 00:26:05,269 pues ese nuevo valor pisa ese valor 562 00:26:05,269 --> 00:26:07,369 antiguo, ese que he utilizado 563 00:26:07,369 --> 00:26:09,230 aquí, lo pisa con el nuevo 564 00:26:09,230 --> 00:26:10,069 y ya está 565 00:26:10,069 --> 00:26:14,730 bueno, pues entonces 566 00:26:14,730 --> 00:26:17,769 entendida la idea 567 00:26:17,769 --> 00:26:19,529 de que una asignación 568 00:26:19,529 --> 00:26:21,549 a una variable puede, lógicamente 569 00:26:21,549 --> 00:26:22,829 incorporar una expresión 570 00:26:22,829 --> 00:26:25,250 que use esa propia variable 571 00:26:25,250 --> 00:26:26,910 pues ahora ya 572 00:26:26,910 --> 00:26:29,210 ahí podemos usar 573 00:26:29,210 --> 00:26:31,289 para hacer esto mismo un operador 574 00:26:31,289 --> 00:26:33,349 que nos lo hace más abreviado 575 00:26:33,349 --> 00:26:35,789 es decir 576 00:26:35,789 --> 00:26:37,490 hay una situación que podemos hacer mucho 577 00:26:37,490 --> 00:26:38,470 que es a una variable 578 00:26:38,470 --> 00:26:40,589 la incremento con una cantidad 579 00:26:40,589 --> 00:26:43,509 o a una variable la decremento con una cantidad 580 00:26:43,509 --> 00:26:44,910 como eso es algo que hacemos mucho 581 00:26:44,910 --> 00:26:47,470 por ejemplo aquí, a esta variable 582 00:26:47,470 --> 00:26:48,690 la he incrementado con esta 583 00:26:48,690 --> 00:26:51,829 o podría hacer esto otro, ahora vamos a decrementarlo 584 00:26:51,829 --> 00:26:55,650 Al valor que me ha quedado 585 00:26:55,650 --> 00:26:59,839 Lo decremento 586 00:26:59,839 --> 00:27:07,039 ¿Vale? Como esto es algo que hacemos mucho 587 00:27:07,039 --> 00:27:09,079 Incrementar con una cantidad 588 00:27:09,079 --> 00:27:11,000 Una variable para actualizar 589 00:27:11,000 --> 00:27:12,200 Con el nuevo valor 590 00:27:12,200 --> 00:27:13,680 O decrementarlo 591 00:27:13,680 --> 00:27:15,420 Pues esta expresión 592 00:27:15,420 --> 00:27:18,480 Se puede abreviar 593 00:27:18,480 --> 00:27:20,500 Esta expresión se puede abreviar 594 00:27:20,500 --> 00:27:22,420 Entonces, esta misma expresión de arriba 595 00:27:22,420 --> 00:27:27,839 Otra forma de escribir 596 00:27:27,839 --> 00:27:28,480 Esto mismo 597 00:27:28,480 --> 00:27:32,980 Sería esto 598 00:27:32,980 --> 00:27:34,740 num 599 00:27:34,740 --> 00:27:36,740 usuarios 600 00:27:36,740 --> 00:27:38,680 más igual 601 00:27:38,680 --> 00:27:40,619 num nuevos 602 00:27:40,619 --> 00:27:50,099 y en esta de abajo 603 00:27:50,099 --> 00:27:51,839 pues por ejemplo lo mismo 604 00:27:51,839 --> 00:28:00,019 num usuarios menos 605 00:28:00,019 --> 00:28:01,599 igual num nuevos 606 00:28:01,599 --> 00:28:05,980 esta sentencia de arriba 607 00:28:05,980 --> 00:28:08,059 y esta sentencia de abajo 608 00:28:08,059 --> 00:28:10,000 son la misma, idéntica 609 00:28:10,000 --> 00:28:11,720 me da igual usar una 610 00:28:11,720 --> 00:28:12,700 que usar la otra 611 00:28:12,700 --> 00:28:14,740 y aquí igual 612 00:28:14,740 --> 00:28:15,819 ¿vale? 613 00:28:17,859 --> 00:28:20,819 O sea, quedaba ahí el cursor puesto. 614 00:28:21,519 --> 00:28:21,640 Vale. 615 00:28:23,930 --> 00:28:25,670 Entonces, cuando vemos un más igual, 616 00:28:26,289 --> 00:28:31,089 un más igual lo vemos siempre, ¿vale? 617 00:28:31,910 --> 00:28:34,170 Después de una variable a la que estamos asignando algo. 618 00:28:34,589 --> 00:28:38,970 Vemos una variable cualquiera, n más igual, lo que sea. 619 00:28:40,269 --> 00:28:42,109 Pues entonces, cuando vemos un más igual, 620 00:28:43,289 --> 00:28:47,269 siempre tenemos que operar, que pensar, para no olvidarnos. 621 00:28:47,269 --> 00:28:50,970 Cuando vemos un más igual en una asignación, n más igual, lo que sea. 622 00:28:51,509 --> 00:28:53,430 pues lo que tenemos que hacer es 623 00:28:53,430 --> 00:28:54,849 tapar el igual 624 00:28:54,849 --> 00:28:56,309 tapamos el igual 625 00:28:56,309 --> 00:28:58,250 y nos quedará una expresión 626 00:28:58,250 --> 00:29:01,549 hacemos esta expresión 627 00:29:01,549 --> 00:29:04,250 y cuando tengamos el resultado 628 00:29:04,250 --> 00:29:07,269 la asignación se hace 629 00:29:07,269 --> 00:29:09,289 a la variable 630 00:29:09,289 --> 00:29:11,230 que está justo delante del más igual 631 00:29:11,230 --> 00:29:13,509 es la forma de entender 632 00:29:13,509 --> 00:29:14,289 este operador 633 00:29:14,289 --> 00:29:16,730 porque nos lo podemos encontrar 634 00:29:16,730 --> 00:29:18,109 teniendo aquí a la derecha 635 00:29:18,109 --> 00:29:20,990 cosas más largas y más grandes 636 00:29:20,990 --> 00:29:22,730 no solo una variable, ¿vale? 637 00:29:23,970 --> 00:29:24,970 Entonces, para entender 638 00:29:24,970 --> 00:29:26,630 esa expresión que estamos mirando, 639 00:29:27,589 --> 00:29:29,049 pues, lo más fácil es 640 00:29:29,049 --> 00:29:31,049 nos olvidamos del igual 641 00:29:31,049 --> 00:29:33,109 porque la asignación es lo que se hace al final, 642 00:29:33,269 --> 00:29:35,069 eso ya lo sabemos, la asignación se hace al final. 643 00:29:35,769 --> 00:29:36,869 Primero se hace la expresión, 644 00:29:37,670 --> 00:29:38,869 pues nos olvidamos del igual 645 00:29:38,869 --> 00:29:41,009 y nos va a quedar una expresión, ¿verdad? 646 00:29:41,109 --> 00:29:42,289 Nos va a quedar aquí una expresión. 647 00:29:44,809 --> 00:29:46,710 Se hace la expresión, cuando la expresión 648 00:29:46,710 --> 00:29:49,029 esté, ese resultado 649 00:29:49,029 --> 00:29:51,109 final, ¿dónde lo meto? 650 00:29:51,109 --> 00:29:53,289 pues lo metemos 651 00:29:53,289 --> 00:29:55,750 en aquello que esté a la izquierda 652 00:29:55,750 --> 00:29:57,769 del más igual, así es como 653 00:29:57,769 --> 00:29:59,630 va a actuar la máquina virtual cuando ve 654 00:29:59,630 --> 00:30:01,349 un más igual, ¿vale? así es como va a actuar 655 00:30:01,349 --> 00:30:03,710 ¿vale? porque aquí 656 00:30:03,710 --> 00:30:05,250 repito, podría haber una cosa 657 00:30:05,250 --> 00:30:07,829 más complicada, numu usuarios 658 00:30:07,829 --> 00:30:08,430 más igual 659 00:30:08,430 --> 00:30:10,750 no pasa nada 660 00:30:10,750 --> 00:30:13,650 significa, oye, a ver, numu 661 00:30:13,650 --> 00:30:15,650 usuarios más num nuevos, es la expresión que me 662 00:30:15,650 --> 00:30:17,589 ha quedado, ¿vale? ¿qué hago ahora 663 00:30:17,589 --> 00:30:19,170 con numu usuarios más num nuevos? 664 00:30:19,170 --> 00:30:21,269 Quito esto, ah vale 665 00:30:21,269 --> 00:30:24,650 Va a la variable que está a la izquierda 666 00:30:24,650 --> 00:30:29,119 Y lo mismo con menos igual 667 00:30:29,119 --> 00:30:31,319 Y con por igual 668 00:30:31,319 --> 00:30:33,279 Con división igual 669 00:30:33,279 --> 00:30:35,960 Son formas de abreviar 670 00:30:35,960 --> 00:30:40,460 Expresiones que involucran a la misma variable a la que lo asigno 671 00:30:41,720 --> 00:30:42,359 ¿Vale? 672 00:30:43,119 --> 00:30:44,420 Al tapar esto 673 00:30:44,420 --> 00:30:47,000 Aparece una expresión en la que está esta variable 674 00:30:47,000 --> 00:30:49,019 Operamos 675 00:30:49,019 --> 00:30:51,359 ¿Y el resultado final a quién va? 676 00:30:51,720 --> 00:30:53,019 Pues a esa misma variable 677 00:30:53,019 --> 00:31:02,240 Entonces, pues hombre, es muy común 678 00:31:02,240 --> 00:31:04,660 Lógicamente que los usemos porque son muy cómodos 679 00:31:04,660 --> 00:31:06,720 Cuando sobre una misma variable 680 00:31:06,720 --> 00:31:08,519 Guardamos el resultado 681 00:31:08,519 --> 00:31:11,000 De una expresión en la que la hemos usado 682 00:31:11,000 --> 00:31:12,140 Que la involucra a ella 683 00:31:12,140 --> 00:31:19,019 ¿Vale? 684 00:31:20,700 --> 00:31:21,640 Entonces, x más 685 00:31:21,640 --> 00:31:29,460 Bueno 686 00:31:29,460 --> 00:31:32,039 Ninguna duda, ¿no? 687 00:31:32,039 --> 00:31:33,920 Aquí hay nada, breves explicaciones 688 00:31:33,920 --> 00:31:35,140 Chorras y ya está 689 00:31:35,140 --> 00:31:44,799 Entonces, esa abreviatura con el igual 690 00:31:44,799 --> 00:31:48,180 Se puede hacer con cualquier otro operador 691 00:31:48,180 --> 00:31:49,640 No solo con los aritméticos 692 00:31:49,640 --> 00:31:53,900 Por eso he puesto aquí esta tabla 693 00:31:53,900 --> 00:31:56,880 Pero bueno, es que estos operadores de aquí abajo 694 00:31:56,880 --> 00:31:58,799 Este desplazamiento de bits 695 00:31:58,799 --> 00:32:00,819 El an, el or y el sort de bits 696 00:32:00,819 --> 00:32:02,440 Estos no los hemos visto todavía 697 00:32:02,440 --> 00:32:05,440 Pero lo que quiero poner aquí es que con cualquier otro operador 698 00:32:05,440 --> 00:32:07,000 Que haga cosas con variables 699 00:32:07,000 --> 00:32:08,579 No solo los aritméticos 700 00:32:08,579 --> 00:32:10,319 Cualquier otro que haga cosas con variables 701 00:32:10,319 --> 00:32:13,559 Se puede usar la abreviatura con igual 702 00:32:13,559 --> 00:32:17,259 Y siempre será igual 703 00:32:17,259 --> 00:32:19,400 uno, que me encuentro 704 00:32:19,400 --> 00:32:21,140 esta operación, aunque ahora mismo no sepamos 705 00:32:21,140 --> 00:32:22,559 lo que significa esta operación 706 00:32:22,559 --> 00:32:24,599 pues que es lo que es realmente 707 00:32:24,599 --> 00:32:27,180 es como si el igual no existiera 708 00:32:27,180 --> 00:32:29,599 me queda una expresión 709 00:32:29,599 --> 00:32:31,180 evalúo esa expresión 710 00:32:31,180 --> 00:32:35,049 y el resultado va a la variable de la izquierda 711 00:32:35,049 --> 00:32:36,789 aquí igual me encuentro este 712 00:32:36,789 --> 00:32:37,869 que significa esto 713 00:32:37,869 --> 00:32:40,490 pues esto es como si el igual no existiera 714 00:32:40,490 --> 00:32:42,529 me encuentro una expresión que es el 715 00:32:42,529 --> 00:32:43,430 a and b 716 00:32:43,430 --> 00:32:46,509 y ahora el a and b una vez evaluado 717 00:32:46,509 --> 00:32:48,569 donde va, pues la variable de la izquierda 718 00:32:48,569 --> 00:32:50,670 es una manera de 719 00:32:50,670 --> 00:32:54,109 simplificar 720 00:32:54,109 --> 00:32:56,069 ahora de escribir, simplificar código 721 00:32:56,069 --> 00:32:57,930 a la máquina virtual le da igual como lo escribamos 722 00:32:57,930 --> 00:32:59,130 lo que hace es lo mismo 723 00:32:59,130 --> 00:33:01,970 va a hacer lo mismo, todo esto son cuestiones 724 00:33:01,970 --> 00:33:03,890 de que el código sea un poquito más claro 725 00:33:03,890 --> 00:33:04,710 y más legible 726 00:33:04,710 --> 00:33:07,690 y ver x más igual 3 727 00:33:07,690 --> 00:33:10,490 rápidamente vemos, a x le incremento 3 728 00:33:10,490 --> 00:33:12,349 x igual a x más 3 729 00:33:12,349 --> 00:33:13,829 no sé, es como más feo 730 00:33:13,829 --> 00:33:15,789 estamos como menos acostumbrados a verlo 731 00:33:15,789 --> 00:33:17,809 y lo vemos y decimos 732 00:33:17,809 --> 00:33:19,849 Uy, qué feo, x igual a x más 3 733 00:33:19,849 --> 00:33:22,069 Y toda la vida lo he visto x más igual 3 734 00:33:22,069 --> 00:33:24,230 Es eso en realidad 735 00:33:24,230 --> 00:33:24,990 No es más que eso 736 00:33:24,990 --> 00:33:29,910 Bueno, sobre esta forma de abreviar 737 00:33:29,910 --> 00:33:30,609 Alguna duda 738 00:33:30,609 --> 00:33:33,289 Nothing, de nothing 739 00:33:33,289 --> 00:33:35,910 Vale, el operador más 740 00:33:35,910 --> 00:33:37,690 Cuidadín, que ahora ya sí que sí 741 00:33:37,690 --> 00:33:38,609 ¿Vale? 742 00:33:39,190 --> 00:33:42,210 El operador más, que nos volvemos a él 743 00:33:42,210 --> 00:33:45,940 Hemos dicho 744 00:33:45,940 --> 00:33:48,180 El operador más de toda la vida, ¿para qué nos vale? 745 00:33:49,400 --> 00:33:50,259 Pues para sumar 746 00:33:50,259 --> 00:33:51,960 Números, ¿verdad? 747 00:33:52,480 --> 00:33:58,640 El operador más nos vale para sumar numeritos 748 00:33:58,640 --> 00:33:59,640 Para eso nos vale 749 00:33:59,640 --> 00:34:01,059 Y hemos dicho 750 00:34:01,059 --> 00:34:04,039 Me da igual que los números sean decimales o enteros 751 00:34:04,039 --> 00:34:05,160 O incluso mezcla 752 00:34:05,160 --> 00:34:08,519 Porque va a hacer la suma natural, aritmética, algebraica 753 00:34:08,519 --> 00:34:09,579 De toda la vida y ya está 754 00:34:09,579 --> 00:34:12,059 Pero el operador más 755 00:34:12,059 --> 00:34:15,820 Tiene una funcionalidad añadida 756 00:34:15,820 --> 00:34:17,960 Que no tienen los demás 757 00:34:17,960 --> 00:34:19,059 Tiene una funcionalidad añadida 758 00:34:19,059 --> 00:34:20,420 Y es que el operador más 759 00:34:20,420 --> 00:34:24,699 Puede llevar también objetos string a los lados 760 00:34:24,699 --> 00:34:25,760 No solo números 761 00:34:25,760 --> 00:34:26,980 No solo números 762 00:34:26,980 --> 00:34:29,019 ¿Vale? 763 00:34:29,699 --> 00:34:34,880 Es decir, vamos a ponerlo aquí para que se quede grabado 764 00:34:34,880 --> 00:34:35,500 A ver 765 00:34:35,500 --> 00:34:38,059 Vamos a ponerlo aquí 766 00:34:38,059 --> 00:34:47,150 Operador más con cadenas 767 00:34:47,150 --> 00:34:53,059 Vale, pues vamos a imaginarnos que tenemos una variable string 768 00:34:53,059 --> 00:34:55,719 Nombre 1 769 00:34:55,719 --> 00:34:59,340 en lugar de leerlo por teclado 770 00:34:59,340 --> 00:35:01,679 que es más lento 771 00:35:01,679 --> 00:35:03,199 pues nada, venga 772 00:35:03,199 --> 00:35:05,360 vale 773 00:35:05,360 --> 00:35:07,800 a mi string yo le puedo 774 00:35:07,800 --> 00:35:09,820 asignar directamente una cadena de texto 775 00:35:09,820 --> 00:35:11,659 entrecomillada doble 776 00:35:11,659 --> 00:35:12,840 porque eso es un string 777 00:35:12,840 --> 00:35:16,789 otro string 778 00:35:16,789 --> 00:35:21,909 nombre 2 779 00:35:21,909 --> 00:35:26,400 vale 780 00:35:26,400 --> 00:35:29,159 pues resulta 781 00:35:29,159 --> 00:35:31,260 que el operador más 782 00:35:31,260 --> 00:35:33,699 también se puede usar con 783 00:35:33,699 --> 00:35:39,300 operadores con operandos que sean cadenas no sólo números y cuando son 784 00:35:39,300 --> 00:35:45,840 cadenas que hace con ellos las concatena es el operador concatenación 785 00:35:45,840 --> 00:35:58,389 entonces cuando el operador más se usa con operandos string funciona como 786 00:35:58,389 --> 00:36:08,679 concatenación de texto lo cual nos es muy útil también a veces por ejemplo si 787 00:36:08,679 --> 00:36:10,539 yo hago 788 00:36:10,539 --> 00:36:12,860 nombre1 más nombre2 789 00:36:12,860 --> 00:36:14,619 esta operación es 790 00:36:14,619 --> 00:36:17,000 perfectamente válida, está concatenando 791 00:36:17,000 --> 00:36:18,940 nombre1 y nombre2 792 00:36:18,940 --> 00:36:19,639 su contenido 793 00:36:19,639 --> 00:36:22,739 el resultado de una concatenación de cadenas 794 00:36:22,739 --> 00:36:24,579 es otra cadena 795 00:36:24,579 --> 00:36:26,559 luego esto donde tiene que ir, tiene que ir 796 00:36:26,559 --> 00:36:27,760 a algún lado, no lo puedo dejar así 797 00:36:27,760 --> 00:36:29,760 pues por ejemplo 798 00:36:29,760 --> 00:36:32,659 vamos a ponerlo en un 799 00:36:32,659 --> 00:36:33,780 string nombre3 800 00:36:33,780 --> 00:36:45,780 ¿cómo? 801 00:36:46,780 --> 00:36:47,340 aquí 802 00:36:47,340 --> 00:36:55,880 Bueno, a ver, nuevos y no usuarios, los dos son int 803 00:36:55,880 --> 00:37:01,980 No, ¿por qué? 804 00:37:02,539 --> 00:37:04,559 Esta es la expresión esta de aquí 805 00:37:04,559 --> 00:37:06,440 Tú tienes ya las variables declaradas 806 00:37:06,440 --> 00:37:08,820 Esta variable menos esta otra 807 00:37:08,820 --> 00:37:09,840 Se lo guardo en esta 808 00:37:09,840 --> 00:37:12,360 Y esta es otra forma de escribirlo de arriba 809 00:37:12,360 --> 00:37:13,940 Aquí ya el tipo de edad 810 00:37:13,940 --> 00:37:16,119 Las variables ya están declaradas con su tipo 811 00:37:16,119 --> 00:37:18,320 Aquí no hay que hacer ninguna referencia a nada 812 00:37:18,320 --> 00:37:20,880 Vale, entonces 813 00:37:20,880 --> 00:37:23,639 Como este involucra 814 00:37:23,639 --> 00:37:25,440 Una cadena 815 00:37:25,440 --> 00:37:26,880 Y otra cadena 816 00:37:26,880 --> 00:37:29,219 El resultado de la concatenación 817 00:37:29,219 --> 00:37:30,719 Tiene que ir a otra cadena 818 00:37:30,719 --> 00:37:32,079 Con lo cual tiene que ir a un string 819 00:37:32,079 --> 00:37:35,300 Y si mostramos ahora nombre 3 820 00:37:35,300 --> 00:37:37,579 Pues veremos 821 00:37:37,579 --> 00:37:38,400 Efectivamente 822 00:37:38,400 --> 00:37:40,179 Que lo ha concatenado 823 00:37:40,179 --> 00:37:43,559 Vamos a ejecutarlo 824 00:37:43,559 --> 00:37:45,659 Al principio me pide el número este 825 00:37:45,659 --> 00:37:47,800 Para mostrar 826 00:37:47,800 --> 00:37:49,599 Vale 827 00:37:49,599 --> 00:37:57,400 la suma de dos variables string 828 00:37:57,400 --> 00:37:59,360 en realidad es la concatenación 829 00:37:59,360 --> 00:38:01,539 y el resultado por tanto 830 00:38:01,539 --> 00:38:03,039 es una variable string o cadena 831 00:38:03,039 --> 00:38:05,019 y efectivamente hemos visto 832 00:38:05,019 --> 00:38:07,940 que nombre3 me ha guardado eso 833 00:38:07,940 --> 00:38:09,019 ¿vale? 834 00:38:09,599 --> 00:38:11,079 vamos a parar aquí un momento