1 00:00:01,970 --> 00:00:13,769 Vale, pues venga, vamos a meter los dos que resolvamos aquí en un proyecto aparte, ejercicios resueltos, sentencia selectiva, para cuando lo subamos al aula virtual. 2 00:00:18,870 --> 00:00:27,850 Resueltos, sentencia if, vale. 3 00:00:34,170 --> 00:00:37,270 Vale, pues venga, vamos a ver con este primero. 4 00:00:37,270 --> 00:01:16,450 vale, pues venga, este mismo 5 00:01:16,450 --> 00:01:19,010 este es un ejemplo 6 00:01:19,010 --> 00:01:21,209 de como un programa 7 00:01:21,209 --> 00:01:23,450 se puede hacer de mil maneras distintas 8 00:01:23,450 --> 00:01:25,209 ¿vale? como seguramente 9 00:01:25,209 --> 00:01:26,090 cada uno lo haya resuelto 10 00:01:26,090 --> 00:01:29,370 entonces lo primero es entender 11 00:01:29,370 --> 00:01:30,890 exactamente que es lo que pide 12 00:01:30,890 --> 00:01:32,629 da dos números 13 00:01:32,629 --> 00:01:34,989 si uno es múltiplo de otro 14 00:01:34,989 --> 00:01:37,189 todos tenemos que tener claro lo que significa que un número 15 00:01:37,189 --> 00:01:38,409 sea múltiplo de otro 16 00:01:38,409 --> 00:01:40,750 un número es múltiplo de otro 17 00:01:40,750 --> 00:01:43,010 si el resto de su división entera es cero 18 00:01:43,010 --> 00:01:43,769 ¿vale? 19 00:01:43,909 --> 00:01:46,769 Vale, pues entonces 20 00:01:46,769 --> 00:01:48,750 ¿6 es múltiplo de 3? 21 00:01:50,430 --> 00:01:51,150 Sí, ¿no? 22 00:01:51,790 --> 00:01:52,209 Vale 23 00:01:52,209 --> 00:01:55,129 ¿Cuál es el resto de dividir 6 entre 3? 24 00:01:57,189 --> 00:02:00,049 ¿Y cuál es el resto de dividir 3 entre 6? 25 00:02:02,579 --> 00:02:02,879 ¿Eh? 26 00:02:04,719 --> 00:02:06,760 ¿El resto de dividir 3 entre 6? 27 00:02:13,240 --> 00:02:13,759 A ver 28 00:02:13,759 --> 00:02:15,800 Lo que quiero decir es que un problema 29 00:02:15,800 --> 00:02:17,740 Hay que contemplar todas las posibilidades 30 00:02:17,740 --> 00:02:19,300 Porque hay algunas que no son triviales 31 00:02:19,300 --> 00:02:24,639 cuando el número que hace de dividendo es mayor que el de divisor, 32 00:02:24,759 --> 00:02:26,580 todos tenemos claro lo que es el cociente y el resto. 33 00:02:26,719 --> 00:02:28,020 Todos sabemos dividir 9 entre 3. 34 00:02:28,659 --> 00:02:30,139 Cociente 3, resto 0. 35 00:02:31,139 --> 00:02:32,500 Todos sabemos dividir 9 entre 4. 36 00:02:32,740 --> 00:02:33,840 Cociente 2, resto 1. 37 00:02:35,020 --> 00:02:37,539 Pero esto es un problema en el cual no necesariamente 38 00:02:37,539 --> 00:02:39,860 tiene por qué ser el primero mayor que el segundo. 39 00:02:40,800 --> 00:02:41,280 ¿Vale? 40 00:02:42,599 --> 00:02:45,900 Entonces, tenemos que entender bien todas las situaciones que se pueden dar. 41 00:02:45,900 --> 00:02:50,620 Por ejemplo, por eso digo, resto de dividir, 3 entre 6. 42 00:02:51,219 --> 00:02:54,000 Volviendo a decir, cociente, ¿cuánto sería? 43 00:02:55,620 --> 00:02:57,639 El cociente de dividir, 3 entre 6. 44 00:02:58,620 --> 00:03:01,340 Cociente, 0. 45 00:03:01,800 --> 00:03:04,139 Resto, 3. 46 00:03:04,819 --> 00:03:07,680 Recordad que siempre tiene que cumplir la regla de la división. 47 00:03:08,280 --> 00:03:11,979 Que la regla de la división es dividiendo igual a divisor por cociente más resto. 48 00:03:11,979 --> 00:03:14,840 Pues efectivamente 3 entre 6 49 00:03:14,840 --> 00:03:17,120 Resto 3, cociente 0 50 00:03:17,120 --> 00:03:19,439 3 es igual a 0 51 00:03:19,439 --> 00:03:21,139 Que es el cociente por 6 52 00:03:21,139 --> 00:03:22,979 Más 3 que es el resto 53 00:03:22,979 --> 00:03:23,939 ¿Vale? 54 00:03:25,580 --> 00:03:27,500 Entonces, una vez que tenemos entendida 55 00:03:27,500 --> 00:03:28,280 Andrés 56 00:03:28,280 --> 00:03:34,930 Silencio, le hablas luego 57 00:03:34,930 --> 00:03:36,569 Si yo oigo hablar mientras hablo 58 00:03:36,569 --> 00:03:38,789 No me despisto 59 00:03:38,789 --> 00:03:40,090 Entonces silencio 60 00:03:40,090 --> 00:03:41,030 ¿Vale? 61 00:03:41,789 --> 00:03:43,189 Entonces primero hay que entender bien 62 00:03:43,189 --> 00:03:45,789 todas las casuísticas 63 00:03:45,789 --> 00:03:47,889 y ramificaciones del problema en el que estamos 64 00:03:47,889 --> 00:03:49,810 ¿vale? para poder atacarlo bien 65 00:03:49,810 --> 00:03:50,870 bueno, pues aquí 66 00:03:50,870 --> 00:03:53,830 el resto, la división entera no era tan trivial 67 00:03:53,830 --> 00:03:55,629 si yo divido un número 68 00:03:55,629 --> 00:03:57,449 más pequeño entre otro, tengo que entender 69 00:03:57,449 --> 00:03:58,870 bien cómo funciona esa división entera 70 00:03:58,870 --> 00:04:01,610 ¿vale? la entendemos, ¿no? 71 00:04:02,810 --> 00:04:05,300 si dividimos 72 00:04:05,300 --> 00:04:06,360 4 entre 9 73 00:04:06,360 --> 00:04:08,680 ¿cuál sería el cociente? 74 00:04:12,860 --> 00:04:13,819 0, resto 75 00:04:13,819 --> 00:04:15,659 4, ¿vale? 76 00:04:15,659 --> 00:04:18,459 vale, bueno, pues entonces ahora ya que tenemos entendido 77 00:04:18,459 --> 00:04:20,019 el problema matemático 78 00:04:20,019 --> 00:04:22,160 ahora me dicen, te damos dos números 79 00:04:22,160 --> 00:04:24,459 y tienes que decirme si alguno 80 00:04:24,459 --> 00:04:26,480 es múltiplo del otro, bueno, pues ahí 81 00:04:26,480 --> 00:04:28,759 ya se nos abre un mundo de probabilidades para programar 82 00:04:28,759 --> 00:04:30,360 esto, que es una tontería 83 00:04:30,360 --> 00:04:31,959 pero tenemos mil formas de programarlo 84 00:04:31,959 --> 00:04:34,319 entonces, como lo que tenemos es que leer 85 00:04:34,319 --> 00:04:36,480 por teclado, pues yo ya directamente 86 00:04:36,480 --> 00:04:38,319 me copio y pego 87 00:04:38,319 --> 00:04:38,980 esto de aquí 88 00:04:38,980 --> 00:04:44,060 y ahora ya le digo 89 00:04:44,060 --> 00:04:50,449 introduzca 90 00:04:50,449 --> 00:04:52,189 Número 1 91 00:04:52,189 --> 00:04:53,970 Bueno, primer número 92 00:04:53,970 --> 00:04:55,930 Porque el número 1 podría ser un poco confuso 93 00:04:55,930 --> 00:05:00,129 Y ahora ese primer número 94 00:05:00,129 --> 00:05:01,449 Lo voy a guardar en N1 95 00:05:01,449 --> 00:05:03,970 Un nombre variable un poco feo 96 00:05:03,970 --> 00:05:05,430 Pero bueno, es un programa cortito 97 00:05:05,430 --> 00:05:26,220 Vale, y ahora de nuevo 98 00:05:26,220 --> 00:05:28,379 El programa tiene dos posibilidades 99 00:05:28,379 --> 00:05:29,720 El programa 100 00:05:29,720 --> 00:05:31,779 O bien me hace un system out 101 00:05:31,779 --> 00:05:33,879 Que dice si uno es múltiplo del otro 102 00:05:33,879 --> 00:05:36,019 O me hace un system out 103 00:05:36,019 --> 00:05:38,259 Que me dice no, no son múltiplos 104 00:05:38,259 --> 00:05:41,540 entonces mi programa en realidad tiene dos ramas posibles 105 00:05:41,540 --> 00:05:44,199 esta rama 106 00:05:44,199 --> 00:05:53,149 si uno es múltiplo del otro 107 00:05:53,149 --> 00:05:59,009 o esta otra rama 108 00:05:59,009 --> 00:06:00,610 o hace una cosa o hace la otra 109 00:06:00,610 --> 00:06:03,230 son dos posibles ramas las que tiene 110 00:06:03,230 --> 00:06:15,379 ninguno es múltiplo del otro 111 00:06:15,379 --> 00:06:18,339 entonces me va a hacer una cosa o me va a hacer otra 112 00:06:18,339 --> 00:06:20,500 en función de una condición 113 00:06:20,500 --> 00:06:22,240 y esa condición 114 00:06:22,240 --> 00:06:23,220 ¿cuál sería? 115 00:06:23,759 --> 00:06:25,860 pues ahora es cuando tenemos que empezar a pensarla en Java 116 00:06:25,860 --> 00:06:30,019 entonces, que uno sea múltiplo del otro 117 00:06:30,019 --> 00:06:33,639 es el or de dos cosas 118 00:06:33,639 --> 00:06:35,699 o el primero es múltiplo del segundo 119 00:06:35,699 --> 00:06:38,019 o el segundo es múltiplo del primero 120 00:06:38,019 --> 00:06:39,339 ¿verdad? 121 00:06:39,680 --> 00:06:41,000 entonces ya automáticamente ya 122 00:06:41,000 --> 00:06:43,819 lo desgloso en que es el or de dos cosas 123 00:06:43,819 --> 00:06:45,920 para que uno sea múltiplo del otro 124 00:06:45,920 --> 00:06:47,939 o bien es el primero del segundo 125 00:06:47,939 --> 00:06:49,540 o bien es el segundo del primero 126 00:06:49,540 --> 00:06:51,699 vale, pues mi condición ya es un or 127 00:06:51,699 --> 00:06:54,720 si ocurre esto o ocurre esto otro 128 00:06:54,720 --> 00:06:59,259 ya está, y ahora cada una de las cláusulas pequeñitas 129 00:06:59,259 --> 00:07:02,800 ya las tengo que ver, ¿cómo programo que el primero sea múltiplo del segundo? 130 00:07:03,439 --> 00:07:06,439 pues un número es múltiplo de otro si el resto de su división es 0 131 00:07:06,439 --> 00:07:10,959 eso ya es Java, porque ya sabemos programar el operador resto 132 00:07:10,959 --> 00:07:14,860 y ya sabemos programar ser igual a, entonces ya lo tenemos todo 133 00:07:14,860 --> 00:07:18,379 entonces, la rama 1 134 00:07:18,379 --> 00:07:21,920 va a ser si se cumple esa condición que vamos a poner ahí 135 00:07:21,920 --> 00:07:28,779 Y la rama 2 es la del no, el else 136 00:07:28,779 --> 00:07:37,790 ¿Vale? Entonces estas dos ramas tienen que ir en un if 137 00:07:37,790 --> 00:07:40,689 Porque se hace o una cosa o se hace la otra 138 00:07:40,689 --> 00:07:42,050 Aquí estoy abriendo por el rombo 139 00:07:42,050 --> 00:07:43,230 Se hace una o se hace la otra 140 00:07:43,230 --> 00:07:46,649 ¿En qué caso se hace una y en qué caso se hace la otra? 141 00:07:46,709 --> 00:07:47,930 Ya lo hemos dicho, que esto es 142 00:07:47,930 --> 00:07:50,069 Uno es múltiplo de otro 143 00:07:50,069 --> 00:07:53,290 Si ocurre o una cosa o la otra 144 00:07:53,290 --> 00:07:54,629 Luego será un or 145 00:07:54,629 --> 00:07:56,269 Y ahora una cosa cual será 146 00:07:56,269 --> 00:07:57,990 Que el resto de dividir 147 00:07:57,990 --> 00:08:00,230 N1 entre N2 148 00:08:00,230 --> 00:08:02,129 sea igual a 0 149 00:08:02,129 --> 00:08:05,310 o que el resto de dividir 150 00:08:05,310 --> 00:08:06,970 n2 entre n1 151 00:08:06,970 --> 00:08:08,870 sea igual a 0 152 00:08:08,870 --> 00:08:10,949 ¿vale? 153 00:08:10,990 --> 00:08:12,470 si esta condición se cumple 154 00:08:12,470 --> 00:08:14,850 me voy por aquí 155 00:08:14,850 --> 00:08:16,329 y si no se cumple 156 00:08:16,329 --> 00:08:17,569 me voy por este otro lado 157 00:08:17,569 --> 00:08:20,790 aquí ya el programa continuaría 158 00:08:20,790 --> 00:08:22,269 continuaría 159 00:08:22,269 --> 00:08:24,689 me da igual haber entrado por la rama 1 160 00:08:24,689 --> 00:08:25,509 que por la rama 2 161 00:08:25,509 --> 00:08:28,389 por cualquiera de las dos ramas voy a parar ahí 162 00:08:28,389 --> 00:08:46,980 ¿Y que el programa sigue haciendo cosas? Pues bueno, la seguirá haciendo. Por ejemplo, mostrar un mensaje, lo que sea. ¿Vale? Y esta es una sentencia selectiva que va a continuación de esta otra y a continuación de esta va a la siguiente. 163 00:08:46,980 --> 00:09:00,980 Y dentro de esta sentencia selectiva ha habido dos posibilidades, dos ramas. La del sí y la del no. ¿Vale? Entonces, uno, ¿he escrito algo mal? Dime. 164 00:09:00,980 --> 00:09:21,620 ¿Perdona? A ver, he puesto dos barras porque es lo más óptimo computacionalmente, porque las dos barras implica que si con esta ya tienes el resultado de la evaluación total, no te metas en la otra. 165 00:09:22,279 --> 00:09:29,940 Y cuando esto sea verdad, cuando esto sea verdad, el agregado con el OR ya es verdad, entonces no te hace falta evaluar la otra, la máquina virtual no le hace falta. 166 00:09:29,940 --> 00:09:32,100 entonces siempre por defecto 167 00:09:32,100 --> 00:09:34,539 ponemos el doble barrita o el doble and 168 00:09:34,539 --> 00:09:36,860 porque es el óptimo computacionalmente 169 00:09:36,860 --> 00:09:38,440 si con esto 170 00:09:38,440 --> 00:09:40,340 ya tienes 171 00:09:40,340 --> 00:09:42,340 el resultado de todo el boolean 172 00:09:42,340 --> 00:09:44,620 no te metes a evaluar 173 00:09:44,620 --> 00:09:45,000 lo otro 174 00:09:45,000 --> 00:09:48,539 recordad los matices que hemos repetido mil veces 175 00:09:48,539 --> 00:09:50,500 si en esta sentencia 176 00:09:50,500 --> 00:09:52,019 hiciéramos algo entonces ya no 177 00:09:52,019 --> 00:09:54,279 imagínate que yo quiero dejar n1 incrementado 178 00:09:54,279 --> 00:09:56,059 si o si 179 00:09:56,059 --> 00:09:57,440 lo quiero dejar incrementado 180 00:09:57,440 --> 00:10:01,000 Pues entonces, aquí la diferencia es muy grande 181 00:10:01,000 --> 00:10:02,399 Entre poner la doble barra y la 1 182 00:10:02,399 --> 00:10:04,740 Pero sobre esto ya hemos contado un rollo muy largo 183 00:10:04,740 --> 00:10:05,340 Mil veces 184 00:10:05,340 --> 00:10:07,200 Y está en las grabaciones 185 00:10:07,200 --> 00:10:11,490 Vale 186 00:10:11,490 --> 00:10:13,950 Entonces 1, pues 187 00:10:13,950 --> 00:10:16,090 Probaría esto 188 00:10:16,090 --> 00:10:18,250 Con todos los casos de prueba posibles 189 00:10:18,250 --> 00:10:19,710 ¿Casos de prueba? 190 00:10:20,210 --> 00:10:22,529 Pues que el primero sea múltiplo del segundo 191 00:10:22,529 --> 00:10:23,389 A ver si me lo saca 192 00:10:23,389 --> 00:10:25,490 Otro caso de prueba 193 00:10:25,490 --> 00:10:28,690 Que el segundo sea múltiplo del primero 194 00:10:28,690 --> 00:10:29,710 A ver si me lo saca 195 00:10:29,710 --> 00:10:31,269 Otro caso de prueba 196 00:10:31,269 --> 00:10:33,970 Que ninguno sea múltiplo de ninguno 197 00:10:33,970 --> 00:10:36,330 Me lo saca 198 00:10:36,330 --> 00:10:37,870 Otros casos de prueba 199 00:10:37,870 --> 00:10:38,950 Números negativos 200 00:10:38,950 --> 00:10:40,370 Pues uno pondría aquí todas las 201 00:10:40,370 --> 00:10:42,029 Y después de un 202 00:10:42,029 --> 00:10:45,570 Barrido de un conjunto 203 00:10:45,570 --> 00:10:47,370 De casos de prueba completos 204 00:10:47,370 --> 00:10:49,629 Pues podría concluir que sí 205 00:10:49,629 --> 00:10:51,149 Que parece que su programa funciona 206 00:10:51,149 --> 00:10:53,529 Pero nunca os quedéis satisfechos con una única prueba 207 00:10:53,529 --> 00:10:54,529 Hay que hacer muchas 208 00:10:54,529 --> 00:10:58,149 Con el que contemplen todas las posibilidades 209 00:10:58,149 --> 00:11:01,129 ¿vale? porque si no 210 00:11:01,129 --> 00:11:02,690 hemos contemplado, es una posibilidad 211 00:11:02,690 --> 00:11:05,169 ah, me funciona, el programa está bien, no, pero es que igual lo pruebas 212 00:11:05,169 --> 00:11:06,289 para otra posibilidad y no te funciona 213 00:11:06,289 --> 00:11:08,669 entonces pruebas todas las que se puedan 214 00:11:08,669 --> 00:11:09,909 vale 215 00:11:09,909 --> 00:11:12,309 entonces esta sería una posibilidad 216 00:11:12,309 --> 00:11:14,610 bueno, pues primera cosa 217 00:11:14,610 --> 00:11:16,870 que incorporamos 218 00:11:16,870 --> 00:11:18,230 primera cosa que incorporamos 219 00:11:18,230 --> 00:11:21,090 cuando en la rama del sí 220 00:11:21,090 --> 00:11:22,769 o en la rama del no 221 00:11:22,769 --> 00:11:25,549 solo hay una sentencia 222 00:11:25,549 --> 00:11:26,629 y solo hay una 223 00:11:26,629 --> 00:11:30,429 y solo hay una, estas llaves son opcionales 224 00:11:30,429 --> 00:11:37,460 ¿vale? esta llave es opcional 225 00:11:37,460 --> 00:11:40,360 si solo 226 00:11:40,360 --> 00:11:48,049 hay una sentencia, y lo que aplica en la rama 227 00:11:48,049 --> 00:11:51,070 esta del sí, aplica en la del no, también 228 00:11:51,070 --> 00:11:54,549 como aquí solo hay una, la puedo quitar 229 00:11:54,549 --> 00:11:59,309 no es necesaria, cuidado siempre con esto 230 00:11:59,309 --> 00:12:01,950 Si después del else o después del if 231 00:12:01,950 --> 00:12:04,769 No nos encontramos llave 232 00:12:04,769 --> 00:12:05,330 No hay llave 233 00:12:05,330 --> 00:12:08,129 Significa que lo que entra dentro de la rama 234 00:12:08,129 --> 00:12:09,370 Es la siguiente sentencia 235 00:12:09,370 --> 00:12:11,330 Y ya está 236 00:12:11,330 --> 00:12:13,730 Y ya lo que hay después ya va fuera del if 237 00:12:13,730 --> 00:12:14,370 Ya va fuera 238 00:12:14,370 --> 00:12:17,870 Lo digo porque 239 00:12:17,870 --> 00:12:20,169 Si uno tabula 240 00:12:20,169 --> 00:12:21,250 Lo ve claro a los ojos 241 00:12:21,250 --> 00:12:23,289 Pero uno podría tener un código como este 242 00:12:23,289 --> 00:12:25,049 Imaginaos que tenéis un código así 243 00:12:25,049 --> 00:12:27,990 Que el que lo hace 244 00:12:27,990 --> 00:12:29,250 Tiene un estilo horroroso 245 00:12:29,250 --> 00:12:31,169 y programa de esta manera 246 00:12:31,169 --> 00:12:34,009 y ha programado así 247 00:12:34,009 --> 00:12:36,309 pues este programa 248 00:12:36,309 --> 00:12:36,789 ¿qué hace? 249 00:12:37,629 --> 00:12:40,289 si se cumple que no, si la condición es falsa 250 00:12:40,289 --> 00:12:41,169 como no hay llaves 251 00:12:41,169 --> 00:12:43,429 dentro de la rama del no solo va esta 252 00:12:43,429 --> 00:12:45,990 porque no hay llaves 253 00:12:45,990 --> 00:12:48,269 entonces se asume que solo es la siguiente sentencia 254 00:12:48,269 --> 00:12:50,149 y ya la que viene después 255 00:12:50,149 --> 00:12:51,929 ya la que viene después ya está fuera 256 00:12:51,929 --> 00:12:53,190 del IFELSE, ya está fuera 257 00:12:53,190 --> 00:12:55,029 ya no tiene nada que ver con la sentencia selectiva 258 00:12:55,029 --> 00:12:56,629 ya va a continuación 259 00:12:56,629 --> 00:12:58,549 con lo cual esta se haría 260 00:12:58,549 --> 00:13:00,690 me da igual si he entrado por aquí 261 00:13:00,690 --> 00:13:02,389 que me da igual si he entrado por aquí 262 00:13:02,389 --> 00:13:02,990 me da lo mismo 263 00:13:02,990 --> 00:13:05,029 esta se va a hacer en cualquier caso 264 00:13:05,029 --> 00:13:06,649 porque ya es una sentencia aparte 265 00:13:06,649 --> 00:13:07,250 es la de después 266 00:13:07,250 --> 00:13:09,669 lo que pasa es que uno llega 267 00:13:09,669 --> 00:13:10,649 ve este código así 268 00:13:10,649 --> 00:13:13,710 y le parece que todo esto va dentro del ELSE 269 00:13:13,710 --> 00:13:15,470 y le parece por un efecto óptico 270 00:13:15,470 --> 00:13:16,389 de los tabuladores 271 00:13:16,389 --> 00:13:19,970 entonces es importante 272 00:13:19,970 --> 00:13:21,610 seguir las reglas de estilo 273 00:13:21,610 --> 00:13:24,129 y las reglas de estilo dicen 274 00:13:24,129 --> 00:13:26,450 primero que todas las sentencias 275 00:13:26,450 --> 00:13:27,230 van a la misma altura 276 00:13:27,230 --> 00:13:28,029 todas 277 00:13:28,029 --> 00:13:29,870 salvo si yo 278 00:13:29,870 --> 00:13:32,370 me estoy metiendo ya en una compuesta 279 00:13:32,370 --> 00:13:34,590 como la del IF que es la única que estamos viendo por ahora 280 00:13:34,590 --> 00:13:36,529 la del IF, entonces lo que va dentro del IF 281 00:13:36,529 --> 00:13:38,009 lo meto dentro para que quede más claro 282 00:13:38,009 --> 00:13:40,149 como esto no va dentro del IF 283 00:13:40,149 --> 00:13:42,710 vuelvo otra vez a este nivel 284 00:13:42,710 --> 00:13:43,490 de tabulación 285 00:13:43,490 --> 00:13:45,330 al nivel este de aquí 286 00:13:45,330 --> 00:13:48,210 para que se vea claro en los ojos 287 00:13:48,210 --> 00:13:50,549 para que se vea que esta sentencia 288 00:13:50,549 --> 00:13:52,029 está fuera del IF ese 289 00:13:52,029 --> 00:13:54,490 que al programa le da igual 290 00:13:54,490 --> 00:13:55,909 y a la máquina virtual le da lo mismo 291 00:13:55,909 --> 00:13:57,809 estos son los efectos nuestros de verlo 292 00:13:57,809 --> 00:14:00,129 Me da igual que este system out esté aquí 293 00:14:00,129 --> 00:14:04,379 Que que esté aquí metido 294 00:14:04,379 --> 00:14:07,360 El programa es idéntico 295 00:14:07,360 --> 00:14:09,000 Es el mismo y hace lo mismo 296 00:14:09,000 --> 00:14:11,159 Pero hombre el que lo está viendo 297 00:14:11,159 --> 00:14:11,899 Y ve esto así 298 00:14:11,899 --> 00:14:13,179 Pues no se entera 299 00:14:13,179 --> 00:14:14,620 Y le expulsan del trabajo 300 00:14:14,620 --> 00:14:18,820 Entonces seguid bien las reglas de estilo 301 00:14:18,820 --> 00:14:20,940 ¿Vale? 302 00:14:21,539 --> 00:14:22,519 Bueno pues eso 303 00:14:22,519 --> 00:14:24,879 Sentencias todas alineaditas 304 00:14:24,879 --> 00:14:27,840 Tabuladas dentro aquí del main alineaditas 305 00:14:27,840 --> 00:14:30,259 Cuando me he metido ya en un if o en un else 306 00:14:30,259 --> 00:14:31,960 Que ya me he metido en una rama 307 00:14:31,960 --> 00:14:34,860 Ahí ya la tabulo para que se vea bien que está dentro 308 00:14:34,860 --> 00:14:35,820 Para que se vea bien 309 00:14:35,820 --> 00:14:38,379 Y luego ya aparte las llaves 310 00:14:38,379 --> 00:14:41,100 Las llaves las puedo poner o no 311 00:14:41,100 --> 00:14:42,379 Si solo hay una sentencia 312 00:14:42,379 --> 00:14:44,600 Si hay más de una tengo que ponerlas 313 00:14:44,600 --> 00:14:45,899 Si yo quiero que en el else 314 00:14:45,899 --> 00:14:48,740 Hubiera otra sentencia más 315 00:14:48,740 --> 00:14:50,600 Yo que sé 316 00:14:50,600 --> 00:14:54,779 Imagínate que en el else 317 00:14:54,779 --> 00:14:56,200 Quiero que vayan estas dos cosas 318 00:14:56,200 --> 00:14:58,159 Si quiero que vayan estas dos cosas en el else 319 00:14:58,159 --> 00:15:00,779 Aquí ya sí que no tengo elección 320 00:15:00,779 --> 00:15:03,279 Aquí ya sí que tendría que poner 321 00:15:03,279 --> 00:15:05,179 La llave, porque aquí no tengo elección 322 00:15:05,179 --> 00:15:06,000 Porque hay dos 323 00:15:06,000 --> 00:15:08,700 ¿Vale? Porque si no pusiera la llave 324 00:15:08,700 --> 00:15:10,259 Si yo no la pongo 325 00:15:10,259 --> 00:15:13,159 Entonces la máquina virtual cuando ejecuta 326 00:15:13,159 --> 00:15:15,059 Interpreta que la rama 2 es sólo esto 327 00:15:15,059 --> 00:15:16,659 Porque no hay llaves 328 00:15:16,659 --> 00:15:18,899 Entonces es sólo esa primera, sólo esa 329 00:15:18,899 --> 00:15:20,399 Y esto de aquí 330 00:15:20,399 --> 00:15:22,960 Ya estaría fuera de lift 331 00:15:22,960 --> 00:15:24,820 El 6 ejecutaría tanto 332 00:15:24,820 --> 00:15:26,740 Viniendo por esta rama como por esta otra 333 00:15:26,740 --> 00:15:30,460 ¿Vale? Y no es eso lo que queremos 334 00:15:30,460 --> 00:15:32,480 Queremos que esto se ejecute solo 335 00:15:32,480 --> 00:15:34,000 En la rama del no 336 00:15:34,000 --> 00:15:36,379 Pues que no se nos olvide poner ahí una llavecita 337 00:15:36,379 --> 00:15:38,440 Porque en este caso es imprescindible 338 00:15:38,440 --> 00:15:38,940 ¿Vale? 339 00:15:40,159 --> 00:15:42,059 Bueno, pues que esto quede muy claro 340 00:15:42,059 --> 00:15:44,879 Porque también se dan muchísimos errores 341 00:15:44,879 --> 00:15:45,820 Por cosas como esta 342 00:15:45,820 --> 00:15:48,519 ¿Vale? Por no tener claro 343 00:15:48,519 --> 00:15:50,960 Que se hace dentro del if, que se hace dentro del else 344 00:15:50,960 --> 00:15:52,799 Que se está haciendo ya fuera en ambos casos 345 00:15:52,799 --> 00:15:55,299 Porque no agrupamos bien con las llaves 346 00:15:55,299 --> 00:15:56,580 O no ponemos llaves 347 00:15:56,580 --> 00:15:59,759 ¿vale? y es más claro verlo 348 00:15:59,759 --> 00:16:01,200 si me he equivocado o no me he equivocado 349 00:16:01,200 --> 00:16:03,580 es mucho más fácil verlo si he seguido 350 00:16:03,580 --> 00:16:05,220 las tabulaciones correctamente 351 00:16:05,220 --> 00:16:06,500 ¿vale? si las he seguido 352 00:16:06,500 --> 00:16:09,940 vale, entonces aquí voy a dejar 353 00:16:09,940 --> 00:16:11,419 quitada esta llave para cuando 354 00:16:11,419 --> 00:16:14,220 vale, aquí esta llave como solo hay una sentencia 355 00:16:14,220 --> 00:16:15,539 esa llave la 356 00:16:15,539 --> 00:16:17,039 la quito y no pasa nada 357 00:16:17,039 --> 00:16:19,340 esta no la podría quitar 358 00:16:19,340 --> 00:16:20,879 ¿vale? 359 00:16:21,980 --> 00:16:24,120 vale, más cosas 360 00:16:24,120 --> 00:16:25,960 bueno, esta sería la versión del 361 00:16:25,960 --> 00:16:32,779 programa más sencilla, entre comillas. Pero vosotros algunos los habéis hecho anidando 362 00:16:32,779 --> 00:16:42,269 if, ¿vale? No hay problema. ¿Cómo algunos lo habéis planteado? Pues algunos lo habéis 363 00:16:42,269 --> 00:16:51,149 planteado. A ver, voy a preguntarme primero si n1 es múltiplo de n2. Voy a hacerme primero 364 00:16:51,149 --> 00:16:58,350 esta pregunta. Si n1 es múltiplo de n2. Vale, si n1 es múltiplo de n2, está claro la respuesta. 365 00:16:58,570 --> 00:17:06,150 Si uno es múltiplo del otro. Ahí es que está claro ya. Vale. Y yo contestaría. Y 366 00:17:06,150 --> 00:17:13,789 ahora nos preguntamos, ¿vale? Pero, ¿qué pasa en la rama del no? ¿Qué pasa si n1 367 00:17:13,789 --> 00:17:18,789 no es múltiplo de n2? Yo todavía no puedo concluir que ninguno sea múltiplo del otro 368 00:17:18,789 --> 00:17:21,309 Porque puede ocurrir que N2 sea múltiplo de N1 369 00:17:21,309 --> 00:17:23,430 Con lo cual yo aquí en mi ELSE 370 00:17:23,430 --> 00:17:25,109 No puedo ya sacar esta conclusión 371 00:17:25,109 --> 00:17:26,269 No puedo 372 00:17:26,269 --> 00:17:27,470 Todavía 373 00:17:27,470 --> 00:17:31,410 Porque en el caso de que N1 no sea múltiplo de N2 374 00:17:31,410 --> 00:17:33,170 Todavía tengo una pregunta que hacerme 375 00:17:33,170 --> 00:17:35,250 Que sería, vale, N1 no es múltiplo de N2 376 00:17:35,250 --> 00:17:36,849 Por eso estoy en el ELSE, por eso estoy ahí 377 00:17:36,849 --> 00:17:39,529 Pero, ¿N2 lo es de N1? 378 00:17:40,509 --> 00:17:41,829 Pues me hago otra pregunta 379 00:17:41,829 --> 00:17:44,029 Pues venga, me hago otra pregunta 380 00:17:44,029 --> 00:17:46,170 Vale, asumo que N1 no es múltiplo de N2 381 00:17:46,170 --> 00:17:47,809 Pero voy a anidar a otra pregunta 382 00:17:47,809 --> 00:17:49,529 Un else anidado sin problemas 383 00:17:49,529 --> 00:17:52,829 ¿N2 lo es de N1? 384 00:17:55,519 --> 00:17:56,579 Que sí que lo es 385 00:17:56,579 --> 00:17:58,160 Quito la llave porque se me ha ponido una sentencia 386 00:17:58,160 --> 00:18:00,279 Pues volveríamos a mostrar esto 387 00:18:00,279 --> 00:18:01,980 Que sí que lo es 388 00:18:01,980 --> 00:18:03,680 Pues os voy a mostrar esto 389 00:18:03,680 --> 00:18:05,220 Que no 390 00:18:05,220 --> 00:18:07,799 Entonces ahora ya sí que puedo mostrar esto 391 00:18:07,799 --> 00:18:09,700 ¿Vale? 392 00:18:10,099 --> 00:18:11,400 Aquí tengo un else anidado 393 00:18:11,400 --> 00:18:14,880 ¿N1 es múltiplo de N2? 394 00:18:14,880 --> 00:18:16,380 Pues sí lo es, rama del sí 395 00:18:16,380 --> 00:18:17,400 Esa sentencia 396 00:18:17,400 --> 00:18:19,099 Esta llave me sobra 397 00:18:19,099 --> 00:18:21,980 La tengo puesta, pero me sobraría, ¿verdad? 398 00:18:23,039 --> 00:18:24,140 En el caso de que no 399 00:18:24,140 --> 00:18:26,759 En el caso de que no, todavía no tengo la respuesta definitiva 400 00:18:26,759 --> 00:18:27,539 Todavía no la tengo 401 00:18:27,539 --> 00:18:29,700 Depende de otra condición más 402 00:18:29,700 --> 00:18:32,500 Pues no pasa nada, dentro del ELSE yo pongo todas las sentencias que quiera 403 00:18:32,500 --> 00:18:33,819 Entre ellas otro IF si quiero 404 00:18:33,819 --> 00:18:36,200 Pues venga, me voy a volver a hacer la pregunta 405 00:18:36,200 --> 00:18:38,440 Asumiendo el ELSE 406 00:18:38,440 --> 00:18:39,720 Porque estoy dentro de él 407 00:18:39,720 --> 00:18:42,480 Asumiendo que N1 es múltiplo de N2 408 00:18:42,480 --> 00:18:43,980 ¿N2 lo es de N1? 409 00:18:44,519 --> 00:18:46,240 Ah, vale, pues ya tengo la respuesta definitiva 410 00:18:46,240 --> 00:18:47,720 ¿Que no lo es? 411 00:18:47,720 --> 00:18:51,119 Pues entonces, ni se cumple esta 412 00:18:51,119 --> 00:18:52,319 Porque estoy en el else de aquí 413 00:18:52,319 --> 00:18:54,480 Ni se cumple esta otra 414 00:18:54,480 --> 00:18:55,500 Porque estoy en el else de aquí 415 00:18:55,500 --> 00:18:58,119 Pues entonces ya puedo concluir con esto 416 00:18:58,119 --> 00:18:59,839 ¿Vale? 417 00:19:03,799 --> 00:19:05,720 Entonces, este código 418 00:19:05,720 --> 00:19:07,759 Hace lo mismo que este de arriba 419 00:19:07,759 --> 00:19:09,720 Hace lo mismo 420 00:19:09,720 --> 00:19:11,339 Lo que pasa es que este es más largo 421 00:19:11,339 --> 00:19:13,640 Y más complejo de ver porque ya ni he dado if 422 00:19:13,640 --> 00:19:15,259 En este no he ni dado ninguno 423 00:19:15,259 --> 00:19:16,579 Tengo un if y un else 424 00:19:16,579 --> 00:19:18,420 Y ya está, tengo un if y un else 425 00:19:18,420 --> 00:19:21,500 En este, este hace lo mismo 426 00:19:21,500 --> 00:19:22,799 El código es igual 427 00:19:22,799 --> 00:19:25,160 El programa es igual, perdón 428 00:19:25,160 --> 00:19:27,680 Pero el código es un pelín más enrevesado 429 00:19:27,680 --> 00:19:29,519 ¿Vale? 430 00:19:31,099 --> 00:19:33,680 Entonces hay muchas formas de escribir código 431 00:19:33,680 --> 00:19:34,980 Que hace lo mismo 432 00:19:34,980 --> 00:19:37,299 Siempre he intentado hacer códigos 433 00:19:37,299 --> 00:19:40,079 Lo más legibles y claros posibles 434 00:19:40,079 --> 00:19:40,940 Para el que lo vea 435 00:19:40,940 --> 00:19:44,559 Aunque repito, para la máquina virtual es igual 436 00:19:44,559 --> 00:19:47,200 La máquina virtual va a tardar lo mismo 437 00:19:47,200 --> 00:19:49,220 en ejecutar lo de arriba y lo de abajo, va a tardar lo mismo 438 00:19:49,220 --> 00:19:51,180 porque va a evaluar esta condición 439 00:19:51,180 --> 00:19:53,039 si es cierta ya ha terminado, y aquí igual 440 00:19:53,039 --> 00:19:55,819 va a evaluar esta condición, si es cierta ya ha terminado 441 00:19:55,819 --> 00:19:57,339 si no lo es, tiene que evaluar esta 442 00:19:57,339 --> 00:19:59,740 que es lo que hace aquí, si no lo es, tiene que evaluar esta 443 00:19:59,740 --> 00:20:02,720 ¿vale? entonces la máquina virtual 444 00:20:02,720 --> 00:20:04,839 está haciendo las mismas ejecuciones 445 00:20:04,839 --> 00:20:06,279 pero el código 446 00:20:06,279 --> 00:20:09,579 este como que es más cortito y más compacto 447 00:20:09,579 --> 00:20:13,059 ¿vale? sin embargo 448 00:20:13,059 --> 00:20:15,000 si me preguntaran, si el programa no fuera 449 00:20:15,000 --> 00:20:16,819 decir simplemente si uno es múltiplo del otro 450 00:20:16,819 --> 00:20:19,819 Sino decir cuál de los dos es múltiplo del otro 451 00:20:19,819 --> 00:20:22,400 Entonces esto no me valdría 452 00:20:22,400 --> 00:20:25,500 Porque yo aquí en esta rama del sí 453 00:20:25,500 --> 00:20:28,500 No puedo distinguir cuál es múltiplo del otro 454 00:20:28,500 --> 00:20:29,920 Tendría que hacerme otro if dentro 455 00:20:29,920 --> 00:20:32,240 Para ver cuál es el mayor 456 00:20:32,240 --> 00:20:35,059 Pero este código sí 457 00:20:35,059 --> 00:20:36,940 Porque este código yo pondría aquí 458 00:20:36,940 --> 00:20:39,900 Sí, n1 es múltiplo de n2 459 00:20:39,900 --> 00:20:47,109 El primero es múltiplo del segundo 460 00:20:47,109 --> 00:20:49,930 y aquí en este caso puedo distinguir 461 00:20:49,930 --> 00:20:51,930 si el segundo es múltiplo del primero 462 00:20:51,930 --> 00:20:59,869 vale 463 00:20:59,869 --> 00:21:02,089 luego repito, si me hubieran pedido además 464 00:21:02,089 --> 00:21:04,289 especificar cuál de los dos 465 00:21:04,289 --> 00:21:05,150 es el múltiplo 466 00:21:05,150 --> 00:21:07,670 con esta versión tal y como está no puedo 467 00:21:07,670 --> 00:21:09,710 solo sé que uno de los dos lo es pero no sé cuál 468 00:21:09,710 --> 00:21:12,069 tendría que aquí dentro del if a su vez 469 00:21:12,069 --> 00:21:13,309 meterme en otra decisión 470 00:21:13,309 --> 00:21:16,170 pero con esta versión 471 00:21:16,170 --> 00:21:18,329 claro que puedo distinguir porque si estoy en esta rama 472 00:21:18,329 --> 00:21:19,170 sé que es el primero 473 00:21:19,170 --> 00:21:21,190 y estoy en esta otra sé que es el segundo 474 00:21:21,190 --> 00:21:22,109 ¿verdad? 475 00:21:27,160 --> 00:21:35,319 ¿Vale? Luego podemos anidar perfectamente if dentro de otros if, dentro de la rama del else del if, me da igual. 476 00:21:37,220 --> 00:21:42,579 Por ejemplo, si yo quisiera aquí distinguir lo que he dicho, cuál de los dos es múltiplo, aquí podría hacer un if. 477 00:21:43,059 --> 00:21:46,700 Si n1 es mayor que n2, por ejemplo, voy a ponerlo. 478 00:21:46,700 --> 00:21:49,500 si quiero distinguir 479 00:21:49,500 --> 00:21:54,839 además 480 00:21:54,839 --> 00:21:59,170 cuál de los dos 481 00:21:59,170 --> 00:22:00,230 es el 482 00:22:00,230 --> 00:22:05,150 múltiplo 483 00:22:05,150 --> 00:22:07,309 pues han ido 484 00:22:07,309 --> 00:22:09,809 otro if y ya está, no pasa nada 485 00:22:09,809 --> 00:22:11,710 si además quiero distinguir cuál de los dos es el último 486 00:22:11,710 --> 00:22:12,630 pues han ido otro if 487 00:22:12,630 --> 00:22:15,690 y podría hacer, si n1 488 00:22:15,690 --> 00:22:17,250 es mayor que n2 489 00:22:17,250 --> 00:22:19,849 está claro que el múltiplo es el mayor 490 00:22:19,849 --> 00:22:20,170 ¿verdad? 491 00:22:21,509 --> 00:22:22,930 entonces ya podría poner 492 00:22:22,930 --> 00:22:26,049 Si el primero es múltiplo del segundo 493 00:22:26,049 --> 00:22:31,019 Que no 494 00:22:31,019 --> 00:22:34,039 Pues entonces podría poner 495 00:22:34,039 --> 00:22:37,460 Si el segundo es múltiplo del primero 496 00:22:37,460 --> 00:22:45,799 ¿Vale? 497 00:22:46,400 --> 00:22:51,609 Y ahora me da error 498 00:22:51,609 --> 00:22:53,490 Porque ahora he puesto dos sentencias 499 00:22:53,490 --> 00:22:54,670 Esta más esta 500 00:22:54,670 --> 00:22:55,529 Ahora ya tengo dos 501 00:22:55,529 --> 00:22:57,349 Entonces ahora yo tengo que poner llaves obligatorias 502 00:22:57,349 --> 00:22:59,289 La había quitado 503 00:22:59,289 --> 00:23:02,910 Ahora ya sí que las tengo que poner 504 00:23:02,910 --> 00:23:05,029 porque ahora mi if tiene dos sentencias 505 00:23:05,029 --> 00:23:06,009 tiene este 506 00:23:06,009 --> 00:23:08,089 y tiene toda esta 507 00:23:08,089 --> 00:23:11,069 tiene dos, esta y la de abajo 508 00:23:11,069 --> 00:23:13,170 ahora ya si que no tengo opción, tengo que poner 509 00:23:13,170 --> 00:23:15,210 llaves para indicar 510 00:23:15,210 --> 00:23:16,430 que esto va dentro del if 511 00:23:16,430 --> 00:23:17,509 vale 512 00:23:17,509 --> 00:23:21,289 entonces conclusión, si yo lo necesito 513 00:23:21,289 --> 00:23:22,849 puedo anidar if 514 00:23:22,849 --> 00:23:25,190 dentro de otros if, en la rama que sea 515 00:23:25,190 --> 00:23:27,109 en la del si, en la del no, como he hecho aquí 516 00:23:27,109 --> 00:23:28,829 según lo vaya necesitando 517 00:23:28,829 --> 00:23:30,710 vale, según lo vaya necesitando 518 00:23:30,710 --> 00:23:39,559 vale, incorporamos una cosita y nos vamos 519 00:23:39,559 --> 00:23:43,259 entonces cuando anidamos if dentro de otros if 520 00:23:43,259 --> 00:23:47,319 es cuando java nos permite 521 00:23:47,319 --> 00:23:50,160 usar una forma más compacta 522 00:23:50,160 --> 00:23:54,480 vale, por ejemplo 523 00:23:54,480 --> 00:23:57,299 yo aquí anidado un if dentro de este if 524 00:23:57,299 --> 00:24:00,480 aquí anidado dentro de este else 525 00:24:00,480 --> 00:24:01,279 y aquí anidado un if 526 00:24:01,279 --> 00:24:03,859 pues esto lo puedo expresar de una manera más compacta 527 00:24:03,859 --> 00:24:04,799 porque java me deja 528 00:24:04,799 --> 00:24:06,539 vamos a ponerlo aquí 529 00:24:06,539 --> 00:24:24,279 Cuando anidamos una sentencia if dentro de un else, tenemos una forma más compacta de escribirle. 530 00:24:32,349 --> 00:24:36,309 Vamos a hacer este código de arriba en el que ocurre justo eso que he dicho. 531 00:24:37,029 --> 00:24:39,470 Estamos anidando dentro del else, estamos anidando un if. 532 00:24:39,470 --> 00:24:42,690 Pues cuando yo identifico esa situación 533 00:24:42,690 --> 00:24:45,349 Que dentro de un else estamos anidando un if 534 00:24:45,349 --> 00:24:46,269 Cuando yo lo identifico 535 00:24:46,269 --> 00:24:48,069 Tengo una forma más compacta de hacerlo en Java 536 00:24:48,069 --> 00:24:48,950 Más compacta 537 00:24:48,950 --> 00:24:50,329 ¿Y cuál es esa forma? 538 00:24:51,089 --> 00:24:52,490 Pues mi if se queda como estaba 539 00:24:52,490 --> 00:24:57,190 Mi if se queda como estaba 540 00:24:57,190 --> 00:24:59,410 Y ahora, mi else 541 00:24:59,410 --> 00:25:02,670 El que tiene el if anidado 542 00:25:02,670 --> 00:25:04,849 Pues yo pongo directamente 543 00:25:04,849 --> 00:25:06,369 El se if 544 00:25:06,369 --> 00:25:08,049 Y la condición que fuera 545 00:25:08,049 --> 00:25:10,089 Que era esta 546 00:25:10,089 --> 00:25:17,549 y aquí pongo lo que le tocara 547 00:25:17,549 --> 00:25:23,220 y ahora ya pongo el ELSE 548 00:25:23,220 --> 00:25:34,750 luego el código de arriba y el de abajo son idénticos 549 00:25:34,750 --> 00:25:38,150 esta es una forma compacta de ponerlo de arriba 550 00:25:38,150 --> 00:25:40,849 que es la famosa sentencia IF-ELSE-IF 551 00:25:40,849 --> 00:25:43,930 y esta sentencia compacta 552 00:25:43,930 --> 00:25:47,890 la situación en la cual dentro de un ELSE hay un IF 553 00:25:47,890 --> 00:25:50,230 la compacta para que quede más claro 554 00:25:50,230 --> 00:25:54,089 porque en realidad aquí lo vemos más claro 555 00:25:54,089 --> 00:25:55,809 Porque esto, si yo lo veo, significa 556 00:25:55,809 --> 00:25:57,910 ¿Esto es cierto? 557 00:25:58,230 --> 00:25:59,269 Sí, hago lo de aquí 558 00:25:59,269 --> 00:26:01,470 Y se acabó, ya he terminado 559 00:26:01,470 --> 00:26:03,190 ¿Que no lo es? 560 00:26:03,450 --> 00:26:05,269 Esto es cierto, hago lo de aquí 561 00:26:05,269 --> 00:26:06,930 Y se acabó, hemos terminado 562 00:26:06,930 --> 00:26:08,829 ¿Que tampoco lo es? Hago lo de aquí 563 00:26:08,829 --> 00:26:11,029 Entonces es una forma como más clara 564 00:26:11,029 --> 00:26:14,470 De expresar esto de arriba 565 00:26:14,470 --> 00:26:15,569 Pero es lo mismo 566 00:26:15,569 --> 00:26:18,130 Esta es una forma más compacta de hacerlo 567 00:26:18,130 --> 00:26:20,250 ¿Vale? Pero es exactamente lo mismo 568 00:26:20,250 --> 00:26:22,009 Y esto sería 569 00:26:22,009 --> 00:26:23,529 Como anidar este if 570 00:26:23,529 --> 00:26:25,750 else dentro del else, es como tenerlo ahí anidado 571 00:26:25,750 --> 00:26:27,049 como tenerlo anidado 572 00:26:27,049 --> 00:26:28,809 ¿vale? 573 00:26:29,549 --> 00:26:44,519 y la sentencia 574 00:26:44,519 --> 00:26:46,599 else if esta de aquí 575 00:26:46,599 --> 00:26:49,279 con else if nos permite 576 00:26:49,279 --> 00:26:50,720 extenderla ya 577 00:26:50,720 --> 00:26:53,059 y programar de forma sencilla 578 00:26:53,059 --> 00:26:55,980 algunas situaciones 579 00:26:55,980 --> 00:27:17,000 vale, situación en la que 580 00:27:17,000 --> 00:27:33,799 vale, situación 581 00:27:33,799 --> 00:27:35,880 en la que, una situación 582 00:27:35,880 --> 00:27:37,240 que se puede dar mucho en código 583 00:27:37,240 --> 00:27:39,059 identificamos que se da una situación 584 00:27:39,059 --> 00:27:41,220 en la cual tenemos 585 00:27:41,220 --> 00:27:43,660 varios caminos excluyentes 586 00:27:43,660 --> 00:27:45,319 o bien se da este 587 00:27:45,319 --> 00:27:47,339 en función de una condición, o bien se da este 588 00:27:47,339 --> 00:27:49,339 en función de una condición, o bien se da este en función de una condición 589 00:27:49,339 --> 00:27:50,700 o bien se da este en función de una condición 590 00:27:50,700 --> 00:27:52,740 eso lo podríamos hacer haciendo if 591 00:27:52,740 --> 00:27:55,200 si no se da, ábrete otro if 592 00:27:55,200 --> 00:27:57,599 que tampoco se da, ábrete otro if 593 00:27:57,599 --> 00:27:59,039 podríamos anidar if 594 00:27:59,039 --> 00:28:00,279 hasta el infinito 595 00:28:00,279 --> 00:28:03,579 pero se hace mucho más claro si usamos un if el save 596 00:28:03,579 --> 00:28:04,319 por ejemplo 597 00:28:04,319 --> 00:28:06,440 ejemplo 598 00:28:06,440 --> 00:28:12,339 vamos a suponer 599 00:28:12,339 --> 00:28:14,000 un programa que nos dicen 600 00:28:14,000 --> 00:28:16,700 yo te voy a dar 601 00:28:16,700 --> 00:28:18,759 un nombre 602 00:28:18,759 --> 00:28:20,839 bueno, no un nombre, porque sería una cadena 603 00:28:20,839 --> 00:28:22,519 te voy a dar un número 604 00:28:22,519 --> 00:28:25,500 y me vas a decir 605 00:28:25,500 --> 00:28:26,839 una cosa 606 00:28:26,839 --> 00:28:27,940 si el número es 0 607 00:28:27,940 --> 00:28:30,859 si me vas a decir otra si el número es 5 608 00:28:30,859 --> 00:28:32,000 y otra si el número es 10 609 00:28:32,000 --> 00:28:34,079 si es 0 me vas a decir suspenso 610 00:28:34,079 --> 00:28:36,180 si es 5 me vas a decir aprobado 611 00:28:36,180 --> 00:28:37,500 y si es 10 me vas a decir matrícula 612 00:28:37,500 --> 00:28:38,559 nos podrían pedir eso 613 00:28:38,559 --> 00:28:42,359 Te voy a dar un número que puede ser 0, 5 o 10 614 00:28:42,359 --> 00:28:44,599 Y en función de si ese número es 0 615 00:28:44,599 --> 00:28:45,720 Es 5 o es 10 616 00:28:45,720 --> 00:28:46,519 Me vas a decir algo 617 00:28:46,519 --> 00:28:49,900 Entonces ahí veo que tengo 3 posibilidades 618 00:28:49,900 --> 00:28:51,500 En realidad, 3 ramas 619 00:28:51,500 --> 00:28:53,000 Si es 0 hago una cosa 620 00:28:53,000 --> 00:28:54,660 Si es 5 hago otra 621 00:28:54,660 --> 00:28:55,980 Y si es 10 hago otra 622 00:28:55,980 --> 00:28:57,420 3 ramas 623 00:28:57,420 --> 00:28:59,180 Entonces hemos dicho que el if solo abre 2 624 00:28:59,180 --> 00:29:01,680 Pues tendríamos que hacerlo 625 00:29:01,680 --> 00:29:02,759 Primero miro si es 0 626 00:29:02,759 --> 00:29:04,960 Si lo es, suspenso 627 00:29:04,960 --> 00:29:07,240 Que no lo es, tengo que abrir otro if 628 00:29:07,240 --> 00:29:09,740 ahora es 5, aprobado 629 00:29:09,740 --> 00:29:10,880 que tampoco lo es 630 00:29:10,880 --> 00:29:13,619 entonces ya es suspenso, o sea tendría que ir añadiendo 631 00:29:13,619 --> 00:29:15,220 ir anidando if, verdad 632 00:29:15,220 --> 00:29:17,420 pero con un if else if 633 00:29:17,420 --> 00:29:18,700 se me queda más sencillo 634 00:29:18,700 --> 00:29:21,480 y yo lo podría poner 635 00:29:21,480 --> 00:29:22,380 vamos a ver 636 00:29:22,380 --> 00:29:28,049 vamos a suponer que tenemos nuestro numerito n1 637 00:29:28,049 --> 00:29:31,859 si 638 00:29:31,859 --> 00:29:34,579 n1 es igual a 0 639 00:29:34,579 --> 00:29:36,220 pues en ese caso 640 00:29:36,220 --> 00:29:36,920 que muestre 641 00:29:36,920 --> 00:29:40,519 suspenso 642 00:29:40,519 --> 00:29:43,099 Ahora 643 00:29:43,099 --> 00:29:45,380 Si NI no es 0 644 00:29:45,380 --> 00:29:46,180 Si N1 no es 0 645 00:29:46,180 --> 00:29:49,859 Con lo que sabemos hasta solamente del ELSEIF 646 00:29:49,859 --> 00:29:52,119 Tendríamos que hacer un ELSE y volver a abrir 647 00:29:52,119 --> 00:29:52,940 Vale 648 00:29:52,940 --> 00:29:54,839 N1 649 00:29:54,839 --> 00:29:57,440 N1 no es 0, pero es 5 650 00:29:57,440 --> 00:29:59,500 Pues si es 5 651 00:29:59,500 --> 00:30:01,559 Entonces tendría que poner 652 00:30:01,559 --> 00:30:02,940 Vale, aprobado 653 00:30:02,940 --> 00:30:05,759 Y ahora ya 654 00:30:05,759 --> 00:30:06,799 Que no es 5 655 00:30:06,799 --> 00:30:09,359 Pues ahora ya pondría 656 00:30:09,359 --> 00:30:13,569 matrícula, o lo que fuera 657 00:30:13,569 --> 00:30:17,329 claro, con solo tres casos vale 658 00:30:17,329 --> 00:30:19,450 pero imagina que me dicen distinguir 659 00:30:19,450 --> 00:30:21,609 si es 0, si es 1, si es 2 660 00:30:21,609 --> 00:30:22,849 por nota distinta, entonces tendría que poner 661 00:30:22,849 --> 00:30:24,349 si es igual a 0, suspenso, que no 662 00:30:24,349 --> 00:30:27,250 abrir, n1 es igual a 1, lo que sea 663 00:30:27,250 --> 00:30:29,390 que no, n1 es igual a 2 664 00:30:29,390 --> 00:30:30,490 lo que sea, que no 665 00:30:30,490 --> 00:30:33,210 tendría aquí una rista de else's uno tras otro 666 00:30:33,210 --> 00:30:34,690 hasta el infinito 667 00:30:34,690 --> 00:30:36,849 ¿verdad? lo podríamos hacer con if else 668 00:30:36,849 --> 00:30:38,630 pero tendríamos un montón de anidamientos 669 00:30:38,630 --> 00:30:41,269 Pues para evitar tanto anidamiento 670 00:30:41,269 --> 00:30:44,190 Java nos deja esta sintaxis de if-else-if 671 00:30:44,190 --> 00:30:46,289 Que es, a ver, tienes varias opciones 672 00:30:46,289 --> 00:30:48,890 Ponlas todas detrás de if-else-if, if-else-if, if-else-if 673 00:30:48,890 --> 00:30:50,390 Y ya está, y te queda más cómodo 674 00:30:50,390 --> 00:30:52,569 Pues esta versión con if-else-if sería 675 00:30:52,569 --> 00:30:58,480 Voy a copiar y pegar para que me sea más fácil 676 00:30:58,480 --> 00:31:01,380 Con if-else-if 677 00:31:01,380 --> 00:31:04,670 Se me quedaría así 678 00:31:04,670 --> 00:31:15,859 ¿Vale? n1 es igual a 0, esto 679 00:31:15,859 --> 00:31:18,140 n1 es igual a 5, esto 680 00:31:18,140 --> 00:31:21,619 Que no, ninguna de las anteriores es esta 681 00:31:21,619 --> 00:31:24,720 Y esto me permite abrir fácilmente muchas posibilidades 682 00:31:24,720 --> 00:31:29,319 Me dicen, oye no, incorpora distinguir también que n1 sea 7 683 00:31:29,319 --> 00:31:30,900 Porque en ese caso quiero que pongas notable 684 00:31:30,900 --> 00:31:34,299 Ah vale, pues me meto otra rama con el save rápidamente 685 00:31:34,299 --> 00:31:37,859 A ver, me faltaría la llave 686 00:31:37,859 --> 00:31:42,799 El save n1 igual a 7 687 00:31:42,799 --> 00:31:45,339 Meto rápidamente otra 688 00:31:45,339 --> 00:31:53,299 vale, entonces aquí veo 689 00:31:53,299 --> 00:31:54,779 todas las alternativas 690 00:31:54,779 --> 00:31:57,099 las veo más juntitas, más compactas 691 00:31:57,099 --> 00:31:58,900 en 1 es igual a 0, haz esto 692 00:31:58,900 --> 00:32:00,839 y te vas 693 00:32:00,839 --> 00:32:02,140 y se acabó, que no 694 00:32:02,140 --> 00:32:05,000 es 5, haz esto 695 00:32:05,000 --> 00:32:05,839 que tampoco 696 00:32:05,839 --> 00:32:08,460 vas a la siguiente, que tampoco 697 00:32:08,460 --> 00:32:09,460 ya te vas al final 698 00:32:09,460 --> 00:32:12,799 vas una por una hasta que llegas a una 699 00:32:12,799 --> 00:32:13,460 que se cumple 700 00:32:13,460 --> 00:32:16,680 y si no se cumple ninguna, al final 701 00:32:16,680 --> 00:32:17,880 vale, y aquí 702 00:32:17,880 --> 00:32:19,940 me falta esta llave 703 00:32:19,940 --> 00:32:23,859 vale, entonces esto se ve más claro 704 00:32:23,859 --> 00:32:25,039 que si yo tuviera que abrir aquí 705 00:32:25,039 --> 00:32:27,380 si aquí en este programa me dicen 706 00:32:27,380 --> 00:32:29,099 oye, añade la posibilidad del notable 707 00:32:29,099 --> 00:32:31,519 pues me tengo que venir a este else y decir 708 00:32:31,519 --> 00:32:33,500 a ver, if 709 00:32:33,500 --> 00:32:35,259 no es 5, vale 710 00:32:35,259 --> 00:32:37,839 pues si n1 es igual a 7 711 00:32:37,839 --> 00:32:41,339 entonces ahora ya 712 00:32:41,339 --> 00:32:47,029 voy a copiar y pegar 713 00:32:47,029 --> 00:32:52,579 notable 714 00:32:52,579 --> 00:32:55,140 un momento que no se mueva nadie 715 00:32:55,140 --> 00:32:58,980 ¿vale? o sea, fijaos 716 00:32:58,980 --> 00:33:01,519 es mucho más claro el código de abajo que el de arriba 717 00:33:01,519 --> 00:33:03,099 y hacen lo mismo 718 00:33:03,099 --> 00:33:04,900 ¿verdad? hacen lo mismo 719 00:33:04,900 --> 00:33:06,859 esta es una forma más compacta de expresar 720 00:33:06,859 --> 00:33:09,279 diferentes posibilidades 721 00:33:09,279 --> 00:33:10,619 que van por diferentes caminos 722 00:33:10,619 --> 00:33:12,539 ¿vale? bueno 723 00:33:12,539 --> 00:33:14,980 lo de no se mueva nadie no ha dicho ni caso