1 00:00:00,180 --> 00:00:02,759 que como se pone 2 00:00:02,759 --> 00:00:03,879 pues depende de tu teclado 3 00:00:03,879 --> 00:00:05,339 yo lo tengo en 4 00:00:05,339 --> 00:00:08,320 yo lo tengo en los numeritos arriba 5 00:00:08,320 --> 00:00:09,820 con lo cual tengo que poner el shift 6 00:00:09,820 --> 00:00:14,220 vale 7 00:00:14,220 --> 00:00:16,320 bueno pues repito 8 00:00:16,320 --> 00:00:18,160 entonces estos son los operadores aritméticos 9 00:00:18,160 --> 00:00:19,780 que podemos usar con enteros 10 00:00:19,780 --> 00:00:21,420 conociendo 11 00:00:21,420 --> 00:00:23,079 su significado 12 00:00:23,079 --> 00:00:26,280 entonces este es el operador 13 00:00:26,280 --> 00:00:28,199 resto de dividir 14 00:00:28,199 --> 00:00:29,640 este entre este 15 00:00:29,640 --> 00:00:34,020 ¿Vale? Pues los cuatro, los cinco operadores aritméticos básicos 16 00:00:34,020 --> 00:00:36,640 Y operadores aritméticos no hay más 17 00:00:36,640 --> 00:00:39,079 Cualquier otra cosa que uno quiera hacer de aritmética 18 00:00:39,079 --> 00:00:41,460 Porcentajes, factoriales, lo que sea 19 00:00:41,460 --> 00:00:43,240 Tendrá que hacer una función para ello 20 00:00:43,240 --> 00:00:45,859 Si es que no hay una ya hecha que la podamos llamar 21 00:00:45,859 --> 00:00:49,079 No, no hay un operador exponente 22 00:00:49,079 --> 00:00:51,100 Esta no existe, ¿vale? 23 00:00:51,740 --> 00:00:54,399 Que uno quiere hacer esto elevado a esto 24 00:00:54,399 --> 00:00:56,859 O programa una función que lo haga 25 00:00:56,859 --> 00:00:58,399 Que eso ya es otra cosa, funciones 26 00:00:58,399 --> 00:01:01,359 o usa una función que ya esté hecha de alguien que lo haga. 27 00:01:01,439 --> 00:01:02,340 Pero hay que programarlo. 28 00:01:03,159 --> 00:01:05,219 Los únicos operadores que no hay que programar 29 00:01:05,219 --> 00:01:09,140 porque ya te hacen la operación, aritméticos, son estos 5. 30 00:01:09,500 --> 00:01:10,939 Y los podemos usar para expresiones. 31 00:01:11,400 --> 00:01:14,560 Y esas expresiones con paréntesis y teniendo en cuenta 32 00:01:14,560 --> 00:01:17,260 si necesitamos la prioridad de los operadores que hemos dicho. 33 00:01:18,920 --> 00:01:23,340 Bueno, entonces, vamos, aunque sea feo, 34 00:01:23,840 --> 00:01:26,280 para que no estemos, en los programas de prueba que hacemos 35 00:01:26,280 --> 00:01:28,260 se quedan un rollo así, si estamos todo el rato 36 00:01:28,260 --> 00:01:30,879 metiéndolo a capón, vamos a poner 37 00:01:30,879 --> 00:01:32,640 la sentencia para leer 38 00:01:32,640 --> 00:01:34,579 del teclado y así podemos probar 39 00:01:34,579 --> 00:01:36,500 nuestros programas metiendo cada vez 40 00:01:36,500 --> 00:01:38,439 un dato distinto y viendo lo que hace 41 00:01:38,439 --> 00:01:40,400 y no tenemos que estar todo el rato cambiando 42 00:01:40,400 --> 00:01:41,980 el código y metiendo aquí el numerito 43 00:01:41,980 --> 00:01:44,540 ¿no? si yo puedo cambiar esta sentencia 44 00:01:44,540 --> 00:01:46,439 para que esta sentencia sea lee del 45 00:01:46,439 --> 00:01:48,420 teclado, cuando ejecute mi 46 00:01:48,420 --> 00:01:50,359 programa, el mismo programa sin 47 00:01:50,359 --> 00:01:52,359 cambiar el código le podré cambiar cada vez 48 00:01:52,359 --> 00:01:54,159 el dato y es mucho más 49 00:01:54,159 --> 00:01:56,159 operativo y próximo al 50 00:01:56,159 --> 00:01:57,680 uso habitual del código ¿no? 51 00:01:58,260 --> 00:02:11,719 Vale, pues entonces esta clase que se ha quedado aquí chuchurría, ejemplo variables, vamos a hacer otra para en la que vamos a meter cómo es la sentencia de entrada-salida por teclado. 52 00:02:13,280 --> 00:02:25,280 Entonces, si queréis cambiar el nombre de una clase, por ejemplo, yo voy a cambiar esta, como esta ya la voy a dejar así sin tocar y sin meterle más basura, porque la voy a dejar entonces solo ejemplo variables enteras, me interesa cambiarle el nombre, que sea de variables enteras. 53 00:02:25,280 --> 00:02:28,379 entonces, o bien, cambiéis aquí el fichero 54 00:02:28,379 --> 00:02:30,000 y luego os venís aquí 55 00:02:30,000 --> 00:02:31,180 a cambiar el nombre 56 00:02:31,180 --> 00:02:33,560 entonces tenéis que cambiar los dos sitios 57 00:02:33,560 --> 00:02:35,060 si es que es public, si no, no 58 00:02:35,060 --> 00:02:37,639 o podéis 59 00:02:37,639 --> 00:02:41,900 aquí si queréis 60 00:02:41,900 --> 00:02:43,659 cuando queréis cambiar el nombre 61 00:02:43,659 --> 00:02:44,560 de una de estas 62 00:02:44,560 --> 00:02:47,680 porque, pues, botón 63 00:02:47,680 --> 00:02:49,639 derecho, lo digo 64 00:02:49,639 --> 00:02:51,860 porque buscaréis el rename directamente y no existe 65 00:02:51,860 --> 00:02:53,800 botón derecho, refactor 66 00:02:53,800 --> 00:02:55,560 rename 67 00:02:55,560 --> 00:02:58,219 vale, el refactor viene 68 00:02:58,219 --> 00:03:00,500 que está refactorizando, que ahora tampoco entendemos 69 00:03:00,500 --> 00:03:02,379 pero ya entenderemos, si queréis cambiar el nombre 70 00:03:02,379 --> 00:03:04,139 entonces yo ahora voy a cambiar el nombre porque esta clase 71 00:03:04,139 --> 00:03:05,219 la voy a dejar ahí solamente 72 00:03:05,219 --> 00:03:08,719 como clase de ejemplo que hemos usado para variables enteras 73 00:03:08,719 --> 00:03:10,520 pues le voy a cambiar el nombre 74 00:03:10,520 --> 00:03:12,419 y la voy a llamar ejemplo variables 75 00:03:12,419 --> 00:03:13,539 enteras 76 00:03:13,539 --> 00:03:16,319 le cambio el nombre 77 00:03:16,319 --> 00:03:17,240 finish 78 00:03:17,240 --> 00:03:20,080 y ya está, me dice 79 00:03:20,080 --> 00:03:22,060 esto implica bla bla bla, así finish 80 00:03:22,060 --> 00:03:24,400 ala, me ha cambiado 81 00:03:24,400 --> 00:03:26,460 el nombre del fichero y me ha cambiado este 82 00:03:26,460 --> 00:03:30,110 también, bueno pues venga 83 00:03:30,110 --> 00:03:32,169 ya esta clase la dejamos ahí abandonada 84 00:03:32,169 --> 00:03:33,909 como clase que hemos usado 85 00:03:33,909 --> 00:03:36,150 para poner, para ver 86 00:03:36,150 --> 00:03:38,169 como funcionan los tipos de dato entero 87 00:03:38,169 --> 00:03:39,969 byte, short, int y long 88 00:03:39,969 --> 00:03:42,210 byte y short, no hemos declarado 89 00:03:42,210 --> 00:03:44,310 variables byte y short pero se declararían igual 90 00:03:44,310 --> 00:03:46,330 vale, yo puedo declarar una variable 91 00:03:46,330 --> 00:03:49,759 byte, b 92 00:03:49,759 --> 00:03:51,960 y ya está, vale, lo que pasa es que 93 00:03:51,960 --> 00:03:53,139 cuidado con lo que pongo en b 94 00:03:53,139 --> 00:03:56,060 cuidado con lo que pongo en b porque ya sabemos 95 00:03:56,060 --> 00:03:57,979 lo que me va a caber en b, vale 96 00:03:57,979 --> 00:04:00,979 le puedo poner un 1 97 00:04:00,979 --> 00:04:03,379 pero cuidado 98 00:04:03,379 --> 00:04:05,039 como me pase 99 00:04:05,039 --> 00:04:06,979 de lo que me cabe en byte, ya me dice 100 00:04:06,979 --> 00:04:08,479 eso no te cabe en un byte 101 00:04:08,479 --> 00:04:11,419 efectivamente, entonces 102 00:04:11,419 --> 00:04:13,479 cuidadito con 103 00:04:13,479 --> 00:04:15,979 esto, me cabe en un byte 104 00:04:15,979 --> 00:04:17,459 pero como me pase al 1000 105 00:04:17,459 --> 00:04:18,500 ya no 106 00:04:18,500 --> 00:04:21,860 bueno, pero funciona exactamente 107 00:04:21,860 --> 00:04:23,259 igual, todo 108 00:04:23,259 --> 00:04:25,279 lo que hemos dicho entre int y lo, pues igual 109 00:04:25,279 --> 00:04:25,920 con las demás 110 00:04:25,920 --> 00:04:30,680 Vale, pues venga 111 00:04:30,680 --> 00:04:32,899 Vamos a hacer una clase para ver 112 00:04:32,899 --> 00:04:34,759 Lo de la sentencia de leer por teclado 113 00:04:34,759 --> 00:04:36,639 Y así podemos ya hacer programas de ejemplos 114 00:04:36,639 --> 00:04:37,439 Que lean por teclado 115 00:04:37,439 --> 00:04:39,399 Para probar nuestras cosas 116 00:04:39,399 --> 00:04:41,360 Pues venga, me hago yo aquí una nueva 117 00:04:41,360 --> 00:04:43,000 Otra más dentro del paquete 118 00:04:43,000 --> 00:04:46,439 Dentro del paquete 119 00:04:46,439 --> 00:04:48,800 New, class 120 00:04:48,800 --> 00:04:53,019 Lectura 121 00:04:53,019 --> 00:04:55,040 Teclado, por ejemplo 122 00:04:55,040 --> 00:04:56,579 Venga, lectura teclado 123 00:04:56,579 --> 00:04:58,939 Y le voy a poner el 124 00:04:58,939 --> 00:05:01,199 main, le marco la esta 125 00:05:01,199 --> 00:05:03,180 del main para que me lo escriba solo 126 00:05:03,180 --> 00:05:05,240 porque yo me lo sé de memoria 127 00:05:05,240 --> 00:05:06,819 si vosotros no lo sabéis de memoria 128 00:05:06,819 --> 00:05:09,060 pues que nos lo marque y os obligáis a ponerlo 129 00:05:09,060 --> 00:05:17,430 y así no se os olvide, vale 130 00:05:17,430 --> 00:05:19,410 pues vamos a suponer que yo tengo un programa que 131 00:05:19,410 --> 00:05:21,769 vamos a hacer 132 00:05:21,769 --> 00:05:23,310 vamos a hacer un programita 133 00:05:23,310 --> 00:05:27,290 que solicita 134 00:05:27,290 --> 00:05:29,389 un número 135 00:05:29,389 --> 00:05:37,740 entero por 136 00:05:37,740 --> 00:05:38,540 teclado 137 00:05:38,540 --> 00:05:42,000 y muestra 138 00:05:42,000 --> 00:05:44,970 el doble 139 00:05:44,970 --> 00:05:46,709 del valor 140 00:05:46,709 --> 00:05:50,019 esto ya es un programa 141 00:05:50,019 --> 00:05:54,769 bueno, hacer un programa para esto 142 00:05:54,769 --> 00:05:56,649 porque tienes una calculadora 143 00:05:56,649 --> 00:05:58,129 multiplicas por dos o incluso 144 00:05:58,129 --> 00:06:00,449 si uno se sabe la tabla de multiplicar 145 00:06:00,449 --> 00:06:02,470 no sería un problema para el cual 146 00:06:02,470 --> 00:06:04,670 necesita hacer un programa si uno se sabe la tabla 147 00:06:04,670 --> 00:06:05,410 de multiplicar 148 00:06:05,410 --> 00:06:08,310 pero habrá veces 149 00:06:08,310 --> 00:06:10,769 que nuestro problema 150 00:06:10,769 --> 00:06:12,389 no lo podamos hacer de cabeza 151 00:06:12,389 --> 00:06:14,870 entonces en esas situaciones te viene genial hacer un programita 152 00:06:14,870 --> 00:06:16,350 bueno, pues esto ya es un programa 153 00:06:16,350 --> 00:06:18,129 aunque no nos haga falta 154 00:06:18,129 --> 00:06:19,389 porque no sabemos la tabla del 2 155 00:06:19,389 --> 00:06:22,269 pues vamos a hacer un programa 156 00:06:22,269 --> 00:06:23,509 que te resuelve un problema 157 00:06:23,509 --> 00:06:25,569 esto ya sí, repito, es un programa 158 00:06:25,569 --> 00:06:27,910 que sirve para resolver un problema 159 00:06:27,910 --> 00:06:28,970 que se nos ha presentado 160 00:06:28,970 --> 00:06:30,970 porque no sabemos la tabla del 2 161 00:06:30,970 --> 00:06:33,189 vale, pues venga 162 00:06:33,189 --> 00:06:35,949 entonces, ahora ya 163 00:06:35,949 --> 00:06:37,069 vamos a empezar a 164 00:06:37,069 --> 00:06:39,670 hacer el proceso 165 00:06:39,670 --> 00:06:40,990 de principio a fin 166 00:06:40,990 --> 00:06:42,949 de hacer un código 167 00:06:42,949 --> 00:06:46,069 pero concretado a un caso muy sencillo 168 00:06:46,069 --> 00:06:48,589 Bueno, pues paso uno 169 00:06:48,589 --> 00:06:50,170 ¿Qué es lo que uno hace? 170 00:06:51,670 --> 00:06:52,910 Se lee el enunciado 171 00:06:52,910 --> 00:06:54,870 Y se asegura de que entiende 172 00:06:54,870 --> 00:06:57,050 Exactamente lo que hay que hacer 173 00:06:57,050 --> 00:06:59,089 Esa parte 174 00:06:59,089 --> 00:07:00,889 Parece obvia 175 00:07:00,889 --> 00:07:02,589 Pero es 176 00:07:02,589 --> 00:07:04,610 La parte en la cual 177 00:07:04,610 --> 00:07:06,370 Se cometen la mayor parte de los errores 178 00:07:06,370 --> 00:07:08,629 Yo no he entendido exactamente lo que tengo que hacer 179 00:07:08,629 --> 00:07:10,310 No lo he entendido, he entendido otra cosa 180 00:07:10,310 --> 00:07:12,370 Y dedico un montón de tiempo 181 00:07:12,370 --> 00:07:14,370 A hacer un programa que no hace lo que 182 00:07:14,370 --> 00:07:16,889 tiene que hacer, funciona estupendamente 183 00:07:16,889 --> 00:07:18,629 uy si, funciona muy bien, pero es que no hace 184 00:07:18,629 --> 00:07:20,250 lo que te he pedido, conclusión 185 00:07:20,250 --> 00:07:22,410 pues te han echado del trabajo, vale 186 00:07:22,410 --> 00:07:23,910 entonces 187 00:07:23,910 --> 00:07:26,589 porque esa parte la hacen los que más 188 00:07:26,589 --> 00:07:28,589 cobran de la empresa, quienes son los que más 189 00:07:28,589 --> 00:07:30,089 ganan en la empresa, en el equipo de 190 00:07:30,089 --> 00:07:31,629 desarrollo de un proyecto 191 00:07:31,629 --> 00:07:34,670 los que no 192 00:07:34,670 --> 00:07:35,490 programan 193 00:07:35,490 --> 00:07:38,589 los que, los analistas 194 00:07:39,269 --> 00:07:41,069 y esos 195 00:07:41,069 --> 00:07:42,709 que hacen, esos son 196 00:07:42,709 --> 00:07:44,029 los que tienen que, primero 197 00:07:44,029 --> 00:07:46,230 juntarse con el cliente 198 00:07:46,230 --> 00:07:47,389 y entender 199 00:07:47,389 --> 00:07:50,430 qué necesita el cliente 200 00:07:50,430 --> 00:07:52,290 parece tontería, pero no es fácil 201 00:07:52,290 --> 00:07:53,910 porque aquí entender 202 00:07:53,910 --> 00:07:55,250 que el cliente necesita 203 00:07:55,250 --> 00:07:57,990 que cuando meta un número 204 00:07:57,990 --> 00:07:59,870 le aparezca multiplicado por dos 205 00:07:59,870 --> 00:08:02,389 eso es fácil de entender que necesita eso 206 00:08:02,389 --> 00:08:03,930 pero una aplicación grande 207 00:08:03,930 --> 00:08:05,170 no está entendiendo lo que necesita 208 00:08:05,170 --> 00:08:06,569 y normalmente se le explicará mal 209 00:08:06,569 --> 00:08:10,089 entonces, entender lo que me están pidiendo hacer 210 00:08:10,089 --> 00:08:11,170 no es fácil 211 00:08:11,170 --> 00:08:13,790 en nuestro caso, ¿a qué se traduce? 212 00:08:13,790 --> 00:08:15,490 que cuando yo os planteo un ejercicio 213 00:08:15,490 --> 00:08:17,810 o cuando os planteo un examen, tenéis que leer 214 00:08:17,810 --> 00:08:19,970 bien enunciado y entender lo que tenéis 215 00:08:19,970 --> 00:08:22,129 que hacer. ¿Vale? No es evidente. 216 00:08:24,009 --> 00:08:25,730 Entonces, saber leer es 217 00:08:25,730 --> 00:08:27,730 fundamental y es por lo que más se cobra en la 218 00:08:27,730 --> 00:08:29,750 empresa. Entender qué tengo que 219 00:08:29,750 --> 00:08:31,730 hacer. Vale, en este caso 220 00:08:31,730 --> 00:08:33,730 esa parte ya la hemos hecho. Ya hemos entendido 221 00:08:33,730 --> 00:08:35,549 que yo voy a recibir un número 222 00:08:35,549 --> 00:08:37,850 y lo que quiere el usuario 223 00:08:37,850 --> 00:08:39,070 es que se le devuelva 224 00:08:39,070 --> 00:08:41,750 multiplicado por dos. Vale. 225 00:08:41,750 --> 00:08:43,850 después de mil reuniones con el cliente 226 00:08:43,850 --> 00:08:45,330 hemos entendido que eso es lo que quiere 227 00:08:45,330 --> 00:08:47,889 siguiente parte 228 00:08:47,889 --> 00:08:50,070 ahora ya empezamos a diseñar 229 00:08:50,070 --> 00:08:50,629 el código 230 00:08:50,629 --> 00:08:53,289 todavía no estamos programando 231 00:08:53,289 --> 00:08:56,350 ni necesitamos 232 00:08:56,350 --> 00:08:57,269 saber programar 233 00:08:57,269 --> 00:09:01,279 y quien hace eso pues también es el que más 234 00:09:01,279 --> 00:09:03,259 va a ganar el que diseña el código 235 00:09:03,259 --> 00:09:04,860 y vale 236 00:09:04,860 --> 00:09:07,080 diseñar el código que implica a nosotros 237 00:09:07,080 --> 00:09:08,679 ahora mismo que estamos en un caso sencillo 238 00:09:08,679 --> 00:09:11,179 pues decidir que elementos vamos a necesitar 239 00:09:11,179 --> 00:09:13,000 con que lenguaje lo vamos a hacer 240 00:09:13,000 --> 00:09:16,639 tener una especie de primer mapa 241 00:09:16,639 --> 00:09:18,600 de cómo va a ser nuestro código en general 242 00:09:18,600 --> 00:09:20,759 y luego ya llega la parte sencilla 243 00:09:20,759 --> 00:09:21,899 que es la que hace el programador 244 00:09:21,899 --> 00:09:23,519 que ya programa que es el que menos cobra 245 00:09:23,519 --> 00:09:27,179 ahora ya empezamos a diseñar 246 00:09:27,179 --> 00:09:28,960 el programa 247 00:09:28,960 --> 00:09:30,720 va a pedir un número 248 00:09:30,720 --> 00:09:32,379 por teclado 249 00:09:32,379 --> 00:09:34,480 pues va a necesitar una variable 250 00:09:34,480 --> 00:09:36,500 primera parte 251 00:09:36,500 --> 00:09:37,960 va a necesitar una variable para guardar el número 252 00:09:37,960 --> 00:09:40,320 muy bien, ya he hecho un paso importante 253 00:09:40,320 --> 00:09:41,659 identificar que hay una variable 254 00:09:41,659 --> 00:09:45,539 vale, y en este caso es que 255 00:09:45,539 --> 00:09:47,000 el diseño poco más tiene 256 00:09:47,000 --> 00:09:49,200 ¿qué tengo que hacer con esa variable? 257 00:09:50,700 --> 00:09:51,879 multiplicarla por 2 258 00:09:51,879 --> 00:09:53,460 multiplicar por 2 sé hacerlo 259 00:09:53,460 --> 00:09:54,940 sé que hay un operador multiplicar 260 00:09:54,940 --> 00:09:57,559 lo tengo ya bastante acotado el programa 261 00:09:57,559 --> 00:09:58,759 ahora 262 00:09:58,759 --> 00:10:01,600 eso va a ser una expresión, ¿qué hago con esa expresión? 263 00:10:02,360 --> 00:10:03,899 tendremos que guardarla en otra variable 264 00:10:03,899 --> 00:10:05,679 vale, entonces ya empiezo a pensar 265 00:10:05,679 --> 00:10:07,559 vale, pues necesito dos variables 266 00:10:07,559 --> 00:10:08,879 una 267 00:10:08,879 --> 00:10:12,059 la cajita en la que llega el valor de entrada 268 00:10:12,059 --> 00:10:14,320 y otra cajita 269 00:10:14,320 --> 00:10:15,539 en la que se guarda 270 00:10:15,539 --> 00:10:18,279 el resultado de la expresión que yo voy a necesitar 271 00:10:18,279 --> 00:10:20,019 hacer. Todo esto, 272 00:10:20,179 --> 00:10:21,940 como veis, es un diseño que tiene que ver con el lenguaje 273 00:10:21,940 --> 00:10:23,960 de programación. Vale, voy a tener una cajita 274 00:10:23,960 --> 00:10:25,320 con el valor. ¿Qué tendría que hacer después? 275 00:10:25,820 --> 00:10:27,759 Mostrarla por consola. Ah, vale, pues muy bien. 276 00:10:28,399 --> 00:10:29,559 Sabré hacerlo. Vale. 277 00:10:30,279 --> 00:10:31,919 Pues en este caso, el diseño 278 00:10:31,919 --> 00:10:33,960 se traduce en eso. Pero ya hemos 279 00:10:33,960 --> 00:10:35,860 llegado a dos conclusiones muy 280 00:10:35,860 --> 00:10:37,799 importantes. La primera, 281 00:10:37,799 --> 00:10:39,480 que necesitaría una variable 282 00:10:39,480 --> 00:10:40,919 para guardar el dato de entrada 283 00:10:40,919 --> 00:10:43,240 entonces esa parte 284 00:10:43,240 --> 00:10:46,240 es lo que se llama el diseño de los datos 285 00:10:46,240 --> 00:10:48,639 porque más importante 286 00:10:48,639 --> 00:10:50,000 que lo que hace un programa 287 00:10:50,000 --> 00:10:51,740 es con qué lo hace 288 00:10:51,740 --> 00:10:53,460 con qué trabaja 289 00:10:53,460 --> 00:10:55,899 los programas con qué trabajan, con datos 290 00:10:55,899 --> 00:10:57,620 en nuestro caso este programa 291 00:10:57,620 --> 00:10:58,700 trabaja con un número 292 00:10:58,700 --> 00:11:01,759 pero una aplicación real trabaja con miles 293 00:11:01,759 --> 00:11:03,220 de datos de diferentes tipos 294 00:11:03,220 --> 00:11:05,419 entonces como yo esos miles de datos 295 00:11:05,419 --> 00:11:07,559 de diferentes tipos no haga un buen diseño 296 00:11:07,559 --> 00:11:10,720 de dónde se van a guardar, en qué tipos de cajitas, 297 00:11:11,000 --> 00:11:12,080 como no haga un buen diseño, 298 00:11:12,919 --> 00:11:15,320 el programa luego se va a volver loco 299 00:11:15,320 --> 00:11:17,039 para actuar con ellos 300 00:11:17,039 --> 00:11:18,879 y cogerlos y llevarlos y moverlos. 301 00:11:18,980 --> 00:11:19,500 Se va a volver loco. 302 00:11:20,360 --> 00:11:22,039 Entonces, la parte del diseño de los datos 303 00:11:22,039 --> 00:11:24,039 es más importante en realidad 304 00:11:24,039 --> 00:11:26,059 que la del diseño del algoritmo, 305 00:11:26,159 --> 00:11:26,899 de qué va a hacer. 306 00:11:27,019 --> 00:11:28,419 Es casi más importante. 307 00:11:30,039 --> 00:11:31,419 Entonces, en nuestro caso, 308 00:11:31,960 --> 00:11:33,700 el diseño de los datos ha traducido a decir 309 00:11:33,700 --> 00:11:36,000 una variable entera para guardar el número. 310 00:11:36,000 --> 00:11:37,759 bueno, y otra 311 00:11:37,759 --> 00:11:40,179 como voy a hacer una expresión 312 00:11:40,179 --> 00:11:41,799 y esa expresión hay por algún lado 313 00:11:41,799 --> 00:11:44,840 venga, pues otra, se ha traducido en eso porque es muy sencillo 314 00:11:44,840 --> 00:11:46,519 pues venga, como parece que ya lo tenemos 315 00:11:46,519 --> 00:11:48,259 bastante diseñado y en la cabeza 316 00:11:48,259 --> 00:11:50,659 tenemos un primer prototipo 317 00:11:50,659 --> 00:11:52,580 y normalmente nos habremos puesto 318 00:11:52,580 --> 00:11:54,259 con un papel y un lápiz 319 00:11:54,259 --> 00:11:56,340 porque siempre se programa 320 00:11:56,340 --> 00:11:58,379 con un papel y un lápiz 321 00:11:58,379 --> 00:12:00,399 para hacerte tus esquemitas y tus cosas 322 00:12:00,399 --> 00:12:02,740 ya tenemos el esquemita, hemos puesto la cajita 323 00:12:02,740 --> 00:12:04,700 con la NA, vale, una expresión, esto va aquí 324 00:12:04,700 --> 00:12:08,679 Y como ya eso lo tenemos más o menos ya en la cabeza, ya empezamos a programar. 325 00:12:09,279 --> 00:12:11,159 ¿Qué es lo primero a lo que yo había llegado? 326 00:12:11,419 --> 00:12:14,399 A que necesito una cajita para el dato de entrada. 327 00:12:15,019 --> 00:12:16,179 Una cajita es una variable. 328 00:12:16,799 --> 00:12:17,419 ¿De qué tipo? 329 00:12:17,659 --> 00:12:18,700 Me han dicho un número entero. 330 00:12:19,559 --> 00:12:22,600 Bueno, por defecto normalmente uno para los enteros siempre pone int. 331 00:12:22,899 --> 00:12:23,399 ¿Por qué hombre? 332 00:12:24,759 --> 00:12:28,799 A menos que el usuario le diga, cuidado que es una aplicación para números enormísimos. 333 00:12:29,440 --> 00:12:30,779 Pero en general siempre ponemos int. 334 00:12:32,200 --> 00:12:33,159 Venga, pues ya está. 335 00:12:33,159 --> 00:12:57,700 Y, ¿cómo le llamamos? Un nombre, lo más explicativo del, pues venga, yo que en este caso, pues número entrada o dato entrada o yo que sé, como os dé la gana llamarlo. En este caso es que tampoco tiene, cuando uno trabaja con clientes, pues lo llamará clientes, cuando trabaja con hombres lo llamará nombre, cuando trabaja con ellas lo llamará edad, en este caso, venga, dato entrada, vale. 336 00:12:57,700 --> 00:13:00,840 Vale, pues ahora cuál es el problema 337 00:13:00,840 --> 00:13:03,539 Que antes de empezar a hacer esta operación 338 00:13:03,539 --> 00:13:04,419 Que tenemos que hacer 339 00:13:04,419 --> 00:13:07,980 Dato entrada por 2 340 00:13:07,980 --> 00:13:09,320 Porque hasta aquí hemos llegado 341 00:13:09,320 --> 00:13:10,519 Esta operación habrá que hacerla 342 00:13:10,519 --> 00:13:13,419 Pero claro, esta expresión me dará un resultado 343 00:13:13,419 --> 00:13:15,899 Que lo tengo que asignar a algún sitio 344 00:13:15,899 --> 00:13:17,360 ¿Vale? 345 00:13:18,840 --> 00:13:20,840 Entonces a algún lado tendré que llevar eso 346 00:13:20,840 --> 00:13:22,820 Entonces uno puede decir 347 00:13:22,820 --> 00:13:23,580 Venga, pues venga 348 00:13:23,580 --> 00:13:25,899 Lo voy a llevar a otra variable entera 349 00:13:25,899 --> 00:13:28,340 hala, ya está 350 00:13:28,340 --> 00:13:30,179 vale 351 00:13:30,179 --> 00:13:32,500 lo llevo a otra variable entera 352 00:13:32,500 --> 00:13:35,019 entonces esta expresión, dato entrada por 2 353 00:13:35,019 --> 00:13:37,120 la llevo a otra variable entera 354 00:13:37,120 --> 00:13:38,480 que declaro 355 00:13:38,480 --> 00:13:40,519 ya a la vez que le doy un valor 356 00:13:40,519 --> 00:13:41,820 así me ahorro líneas 357 00:13:41,820 --> 00:13:44,100 podríamos declarar arriba, claro, el resultado 358 00:13:44,100 --> 00:13:46,980 y abajo darle el valor, resultado igual a dato por 2 359 00:13:46,980 --> 00:13:48,320 o 360 00:13:48,320 --> 00:13:50,419 aprovecharía en la misma, nos da 361 00:13:50,419 --> 00:13:51,919 lo mismo, vale 362 00:13:51,919 --> 00:13:54,840 vale, pero efectivamente 363 00:13:54,840 --> 00:13:56,620 que nos falta aquí entre medias 364 00:13:56,620 --> 00:13:59,259 nos falta aquí entre medias 365 00:13:59,259 --> 00:14:01,820 a dato 366 00:14:01,820 --> 00:14:03,100 entrada 367 00:14:03,100 --> 00:14:05,419 darle el valor 368 00:14:05,419 --> 00:14:07,440 esto es lo que nos falta 369 00:14:07,440 --> 00:14:08,720 darle el valor 370 00:14:08,720 --> 00:14:10,620 a dato entrada, esto nos falta 371 00:14:10,620 --> 00:14:12,960 mientras dato entrada no tenga el valor 372 00:14:12,960 --> 00:14:15,279 yo no puedo hacer esta expresión 373 00:14:15,279 --> 00:14:17,200 y no puedo utilizar esta expresión 374 00:14:17,200 --> 00:14:19,080 para dársela a mi variable 375 00:14:19,080 --> 00:14:21,360 donde va el numerito resultado 376 00:14:21,360 --> 00:14:23,360 y no puedo mostrarla 377 00:14:23,360 --> 00:14:24,059 por pantalla 378 00:14:24,059 --> 00:14:31,460 vale 379 00:14:31,460 --> 00:14:39,000 es 380 00:14:39,000 --> 00:14:41,340 resultado 381 00:14:41,340 --> 00:14:44,120 vale, entonces tengo ya 382 00:14:44,120 --> 00:14:46,240 hecho gran parte del programa 383 00:14:46,240 --> 00:14:48,600 vale, que me falta 384 00:14:48,600 --> 00:14:49,659 este huequito de en medio 385 00:14:49,659 --> 00:14:51,659 este huequito es el que tengo sin resolver 386 00:14:51,659 --> 00:14:53,419 pero tengo hecho 387 00:14:53,419 --> 00:14:55,279 que necesito una variable entera 388 00:14:55,279 --> 00:14:59,000 tengo hecha la expresión 389 00:14:59,000 --> 00:15:00,539 que va a obtener 390 00:15:00,539 --> 00:15:01,639 mi resultado final 391 00:15:01,639 --> 00:15:04,179 y el valor de esa expresión 392 00:15:04,179 --> 00:15:05,919 tengo decidido que va a ir a otra variable 393 00:15:05,919 --> 00:15:07,200 obviamente, pues yo no lo pierdo 394 00:15:07,200 --> 00:15:08,740 tendré que asignar a algún lado 395 00:15:08,740 --> 00:15:11,659 pues tengo decidido que le voy a dar a esta variable 396 00:15:11,659 --> 00:15:13,320 que también tengo que declarar, claro 397 00:15:13,320 --> 00:15:14,519 pues venga, la declaro 398 00:15:14,519 --> 00:15:17,700 y tengo decidido que ahora voy a mostrar un mensajito 399 00:15:17,700 --> 00:15:18,639 el resultado es 400 00:15:18,639 --> 00:15:20,159 y luego voy a mostrar el resultado 401 00:15:20,159 --> 00:15:23,379 porque ya sabemos que con el System.out podemos mostrar 402 00:15:23,379 --> 00:15:25,460 tanto cadenas como contenidos de variables 403 00:15:25,460 --> 00:15:27,600 vale, pero esto lo tengo vacío 404 00:15:27,600 --> 00:15:29,899 ahora tengo que completar eso 405 00:15:29,899 --> 00:15:31,659 pero ya he hecho un esqueleto 406 00:15:32,460 --> 00:15:33,740 entonces de nuevo 407 00:15:33,740 --> 00:15:34,899 otra idea 408 00:15:34,899 --> 00:15:36,639 con la que 409 00:15:36,639 --> 00:15:38,919 si os tiene que quedar dentro 410 00:15:38,919 --> 00:15:41,039 uno no programa así 411 00:15:41,039 --> 00:15:42,620 tirando líneas una tras otra 412 00:15:42,620 --> 00:15:44,379 no se programa así 413 00:15:44,379 --> 00:15:46,600 uno va programando 414 00:15:46,600 --> 00:15:48,220 como en 415 00:15:48,220 --> 00:15:54,740 como si dijéramos 416 00:15:54,740 --> 00:15:57,019 en refinamientos sucesivos 417 00:15:57,019 --> 00:15:58,840 a ver 418 00:15:58,840 --> 00:16:00,279 uno hace un primer 419 00:16:00,279 --> 00:16:03,419 una primera estructura 420 00:16:03,419 --> 00:16:05,159 una primera plantilla de la aplicación 421 00:16:05,159 --> 00:16:11,059 donde algunas cosas ya las tiene resueltas como nosotros aquí tenemos resuelto mostrar el mensaje 422 00:16:11,059 --> 00:16:17,820 tenemos resuelto esto pero eso sí sin resolver entonces tenemos un primer prototipo una primera 423 00:16:17,820 --> 00:16:25,200 plantilla con cosas resueltas pero claro aquí tenemos un todavía un agujero negro que tenemos 424 00:16:25,200 --> 00:16:30,779 que rellenar aquí otro agujero negro que tenemos que rellenar pero ya tengo una primera versión 425 00:16:30,779 --> 00:16:31,740 versión completa 426 00:16:31,740 --> 00:16:34,299 como aquí, tengo una primera versión completa 427 00:16:34,299 --> 00:16:36,299 pero tiene este agujero negro 428 00:16:36,299 --> 00:16:38,019 ¿vale? tiene este agujero negro 429 00:16:38,019 --> 00:16:40,559 o puede tener dos 430 00:16:40,559 --> 00:16:42,279 a lo mejor aquí me falta otra cosa que no sé 431 00:16:42,279 --> 00:16:43,500 y tiene otro agujero negro, entonces 432 00:16:43,500 --> 00:16:46,240 vamos programando así, como si dijéramos 433 00:16:46,240 --> 00:16:47,519 de fuera hacia adentro 434 00:16:47,519 --> 00:16:50,120 no en secuencia una línea tras otra 435 00:16:50,120 --> 00:16:52,019 si no se puede programar 436 00:16:52,019 --> 00:16:53,820 yo primero 437 00:16:53,820 --> 00:16:56,259 tengo la visión global de lo que tiene que hacer 438 00:16:56,259 --> 00:16:58,220 y algunas cosas 439 00:16:58,220 --> 00:17:00,039 ya tendré resueltas y ahora me voy metiendo 440 00:17:00,039 --> 00:17:01,940 en cajitas más pequeñas, vale 441 00:17:01,940 --> 00:17:04,220 yo sé que aquí tendré que leer del teclado 442 00:17:04,220 --> 00:17:05,900 no sé hacerlo todavía 443 00:17:05,900 --> 00:17:08,240 no pasa nada, ahí está mi agujerito negro 444 00:17:08,240 --> 00:17:09,619 ahí tendré que leer del teclado, vale 445 00:17:09,619 --> 00:17:11,900 cuando ya tenga leído, seguiré por aquí 446 00:17:11,900 --> 00:17:13,599 esto ya si lo tengo, pues esto lo pongo 447 00:17:13,599 --> 00:17:15,960 y así voy rellenando las cajas 448 00:17:15,960 --> 00:17:17,740 que se queden vacías 449 00:17:17,740 --> 00:17:19,799 los agujeros negros que se queden vacíos 450 00:17:19,799 --> 00:17:22,380 vale, porque es que 451 00:17:22,380 --> 00:17:24,220 lo que hacéis 452 00:17:24,220 --> 00:17:25,980 muchas veces, y otra vez realizo 453 00:17:25,980 --> 00:17:26,920 por enésima vez 454 00:17:26,920 --> 00:17:28,799 un enunciado 455 00:17:28,799 --> 00:17:31,779 bueno, con suerte lo leéis y lo entendéis 456 00:17:31,779 --> 00:17:33,759 vale, asumimos que la parte de leerla y entenderla 457 00:17:33,759 --> 00:17:34,700 con suerte la habéis hecho 458 00:17:34,700 --> 00:17:37,759 y ahora, abrís el Eclipse y os ponéis 459 00:17:37,759 --> 00:17:38,599 a teclear código 460 00:17:38,599 --> 00:17:40,599 ¿eso dónde se ha visto? 461 00:17:41,900 --> 00:17:43,900 no se trabaja así, a ver, en un programa 462 00:17:43,900 --> 00:17:45,740 muy sencillo, sí, porque uno 463 00:17:45,740 --> 00:17:47,680 ya lo lee y ya sabe que tiene que programar 464 00:17:47,680 --> 00:17:49,640 pero no se trabaja así 465 00:17:49,640 --> 00:17:51,460 uno, lo ha entendido 466 00:17:51,460 --> 00:17:53,819 ahora, se hace su esquema 467 00:17:53,819 --> 00:17:55,539 de, ah, este programa tiene que hacer esto 468 00:17:55,539 --> 00:17:57,019 esto, esto, esto 469 00:17:57,019 --> 00:18:16,380 Pues venga, hago una primera composición, una primera composición de mi programa, donde algunas cosas, esta todavía no la sé, la pongo en comentarios, es aquí tendré que hacer esto, pero cuando ya lo tenga hecho, ya tendré que hacer esto de aquí, una primera composición del lugar, y luego ya se van resolviendo partes, ¿vale? 470 00:18:16,380 --> 00:18:19,319 por eso un equipo de desarrolladores 471 00:18:19,319 --> 00:18:20,660 puede trabajar juntos 472 00:18:20,660 --> 00:18:22,339 en paralelo y no en secuencia 473 00:18:22,339 --> 00:18:24,059 porque 474 00:18:24,059 --> 00:18:26,519 uno está haciendo esta parte 475 00:18:26,519 --> 00:18:27,740 y otro está haciendo esta parte 476 00:18:27,740 --> 00:18:29,380 y son partes separadas 477 00:18:29,380 --> 00:18:31,440 esta es la parte de leer del teclado 478 00:18:31,440 --> 00:18:34,279 yo no sé hacerla en mi programa general 479 00:18:34,279 --> 00:18:36,400 no sé hacerla, se la encargo a otro 480 00:18:36,400 --> 00:18:38,460 ese la hace y cuando la haga yo la meto aquí 481 00:18:38,460 --> 00:18:40,660 y mientras en paralelo 482 00:18:40,660 --> 00:18:42,319 otro está haciendo la parte 483 00:18:42,319 --> 00:18:44,900 de lo que sea, de mostrar por teclado 484 00:18:44,900 --> 00:18:46,920 que no sé hacerla 485 00:18:46,920 --> 00:18:48,519 por pantalla, que no sé hacerla 486 00:18:48,519 --> 00:18:50,380 pero no pasa nada, se la encargo a alguien 487 00:18:50,380 --> 00:18:52,559 cuando ese alguien la tenga, la meto aquí 488 00:18:52,559 --> 00:18:54,039 y eso no me para 489 00:18:54,039 --> 00:18:56,880 mi programa, yo puedo seguir escribiendo cosas 490 00:18:56,880 --> 00:18:58,640 asumiendo que esta ya está hecha 491 00:18:58,640 --> 00:19:00,980 y que esta ya está hecha, ahora mismo están en vacío 492 00:19:00,980 --> 00:19:03,140 cuando ya las sepa resolver 493 00:19:03,140 --> 00:19:04,819 las voy componiendo 494 00:19:04,819 --> 00:19:05,700 y voy haciendo mi puzzle 495 00:19:05,700 --> 00:19:08,500 pues es como tienes que programar 496 00:19:08,500 --> 00:19:10,839 y eso implica que antes de hacer uno un código 497 00:19:10,839 --> 00:19:12,900 pues se hace su esquemita en papel 498 00:19:12,900 --> 00:19:14,680 su no sé qué, tengo que apoyarme 499 00:19:14,680 --> 00:19:16,480 sobre esto y sobre esto y va haciendo su puzzle. 500 00:19:17,059 --> 00:19:19,000 Este puzzle de aquí es fácil 501 00:19:19,000 --> 00:19:20,839 porque este puzzle de aquí 502 00:19:20,839 --> 00:19:23,039 la única pieza que se ha quedado 503 00:19:23,039 --> 00:19:24,900 por resolver es esta. 504 00:19:25,660 --> 00:19:26,980 ¿Y cómo leo por teclado? 505 00:19:27,500 --> 00:19:29,039 Bueno, pues es lo que vamos a incorporar 506 00:19:29,039 --> 00:19:29,880 ahora. Dime. 507 00:19:30,440 --> 00:19:31,819 Tengo una pregunta, pero no tenía. 508 00:19:33,859 --> 00:19:36,440 ¿Podría hacer que 509 00:19:36,440 --> 00:19:37,779 pruebe contraseñas por ti? 510 00:19:38,480 --> 00:19:40,740 ¿Que pruebe qué? ¿Contraseñas por? 511 00:19:41,740 --> 00:19:42,519 ¿Que pruebe 512 00:19:42,519 --> 00:19:43,539 contraseñas por? 513 00:19:44,660 --> 00:19:45,380 Por ti. 514 00:19:45,380 --> 00:19:48,599 Hombre, claro 515 00:19:48,599 --> 00:19:50,500 Tú puedes hacer todo lo que quieras 516 00:19:50,500 --> 00:19:58,539 Hombre, tú puedes programar cualquier cosa 517 00:19:58,539 --> 00:19:59,859 Esa en concreto 518 00:19:59,859 --> 00:20:01,880 Pero claro, tendrás que tener 519 00:20:01,880 --> 00:20:06,180 Pero bueno, esa aplicación 520 00:20:06,180 --> 00:20:07,980 Lo que necesita es 521 00:20:07,980 --> 00:20:10,640 Una especificación mejor hecha 522 00:20:10,640 --> 00:20:12,200 Comprobar cotizas, ¿qué significa? 523 00:20:12,720 --> 00:20:14,200 Si son iguales que alguna 524 00:20:14,200 --> 00:20:15,319 De un listado que tengo de mil 525 00:20:15,319 --> 00:20:17,759 o si cumplen un patrón 526 00:20:17,759 --> 00:20:19,819 tendrás que especificar exactamente 527 00:20:19,819 --> 00:20:21,579 qué significa comprobar contraseña 528 00:20:21,579 --> 00:20:22,220 lo has dejado abierto 529 00:20:22,220 --> 00:20:24,640 comprobar contraseña puede ser 530 00:20:24,640 --> 00:20:27,599 ver si es una de las 15.000 que tengo en un fichero 531 00:20:27,599 --> 00:20:29,400 o ver si cumple un patrón 532 00:20:29,400 --> 00:20:32,000 comprobar significa muchas cosas 533 00:20:32,000 --> 00:20:33,299 entonces si uno sabe 534 00:20:33,299 --> 00:20:36,160 para él qué significa comprobar contraseña 535 00:20:36,160 --> 00:20:37,960 te haces ya el programa que lo hace 536 00:20:37,960 --> 00:20:39,980 pero tienes que saber primero qué quieres resolver 537 00:20:39,980 --> 00:20:42,240 vale, liga exactamente con lo que os decía 538 00:20:42,240 --> 00:20:44,140 que cuando uno le pone un enunciado 539 00:20:44,140 --> 00:20:45,759 tiene que entender qué quieres hacer. 540 00:20:45,839 --> 00:20:48,059 Tú me dices, ¿se puede hacer un programa de comprueba 541 00:20:48,059 --> 00:20:50,019 y contraseñas? No me has dicho nada 542 00:20:50,019 --> 00:20:52,240 porque comprobar contraseñas, ¿qué significa? 543 00:20:52,460 --> 00:20:53,259 Significa mil cosas. 544 00:20:54,039 --> 00:20:56,380 Entonces, siguiente nivel de 545 00:20:56,380 --> 00:20:57,440 especificación. 546 00:20:57,920 --> 00:20:59,819 ¿Se puede hacer un programa que dada 547 00:20:59,819 --> 00:21:01,799 una cadena de texto verifique 548 00:21:01,799 --> 00:21:03,819 si es igual a alguna 549 00:21:03,819 --> 00:21:06,099 de un conjunto de mil millones de cadenas 550 00:21:06,099 --> 00:21:06,960 que tengo en un fichero? 551 00:21:07,440 --> 00:21:09,420 Eso ya si está bien especificado. 552 00:21:09,819 --> 00:21:12,259 Pues sí, se puede. ¿Se puede hacer un programa 553 00:21:12,259 --> 00:21:14,339 que dada una cadena de texto compruebe 554 00:21:14,339 --> 00:21:16,359 si tiene al menos un carácter 555 00:21:16,359 --> 00:21:18,339 alfabético, otro numérico y mayúscula? 556 00:21:18,440 --> 00:21:19,940 Sí, se puede, pero son problemas distintos. 557 00:21:20,180 --> 00:21:23,859 ¿Entiendes? Vale, bueno, pues en este 558 00:21:23,859 --> 00:21:24,220 caso 559 00:21:24,220 --> 00:21:27,799 nuestra composición 560 00:21:27,799 --> 00:21:29,759 del puzzle le ha faltado solo una pieza 561 00:21:29,759 --> 00:21:31,880 y es cómo asigno yo 562 00:21:31,880 --> 00:21:33,819 a mi variable dato entrada 563 00:21:33,819 --> 00:21:35,779 cómo le asigno un valor que 564 00:21:35,779 --> 00:21:37,720 no es directamente una 565 00:21:37,720 --> 00:21:39,740 expresión que yo pongo a 566 00:21:39,740 --> 00:21:41,799 capón, sino algo leído por teclado. 567 00:21:41,799 --> 00:21:44,339 Bueno, pues, aunque es un rollete de poner, 568 00:21:44,579 --> 00:21:46,200 como tenemos que leer por teclado desde ya, 569 00:21:46,279 --> 00:21:49,339 porque si no esto es un rollo, vamos a ver cómo hacer eso. 570 00:21:50,099 --> 00:21:52,880 Bueno, pues, para hacer eso hay varias maneras. 571 00:21:53,160 --> 00:21:55,019 Vamos ahora mismo a hacerla más sencilla. 572 00:21:56,059 --> 00:22:04,000 Para hacer eso tenemos que crear una variable nueva y esa 573 00:22:04,000 --> 00:22:07,839 variable va a ser la variable capaz de hacer la lectura. 574 00:22:09,140 --> 00:22:10,819 Vale, pues, entonces, vamos a tener que declarar otra 575 00:22:10,819 --> 00:22:13,160 variable nueva que sea capaz de hacer la lectura. 576 00:22:13,759 --> 00:22:16,279 Esa variable le damos el nombre que nos dé la gana, 577 00:22:16,880 --> 00:22:18,460 por ejemplo, lector, yo qué sé. 578 00:22:19,660 --> 00:22:21,839 Le creamos una variable nueva que sea capaz de leer. 579 00:22:22,500 --> 00:22:25,859 Esa variable, todas las variables que se declaran en Java, 580 00:22:25,980 --> 00:22:28,259 ya sabéis que tienen que tener un tipo concreto. 581 00:22:28,920 --> 00:22:32,119 Pues esa variable lector, que es capaz de leer del teclado, 582 00:22:32,220 --> 00:22:33,380 ¿de qué tipo tiene que ser? 583 00:22:33,460 --> 00:22:37,359 Tiene que ser de un tipo que os digo yo, que es este tipo. 584 00:22:37,640 --> 00:22:38,519 Tiene que ser de ese tipo. 585 00:22:39,839 --> 00:22:43,440 Y me diréis, este tipo, así, tal cual, tiene que ser ese. 586 00:22:43,759 --> 00:22:59,299 Y me diréis, este tipo no es ninguno de los tipos que me has dicho que hay en Java y que solo hay esos, claro, pero como os habéis estudiado al dedillo y lo tenéis en la memoria, todo lo que vimos el otro día, los tipos que yo di el otro día eran tipos como, ¿alguien me sabe la palabra? 587 00:22:59,299 --> 00:23:07,910 Eso, primitivos 588 00:23:07,910 --> 00:23:09,849 Muy bien, los tipos que yo di 589 00:23:09,849 --> 00:23:11,829 Dije, ojo, estos son 590 00:23:11,829 --> 00:23:13,069 Tipos primitivos 591 00:23:13,069 --> 00:23:15,549 Hay datos 592 00:23:15,549 --> 00:23:17,990 Que no se adaptan a un tipo primitivo 593 00:23:17,990 --> 00:23:19,190 Pusimos el ejemplo de 594 00:23:19,190 --> 00:23:22,049 Un cliente que tiene dentro su nombre, su edad 595 00:23:22,049 --> 00:23:23,890 Un cliente de qué tipo es 596 00:23:23,890 --> 00:23:25,170 Tiene muchas cosas dentro 597 00:23:25,170 --> 00:23:27,490 Entonces, los tipos primitivos 598 00:23:27,490 --> 00:23:29,009 Se extienden 599 00:23:29,009 --> 00:23:31,690 a tipos que dijimos 600 00:23:31,690 --> 00:23:32,769 tipos objeto 601 00:23:32,769 --> 00:23:35,230 que es como un tipo 602 00:23:35,230 --> 00:23:37,069 un dato que tiene dentro 603 00:23:37,069 --> 00:23:39,529 muchos de los primitivos 604 00:23:39,529 --> 00:23:41,309 dos enteros, un char, lo que sea 605 00:23:41,309 --> 00:23:43,170 muchos de los primitivos, vale, dijimos eso 606 00:23:43,170 --> 00:23:45,289 solo para que nos fuera sonando simplemente 607 00:23:45,289 --> 00:23:47,609 que no solo hay tipos primitivos 608 00:23:47,609 --> 00:23:49,250 sino que hay tipos objeto que ya veremos 609 00:23:49,250 --> 00:23:51,210 más adelante, que son tipos 610 00:23:51,210 --> 00:23:53,170 complejos que tienen 611 00:23:53,170 --> 00:23:54,230 varias partes dentro 612 00:23:54,230 --> 00:23:56,210 vale, pues escáner 613 00:23:56,210 --> 00:23:58,230 es un tipo objeto 614 00:23:58,230 --> 00:24:00,930 claro, entonces, ahora mismo 615 00:24:00,930 --> 00:24:02,269 lo único que tenéis que hacer ahora mismo 616 00:24:02,269 --> 00:24:05,190 es creeros que Scanner es un tipo 617 00:24:05,190 --> 00:24:06,990 de los objetos, porque es complejo 618 00:24:06,990 --> 00:24:07,769 no es primitivo 619 00:24:07,769 --> 00:24:11,490 que se llama así, ahora vemos lo de la importación 620 00:24:11,490 --> 00:24:13,309 y yo tengo que declararlo 621 00:24:13,309 --> 00:24:15,250 para poder usarlo 622 00:24:15,250 --> 00:24:15,529 aquí 623 00:24:15,529 --> 00:24:18,990 vale, ahora completamos esta línea que se queda mal 624 00:24:18,990 --> 00:24:20,829 entonces una vez que yo tengo declarado esto 625 00:24:20,829 --> 00:24:22,910 que ya lo tengo declarado 626 00:24:22,910 --> 00:24:24,609 ya eso, es una especie 627 00:24:24,609 --> 00:24:27,230 los objetos son como señores o señoras 628 00:24:27,230 --> 00:24:28,829 que han cobrado vida en mi programa 629 00:24:28,829 --> 00:24:31,670 y que son capaces de hacer cosas. 630 00:24:32,730 --> 00:24:34,150 Las variables primitivas, 631 00:24:34,329 --> 00:24:36,589 como mi numerito int n, int long, 632 00:24:36,950 --> 00:24:38,190 no son señoras y señores 633 00:24:38,190 --> 00:24:39,569 que son capaces de hacer cosas, no. 634 00:24:40,509 --> 00:24:41,789 Son cajas con cosas dentro. 635 00:24:42,450 --> 00:24:44,309 Serían como fotos, ¿vale? 636 00:24:44,730 --> 00:24:45,769 La foto de un señor 637 00:24:45,769 --> 00:24:48,430 solamente tiene el aspecto del señor. 638 00:24:48,829 --> 00:24:49,769 Una variable entera 639 00:24:49,769 --> 00:24:52,210 tiene el numerito 5, no tiene más. 640 00:24:52,869 --> 00:24:54,029 Pues la foto del señor 641 00:24:54,029 --> 00:24:54,849 tiene el aspecto del señor. 642 00:24:54,849 --> 00:24:56,609 pero un señor real 643 00:24:56,609 --> 00:24:58,670 no solo tiene su aspecto 644 00:24:58,670 --> 00:25:00,670 sino que además puede caminar, correr 645 00:25:00,670 --> 00:25:02,349 moverse, hacer muchas cosas 646 00:25:02,349 --> 00:25:04,049 pues esa es la diferencia 647 00:25:04,049 --> 00:25:06,329 entre una variable primitiva y un objeto 648 00:25:06,329 --> 00:25:08,890 las variables primitivas que son todas esas que estamos viendo 649 00:25:08,890 --> 00:25:10,670 las enteras 650 00:25:10,670 --> 00:25:13,009 las decimales, las char y boolean 651 00:25:13,009 --> 00:25:14,230 que todavía no hemos visto 652 00:25:14,230 --> 00:25:15,410 pero las que hemos mencionado 653 00:25:15,410 --> 00:25:18,289 son valores, es un valor 654 00:25:18,289 --> 00:25:20,170 eso lo valen para eso, para tener un valor 655 00:25:20,170 --> 00:25:22,349 valor que yo luego uso en expresiones 656 00:25:22,349 --> 00:25:24,250 pero las variables objeto 657 00:25:24,250 --> 00:25:26,930 tienen valor, valor complejo 658 00:25:26,930 --> 00:25:27,609 pero lo tienen 659 00:25:27,609 --> 00:25:30,490 y además pueden hacer cosas 660 00:25:30,490 --> 00:25:32,049 pueden hacer cosas 661 00:25:32,049 --> 00:25:34,130 bueno, pues la variable 662 00:25:34,130 --> 00:25:35,670 lector está de aquí 663 00:25:35,670 --> 00:25:38,029 como es una variable objeto 664 00:25:38,029 --> 00:25:39,849 aparte de tener un valor dentro 665 00:25:39,849 --> 00:25:42,390 puede hacer 666 00:25:42,390 --> 00:25:44,069 ¿y qué puede hacer? 667 00:25:44,789 --> 00:25:45,250 puede 668 00:25:45,250 --> 00:25:47,950 quedarse a la espera del teclado 669 00:25:47,950 --> 00:25:49,970 cuando tú te crees una cosa, cogerla 670 00:25:49,970 --> 00:25:52,289 y devolvértela para la asignación 671 00:25:52,289 --> 00:25:53,650 todo eso puede hacer 672 00:25:53,650 --> 00:25:55,529 esa variable por ser escáner 673 00:25:55,529 --> 00:25:57,809 luego las variables objeto pueden hacer 674 00:25:57,809 --> 00:26:00,349 vale, pues mi variable lector entonces es estupenda 675 00:26:00,349 --> 00:26:02,069 porque puede hacer 676 00:26:02,069 --> 00:26:03,750 y 677 00:26:03,750 --> 00:26:06,109 hacer, empezar a hacer 678 00:26:06,109 --> 00:26:06,890 como se hace 679 00:26:06,890 --> 00:26:12,579 poniendo un punto, vale 680 00:26:12,579 --> 00:26:14,420 estoy explicando un poco lo que significa 681 00:26:14,420 --> 00:26:16,160 para que no os parezca que os digo las cosas 682 00:26:16,160 --> 00:26:18,859 y tú las tenéis que creer, para que le veáis un sentido 683 00:26:18,859 --> 00:26:20,319 pero ahora mismo 684 00:26:20,319 --> 00:26:22,180 si estoy contando esto solamente 685 00:26:22,180 --> 00:26:24,599 es para que usemos esta sentencia sin más 686 00:26:24,599 --> 00:26:25,460 para leer del teclado 687 00:26:25,460 --> 00:26:27,700 pero hombre, quiero que entendáis un poquito 688 00:26:27,700 --> 00:26:29,839 por dónde van los tiros, aunque todavía 689 00:26:29,839 --> 00:26:31,680 no estemos viendo esto, ni orientación a objetos 690 00:26:31,680 --> 00:26:33,599 ni nada, pero más o menos 691 00:26:33,599 --> 00:26:36,039 podéis entender por encima de qué va el rollo 692 00:26:36,039 --> 00:26:38,019 lector es una variable más 693 00:26:38,019 --> 00:26:38,900 es una variable más 694 00:26:38,900 --> 00:26:41,400 lo que pasa es que es una variable de tipo objeto 695 00:26:41,400 --> 00:26:43,519 en concreto, de tipo 696 00:26:43,519 --> 00:26:45,779 escáner, entonces es una variable de tipo 697 00:26:45,779 --> 00:26:47,019 objeto, tiene la suerte 698 00:26:47,019 --> 00:26:49,039 de que puede hacer cosas 699 00:26:49,039 --> 00:26:51,819 ¿y cómo hacemos que una variable 700 00:26:51,819 --> 00:26:53,619 de tipo objeto lance 701 00:26:53,619 --> 00:26:54,859 se lance a hacer algo? 702 00:26:55,460 --> 00:26:57,579 ¿Cómo se lanza una variable de tipo objeto a hacer algo? 703 00:26:58,099 --> 00:26:59,400 Poniéndole un punto detrás. 704 00:27:00,259 --> 00:27:01,559 Yo una variable entera n, 705 00:27:02,380 --> 00:27:04,640 a una variable entera n, 706 00:27:04,920 --> 00:27:05,380 a ver qué, 707 00:27:06,180 --> 00:27:07,140 ah, bueno, que esté sobrada. 708 00:27:08,220 --> 00:27:10,099 Imaginaos que yo tengo aquí una variable entera n. 709 00:27:12,650 --> 00:27:14,230 Esta variable solo me vale 710 00:27:14,230 --> 00:27:17,289 o bien para recibir valor en una, 711 00:27:17,509 --> 00:27:17,670 uy, 712 00:27:18,529 --> 00:27:21,670 o bien para recibir valor en una asignación, 713 00:27:21,670 --> 00:27:22,509 como ya sabemos, 714 00:27:23,130 --> 00:27:24,549 o bien para ser usada 715 00:27:24,549 --> 00:27:27,309 para que otra variable reciba 716 00:27:27,309 --> 00:27:27,769 su valor. 717 00:27:28,950 --> 00:27:31,089 Es para lo único que para lo que nos vale. 718 00:27:33,670 --> 00:27:34,910 Solo nos vale para eso una variable 719 00:27:34,910 --> 00:27:36,750 primitiva. Me da igual que sea int, que sea 720 00:27:36,750 --> 00:27:38,829 eso, solo nos vale para eso. O para darle 721 00:27:38,829 --> 00:27:40,910 valores, o para ser usada 722 00:27:40,910 --> 00:27:42,930 en una expresión, para 723 00:27:42,930 --> 00:27:44,890 dar valor a otra. Por eso 724 00:27:44,890 --> 00:27:46,869 es estática, es una imagen, no es una foto. 725 00:27:47,150 --> 00:27:49,230 Solo me vale para que yo la vea 726 00:27:49,230 --> 00:27:50,750 o para que yo la use 727 00:27:50,750 --> 00:27:53,049 para hacer una fotocopia para otra, para lo que sea. 728 00:27:53,529 --> 00:27:54,589 Pero nunca jamás 729 00:27:54,589 --> 00:27:57,250 Una variable primitiva puede lanzarse a hacer algo 730 00:27:57,250 --> 00:27:59,150 Nunca podríamos hacer 731 00:27:59,150 --> 00:28:00,630 N, punto 732 00:28:00,630 --> 00:28:02,690 Y haz algo 733 00:28:02,690 --> 00:28:04,049 Tú N, haz algo 734 00:28:04,049 --> 00:28:05,869 Porque punto significa haz algo 735 00:28:05,869 --> 00:28:08,029 No puede, porque es una variable primitiva 736 00:28:08,029 --> 00:28:09,849 Pero 737 00:28:09,849 --> 00:28:12,630 Lector sí que puede 738 00:28:12,630 --> 00:28:14,210 Hacer cosas, porque es variable objeto 739 00:28:14,210 --> 00:28:16,210 Bueno, pues en particular, ¿qué puede hacer? 740 00:28:16,849 --> 00:28:18,710 Las cosas que puede hacer reciben un nombre 741 00:28:18,710 --> 00:28:20,650 Entonces lector puede hacer muchas 742 00:28:20,650 --> 00:28:22,630 Pero en concreto puede hacer una 743 00:28:22,630 --> 00:28:23,670 Que significa 744 00:28:23,670 --> 00:28:27,750 vete al teclado, coge lo que alguien haya metido 745 00:28:27,750 --> 00:28:29,410 y dámelo 746 00:28:29,410 --> 00:28:33,930 y ya cuando ya la máquina virtual lo ha recibido 747 00:28:33,930 --> 00:28:36,650 lo asignará aquí, es una asignación más 748 00:28:36,650 --> 00:28:38,789 lo que pasa es que lo que asigna 749 00:28:38,789 --> 00:28:40,690 es de lo que ha recogido el teclado 750 00:28:40,690 --> 00:28:43,869 bueno, pues esa acción se llama next in 751 00:28:43,869 --> 00:28:46,130 ya está, se llama así, se llama next in 752 00:28:46,130 --> 00:28:49,970 entonces, el punto next in implica 753 00:28:49,970 --> 00:28:53,470 oye objeto lector, desencadena la acción 754 00:28:53,470 --> 00:28:55,910 de irte al teclado, coger lo que alguien haya metido 755 00:28:55,910 --> 00:28:57,789 y dármelo, y entregármelo. 756 00:28:58,509 --> 00:28:59,710 Significa eso, ¿vale? 757 00:29:01,250 --> 00:29:03,849 Bueno, pues así leeremos del teclado números enteros. 758 00:29:04,769 --> 00:29:08,009 Que sepáis que significa que la idea de fondo es esa. 759 00:29:08,769 --> 00:29:10,630 Pero todo esto es, porque el texto es un objeto, 760 00:29:10,769 --> 00:29:11,950 es un método para ti y para la TAM, 761 00:29:12,009 --> 00:29:14,529 que todo eso todavía no lo veremos en programación 762 00:29:14,529 --> 00:29:15,130 de entrada de objetos. 763 00:29:16,130 --> 00:29:18,349 Ahora mismo, con saber leer del teclado 764 00:29:18,349 --> 00:29:20,869 y que entendáis un poquito lo que hay de fondo, 765 00:29:20,930 --> 00:29:21,250 es suficiente. 766 00:29:21,250 --> 00:29:24,369 vale, aún así 767 00:29:24,369 --> 00:29:25,789 este 768 00:29:25,789 --> 00:29:28,410 el compilador me está diciendo 769 00:29:28,410 --> 00:29:30,069 error rojo patatín 770 00:29:30,069 --> 00:29:32,670 ¿por qué? porque yo aquí he declarado la variable 771 00:29:32,670 --> 00:29:34,690 sin más para que se vea claro 772 00:29:34,690 --> 00:29:36,650 que es una variable más del tipo 773 00:29:36,650 --> 00:29:38,690 lector, pero hay que asignarle 774 00:29:38,690 --> 00:29:40,289 un valor, porque yo ahí la he declarado 775 00:29:40,289 --> 00:29:42,130 pero cuando uno declara una variable 776 00:29:42,130 --> 00:29:44,130 no tiene nada dentro todavía 777 00:29:44,130 --> 00:29:45,309 está indefinido 778 00:29:45,309 --> 00:29:48,450 entonces es como cuando hago int n 779 00:29:48,450 --> 00:29:49,950 la cajita está 780 00:29:49,950 --> 00:29:52,670 pero lo que tiene n dentro está indefinido 781 00:29:52,670 --> 00:29:54,690 hasta que yo no hago n igual a algo 782 00:29:54,690 --> 00:29:55,549 no recibe algo 783 00:29:55,549 --> 00:29:57,549 pues con el lector está igual 784 00:29:57,549 --> 00:29:59,730 yo he dicho, he creado un lector 785 00:29:59,730 --> 00:30:04,079 pero no tiene a la persona dentro 786 00:30:04,079 --> 00:30:06,319 no tiene nada dentro creado 787 00:30:06,319 --> 00:30:07,559 he creado como 788 00:30:07,559 --> 00:30:09,119 la casa 789 00:30:09,119 --> 00:30:11,660 para meter al tío, al lector dentro 790 00:30:11,660 --> 00:30:13,859 la casa, la cajita, en el caso 791 00:30:13,859 --> 00:30:16,359 una variable, pero el tío no lo he creado 792 00:30:16,359 --> 00:30:18,420 como en la cajita n 793 00:30:18,420 --> 00:30:19,980 el 7 no lo he metido todavía 794 00:30:19,980 --> 00:30:21,200 pues aquí el tío no lo he creado 795 00:30:21,200 --> 00:30:23,140 vale, pues venga, vamos a crearlo 796 00:30:23,140 --> 00:30:25,039 vamos a crearlo 797 00:30:25,039 --> 00:30:27,339 para su espacio lector 798 00:30:27,339 --> 00:30:29,559 para su variable, bueno pues se crea 799 00:30:29,559 --> 00:30:30,559 sí o sí de esta manera 800 00:30:30,559 --> 00:30:33,700 que también os lo tenéis que creer 801 00:30:33,700 --> 00:30:35,480 sin entender porque no conocemos 802 00:30:35,480 --> 00:30:36,900 ni constructores ni nada 803 00:30:36,900 --> 00:30:39,619 así se crea 804 00:30:39,619 --> 00:30:44,890 así se crea 805 00:30:44,890 --> 00:30:53,930 vale, pues ya tengo 806 00:30:53,930 --> 00:30:55,869 una variable de tipo objeto 807 00:30:55,869 --> 00:30:57,750 declarada, que al ser objeto es capaz de hacer 808 00:30:57,750 --> 00:30:59,670 muchas cosas, además le he dado 809 00:30:59,670 --> 00:31:01,750 un valor, porque hombre 810 00:31:01,750 --> 00:31:03,750 he creado una casa para un tío 811 00:31:03,750 --> 00:31:05,750 pero el tío no está adentro, pues poco va a poder 812 00:31:05,750 --> 00:31:07,250 leer, vale 813 00:31:07,250 --> 00:31:09,710 y ahora ya este tío que he creado 814 00:31:09,710 --> 00:31:11,750 lector, es capaz 815 00:31:11,750 --> 00:31:13,609 de hacer cosas, entre ellas 816 00:31:13,609 --> 00:31:15,670 esta, que es 817 00:31:15,670 --> 00:31:17,509 leer del teclado, venga 818 00:31:17,509 --> 00:31:18,230 pues a ver 819 00:31:18,230 --> 00:31:21,789 el entorno de desarrollo os habrá puesto 820 00:31:21,789 --> 00:31:23,710 el solito, porque es muy 821 00:31:23,710 --> 00:31:25,769 listo y muy tonto, os habrá puesto 822 00:31:25,769 --> 00:31:26,309 esta línea 823 00:31:26,309 --> 00:31:31,890 vale, si no os la pone 824 00:31:31,890 --> 00:31:33,589 solo, es que 825 00:31:33,589 --> 00:31:35,589 el tema es que cuando usamos 826 00:31:35,589 --> 00:31:37,529 tipos de datos, objeto 827 00:31:37,529 --> 00:31:40,029 la gran mayoría de ellos 828 00:31:40,029 --> 00:31:41,930 están en otro paquete y hay que decirle 829 00:31:41,930 --> 00:31:42,789 en qué paquete está 830 00:31:42,789 --> 00:31:44,490 de nuevo, ahora mismo 831 00:31:44,490 --> 00:31:54,109 siempre tiene que ser 832 00:31:54,109 --> 00:31:54,930 después del package 833 00:31:54,930 --> 00:31:58,109 El package, la primera línea siempre obligatorio 834 00:31:58,109 --> 00:32:00,650 Luego los import y luego ya el public class 835 00:32:00,650 --> 00:32:02,470 El orden hay que respetarlo 836 00:32:02,470 --> 00:32:03,789 Vale, entonces 837 00:32:03,789 --> 00:32:06,490 Esta línea ahora mismo tampoco entendemos lo que significa 838 00:32:06,490 --> 00:32:09,710 Que se quede, que hay que ponerla 839 00:32:09,710 --> 00:32:12,069 Es como una especie de aviso, oye que voy a usar scanner 840 00:32:12,069 --> 00:32:13,849 Ya está, es una especie de aviso 841 00:32:13,849 --> 00:32:14,849 De que vamos a usarlo 842 00:32:14,849 --> 00:32:17,269 No entendemos lo que significa pero no pasa nada 843 00:32:17,269 --> 00:32:18,730 La aclaramos tal cual 844 00:32:18,730 --> 00:32:21,029 Bueno, pues ya sabemos leer del teclado 845 00:32:21,029 --> 00:32:22,809 Vale, entonces ahora 846 00:32:22,809 --> 00:32:26,920 Vamos a ejecutar este programa 847 00:32:26,920 --> 00:32:30,660 Vamos a ejecutarlo 848 00:32:30,660 --> 00:32:33,680 Este, vale, pues lo ejecutamos 849 00:32:33,680 --> 00:32:37,400 ¿Veis? Aquí es un ejemplo en el que 850 00:32:37,400 --> 00:32:39,579 Si yo ejecuto este programa dándole al botón verde 851 00:32:39,579 --> 00:32:41,640 Así sin más, ¿cuál me va a ejecutar? 852 00:32:41,680 --> 00:32:42,920 Ejemplo variables enteras 853 00:32:42,920 --> 00:32:45,180 Y no es ese el que yo quiero ejecutar 854 00:32:45,180 --> 00:32:46,180 Quiero ejecutar este otro 855 00:32:46,180 --> 00:32:48,819 Entonces aquí darle al botón verde sin más, pues no 856 00:32:48,819 --> 00:32:50,900 Entonces le voy aquí, botón derecho 857 00:32:50,900 --> 00:32:53,319 Runas 858 00:32:53,319 --> 00:32:53,640 Java 859 00:32:53,640 --> 00:32:55,039 vale 860 00:32:55,039 --> 00:33:00,490 vale, entonces ¿qué ha pasado? 861 00:33:04,920 --> 00:33:06,319 está el programa parado 862 00:33:06,319 --> 00:33:08,019 ¿veis? hay un cursor que pita 863 00:33:08,019 --> 00:33:09,799 claro, con razón está parado 864 00:33:09,799 --> 00:33:11,339 ¿el programa qué ha hecho? 865 00:33:11,500 --> 00:33:13,519 ha hecho su primera línea 866 00:33:13,519 --> 00:33:15,359 que es declarar la cajita 867 00:33:15,359 --> 00:33:17,839 esa parte ya la ha hecho, ha declarado la cajita 868 00:33:17,839 --> 00:33:20,079 y ahora le hemos dicho 869 00:33:20,079 --> 00:33:20,920 tú, lector 870 00:33:20,920 --> 00:33:24,099 vete y coge del teclado lo que te meta 871 00:33:24,099 --> 00:33:25,599 pues él es 872 00:33:25,599 --> 00:33:27,500 muy obediente 873 00:33:27,500 --> 00:33:29,819 y se ha ido a coger del teclado 874 00:33:29,819 --> 00:33:31,519 lo que le metan, pero no le están metiendo nada 875 00:33:31,519 --> 00:33:32,480 pues se está esperando 876 00:33:32,480 --> 00:33:35,160 y se va a quedar esperando hasta el infinito 877 00:33:35,160 --> 00:33:37,559 es decir, este programa está en la mitad 878 00:33:37,559 --> 00:33:38,440 no ha terminado 879 00:33:38,440 --> 00:33:41,299 si hubiera terminado, pondría aquí terminate 880 00:33:41,299 --> 00:33:43,500 que es lo que pone cuando hemos ejecutado otros 881 00:33:43,500 --> 00:33:45,339 ¿verdad? pero no ha terminado 882 00:33:45,339 --> 00:33:46,539 está parado a la mitad 883 00:33:46,539 --> 00:33:48,140 cruzado de brazos 884 00:33:48,140 --> 00:33:50,700 de hecho este botón 885 00:33:50,700 --> 00:33:53,339 que me permite a mí parar a lo bestia el proceso 886 00:33:53,339 --> 00:33:54,680 del sistema operativo, pararlo 887 00:33:54,680 --> 00:33:57,400 está en rojo, significa si yo quiero parar el proceso 888 00:33:57,400 --> 00:33:59,339 pues lo podría parar 889 00:33:59,339 --> 00:34:01,819 ¿vale? pero lo que 890 00:34:01,819 --> 00:34:03,960 está ahora es esperando, ¿se ha quedado clavado 891 00:34:03,960 --> 00:34:05,740 dónde? en esta línea 892 00:34:05,740 --> 00:34:07,619 se ha quedado clavado, y ahí se va a quedar 893 00:34:07,619 --> 00:34:10,119 clavado hasta el infinito, ¿hasta cuándo? 894 00:34:10,400 --> 00:34:11,800 hasta que yo no meta un número 895 00:34:11,800 --> 00:34:13,039 y cuando yo lo meta 896 00:34:13,039 --> 00:34:15,159 el lector que está ahí esperando 897 00:34:15,159 --> 00:34:18,179 cogerá el número y lo entregará 898 00:34:18,179 --> 00:34:19,739 en la sentencia 899 00:34:19,739 --> 00:34:22,059 de asignación en la que está colocado 900 00:34:22,059 --> 00:34:23,940 pues venga, vamos a 901 00:34:23,940 --> 00:34:25,900 meterle el numerito 902 00:34:25,900 --> 00:34:27,139 76 903 00:34:27,139 --> 00:34:29,119 enter, hasta que no damos el enter 904 00:34:29,119 --> 00:34:29,639 no se entera 905 00:34:29,639 --> 00:34:32,860 enter, y ahora ya me dice 906 00:34:32,860 --> 00:34:34,099 el resultado, esto es muy interesante 907 00:34:34,099 --> 00:34:36,679 una vez que yo le he dado al enter, él ya 908 00:34:36,679 --> 00:34:38,059 ha cogido 909 00:34:38,059 --> 00:34:41,139 el numerito, lo ha entregado 910 00:34:41,139 --> 00:34:42,400 y ya ha continuado operando 911 00:34:42,400 --> 00:34:44,780 ha continuado operando, que ha hecho esto 912 00:34:44,780 --> 00:34:45,380 o sea, esto 913 00:34:45,380 --> 00:34:50,039 sobra, vale 914 00:34:50,039 --> 00:34:51,940 y ya está 915 00:34:51,940 --> 00:34:54,619 ¿qué pasa? que este programa 916 00:34:54,619 --> 00:34:55,360 nos ha quedado 917 00:34:55,360 --> 00:34:58,679 muy poco amigable, que se llama, ¿por qué? 918 00:34:58,960 --> 00:35:22,960 Porque tú lanzas un programa y se queda esperando y no te dice nada y el usuario dice que tengo que meter aquí. Hombre, lo normal es que hagamos programas que sean un poquito más amables con el que los va a usar. ¿Qué sería lo ideal? Haber puesto antes del next in un mensajito introduzca por favor número entero. Eso habría sido lo ideal porque si no nos hemos quedado ahí con cara de tontos. 919 00:35:22,960 --> 00:35:29,699 ahora ya este programa 920 00:35:29,699 --> 00:35:32,320 está un poco mejor 921 00:35:32,320 --> 00:35:33,880 declara la variable 922 00:35:33,880 --> 00:35:35,519 muestra un mensaje 923 00:35:35,519 --> 00:35:37,440 y ahora se queda esperando 924 00:35:37,440 --> 00:35:40,360 pero ahora ya nos ha hecho un mensaje antes 925 00:35:40,360 --> 00:35:42,239 entonces ahora ya 926 00:35:42,239 --> 00:35:44,260 ahora ya 927 00:35:44,260 --> 00:35:46,360 jolín, tiene otra pinta 928 00:35:46,360 --> 00:35:48,619 está esperando 929 00:35:48,619 --> 00:35:49,980 porque está en next in 930 00:35:49,980 --> 00:35:51,400 está esperando porque está en next in 931 00:35:51,400 --> 00:35:53,380 pero como antes me ha mostrado un mensaje 932 00:35:53,380 --> 00:35:54,619 como antes me lo ha mostrado 933 00:35:54,619 --> 00:35:56,639 que es una sentencia que no tiene nada que ver con la otra, son independientes 934 00:35:56,639 --> 00:35:58,900 como antes me lo ha mostrado, al menos el usuario 935 00:35:58,900 --> 00:35:59,780 sabe lo que tiene que hacer 936 00:35:59,780 --> 00:36:02,179 pues ya está, ¿vale? 937 00:36:07,230 --> 00:36:07,590 ¿cómo? 938 00:36:10,909 --> 00:36:12,610 vale, a ver 939 00:36:12,610 --> 00:36:13,969 lo he puesto 940 00:36:13,969 --> 00:36:16,170 a ver, lo he puesto separado 941 00:36:16,170 --> 00:36:18,030 porque como yo hasta ahora lo que había dicho es 942 00:36:18,030 --> 00:36:19,710 que el system out le das 943 00:36:19,710 --> 00:36:22,670 o comillas dobles o una variable y te lo muestra 944 00:36:22,670 --> 00:36:23,849 ¿vale? pero 945 00:36:23,849 --> 00:36:26,150 podemos en un mismo system out 946 00:36:26,150 --> 00:36:28,110 mostrar varias cosas a la vez 947 00:36:28,110 --> 00:36:29,929 si queremos. Si queremos varias 948 00:36:29,929 --> 00:36:31,570 cosas, las vamos 949 00:36:31,570 --> 00:36:33,989 concatenando con el operador más. 950 00:36:34,889 --> 00:36:36,210 Por ejemplo, yo podría poner 951 00:36:36,210 --> 00:36:38,230 quiero las comillas dobles 952 00:36:38,230 --> 00:36:40,030 y el contenido de la variable. 953 00:36:40,829 --> 00:36:41,949 Pues entonces pongo esto 954 00:36:41,949 --> 00:36:43,670 y ahora pongo 955 00:36:43,670 --> 00:36:46,210 más y la variable 956 00:36:46,210 --> 00:36:49,849 y me va a concatenar, concatenación 957 00:36:49,849 --> 00:36:51,849 en el sentido de cadenas, me va a 958 00:36:51,849 --> 00:36:53,769 concatenar esto 959 00:36:53,769 --> 00:36:55,369 con esto, ¿vale? 960 00:36:57,780 --> 00:37:17,960 Entonces, ahora yo hago esto y, ¿vale? Pero ojo, porque no quería decir esto ahora, porque ya no tenemos tiempo, ojo, porque si yo pongo aquí, por ejemplo, imaginaos un system out que ponga variable n1 más variable n2, sin más. 961 00:37:17,960 --> 00:37:49,019 Imaginaos, si ya me voy con esto, imaginaos que tenemos esto de aquí, n1 igual a 8 y n2 igual a 12, y yo pongo ahora n1 más n2, porque quiero mostrar las dos, según lo que yo he dicho hasta ahora, vosotros esperaríais que pusiera 8 y 12, ¿sí o no? 962 00:37:49,019 --> 00:37:51,739 y no lo pone, ¿por qué? 963 00:37:52,099 --> 00:37:53,119 porque este operador 964 00:37:53,119 --> 00:37:55,900 cuando tiene variable entera a un lado 965 00:37:55,900 --> 00:37:57,360 y variable entera al otro 966 00:37:57,360 --> 00:38:00,260 ya no interpreta que esté concatenando 967 00:38:00,260 --> 00:38:02,139 él dice, ah, yo soy la suma 968 00:38:02,139 --> 00:38:03,679 ahora, entonces ¿qué hace? 969 00:38:03,760 --> 00:38:06,039 te suma y te muestra la suma 970 00:38:06,039 --> 00:38:07,659 para que este operador, la máquina 971 00:38:07,659 --> 00:38:09,960 virtual, interprete que está 972 00:38:09,960 --> 00:38:11,519 concatenando cadenas 973 00:38:11,519 --> 00:38:14,039 uno de los dos al menos 974 00:38:14,039 --> 00:38:15,320 tiene que ser una cadena 975 00:38:15,320 --> 00:38:18,119 con que uno de los dos sea una cadena 976 00:38:18,119 --> 00:38:20,659 ya interpreta, ojo, no soy el operador 977 00:38:20,659 --> 00:38:22,579 suma aritmética, soy el operador 978 00:38:22,579 --> 00:38:24,840 concatenar, con lo cual 979 00:38:24,840 --> 00:38:26,800 yo podría arreglar esto, por ejemplo 980 00:38:26,800 --> 00:38:27,579 haciendo esto de aquí 981 00:38:27,579 --> 00:38:30,340 poniendo un espacio, ¿verdad? 982 00:38:31,159 --> 00:38:32,119 porque ahora ya 983 00:38:32,119 --> 00:38:34,019 este tiene un lado cadena 984 00:38:34,019 --> 00:38:36,940 luego dice, ojo, no soy operador suma 985 00:38:36,940 --> 00:38:38,900 soy operador concatenar, pues concateno 986 00:38:38,900 --> 00:38:40,119 8 con espacio 987 00:38:40,119 --> 00:38:42,619 y me queda una cadena, y ahora 988 00:38:42,619 --> 00:38:45,019 este más, aquí tiene un número 989 00:38:45,019 --> 00:38:46,840 pero aquí tiene una cadena, entonces dice 990 00:38:46,840 --> 00:38:49,579 Ojo, no soy operador suma, soy operador concatenar, 991 00:38:49,679 --> 00:38:52,900 porque a un lado tengo una cadena, pues funciono como cadena. 992 00:38:53,280 --> 00:38:55,880 Entonces ahora, como concatenación, perdón. 993 00:38:56,440 --> 00:39:01,119 Entonces ahora este bicho, pues, ahora ya sí que sí, bueno, lo que fuera. 994 00:39:02,260 --> 00:39:03,900 Ah, bueno, es que no le he metido un numerito entero. 995 00:39:06,579 --> 00:39:13,380 Vale, ahora ya, este ya sí, ya no te hace la suma de 8 más 12, sino, ¿vale? 996 00:39:13,739 --> 00:39:15,420 Bueno, paramos. 997 00:39:15,420 --> 00:39:17,780 Un segundito que paro 998 00:39:17,780 --> 00:39:18,760 Dime