1 00:00:00,750 --> 00:00:48,979 Vale, pues venga, vamos a arrancar aquí, venga, pues vamos, venga, pues ejercicio 1, por ahora nosotros hacemos cada ejercicio en un fichero distinto, vale, nos vamos a organizar así, pues bueno, a ver, yo en mi caso cuando los vaya a corregir aquí, 2 00:00:48,979 --> 00:00:56,280 Vosotros organizados de otra manera, pero bueno, os recomiendo que ahora mismo hagáis cada ejercicio en un ficherito distinto 3 00:00:56,280 --> 00:01:00,659 y así lo tenéis más organizado, no tenéis efectos secundarios de un código en otro, etc. 4 00:01:01,359 --> 00:01:09,000 Pues venga, cada ejercicio o cada programa, porque para nosotros ahora cada ejercicio es un programa. 5 00:01:09,340 --> 00:01:10,420 Llegará un momento en que ya no. 6 00:01:11,079 --> 00:01:16,640 Cada ejercicio será una aplicación que tenga diferentes programas, clases que se llaman entre sí, etc. 7 00:01:16,640 --> 00:01:19,099 Ahora mismo cada ejercicio es un programa 8 00:01:19,099 --> 00:01:20,560 Pues venga, vámonos con el primero 9 00:01:20,560 --> 00:01:23,200 De nuevo recordamos que ahora mismo 10 00:01:23,200 --> 00:01:25,040 Para nosotros programa y clase 11 00:01:25,040 --> 00:01:26,040 Son sinónimos 12 00:01:26,040 --> 00:01:27,840 Dentro de poco ya 13 00:01:27,840 --> 00:01:31,280 Esa sinonimia, si es que eso se puede decir 14 00:01:31,280 --> 00:01:33,120 Desaparecerá 15 00:01:33,120 --> 00:01:34,000 Porque no es así 16 00:01:34,000 --> 00:01:36,379 Pero ahora mismo con lo que sabemos sí 17 00:01:36,379 --> 00:01:39,519 Pues venga, ejercicio 18 00:01:39,519 --> 00:01:40,359 Uno 19 00:01:40,359 --> 00:01:43,680 Marco aquí el main 20 00:01:43,680 --> 00:01:47,319 Y esto es 21 00:01:47,319 --> 00:01:49,879 Lo que tenemos que escribir sí o sí 22 00:01:49,879 --> 00:01:52,079 Aunque todavía no entendamos por qué 23 00:01:52,079 --> 00:01:54,260 Para empezar a tirar un código 24 00:01:54,260 --> 00:01:56,599 ¿Vale? Aunque todavía no entendamos por qué 25 00:01:56,599 --> 00:01:58,000 Eso es lo que tenemos que escribir sí o sí 26 00:01:58,000 --> 00:01:59,560 Para empezar a tirar código, vale 27 00:01:59,560 --> 00:02:02,319 Pues el código que vamos a tirar 28 00:02:02,319 --> 00:02:03,379 ¿Qué tiene que hacer? 29 00:02:06,480 --> 00:02:08,159 Dale, ábrete, aquí 30 00:02:08,159 --> 00:02:08,919 Vale 31 00:02:08,919 --> 00:02:12,159 Eh... 32 00:02:12,159 --> 00:02:13,879 Ah, que está aquí, vale 33 00:02:13,879 --> 00:02:16,240 Tiene que, programa en Java 34 00:02:16,240 --> 00:02:18,240 Que lea por teclado dos variables enteras 35 00:02:18,240 --> 00:02:25,939 enteras y muestre su suma en pantalla. Cuando uno lee un enunciado, primero lo lee un montón 36 00:02:25,939 --> 00:02:30,699 de veces hasta que entienda exactamente lo que tiene que hacer. En este ejemplo es una 37 00:02:30,699 --> 00:02:35,560 línea, un enunciado sencillo, no tenemos que leerlo 50 veces hasta que entendamos lo 38 00:02:35,560 --> 00:02:42,060 que queremos hacer, pero en otros casos, claro que tenemos que leer un enunciado unas cuantas 39 00:02:42,060 --> 00:02:47,699 veces hasta que entendemos lo que hay que hacer. Incluso si tiene un montón de requisitos 40 00:02:47,699 --> 00:02:50,219 de cosas, pues lo normal es leerlo 41 00:02:50,219 --> 00:02:51,719 ¿hay una tercera cosa? 42 00:02:52,419 --> 00:02:53,439 no se ha ido todavía 43 00:02:53,439 --> 00:02:54,340 ahora hay más 44 00:02:54,340 --> 00:02:56,740 bueno 45 00:02:56,740 --> 00:03:01,539 incluso esas sucesivas lecturas 46 00:03:01,539 --> 00:03:03,400 las hacemos con un lápiz y papel al lado 47 00:03:03,400 --> 00:03:05,139 para organizarnos, ah vale, aquí 48 00:03:05,139 --> 00:03:07,080 esto me lo va a pedir varias veces 49 00:03:07,080 --> 00:03:09,159 vale, vale, una primera organización 50 00:03:09,159 --> 00:03:11,919 bueno, ya he entendido exactamente lo que tiene que hacer 51 00:03:11,919 --> 00:03:13,919 ¿que hay algo que no entiendo 52 00:03:13,919 --> 00:03:15,240 sobre lo que tengo que hacer? 53 00:03:15,800 --> 00:03:17,379 a la persona que me ha propuesto 54 00:03:17,379 --> 00:03:21,219 esa aplicación, ese ejercicio, ese enunciado, le pido los detalles. 55 00:03:22,580 --> 00:03:25,259 Todo esto de lo que hablo es la fase de análisis 56 00:03:25,259 --> 00:03:29,219 que en un caso como este se traduce en leerlo y decir 57 00:03:29,219 --> 00:03:33,419 pues ya lo he entendido. En otro contexto se traduce en un proceso muy largo 58 00:03:33,419 --> 00:03:37,479 que involucra a un montón de personas hasta que por fin se detalla exactamente 59 00:03:37,479 --> 00:03:41,379 que tiene que hacer el programa. En este caso, ese proceso ha terminado 60 00:03:41,379 --> 00:03:45,360 porque ya hemos entendido lo que hay que hacer. Uy, voy a tener que leer del 61 00:03:45,360 --> 00:03:47,319 teclado, bien, ya automáticamente 62 00:03:47,319 --> 00:03:49,340 hago la conexión, voy a necesitar el objeto 63 00:03:49,340 --> 00:03:50,400 escáner, muy bien 64 00:03:50,400 --> 00:03:53,479 ahora, voy a necesitar 65 00:03:53,479 --> 00:03:55,319 dos números 66 00:03:55,319 --> 00:03:57,479 aquí hasta que me lo, hasta me dice 67 00:03:57,479 --> 00:03:59,159 que van a ser dos variables 68 00:03:59,159 --> 00:04:01,240 voy a necesitar dos datos, dos datos 69 00:04:01,240 --> 00:04:03,340 pues dos variables, vale, dos variables 70 00:04:03,340 --> 00:04:05,000 ahí, ¿de qué tipo? 71 00:04:05,159 --> 00:04:07,379 es que ya me lo está diciendo, si no lo podría decidir 72 00:04:07,379 --> 00:04:09,379 yo, vale, si me dice 73 00:04:09,379 --> 00:04:11,400 escribir un programa en Java 74 00:04:11,400 --> 00:04:12,379 que 75 00:04:12,379 --> 00:04:15,400 te introduzca cuántas veces has hecho 76 00:04:15,400 --> 00:04:17,300 no sé qué, ahí no te dice que 77 00:04:17,300 --> 00:04:19,139 esa variable sea entera 78 00:04:19,139 --> 00:04:21,319 pero tú dices, algo que cuenta 79 00:04:21,319 --> 00:04:23,540 es entero, es 2, 3, 5 80 00:04:23,540 --> 00:04:24,839 no es 7,8 81 00:04:24,839 --> 00:04:27,339 entonces en este caso es que ni siquiera tenemos 82 00:04:27,339 --> 00:04:29,279 que tomar decisiones nosotros, porque uno lo está 83 00:04:29,279 --> 00:04:31,040 diciendo, pero muchas veces tenemos que tomarlas 84 00:04:31,040 --> 00:04:32,680 bueno, pues en nuestro caso 85 00:04:32,680 --> 00:04:35,439 leer por teclado dos numeritos enteros 86 00:04:35,439 --> 00:04:37,560 uy, dos variables, ahí tendrán que estar 87 00:04:37,560 --> 00:04:39,660 muy bien, leer por teclado, ¿qué significa? 88 00:04:40,160 --> 00:04:41,259 que su valor en lugar de 89 00:04:41,259 --> 00:04:43,620 asignárselo así tal cual a capón por código 90 00:04:43,620 --> 00:04:45,819 voy a tener que solicitarlo 91 00:04:45,819 --> 00:04:47,680 al usuario, ah que bien 92 00:04:47,680 --> 00:04:49,399 eso ya lo sé hacer, lo he hecho varias veces 93 00:04:49,399 --> 00:04:51,560 y no tengo ya que pensar sobre ello 94 00:04:51,560 --> 00:04:53,860 porque ya me lo he aprendido, sé como se hace 95 00:04:53,860 --> 00:04:55,839 ¿vale? porque programar se basa en 96 00:04:55,839 --> 00:04:58,180 ir incorporando conocimientos 97 00:04:58,180 --> 00:04:59,720 e írtelos dejando 98 00:04:59,720 --> 00:05:00,939 ya dentro grabados 99 00:05:00,939 --> 00:05:03,819 y luego ya ser capaz de componer el puzzle 100 00:05:03,819 --> 00:05:05,720 ¿vale? o sea programar 101 00:05:05,720 --> 00:05:07,699 es componer el puzzle con los 102 00:05:07,699 --> 00:05:09,639 conocimientos que yo ya voy aprendiendo 103 00:05:09,639 --> 00:05:12,779 luego, la memoria es fundamental 104 00:05:12,779 --> 00:05:15,139 ¿vale? la memoria es fundamental 105 00:05:15,139 --> 00:05:16,800 porque hay que aprenderse las cosas 106 00:05:16,800 --> 00:05:17,879 y hay que tenerlas ahí 107 00:05:17,879 --> 00:05:20,319 si no, no puedes tirar de esos conocimientos 108 00:05:20,319 --> 00:05:22,379 tú puedes buscar en internet 109 00:05:22,379 --> 00:05:23,399 o buscar en una IA 110 00:05:23,399 --> 00:05:25,300 una duda concreta 111 00:05:25,300 --> 00:05:27,540 ¿vale? pero esa duda te ha surgido 112 00:05:27,540 --> 00:05:29,660 después de que tú ya te has hecho tu mapa mental 113 00:05:29,660 --> 00:05:31,980 has compuesto lo que tú ya sabes 114 00:05:31,980 --> 00:05:33,879 y tienes un boceto de las cosas 115 00:05:33,879 --> 00:05:35,399 a partir de ahí ya puedes 116 00:05:35,399 --> 00:05:37,839 consultar dudas concretas 117 00:05:37,839 --> 00:05:39,480 ¿vale? entonces 118 00:05:39,480 --> 00:05:52,480 Nosotros ahora mismo ya sabemos perfectamente de memoria qué tipos de datos tenemos, cómo se declaran las variables y además sabemos perfectamente cómo leer un valor por teclado para asignarse a una variable. 119 00:05:52,740 --> 00:06:07,220 Pues ese conocimiento ya tiene que estar en nuestra cabeza, no necesitamos, si tenemos que consultarlo, ya vamos muy mal, porque entonces ya el resto de la pelota no va a funcionar, se nos va a hacer ahí una pelota, quiero decir, enorme. 120 00:06:07,220 --> 00:06:09,480 bueno, pues entonces, pues 121 00:06:09,480 --> 00:06:12,100 y luego tendré que mostrar 122 00:06:12,100 --> 00:06:13,819 la suma, sé mostrar, sí, tengo un 123 00:06:13,819 --> 00:06:15,300 sistema de println, sé mostrar 124 00:06:15,300 --> 00:06:18,019 tengo que hacer una suma de números y hacerla 125 00:06:18,019 --> 00:06:19,959 sí, conozco el operador suma, sé hacerla 126 00:06:19,959 --> 00:06:21,800 vale, pues efectivamente sabemos 127 00:06:21,800 --> 00:06:23,759 hacer todo lo que hay aquí, ahora 128 00:06:23,759 --> 00:06:25,540 se trata de componerlo 129 00:06:25,540 --> 00:06:27,680 ya está, componer ese puzzle porque 130 00:06:27,680 --> 00:06:29,779 sabemos hacerlo todo, entonces uno va 131 00:06:29,779 --> 00:06:31,819 identificando, ah, aquí voy a necesitar hacer esto 132 00:06:31,819 --> 00:06:33,899 ah, sí, esto se hace así, aquí voy a 133 00:06:33,899 --> 00:06:35,540 necesitar esto, ah, sí, esto se hace así 134 00:06:35,540 --> 00:06:37,779 Y este así, esto se hacía así 135 00:06:37,779 --> 00:06:39,439 Es porque lo tenemos en la cabeza 136 00:06:39,439 --> 00:06:40,819 Metido, ¿vale? 137 00:06:41,680 --> 00:06:43,899 Pues venga, vamos a componer aquí ese puzzle 138 00:06:43,899 --> 00:06:44,959 Y decimos 139 00:06:44,959 --> 00:06:46,800 Eran dos variables enteras 140 00:06:46,800 --> 00:06:49,399 Pues ya está, sé declarar dos variables enteras 141 00:06:49,399 --> 00:06:51,939 Num1 y num2 142 00:06:51,939 --> 00:06:53,620 Vale 143 00:06:53,620 --> 00:06:56,800 Tengo que mostrar una suma 144 00:06:56,800 --> 00:06:57,959 ¿Vale? 145 00:06:58,019 --> 00:06:59,819 Mi resultado final va a ser este 146 00:06:59,819 --> 00:07:01,500 Mostrar una suma 147 00:07:01,500 --> 00:07:03,579 Este va a ser mi resultado 148 00:07:03,579 --> 00:07:04,480 Entonces 149 00:07:04,480 --> 00:07:08,939 los programas en general 150 00:07:08,939 --> 00:07:10,339 este es un ejemplo muy sencillo 151 00:07:10,339 --> 00:07:13,000 que igual no lo ilustra mucho 152 00:07:13,000 --> 00:07:15,399 pero uno no programa en línea 153 00:07:15,399 --> 00:07:17,240 pa pa pa hago esto y ahora esto 154 00:07:17,240 --> 00:07:18,379 y ahora esto y ahora esto 155 00:07:18,379 --> 00:07:21,540 lo normal de hecho es que tú empieces a tirar desde el final 156 00:07:21,540 --> 00:07:23,120 tiras desde el final 157 00:07:23,120 --> 00:07:23,579 que es 158 00:07:23,579 --> 00:07:27,980 mi programa con que tiene que concluir 159 00:07:27,980 --> 00:07:29,540 que espera el usuario 160 00:07:29,540 --> 00:07:30,199 de mi programa 161 00:07:30,199 --> 00:07:33,040 el usuario espera de tu programa 162 00:07:33,040 --> 00:07:35,120 Que tú muestres la suma de dos números 163 00:07:35,120 --> 00:07:36,279 Pues tú tiras de ahí 164 00:07:36,279 --> 00:07:39,079 Esto es lo que el usuario espera 165 00:07:39,079 --> 00:07:40,600 Que tú muestres la suma de dos números 166 00:07:40,600 --> 00:07:43,279 Y ahora ya, para conseguir eso 167 00:07:43,279 --> 00:07:44,639 Empiezas a 168 00:07:44,639 --> 00:07:46,620 Hacer los pasos previos 169 00:07:46,620 --> 00:07:49,220 Vale, pues esto es lo que yo tengo 170 00:07:49,220 --> 00:07:51,300 Que hacer, mostrar la suma de dos números 171 00:07:51,300 --> 00:07:53,300 Vale, sé hacer la suma 172 00:07:53,300 --> 00:07:55,459 De dos números, este más este otro 173 00:07:55,459 --> 00:07:56,759 Sé mostrarla 174 00:07:56,759 --> 00:07:59,199 Claro, ahora tengo que 175 00:07:59,199 --> 00:08:01,000 Ver si con esto he completado 176 00:08:01,000 --> 00:08:03,160 Lógicamente no, ya me lo dice el compilador 177 00:08:03,160 --> 00:08:04,339 El compilador me dice 178 00:08:04,339 --> 00:08:06,680 Oye, perdona, num1 y num2 no tienen nada 179 00:08:06,680 --> 00:08:08,980 Claro, claro, es que me falta 180 00:08:08,980 --> 00:08:10,139 Ahora ya 181 00:08:10,139 --> 00:08:12,040 Hacerme la pregunta 182 00:08:12,040 --> 00:08:14,779 ¿De dónde sacan num1 y num2 los valores? 183 00:08:15,000 --> 00:08:15,980 Los sacan del teclado 184 00:08:15,980 --> 00:08:17,459 Vale, pues me voy ahí 185 00:08:17,459 --> 00:08:20,959 Entonces, este que es un programa 186 00:08:20,959 --> 00:08:23,040 De 4 o 5 líneas 187 00:08:23,040 --> 00:08:24,980 ¿No es el mejor 188 00:08:24,980 --> 00:08:25,959 Para ilustrar eso? 189 00:08:26,379 --> 00:08:27,439 Hola, dime 190 00:08:27,439 --> 00:08:29,680 Estamos haciendo un grupo de los delegados 191 00:08:29,680 --> 00:08:30,660 para el tema de los baños 192 00:08:30,660 --> 00:08:32,240 Esperaos segunditos 193 00:08:32,240 --> 00:08:34,759 si no quieres salir en pantalla 194 00:08:34,759 --> 00:08:37,700 Bueno, pues estaba diciendo 195 00:08:37,700 --> 00:08:39,500 este ejemplito de programa 196 00:08:39,500 --> 00:08:41,379 que son cuatro cosas, quizá no es el más 197 00:08:41,379 --> 00:08:43,539 ilustrativo de lo que os quiero transmitir ahora 198 00:08:43,539 --> 00:08:45,320 pero lo que os quiero transmitir 199 00:08:45,320 --> 00:08:47,279 es que aunque un programa 200 00:08:47,279 --> 00:08:49,360 lo que acaba siendo al final 201 00:08:49,360 --> 00:08:50,940 es una secuencia de acciones 202 00:08:50,940 --> 00:08:53,899 no se construye en secuencia 203 00:08:53,899 --> 00:08:55,600 Ah, tengo que hacer esto 204 00:08:55,600 --> 00:08:57,500 vale, no se construye en secuencia 205 00:08:57,500 --> 00:08:59,399 su diseño, su construcción 206 00:08:59,399 --> 00:09:03,779 pues la vas haciendo por iteraciones sucesivas, te vas aproximando 207 00:09:03,779 --> 00:09:08,899 y normalmente el punto de partida es el final, que es a dónde necesito llegar 208 00:09:08,899 --> 00:09:15,320 a dónde necesito llegar, aquí necesitamos llegar a que se muestre un mensaje 209 00:09:15,320 --> 00:09:20,919 luego un sistema de println y que ese mensaje sea una suma de dos números 210 00:09:20,919 --> 00:09:24,799 que tendré que tener declarados previamente, quiero llegar aquí 211 00:09:25,740 --> 00:09:29,500 Vale, ahora, ¿qué acciones tengo que tomar para llegar aquí? 212 00:09:30,259 --> 00:09:34,460 En este caso, la única acción que tengo que tomar es dar valor a estas variables, 213 00:09:34,899 --> 00:09:36,440 porque ya me lo está diciendo el compilador. 214 00:09:37,100 --> 00:09:39,519 Yo, estupendo, te hago esto, ¿qué es lo que tú quieres hacer? 215 00:09:39,659 --> 00:09:42,860 Yo te lo hago, pero me falta el valor de las variables. 216 00:09:43,700 --> 00:09:47,379 Vale, pues entonces, ¿cuál es la pieza que tenemos que insertar aquí dentro? 217 00:09:47,940 --> 00:09:51,879 Pues la pieza que tenemos que insertar aquí dentro es la de darle valor a las variables. 218 00:09:51,879 --> 00:09:54,600 num1 igual a lo que sea 219 00:09:54,600 --> 00:09:58,559 y num2 igual a lo que sea 220 00:09:58,559 --> 00:10:00,460 genial 221 00:10:00,460 --> 00:10:02,740 ya hemos puesto otra pieza 222 00:10:02,740 --> 00:10:04,759 en nuestro rompecabezas 223 00:10:04,759 --> 00:10:06,559 que es, ah, me falta darle valor 224 00:10:06,559 --> 00:10:07,779 ya hemos puesto una pieza 225 00:10:07,779 --> 00:10:10,659 pero hemos dejado dos agujeritos negros 226 00:10:10,659 --> 00:10:11,620 por completar 227 00:10:11,620 --> 00:10:13,820 el agujerito negro de y aquí que 228 00:10:13,820 --> 00:10:15,980 y el agujerito negro de aquí que 229 00:10:15,980 --> 00:10:17,919 vamos haciendo bocetos 230 00:10:17,919 --> 00:10:20,700 y en cada boceto 231 00:10:20,700 --> 00:10:22,600 que hacemos pues tendrá una parte que todavía 232 00:10:22,600 --> 00:10:24,419 no hemos resuelto, vale 233 00:10:24,419 --> 00:10:26,059 pues ahora vamos a atacar esa parte 234 00:10:26,059 --> 00:10:28,700 vale, que tengo yo que asignar 235 00:10:28,700 --> 00:10:30,600 a estas variables, me voy a 236 00:10:30,600 --> 00:10:32,879 denunciar dos, es que no me acuerdo, dos valores 237 00:10:32,879 --> 00:10:34,159 solicitados por teclado 238 00:10:34,159 --> 00:10:36,620 vale, pues yo sé como 239 00:10:36,620 --> 00:10:38,799 asigno una variable, un valor 240 00:10:38,799 --> 00:10:40,440 solicitado por teclado, que es 241 00:10:40,440 --> 00:10:42,500 a través de un objeto 242 00:10:42,500 --> 00:10:44,700 que yo me tendré que 243 00:10:44,700 --> 00:10:46,620 crear previamente, a través 244 00:10:46,620 --> 00:10:48,580 de un objeto, sé que yo puedo hacer 245 00:10:48,580 --> 00:10:50,559 esto, y esto porque me 246 00:10:50,559 --> 00:10:52,519 lo sé de memoria, ese ladrillo 247 00:10:52,519 --> 00:10:54,480 lo conozco y lo puedo usar aquí porque 248 00:10:54,480 --> 00:10:56,539 me lo sé, vale 249 00:10:56,539 --> 00:10:58,500 y sé que aquí tengo que hacer 250 00:10:58,500 --> 00:11:02,840 lo mismo, vale 251 00:11:02,840 --> 00:11:04,899 vale, sé que 252 00:11:04,899 --> 00:11:06,879 por aquí van las cosas, pero 253 00:11:06,879 --> 00:11:09,100 claro, esta cosita de aquí 254 00:11:09,100 --> 00:11:10,259 que es 255 00:11:10,259 --> 00:11:12,700 la que llama esto 256 00:11:12,700 --> 00:11:14,740 para leer el número, esta cosita, ya me 257 00:11:14,740 --> 00:11:16,440 falta el último de los ladrillos 258 00:11:16,440 --> 00:11:18,659 que es, oye, cuidado 259 00:11:18,659 --> 00:11:20,659 que me estoy acordando 260 00:11:20,659 --> 00:11:22,039 que esta cosa de aquí 261 00:11:22,039 --> 00:11:24,279 Necesita ser declarada 262 00:11:24,279 --> 00:11:25,419 Necesita ser declarada 263 00:11:25,419 --> 00:11:28,480 Vale, pues ese es el último ladrillo que queda 264 00:11:28,480 --> 00:11:30,620 El último escollo que nos queda 265 00:11:30,620 --> 00:11:32,059 Es esta sentencia 266 00:11:32,059 --> 00:11:33,600 Que usa esta cosa de aquí 267 00:11:33,600 --> 00:11:36,139 La tenía que tener declarada, es verdad 268 00:11:36,139 --> 00:11:38,440 Si no la tenía declarada antes no funcionaba 269 00:11:38,440 --> 00:11:40,320 Pues ya pongo el ladrillo 270 00:11:40,320 --> 00:11:40,860 Que queda 271 00:11:40,860 --> 00:11:43,639 Y esto pues también me lo sé de memoria 272 00:11:43,639 --> 00:11:46,080 Y sé que se hacía de esta manera 273 00:11:46,080 --> 00:11:55,549 Y digo, ¿y por qué me salía rojo? 274 00:11:56,029 --> 00:11:57,090 Ah, porque esto 275 00:11:57,090 --> 00:11:58,970 Por esto que ya aprendí 276 00:11:58,970 --> 00:12:09,350 y que voy a entender más adelante, ahora no puedo, esto que ya aprendí, que cuando le doy un tipo de dato que él no sabe dónde está, 277 00:12:09,549 --> 00:12:17,529 porque int sabe dónde está, que no sabe dónde está, tengo que decirle dónde está, y eso, aunque no entiendo nada de por qué se lo digo así, 278 00:12:17,950 --> 00:12:28,289 aunque no entiendo nada, me he aprendido por ahora, que era así como había que decírselo, ¿vale? 279 00:12:28,289 --> 00:12:33,080 bueno, pues ahora sí que parece que todos los ladrillos 280 00:12:33,080 --> 00:12:34,720 del programa están 281 00:12:34,720 --> 00:12:36,799 he partido 282 00:12:36,799 --> 00:12:38,539 del final, mi programa 283 00:12:38,539 --> 00:12:40,600 tiene que mostrar una suma 284 00:12:40,600 --> 00:12:41,220 de números 285 00:12:41,220 --> 00:12:43,840 y he empezado a construirlo 286 00:12:43,840 --> 00:12:46,799 esa suma de números, si no recibe 287 00:12:46,799 --> 00:12:47,860 un valor previamente 288 00:12:47,860 --> 00:12:49,399 es imposible 289 00:12:49,399 --> 00:12:52,580 que se obtenga, pues ya me he hecho 290 00:12:52,580 --> 00:12:54,559 la siguiente pregunta, ¿y cómo reciben el valor? 291 00:12:55,139 --> 00:12:56,360 ah, por teclado, vale 292 00:12:56,360 --> 00:12:58,080 pues pongo esto, muy bien 293 00:12:58,080 --> 00:13:18,409 Y esto para ponerlo, ¿me hacía falta algo? Sí, me hacía falta lo de arriba, muy bien. Vale, entonces ahora llega el momento de, hemos pasado la fase de compilación exitosamente, porque esto no tiene errores de compilación y ahora viene el momento de la fase de ejecución. 294 00:13:18,409 --> 00:13:39,509 ¿Vale? Insisto, eso es un ejemplo muy sencillito, pero me interesa un poquito los detalles de alguna manera del proceso mental que tenéis que en general seguir, ¿vale? Porque el vacío de tengo que hacer un programa que hace un montón de cosas, uno se enfrenta al vacío de y ahora tengo que empezar a escribir código, uno tras otro, uno tras otro. 295 00:13:39,509 --> 00:13:58,330 Pues no, no escribo código uno tras otro, primero me sitúo en, ¿cómo tiene que acabar esto? Tiene que acabar mostrando un valor, este valor, muy bien, este valor, ¿cómo lo consigo? ¿Y qué necesito? Necesitas para construirlo tres variables, venga, las declaro y así vamos, ¿vale? 296 00:13:58,330 --> 00:13:59,830 ¿Qué ibas a preguntar? 297 00:14:01,769 --> 00:14:03,649 Ah, el import ese de arriba. 298 00:14:04,529 --> 00:14:04,830 Esto. 299 00:14:06,570 --> 00:14:08,210 ¿Vale? Necesario 300 00:14:08,210 --> 00:14:09,669 para poder 301 00:14:09,669 --> 00:14:11,830 usar esto en Java. 302 00:14:11,830 --> 00:14:13,809 ¿Vale? Ya lo entenderemos más adelante. 303 00:14:13,929 --> 00:14:14,289 Repito. 304 00:14:14,529 --> 00:14:17,830 ¿Era para que mostrase...? 305 00:14:18,929 --> 00:14:19,769 Para que mostrase, no. 306 00:14:20,350 --> 00:14:21,850 Esta sentencia lo que hacía era 307 00:14:21,850 --> 00:14:23,370 quedarse esperando, 308 00:14:23,610 --> 00:14:25,009 dejar al programa a la espera 309 00:14:25,009 --> 00:14:27,029 de que alguien llegue y meta un número. 310 00:14:27,029 --> 00:14:29,730 cuando ese alguien ha llegado y ha metido 311 00:14:29,730 --> 00:14:31,330 un número en el teclado numérico 312 00:14:31,330 --> 00:14:33,990 ese numerito, pum, se almacena 313 00:14:33,990 --> 00:14:35,850 aquí y ya saltamos a la siguiente 314 00:14:35,850 --> 00:14:36,470 sentencia 315 00:14:36,470 --> 00:14:40,110 ¿vale? entonces la fase de compilación 316 00:14:40,110 --> 00:14:41,690 la habríamos pasado porque 317 00:14:41,690 --> 00:14:43,690 este programa no tiene errores de compilación 318 00:14:43,690 --> 00:14:45,230 sino el compilador me avisaría 319 00:14:45,230 --> 00:14:47,870 con sus rayados en rojos raros 320 00:14:47,870 --> 00:14:49,590 vale 321 00:14:49,590 --> 00:14:51,110 ahora vamos a hacer 322 00:14:51,110 --> 00:14:53,549 una primera ejecución 323 00:14:53,549 --> 00:14:55,889 pues venga, ejecutamos 324 00:14:55,889 --> 00:15:13,299 esto a ver qué hace y mi consola se ha perdido un momento ahí está mi consola vale entonces claro 325 00:15:13,299 --> 00:15:21,179 yo he hecho el programa yo soy programador soy desarrollador entonces yo veo aquí este cursor 326 00:15:21,179 --> 00:15:27,159 aquí pataleando y como yo soy desarrolladora soy hecho el programa sé que esto significa que el 327 00:15:27,159 --> 00:15:28,899 programa está ahí esperando 328 00:15:28,899 --> 00:15:31,340 y además incluso sé que está esperando un número 329 00:15:31,340 --> 00:15:32,600 porque he hecho yo el código 330 00:15:32,600 --> 00:15:35,580 pero claro, a un usuario le das este programa 331 00:15:35,580 --> 00:15:37,360 y el 332 00:15:37,360 --> 00:15:39,379 programa arranca y hay ahí un cursor 333 00:15:39,379 --> 00:15:41,320 parpadeando y dice, ¿qué me han dado? 334 00:15:41,419 --> 00:15:43,240 ¿qué es esto? ¿vale? ¿qué me han dado? 335 00:15:43,779 --> 00:15:45,120 con lo cual, primera cosa que 336 00:15:45,120 --> 00:15:46,820 tenemos ahora que corregir 337 00:15:46,820 --> 00:15:49,019 de la cual nos ha informado la ejecución 338 00:15:49,019 --> 00:15:51,120 vamos a poner un mensajito 339 00:15:51,120 --> 00:15:52,740 ¿qué menos que poner un mensajito? 340 00:15:53,340 --> 00:15:53,879 bueno, pues 341 00:15:53,879 --> 00:15:56,940 en lugar de seguir ejecutando voy a pararlo 342 00:15:56,940 --> 00:15:58,039 directamente a lo bestia 343 00:15:58,039 --> 00:16:00,759 con el botoncito rojo de aquí 344 00:16:00,759 --> 00:16:02,460 ¡pum! 345 00:16:03,480 --> 00:16:05,120 aborto este programa a lo bestia 346 00:16:05,120 --> 00:16:07,440 terminado, ya me dice que está terminado 347 00:16:07,440 --> 00:16:09,120 y voy a arreglar eso 348 00:16:09,120 --> 00:16:10,940 que eso no es que sea un error del programa 349 00:16:10,940 --> 00:16:13,320 pero hombre, lo convierte 350 00:16:13,320 --> 00:16:14,559 en un código 351 00:16:14,559 --> 00:16:16,000 menos 352 00:16:16,000 --> 00:16:18,879 amable para el que lo va a usar y por tanto 353 00:16:18,879 --> 00:16:20,159 seguramente menos vendible 354 00:16:20,159 --> 00:16:22,860 ¿qué he identificado que me falta? 355 00:16:22,860 --> 00:16:24,539 un mensajito aquí, que menos 356 00:16:24,539 --> 00:16:26,220 un mensajito 357 00:16:26,220 --> 00:16:29,779 Introduzca un entero 358 00:16:29,779 --> 00:16:32,159 Vale 359 00:16:32,159 --> 00:16:36,360 Y ahora 360 00:16:36,360 --> 00:16:39,059 Una vez que he introducido el primer entero 361 00:16:39,059 --> 00:16:42,460 Tiene sentido un segundo mensaje 362 00:16:42,460 --> 00:16:44,820 Antes de que se quede esperando para el otro 363 00:16:44,820 --> 00:16:51,240 Introduzca otro entero 364 00:16:51,240 --> 00:16:52,320 Joder 365 00:16:52,320 --> 00:16:56,480 Si es que ya los tiene muy fácil 366 00:16:56,480 --> 00:16:57,820 Llega el viernes a última hora 367 00:16:57,820 --> 00:16:59,600 Al patio a berrear 368 00:16:59,600 --> 00:17:01,919 y tan anchos que se quedan 369 00:17:01,919 --> 00:17:03,759 vale 370 00:17:03,759 --> 00:17:05,319 y ahora ya el programa 371 00:17:05,319 --> 00:17:09,920 el programa va a mostrar la suma 372 00:17:09,920 --> 00:17:12,160 pero ya que estamos haciéndolo elegante 373 00:17:12,160 --> 00:17:13,680 ya que estamos haciéndolo elegante 374 00:17:13,680 --> 00:17:16,220 vamos a aprovechar 375 00:17:16,220 --> 00:17:17,519 para hacerlo 376 00:17:17,519 --> 00:17:19,400 más elegante y que le diga 377 00:17:19,400 --> 00:17:20,619 la suma es 378 00:17:20,619 --> 00:17:23,019 entonces yo soy muy lista y digo 379 00:17:23,019 --> 00:17:26,000 voy a concatenar el mensajito 380 00:17:26,000 --> 00:17:27,299 la suma es 381 00:17:27,299 --> 00:17:30,980 voy a concatenarlo ya con esta suma 382 00:17:30,980 --> 00:17:33,799 para que me muestre todo 383 00:17:33,799 --> 00:17:37,799 la suma es concatenado con la suma 384 00:17:37,799 --> 00:17:38,559 pues venga 385 00:17:38,559 --> 00:17:41,279 y ya dejamos el programa muy bonito 386 00:17:41,279 --> 00:17:44,579 la suma es 387 00:17:44,579 --> 00:17:46,279 este va a ser mi mensajito 388 00:17:46,279 --> 00:17:49,880 y lo voy a concatenar con lo que viene después 389 00:17:49,880 --> 00:17:52,799 que se supone que es la suma de los números 390 00:17:52,799 --> 00:18:00,750 venga, hacemos la prueba otra vez 391 00:18:00,750 --> 00:18:05,329 Ahora el usuario, el que está haciendo la fase de pruebas 392 00:18:05,329 --> 00:18:07,930 Ya dice, bueno, esto ya es otra cosa 393 00:18:07,930 --> 00:18:09,089 Ya sé lo que tengo que hacer 394 00:18:09,089 --> 00:18:10,690 45 395 00:18:10,690 --> 00:18:12,529 ¿Con qué lo quieres sumar? 396 00:18:12,589 --> 00:18:13,130 Con 10 397 00:18:13,130 --> 00:18:14,089 Venga 398 00:18:14,089 --> 00:18:17,349 Introduzca otro, a ver qué hace con esos dos 399 00:18:17,349 --> 00:18:21,069 La suma es 4.510 400 00:18:21,069 --> 00:18:26,380 Pues lógicamente algo ha fallado en nuestro programa 401 00:18:26,380 --> 00:18:30,279 Porque la suma no es 4.510 402 00:18:30,279 --> 00:18:32,200 La suma es 55 403 00:18:32,200 --> 00:18:37,079 Entonces, el que está haciendo el testing de nuestro programa 404 00:18:37,079 --> 00:18:44,420 El que está haciendo el testing de nuestro programa 405 00:18:44,420 --> 00:18:47,599 Dice, mira, me han pasado un programa para pruebas 406 00:18:47,599 --> 00:18:49,019 Que es una birria total 407 00:18:49,019 --> 00:18:51,000 Entonces ya empiezas a estar jodido 408 00:18:51,000 --> 00:18:52,420 ¿Vale? 409 00:18:52,940 --> 00:18:55,039 Pero bueno, te dan otra oportunidad y te dicen 410 00:18:55,039 --> 00:18:55,940 Venga, anda, revísalo 411 00:18:55,940 --> 00:18:57,440 Vale 412 00:18:57,440 --> 00:19:00,220 Entonces, vamos a ver 413 00:19:00,220 --> 00:19:01,440 ¿Cómo es que esto? 414 00:19:01,519 --> 00:19:04,839 Si yo he puesto aquí la suma de un entero y de otro entero 415 00:19:04,839 --> 00:19:10,539 hombre, una suma cuando tiene un número delante y otro número detrás 416 00:19:10,539 --> 00:19:12,960 ya sabemos que funciona como la suma aritmética 417 00:19:12,960 --> 00:19:16,059 pero esto no me ha hecho la suma aritmética 418 00:19:16,059 --> 00:19:18,299 casualmente lo que me ha hecho es 419 00:19:18,299 --> 00:19:20,859 por lo que veo la concatenación 420 00:19:20,859 --> 00:19:24,200 me ha concatenado 45 y 10 421 00:19:24,200 --> 00:19:25,359 ¿por qué? 422 00:19:25,779 --> 00:19:27,700 si el más hemos dicho siempre 423 00:19:27,700 --> 00:19:30,920 que cuando tiene un número delante y otro detrás 424 00:19:30,920 --> 00:19:33,079 funciona como suma 425 00:19:33,079 --> 00:19:36,119 claro, pero es que digo 426 00:19:36,119 --> 00:19:38,640 ojo, es que mi expresión 427 00:19:38,640 --> 00:19:39,460 no es esta sola 428 00:19:39,460 --> 00:19:42,299 la expresión que yo he puesto es todo 429 00:19:42,299 --> 00:19:43,380 ¿vale? 430 00:19:44,759 --> 00:19:46,140 me estoy quedando 431 00:19:46,140 --> 00:19:54,559 me estoy quedando 432 00:19:54,559 --> 00:19:56,619 para tratar 433 00:19:56,619 --> 00:19:58,420 de entender el problema 434 00:19:58,420 --> 00:19:59,980 me he obcecado 435 00:19:59,980 --> 00:20:02,480 y estoy mirando esto, esto está bien 436 00:20:02,480 --> 00:20:04,579 escrito, esto es la suma de un número 437 00:20:04,579 --> 00:20:06,579 y otro número, operador más 438 00:20:06,579 --> 00:20:08,579 con número delante y número detrás 439 00:20:08,579 --> 00:20:10,799 es una suma. Me obceco, me obceco, 440 00:20:10,859 --> 00:20:11,960 me obceco, ¿vale? 441 00:20:12,819 --> 00:20:14,480 De nuevo, este es un ejemplo sencillo, 442 00:20:14,640 --> 00:20:16,660 pero trato de ilustrar el proceso 443 00:20:16,660 --> 00:20:18,779 natural. Me obceco el que el problema 444 00:20:18,779 --> 00:20:20,660 está aquí. Digo, no, 445 00:20:20,759 --> 00:20:22,859 aquí no está el problema. Normalmente 446 00:20:22,859 --> 00:20:24,339 los problemas están en zonas 447 00:20:24,339 --> 00:20:26,819 distintas a donde estamos buscando. 448 00:20:28,180 --> 00:20:28,720 Esto está 449 00:20:28,720 --> 00:20:30,720 perfectamente escrito como suma 450 00:20:30,720 --> 00:20:31,900 de número uno y número dos. 451 00:20:32,660 --> 00:20:34,539 Claro, es que yo tengo que ampliar mi visión 452 00:20:34,539 --> 00:20:35,319 y decir, vamos a ver. 453 00:20:35,319 --> 00:21:01,980 Bien, esto no es una única, la expresión no es esto y ya, la expresión es más grandota, mi expresión es toda esta, esta es mi expresión, esta es la que se está evaluando, la que se está evaluando es toda, una expresión con tres operandos, vale, pues voy a mirar la expresión entera, no esto, la expresión entera, esto es un trocito, la expresión se evalúa en su totalidad, no un trocito. 454 00:21:02,960 --> 00:21:04,819 Vale, entonces ahora ya empezamos a entender lo que decimos. 455 00:21:04,920 --> 00:21:05,339 Vamos a ver. 456 00:21:06,099 --> 00:21:08,200 Vamos a recordar que la máquina virtual de Java, 457 00:21:08,400 --> 00:21:11,740 cuando tiene una expresión en la que tiene muchas operaciones, 458 00:21:12,799 --> 00:21:15,279 si hay paréntesis, hace primero los paréntesis. 459 00:21:15,779 --> 00:21:18,960 Pero si no hay paréntesis, va de izquierda a derecha. 460 00:21:19,619 --> 00:21:20,460 ¿Vale? Esa es la regla. 461 00:21:21,079 --> 00:21:22,779 Si hay paréntesis, primero los paréntesis. 462 00:21:23,599 --> 00:21:27,559 Luego, si hay operandos mezclados de multiplicaciones y sumas, 463 00:21:27,559 --> 00:21:28,700 primero las multiplicaciones. 464 00:21:28,700 --> 00:21:31,119 y luego cuando eso ya está resuelto 465 00:21:31,119 --> 00:21:32,319 de izquierda a derecha 466 00:21:32,319 --> 00:21:35,480 entonces aquí no tiene mezclas de multiplicaciones 467 00:21:35,480 --> 00:21:37,319 ni divisiones, ni sumas 468 00:21:37,319 --> 00:21:38,940 porque todos son sumas, con lo cual 469 00:21:38,940 --> 00:21:41,299 prioridad igual, y no tiene paréntesis 470 00:21:41,299 --> 00:21:43,599 con lo cual esta expresión 471 00:21:43,599 --> 00:21:45,220 se va a evaluar de izquierda a derecha 472 00:21:45,220 --> 00:21:46,460 sí o sí, no hay otra 473 00:21:46,460 --> 00:21:49,220 vale, pues vamos a evaluarla de izquierda a derecha 474 00:21:49,220 --> 00:21:51,579 lo primero que hace es ejecutar 475 00:21:51,579 --> 00:21:52,579 este más de aquí 476 00:21:52,579 --> 00:21:54,839 este es el primero que ejecuta 477 00:21:54,839 --> 00:21:56,660 y este más que tiene 478 00:21:56,660 --> 00:22:00,279 string en un lado o cadena 479 00:22:00,279 --> 00:22:01,619 y número en otro 480 00:22:01,619 --> 00:22:04,420 cuando el operador más tiene 481 00:22:04,420 --> 00:22:06,980 cadena en un lado y número en otro 482 00:22:06,980 --> 00:22:08,660 sabemos que se convierte 483 00:22:08,660 --> 00:22:10,680 automáticamente en concatenador 484 00:22:10,680 --> 00:22:12,740 vale, luego la máquina virtual 485 00:22:12,740 --> 00:22:14,380 lo primero que hace es esta suma 486 00:22:14,380 --> 00:22:16,579 que es una concatenación y nos muestra 487 00:22:16,579 --> 00:22:17,700 la suma es 488 00:22:17,700 --> 00:22:20,599 1 que es 45 489 00:22:20,599 --> 00:22:21,400 el número que sea 490 00:22:21,400 --> 00:22:23,759 y ya tenemos ahí una cadena 491 00:22:23,759 --> 00:22:26,740 que es la concatenación de la suma es 492 00:22:26,740 --> 00:22:28,240 num convertido a cadena 493 00:22:28,240 --> 00:22:30,920 porque ya sabemos que funciona así el concatenador 494 00:22:30,920 --> 00:22:33,339 lo que no sea cadena lo convierte a lo bestia 495 00:22:33,339 --> 00:22:36,859 y el resultado, otra cadena 496 00:22:36,859 --> 00:22:40,000 ya tenemos la primera parte de la expresión resuelta 497 00:22:40,000 --> 00:22:42,079 la suma es 45 498 00:22:42,079 --> 00:22:44,460 seguimos evaluando la expresión 499 00:22:44,460 --> 00:22:46,059 operador más 500 00:22:46,059 --> 00:22:49,259 será suma o concatenación 501 00:22:49,259 --> 00:22:50,759 depende de lo que tenga cada lado 502 00:22:50,759 --> 00:22:53,140 ¿qué tiene a la izquierda? 503 00:22:53,140 --> 00:22:55,359 una cadena, la cadena 504 00:22:55,359 --> 00:22:57,319 la suma es 45, la que ha 505 00:22:57,319 --> 00:22:58,819 obtenido de esta concatenación 506 00:22:58,819 --> 00:23:01,259 tiene una cadena, con lo cual 507 00:23:01,259 --> 00:23:03,859 esto de nuevo se convierte en concatenación 508 00:23:03,859 --> 00:23:05,400 porque tiene en uno de los 509 00:23:05,400 --> 00:23:07,099 dos lados una cadena, vale 510 00:23:07,099 --> 00:23:09,700 pues concatena, la suma es 45 511 00:23:09,700 --> 00:23:11,599 concaténalo con un 2, lo que sea 512 00:23:11,599 --> 00:23:13,359 entonces es justo 513 00:23:13,359 --> 00:23:14,460 el resultado que nos ha salido 514 00:23:14,460 --> 00:23:17,200 la suma es 45, 10 515 00:23:17,200 --> 00:23:18,700 porque ha ejecutado como 516 00:23:18,700 --> 00:23:20,960 concatenación los dos máses 517 00:23:20,960 --> 00:23:22,619 vale 518 00:23:22,619 --> 00:23:43,640 Bueno, pues ya hemos entendido el problema. ¿Soluciones posibles? Pues muchas. ¿No tiene alguna? Claro, una solución. A ver, ojo, quiero que hagas primero esto, porque si haces primero esto, vas a hacerme la suma, porque tienes número y número. 519 00:23:43,640 --> 00:23:51,859 Primero esto, pues para alterar el orden natural de izquierda a derecha, ya está, ¿vale? 520 00:23:52,799 --> 00:23:56,099 Para darlo, ya está, solucionado, ¿vale? 521 00:24:02,509 --> 00:24:12,109 Bueno, pues cuidado con estas tonterías porque se van anidando luego problemas y estas cosas las hacéis mal y suspenso. 522 00:24:12,109 --> 00:24:17,609 por ejemplo, habría muchas soluciones 523 00:24:17,609 --> 00:24:20,829 esta funcionaría, no hace falta, bueno vamos a probarla 524 00:24:20,829 --> 00:24:23,809 no tardamos nada, pero bueno, funcionaría 525 00:24:23,809 --> 00:24:26,410 la suma es 8, efectivamente 526 00:24:26,410 --> 00:24:29,089 otra solución perfectamente puede ser 527 00:24:29,089 --> 00:24:31,650 voy a guardar mi resultado en otra variable distinta 528 00:24:31,650 --> 00:24:34,029 num1 más num2 529 00:24:34,029 --> 00:24:37,930 mi resultado se ha guardado aquí 530 00:24:37,930 --> 00:24:40,549 y ahora muestro mi resultado 531 00:24:40,549 --> 00:24:45,150 Vale, pues ya está, también 532 00:24:45,150 --> 00:24:46,829 Perfectamente válido 533 00:24:46,829 --> 00:24:50,190 Porque el resultado ya lo tengo como suma 534 00:24:50,190 --> 00:24:51,829 Ya lo tengo bien hecho, es una suma 535 00:24:51,829 --> 00:24:54,410 Y lo muestro, vale, efectivamente 536 00:24:54,410 --> 00:24:56,549 Pues esto también 537 00:24:56,549 --> 00:24:57,630 Me lo hará bien 538 00:24:57,630 --> 00:25:00,549 5 y 8, 13 539 00:25:00,549 --> 00:25:01,910 Vale 540 00:25:01,910 --> 00:25:06,390 O podríamos poner el mensaje antes 541 00:25:06,390 --> 00:25:07,910 Y luego la suma después 542 00:25:07,910 --> 00:25:10,150 Por ejemplo 543 00:25:10,150 --> 00:25:11,990 Podríamos haber optado por hacer esto 544 00:25:11,990 --> 00:25:13,869 Y nos habríamos encontrado con ese problema 545 00:25:13,869 --> 00:25:15,950 Primero muestro el mensajito 546 00:25:15,950 --> 00:25:17,170 Pero sin el salto de línea 547 00:25:17,170 --> 00:25:21,269 La suma es 548 00:25:21,269 --> 00:25:24,049 Y ahora pongo después 549 00:25:24,049 --> 00:25:26,269 Num1 550 00:25:26,269 --> 00:25:27,990 Más num2 551 00:25:29,150 --> 00:25:33,670 Y no me habría hecho falta esta variable 552 00:25:33,670 --> 00:25:35,029 Esto también funcionaría 553 00:25:35,029 --> 00:25:37,390 La suma es, me lo muestra primero 554 00:25:37,390 --> 00:25:39,150 Y luego después me muestra esto 555 00:25:39,150 --> 00:25:40,670 Esto no hay duda de que es un número 556 00:25:40,670 --> 00:25:43,029 Porque es número más número 557 00:25:43,029 --> 00:25:46,250 pues esto también me lo haría bien. 558 00:25:48,670 --> 00:25:49,150 ¿Vale? 559 00:25:49,650 --> 00:25:52,390 Si tengo 4 y tengo 8, pues la suma es 12. 560 00:25:53,369 --> 00:25:53,849 ¿Vale? 561 00:25:57,809 --> 00:25:59,930 Bueno, pues aprendizaje de este ejercicio. 562 00:26:00,950 --> 00:26:02,369 Quedarse uno bien en la cabeza, 563 00:26:02,869 --> 00:26:04,069 lo de leer por teclado, 564 00:26:04,170 --> 00:26:06,609 para usarlo ya con soltura sin tener que pensar. 565 00:26:07,869 --> 00:26:10,230 Y cuidar el tema del operador suma, 566 00:26:10,789 --> 00:26:12,990 porque se comporta con doble personalidad 567 00:26:12,990 --> 00:26:14,289 en función de lo que esté sumando. 568 00:26:19,430 --> 00:26:37,500 ¿Vale? Vale. ¿Alguna duda, aunque os parezca que sea tonta de este ejercicio? ¿Todo el mundo tiene claro? 569 00:26:38,339 --> 00:26:46,099 No le causan ningún conflicto, que lo ha entendido y ya está. Aunque de partidas no haya sabido hacerlo solo, ha quedado claro. 570 00:26:46,099 --> 00:26:48,380 bueno 571 00:26:48,380 --> 00:26:50,539 pues 572 00:26:50,539 --> 00:26:52,960 os recuerdo que esta es una 573 00:26:52,960 --> 00:26:54,559 incorporación de cosas 574 00:26:54,559 --> 00:26:56,599 entonces 575 00:26:56,599 --> 00:26:59,220 no dejéis que se acumule 576 00:26:59,220 --> 00:27:01,259 nada, no dejéis que se acumule nada 577 00:27:01,259 --> 00:27:03,359 porque luego ya es muy complicado 578 00:27:03,359 --> 00:27:04,400 volver a ponerse al día 579 00:27:04,400 --> 00:27:07,559 si vais al día sin ningún problema 580 00:27:07,559 --> 00:27:08,799 pues ya está, y luego 581 00:27:08,799 --> 00:27:11,440 la cosa se complica mucho, sobre todo en segundos 582 00:27:11,440 --> 00:27:12,259 se complica mucho 583 00:27:12,259 --> 00:27:15,059 y sigue siendo importante 584 00:27:15,059 --> 00:27:17,259 ser un buen desarrollador 585 00:27:17,259 --> 00:27:20,150 a ver 586 00:27:20,150 --> 00:27:22,269 el otro que decíamos 587 00:27:22,269 --> 00:27:26,269 programa que lea 588 00:27:26,269 --> 00:27:28,210 tres variables y calcule su 589 00:27:28,210 --> 00:27:29,029 promedio 590 00:27:29,029 --> 00:27:34,329 vale, pues es que esta ya, habiendo entendido lo anterior 591 00:27:34,329 --> 00:27:35,970 es que de esta 592 00:27:35,970 --> 00:27:36,730 hay poco que 593 00:27:36,730 --> 00:27:39,750 decir, vale 594 00:27:39,750 --> 00:27:42,049 lo vamos a hacer 595 00:27:42,049 --> 00:27:43,869 rápidamente, por si surgiera algo 596 00:27:43,869 --> 00:27:45,950 sobre la marcha que nos genere 597 00:27:45,950 --> 00:27:46,829 algún tipo de duda 598 00:27:46,829 --> 00:27:52,289 Pero vamos, este tiene poco que decir 599 00:27:52,289 --> 00:28:02,660 Ya rápidamente, como vamos a leer del teclado 600 00:28:02,660 --> 00:28:05,079 Ya rápidamente plantamos lo del escáner 601 00:28:05,079 --> 00:28:08,460 Porque ya lo tenemos entendido y no tenemos ni que pensarlo 602 00:28:08,460 --> 00:28:11,099 Plantamos ya lo del escáner 603 00:28:11,099 --> 00:28:14,400 Porque ya avanzamos que hay que leer del teclado 604 00:28:14,400 --> 00:28:16,019 ¿Cuántas variables? Tres 605 00:28:16,019 --> 00:28:17,299 ¿De qué tipo? Dabble 606 00:28:17,299 --> 00:28:21,539 Pues ala, declaramos tres dabble 607 00:28:21,539 --> 00:28:24,420 Num1, num2, num3 608 00:28:24,420 --> 00:28:26,079 3 dabel aquí declaradas 609 00:28:26,079 --> 00:28:28,920 vamos a leerlas del teclado 610 00:28:28,920 --> 00:28:31,420 pues num1 611 00:28:31,420 --> 00:28:33,299 es que num1 612 00:28:33,299 --> 00:28:35,440 pues igual ponemos los mensajitos 613 00:28:35,440 --> 00:28:36,539 para hacer copia y pega 614 00:28:36,539 --> 00:28:38,839 pues scan 615 00:28:38,839 --> 00:28:41,259 y nos acordamos otra cosa que ya tenemos 616 00:28:41,259 --> 00:28:42,220 que tener aprendida 617 00:28:42,220 --> 00:28:45,279 que cuando yo quiero leer un número 618 00:28:45,279 --> 00:28:47,000 decimal lo leo así 619 00:28:47,000 --> 00:28:48,000 con next dabel 620 00:28:48,000 --> 00:28:51,119 número dabel perdón si no sería un next float 621 00:28:51,119 --> 00:28:52,720 pero bueno 622 00:28:52,720 --> 00:29:25,059 Vamos a, vale, y ahora como ya hemos avanzado, que si no ponemos el mensaje delante, el programa queda más feo que yo que sé, pues introduzca número decimal, ala, ya está, y esto mismo lo vamos a hacer otras dos veces más, para el numerito 2 y el numerito 3, vale. 623 00:29:25,380 --> 00:29:35,180 Y ahora lo único que me dice esto es que muestre, que calcule la media y luego la muestre. 624 00:29:35,440 --> 00:29:37,160 Pues venga, vamos a hacer literalmente lo que dice. 625 00:29:38,579 --> 00:29:40,119 Vamos a calcular la media. 626 00:29:41,059 --> 00:29:44,259 La media es la suma de los tres números dividido entre tres. 627 00:29:45,160 --> 00:29:50,500 Como los números son decimales, vamos a guardar un decimal, tiene todo el sentido del mundo. 628 00:29:50,539 --> 00:29:52,059 A menos que me digan redondéala. 629 00:29:52,819 --> 00:29:54,279 Vamos a guardarla en un decimal. 630 00:29:54,279 --> 00:29:55,839 Vale, dámelo. 631 00:29:55,839 --> 00:30:23,529 Dar el resultado. La suma de los tres, aquí lógicamente es fundamental poner los paréntesis. Aquí, lógicamente, si uno se come los paréntesis por escribir rápido, la expresión cambia completamente. 632 00:30:23,529 --> 00:30:26,690 porque lo primero que haría sería esta división 633 00:30:26,690 --> 00:30:28,930 esta es la primera que haría 634 00:30:28,930 --> 00:30:32,390 y luego al resultado de esta división le sumaría esto 635 00:30:32,390 --> 00:30:33,109 que no tiene nada que ver 636 00:30:33,109 --> 00:30:37,849 nosotros queremos primero hacer la suma de los tres 637 00:30:37,849 --> 00:30:41,349 pues aquí sí que es obligatorio poner los paréntesis 638 00:30:41,349 --> 00:30:42,190 aquí no es opcional 639 00:30:42,190 --> 00:30:45,150 ahora 640 00:30:45,150 --> 00:30:50,890 este resultado va a ser un double con decimales 641 00:30:50,890 --> 00:30:53,410 porque la suma de double es double 642 00:30:53,410 --> 00:30:56,910 yo lo estoy dividiendo entre 3 que es entero 643 00:30:56,910 --> 00:30:58,450 pero recordamos de nuevo 644 00:30:58,450 --> 00:31:00,170 que cuando en una operación mezclamos 645 00:31:00,170 --> 00:31:01,450 decimales y enteros 646 00:31:01,450 --> 00:31:03,910 el entero queda promocionado a decimal 647 00:31:03,910 --> 00:31:06,329 por lo cual la máquina virtual 648 00:31:06,329 --> 00:31:08,170 aunque le hayamos puesto un 3 649 00:31:08,170 --> 00:31:10,730 que él lo va a guardar como entero 650 00:31:10,730 --> 00:31:12,009 en cuanto ve 651 00:31:12,009 --> 00:31:14,470 que forma parte de una expresión 652 00:31:14,470 --> 00:31:15,569 en la que hay un decimal 653 00:31:15,569 --> 00:31:19,009 dice, cuidado, que tú eres 3.0 654 00:31:19,009 --> 00:31:19,490 en realidad 655 00:31:19,490 --> 00:31:22,549 no pasa nada, 3 y 3.0 656 00:31:22,549 --> 00:31:25,470 representan la misma cantidad 657 00:31:25,470 --> 00:31:27,829 rápidamente lo promociona 658 00:31:27,829 --> 00:31:29,849 decimal, decimal entre decimal 659 00:31:29,849 --> 00:31:31,869 decimal, va al decimal sin problemas 660 00:31:31,869 --> 00:31:33,430 ¿vale? 661 00:31:34,990 --> 00:31:35,970 lógicamente de nuevo 662 00:31:35,970 --> 00:31:38,210 si yo lo quiero redondear 663 00:31:38,210 --> 00:31:40,029 digo, espera que yo soy muy chula 664 00:31:40,029 --> 00:31:41,769 y yo quiero redondear 665 00:31:41,769 --> 00:31:42,470 la media entero 666 00:31:42,470 --> 00:31:44,549 y me voy a lo cómodo y digo 667 00:31:44,549 --> 00:31:46,150 pues ah, que no lo estáis viendo 668 00:31:46,150 --> 00:31:48,730 si yo digo no, pero yo la media 669 00:31:48,730 --> 00:31:50,690 aunque me salga 37,2 670 00:31:50,690 --> 00:31:51,769 yo la quiero en entero 671 00:31:51,769 --> 00:31:55,269 Pues ahí que lo guardo en variable entera 672 00:31:55,269 --> 00:31:55,809 Y ya está 673 00:31:55,809 --> 00:31:58,769 No, si queremos redondear 674 00:31:58,769 --> 00:31:59,910 Y guardar en entero 675 00:31:59,910 --> 00:32:01,529 Tendremos que hacerlo de otra manera 676 00:32:01,529 --> 00:32:04,430 Ahora podemos a lo mejor plantearnoslo hacer 677 00:32:04,430 --> 00:32:07,069 Pero desde luego esto no tiene sentido hacerlo 678 00:32:07,069 --> 00:32:08,970 Como ya sabemos 679 00:32:08,970 --> 00:32:11,130 Porque un resultado dable 680 00:32:11,130 --> 00:32:12,650 No puede asignarse 681 00:32:12,650 --> 00:32:15,450 A una variable entera 682 00:32:15,450 --> 00:32:16,369 No puede 683 00:32:16,369 --> 00:32:18,589 Aunque al revés sí 684 00:32:18,589 --> 00:32:21,509 Si este fuera un resultado 685 00:32:21,509 --> 00:32:23,529 int, yo podría guardarle 686 00:32:23,529 --> 00:32:25,049 una label, pero 687 00:32:25,049 --> 00:32:26,650 el caso que me ocupa 688 00:32:26,650 --> 00:32:27,970 no es ese 689 00:32:27,970 --> 00:32:31,690 luego, si yo quisiera redondear, tendría que planteármelo 690 00:32:31,690 --> 00:32:33,390 de otra manera, desde luego así no 691 00:32:33,390 --> 00:32:35,589 vale, pues 692 00:32:35,589 --> 00:32:37,450 se supone que he hecho la media vía bien 693 00:32:37,450 --> 00:32:39,069 y la puedo mostrar 694 00:32:39,069 --> 00:32:41,509 el promedio 695 00:32:42,490 --> 00:32:44,670 es 696 00:32:44,670 --> 00:32:47,509 result 697 00:32:48,250 --> 00:32:53,660 ala 698 00:32:53,660 --> 00:32:55,720 Vamos a hacer la primera prueba 699 00:32:55,720 --> 00:33:02,420 Introduzca número decimal 700 00:33:02,420 --> 00:33:05,440 Aquí de nuevo para ya dejar de perder tiempo 701 00:33:05,440 --> 00:33:07,420 Tenemos también que acordarnos 702 00:33:07,420 --> 00:33:09,960 Recordaros que hay muchas cosas de las que tenéis que acordaros 703 00:33:09,960 --> 00:33:15,039 Porque luego cuando estamos haciendo algo ya más complicado 704 00:33:15,039 --> 00:33:16,039 Es que esto no me sale 705 00:33:16,039 --> 00:33:18,339 Es que no has puesto la coma 706 00:33:18,339 --> 00:33:19,359 Es que no has puesto no sé qué 707 00:33:19,359 --> 00:33:21,440 Cosas que se supone que tenéis que saber 708 00:33:21,440 --> 00:33:24,220 Entonces cuando eso ocurre me enfado mucho por dentro 709 00:33:24,220 --> 00:33:25,640 Por fuera no lo exteriorizo 710 00:33:25,640 --> 00:33:26,279 Pero por dentro sí 711 00:33:26,279 --> 00:33:27,799 Entonces si estoy muy enfada por dentro 712 00:33:27,799 --> 00:33:29,920 Os pongo los exámenes mucho más difíciles 713 00:33:29,920 --> 00:33:31,259 Y os suspendo más 714 00:33:31,259 --> 00:33:32,839 Entonces es importante 715 00:33:32,839 --> 00:33:36,000 Que vayáis aprendiendo las cosas 716 00:33:36,000 --> 00:33:36,880 Para no enfadarme 717 00:33:36,880 --> 00:33:39,000 Pues venga, número decimal 718 00:33:39,000 --> 00:33:40,779 Aquí nos acordamos que 719 00:33:40,779 --> 00:33:43,779 Le he puesto un enter 720 00:33:43,779 --> 00:33:44,799 Y ya la he cagado 721 00:33:44,799 --> 00:33:46,579 Porque, espera, voy a 722 00:33:46,579 --> 00:33:52,000 Voy a parar el programa y le voy a ejecutar otra vez 723 00:33:52,000 --> 00:33:53,960 Vale, introduzca 724 00:33:53,960 --> 00:33:54,660 Número decimal 725 00:33:54,660 --> 00:33:56,519 Pues 67, 726 00:33:56,519 --> 00:33:58,759 coma 5 727 00:33:58,759 --> 00:34:00,480 porque el método next double 728 00:34:00,480 --> 00:34:02,420 esta acción 729 00:34:02,420 --> 00:34:04,119 esta acción 730 00:34:04,119 --> 00:34:06,720 esta acción de aquí 731 00:34:06,720 --> 00:34:08,159 espera 732 00:34:08,159 --> 00:34:10,179 que le pasemos 733 00:34:10,179 --> 00:34:12,280 la parte decimal con coma 734 00:34:12,280 --> 00:34:14,380 porque él no 735 00:34:14,380 --> 00:34:16,699 se le ocurre pensar que si somos programadores 736 00:34:16,699 --> 00:34:18,280 se cree que somos humanos normales 737 00:34:18,280 --> 00:34:20,639 y en las matemáticas de toda la vida usamos comas 738 00:34:20,639 --> 00:34:21,539 para la parte decimal 739 00:34:21,539 --> 00:34:24,559 entonces él espera con coma y luego ya lo cambiará por dentro 740 00:34:24,559 --> 00:34:26,579 el programa ya lo cambiará y lo pondrá con su punto 741 00:34:26,579 --> 00:34:29,380 vale, introduzca número decimal, magnífico 742 00:34:29,380 --> 00:34:30,719 introduzca otro 743 00:34:30,719 --> 00:34:32,760 estupendo 744 00:34:32,760 --> 00:34:34,559 introduzca otro 745 00:34:34,559 --> 00:34:36,739 este 746 00:34:36,739 --> 00:34:38,820 también le va a valer, no hace falta que ponga 747 00:34:38,820 --> 00:34:39,800 8,0 748 00:34:39,800 --> 00:34:42,699 vale, no hace falta que ponga 8,0 749 00:34:42,699 --> 00:34:45,119 porque ya sabemos que de int a double 750 00:34:45,119 --> 00:34:46,900 él lo cambia 751 00:34:46,900 --> 00:34:48,539 automáticamente, si yo le meto 8 752 00:34:48,539 --> 00:34:50,219 él 753 00:34:50,219 --> 00:34:52,480 primero lo guarda como el entero 8 754 00:34:52,480 --> 00:34:54,559 porque por defecto un número así a palo seco 755 00:34:54,559 --> 00:34:56,679 lo guarda como entero, pero cuando luego se lo asigne 756 00:34:56,679 --> 00:34:58,159 a la variable num3 que es double 757 00:34:58,159 --> 00:35:00,219 cuando luego se lo asigne a esta 758 00:35:00,219 --> 00:35:03,000 ya lo promocionará 759 00:35:03,000 --> 00:35:04,019 al coma cero 760 00:35:04,019 --> 00:35:06,079 pues venga, ala 761 00:35:06,079 --> 00:35:07,619 el promedio es 762 00:35:07,619 --> 00:35:10,880 pues sí, seguramente sea este el promedio 763 00:35:10,880 --> 00:35:11,539 seguramente 764 00:35:11,539 --> 00:35:14,940 lo que pasa es que es verdad que hay una cosa que no nos gusta 765 00:35:14,940 --> 00:35:15,980 y es que, jolines 766 00:35:15,980 --> 00:35:17,360 acortamelo 767 00:35:17,360 --> 00:35:20,360 o quítame la parte decimal lo que decidamos 768 00:35:20,360 --> 00:35:22,099 o decidimos 769 00:35:22,099 --> 00:35:23,920 a cortarlo a dos cifras 770 00:35:23,920 --> 00:35:25,800 o decidimos quitar la parte decimal 771 00:35:25,800 --> 00:35:27,239 vamos a probar a hacer las dos cosas 772 00:35:27,239 --> 00:35:30,039 simplemente para dejarlo más bonito 773 00:35:30,039 --> 00:35:32,000 el usuario va a decir 774 00:35:32,000 --> 00:35:34,539 que programa tan mal depurado 775 00:35:34,539 --> 00:35:36,679 me obligas a mí a redondear 776 00:35:36,679 --> 00:35:37,500 porque yo cuando 777 00:35:37,500 --> 00:35:39,599 si yo estoy haciendo un promedio de precios 778 00:35:39,599 --> 00:35:42,159 te lo estoy pidiendo a ti para apuntarlo yo en mi factura 779 00:35:42,159 --> 00:35:43,820 yo no voy a poner 780 00:35:43,820 --> 00:35:45,480 30,96666 781 00:35:45,480 --> 00:35:47,780 me estás obligando a mí a redondearlo 782 00:35:47,780 --> 00:35:49,400 dámelo tú redondeado 783 00:35:49,400 --> 00:35:52,239 Pues bueno, vamos a parar aquí un momentito 784 00:35:52,239 --> 00:35:52,940 Y ahora 785 00:35:52,940 --> 00:35:56,159 Nos planteamos cómo hacerlo