1 00:00:02,029 --> 00:00:30,469 Vale, pues vamos a incorporar, vamos a incorporar, silencio, María, vamos a incorporar más, Moisés y María, por favor, necesito que estéis callados cuando estoy hablando, vale, vosotros y por supuesto los demás, vale. 2 00:00:30,469 --> 00:00:42,789 bueno pues vamos a incorporar más posibilidades que la sintaxis de Java nos brinda para tomar decisiones 3 00:00:42,789 --> 00:00:46,710 para que nuestro código siga por un camino u otro en función de la condición 4 00:00:46,710 --> 00:00:54,250 conocemos la básica que es la sentencia if que en realidad es la única imprescindible 5 00:00:54,250 --> 00:00:58,270 sabemos en diagrama de control de flujo 6 00:00:58,270 --> 00:01:00,469 como se expresa, importante que no perdáis 7 00:01:00,469 --> 00:01:02,009 esas herramientas gráficas 8 00:01:02,009 --> 00:01:06,989 el saber que existen e interpretarlas cuando las veáis 9 00:01:06,989 --> 00:01:08,569 ¿vale? 10 00:01:13,069 --> 00:01:14,430 importante no olvidar eso 11 00:01:14,430 --> 00:01:17,450 cuando uno expresa un algoritmo 12 00:01:17,450 --> 00:01:20,049 en un diagrama de flujo, cuando uno lo expresa 13 00:01:20,049 --> 00:01:23,430 ya lo mencionamos, lo que tiene es un gráfico 14 00:01:23,430 --> 00:01:26,609 en el que va saliendo la secuencia de lo que el programa va haciendo. 15 00:01:27,090 --> 00:01:32,530 Si son asignaciones sin más, pues nada, cuadraditos con asigna, lee, asigna, lee, una tras otra. 16 00:01:33,150 --> 00:01:37,209 Desde el momento en que aparece una decisión, que ya es algo nuevo que hemos incorporado, 17 00:01:37,209 --> 00:01:45,209 que aparece ya una decisión, ya vemos que automáticamente nuestro diagrama de control de flujo, 18 00:01:45,950 --> 00:01:50,890 pues ya aparece algo así. 19 00:01:50,890 --> 00:02:08,669 ¿Vale? Y el programa ya pues continúa por aquí 20 00:02:08,669 --> 00:02:22,419 ¿Vale? Y aquí se hace todo, todo lo que se quiera hacer en la rama del sí 21 00:02:22,419 --> 00:02:25,879 Y aquí se hace todo lo que se quiera hacer en la rama del no 22 00:02:25,879 --> 00:02:28,960 Aquí puede haber un montón de sentencias tropecientas una tras otra 23 00:02:28,960 --> 00:02:32,639 Y aquí puede haber un montón de sentencias tropecientas una tras otra 24 00:02:32,639 --> 00:02:35,360 ¿Vale? Y esta es la sentencia if 25 00:02:35,360 --> 00:02:39,659 La sentencia if es esta, que es una única sentencia compleja 26 00:02:39,659 --> 00:02:41,460 Una única sentencia compleja 27 00:02:41,460 --> 00:02:42,919 Porque puede tener más dentro 28 00:02:42,919 --> 00:02:45,360 Aquí puede haber tropecientas 29 00:02:45,360 --> 00:02:47,120 Y aquí puede haber tropecientas 30 00:02:47,120 --> 00:02:49,360 Una tras otra, es una única sentencia compleja 31 00:02:49,360 --> 00:02:50,919 ¿Vale? 32 00:02:50,960 --> 00:02:52,199 Que estará dentro 33 00:02:52,199 --> 00:02:54,879 Del flujo de nuestro programa 34 00:02:54,879 --> 00:02:57,219 Vendrá a continuación de la sentencia 35 00:02:57,219 --> 00:02:57,939 Que haya por aquí 36 00:02:57,939 --> 00:03:00,580 Y después se harán más sentencias por aquí 37 00:03:00,580 --> 00:03:01,860 ¿Vale? 38 00:03:02,680 --> 00:03:04,719 Entonces, esta sentencia en Java 39 00:03:04,719 --> 00:03:05,740 Ya sabemos cómo se programa 40 00:03:05,740 --> 00:03:08,500 If condición, lo que yo hago en la rama del sí 41 00:03:08,500 --> 00:03:10,139 Que en la rama del no 42 00:03:10,139 --> 00:03:11,860 No quiero hacer nada 43 00:03:11,860 --> 00:03:14,500 Ni pongo else ni nada, se acabó la sentencia 44 00:03:14,500 --> 00:03:15,360 Continuamos por abajo 45 00:03:15,360 --> 00:03:18,039 En la rama del no, si quiero hacer algo también 46 00:03:18,039 --> 00:03:20,780 Pues else, abro entre llaves 47 00:03:20,780 --> 00:03:21,800 Lo que quiero hacer en la rama del no 48 00:03:21,800 --> 00:03:24,439 Cuando eso ha terminado, se acabó la sentencia, sigo por abajo 49 00:03:24,439 --> 00:03:28,860 Cuando en el else anidamos más if 50 00:03:28,860 --> 00:03:30,719 Cuando en el else anidamos más if 51 00:03:30,719 --> 00:03:34,740 Esa sentencia se convertía en un if 52 00:03:34,740 --> 00:03:35,719 Lo que sea else 53 00:03:35,719 --> 00:03:40,060 if lo que sea, else if lo que sea, eso se podía hacer muy complejo 54 00:03:40,060 --> 00:03:43,620 pues podíamos usar la sentencia if, else if, else if, else if 55 00:03:43,620 --> 00:03:47,560 que la simplificaba, ¿vale? esa sentencia la usábamos 56 00:03:47,560 --> 00:03:51,560 cuando yo tengo varios caminos excluyentes 57 00:03:51,560 --> 00:03:55,520 posibles, varios caminos excluyentes, o tiro por este 58 00:03:55,520 --> 00:04:00,080 o tiro por este, o tiro por este, varios excluyentes, cada uno de ellos asociados a una condición 59 00:04:00,080 --> 00:04:03,740 entonces uno identifica en su código, que el código 60 00:04:03,740 --> 00:04:05,699 puede hacer una de varias 61 00:04:05,699 --> 00:04:07,919 cosas, pero solo una de ellas, excluyentes 62 00:04:07,919 --> 00:04:09,340 entre sí, una de varias 63 00:04:09,340 --> 00:04:13,979 vale, pues entonces se identifica, vale, un if, el se, if 64 00:04:13,979 --> 00:04:15,840 estupendo, lo identifica 65 00:04:15,840 --> 00:04:19,399 ahora ya, lo que tiene que buscar es 66 00:04:19,399 --> 00:04:21,420 la condición que fija 67 00:04:21,420 --> 00:04:23,800 cuando me voy por cada 68 00:04:23,800 --> 00:04:25,600 camino excluyente, pongo 69 00:04:25,600 --> 00:04:27,620 cada una de esas condiciones en if, el se, if 70 00:04:27,620 --> 00:04:29,600 el se, if, el se, if, listo 71 00:04:29,600 --> 00:04:30,899 vale 72 00:04:30,899 --> 00:04:33,060 bueno, pues hay otra 73 00:04:33,060 --> 00:04:35,500 posibilidad de sintaxis 74 00:04:35,500 --> 00:04:37,439 que nos da Java para simplificar 75 00:04:37,439 --> 00:04:38,660 también una situación concreta 76 00:04:38,660 --> 00:04:41,579 y es, cuando yo tengo una variable 77 00:04:41,579 --> 00:04:43,879 y en función del valor de esa variable 78 00:04:43,879 --> 00:04:45,740 si es este, o si es este otro 79 00:04:45,740 --> 00:04:47,800 o si es este otro, o si es este otro, alguna cosa u otra 80 00:04:47,800 --> 00:04:49,240 eso en Java 81 00:04:49,240 --> 00:04:51,120 se haría de la siguiente manera, ¿no? 82 00:04:51,120 --> 00:04:53,279 con la sentencia i lo sabemos hacer perfectamente 83 00:04:53,279 --> 00:04:55,540 vale 84 00:04:55,540 --> 00:04:57,220 vamos a poner, por ejemplo 85 00:04:57,220 --> 00:05:33,860 vale, vamos a hacer una clase 86 00:05:33,860 --> 00:05:35,639 en la que llamamos ejemplo case 87 00:05:35,639 --> 00:05:36,439 por ejemplo 88 00:05:36,439 --> 00:05:42,579 vale, pues vamos a imaginarnos 89 00:05:42,579 --> 00:05:44,540 uff, esto no quería hacerlo yo 90 00:05:44,540 --> 00:05:50,050 vamos a imaginarnos 91 00:05:50,050 --> 00:05:52,069 por ejemplo, que tenemos aquí que hacer 92 00:05:52,069 --> 00:05:54,449 la parte de un código que hace algo muy sencillo 93 00:05:54,449 --> 00:05:56,329 simplemente la idea es 94 00:05:56,329 --> 00:05:58,089 imprimir un boletín de notas 95 00:05:58,089 --> 00:06:00,209 por ejemplo, imprimir un boletín de notas 96 00:06:00,209 --> 00:06:01,649 para ello 97 00:06:01,649 --> 00:06:06,769 Va a recibir una nota numérica 98 00:06:06,769 --> 00:06:09,250 Y en función de esa nota numérica 99 00:06:09,250 --> 00:06:10,870 En el boletín tiene que imprimir 100 00:06:10,870 --> 00:06:14,649 Pues su insuficiente, suficiente, aprobado, notable 101 00:06:14,649 --> 00:06:16,709 O sobresaliente o matrícula, por ejemplo 102 00:06:16,709 --> 00:06:17,990 ¿Vale? 103 00:06:18,069 --> 00:06:20,009 Entonces ese programa tiene 104 00:06:20,009 --> 00:06:21,430 Entrada, nota numérica 105 00:06:21,430 --> 00:06:23,529 Salida, lo que imprime 106 00:06:23,529 --> 00:06:25,069 En nuestro caso por pantalla 107 00:06:25,069 --> 00:06:27,029 Porque no sabemos imprimirlo en otro sitio 108 00:06:27,029 --> 00:06:27,810 A través de Java 109 00:06:27,810 --> 00:06:30,029 En otro documento, en una impresora 110 00:06:30,029 --> 00:06:31,170 A través de Java no sabemos hacerlo 111 00:06:31,170 --> 00:06:34,029 Bueno, por pantalla, vale, que lo imprima por pantalla 112 00:06:34,029 --> 00:06:38,069 Entonces, ese programa uno lo lee, lo analiza, lo estudia y dice 113 00:06:38,069 --> 00:06:39,430 Vale, dato de entrada, nota 114 00:06:39,430 --> 00:06:41,790 Posibilidades de salida 115 00:06:41,790 --> 00:06:43,189 Muchas 116 00:06:43,189 --> 00:06:48,009 O mostrar insuficiente, o mostrar suficiente, o mostrar bien 117 00:06:48,009 --> 00:06:51,850 O mostrar aprobado, o mostrar, o sea, muchos caminos, vale 118 00:06:51,850 --> 00:06:54,370 Primer punto importante que identificamos 119 00:06:54,370 --> 00:06:58,410 Mi programa tiene varias posibilidades excluyentes 120 00:06:58,410 --> 00:07:01,389 O va por aquí, que es imprime insuficiente 121 00:07:01,389 --> 00:07:03,610 O va por aquí, o va por aquí, o va por aquí 122 00:07:03,610 --> 00:07:05,610 ¿Vale? Esa es la primera parte 123 00:07:05,610 --> 00:07:07,709 Esa es la primera parte que elaboramos 124 00:07:07,709 --> 00:07:09,769 Y es importantísima para poder elaborar 125 00:07:09,769 --> 00:07:11,649 Nuestro algoritmo, bueno, diferentes caminos 126 00:07:11,649 --> 00:07:13,050 Que se excluyen entre sí 127 00:07:13,050 --> 00:07:15,509 ¿Vale? Una vez que ya tenemos 128 00:07:15,509 --> 00:07:17,490 Identificado eso, que son diferentes 129 00:07:17,490 --> 00:07:18,910 Caminos que se excluyen entre sí 130 00:07:18,910 --> 00:07:21,209 Pues ahora ya empezamos a perfilar eso 131 00:07:21,209 --> 00:07:22,990 ¿Vale? ¿Cuál es la condición 132 00:07:22,990 --> 00:07:25,410 Para cada uno? Bueno, pues 133 00:07:25,410 --> 00:07:27,470 En este caso la condición es fácil de encontrar 134 00:07:27,470 --> 00:07:32,490 Pues que la nota sea menor que 5 y mayor que 0 135 00:07:32,490 --> 00:07:33,550 Pues insuficiente 136 00:07:33,550 --> 00:07:36,529 Que la nota sea 5, aprobado 137 00:07:36,529 --> 00:07:39,329 Que la nota sea 6, entonces ahí a encontrar las condiciones es fácil 138 00:07:39,329 --> 00:07:41,850 Bueno, pues ahí ya tendríamos nuestro programa, ¿no? 139 00:07:42,610 --> 00:07:45,610 Pues venga, vamos a ponerlo aquí, por ejemplo 140 00:07:45,610 --> 00:07:47,910 A ver cómo nos quedaría 141 00:07:47,910 --> 00:07:49,050 Entonces 142 00:07:49,050 --> 00:07:55,930 Programa que imprime la nota literal 143 00:07:55,930 --> 00:08:06,439 En función de la nota numérica 144 00:08:06,439 --> 00:08:12,540 ¿Vale? 145 00:08:12,720 --> 00:08:13,839 O sea, con un enunciado así 146 00:08:13,839 --> 00:08:15,319 Bueno, yo lo he puesto para resumir 147 00:08:15,319 --> 00:08:18,480 Pero este enunciado tendría que estar mejor detallado 148 00:08:18,480 --> 00:08:19,220 ¿No? 149 00:08:19,279 --> 00:08:20,819 La nota de entrada, ¿qué va a ser? 150 00:08:21,139 --> 00:08:22,199 ¿Entera o decimal? 151 00:08:22,740 --> 00:08:23,040 ¿Vale? 152 00:08:23,139 --> 00:08:24,980 ¿Cuáles van a ser los literales que consideras? 153 00:08:25,019 --> 00:08:25,959 ¿Cuáles son los márgenes? 154 00:08:26,899 --> 00:08:27,100 ¿Vale? 155 00:08:27,100 --> 00:08:28,319 Es siempre importantísimo 156 00:08:28,319 --> 00:08:29,839 Que un problema que nos plantean 157 00:08:29,839 --> 00:08:32,740 Esté bien claro lo que tiene que hacer 158 00:08:32,740 --> 00:08:35,460 porque si algo no está claro 159 00:08:35,460 --> 00:08:37,679 y lo damos nosotros por supuesto 160 00:08:37,679 --> 00:08:39,539 a lo mejor la solución que hacemos está mal 161 00:08:39,539 --> 00:08:40,940 entonces siempre 162 00:08:40,940 --> 00:08:43,379 punto A clave, que lo que nos piden 163 00:08:43,379 --> 00:08:45,460 es entender exactamente que quieren que hagamos 164 00:08:45,460 --> 00:08:46,960 y si hay algún fleco suelto 165 00:08:46,960 --> 00:08:48,860 uno va y le pregunta 166 00:08:48,860 --> 00:08:51,080 al jefe, al cliente, a quien sea 167 00:08:51,080 --> 00:08:52,899 nunca puede haber ningún fleco suelto 168 00:08:52,899 --> 00:08:53,799 ¿vale? 169 00:08:54,759 --> 00:08:56,980 eso es tarea de análisis 170 00:08:56,980 --> 00:08:59,320 bueno, en nuestro caso pues 171 00:08:59,320 --> 00:09:01,840 vamos a usar las notas literales 172 00:09:01,840 --> 00:09:03,259 Que conocemos de toda la vida y ya está 173 00:09:03,259 --> 00:09:06,360 Bueno, cuando ya está ese punto clarísimo 174 00:09:06,360 --> 00:09:07,500 Que esperan de nosotros 175 00:09:07,500 --> 00:09:10,639 Ahora ya empezamos a perfilar nuestro programa 176 00:09:10,639 --> 00:09:12,460 La primera parte 177 00:09:12,460 --> 00:09:13,519 Que siempre abordamos 178 00:09:13,519 --> 00:09:16,000 A ver, ¿cuál es mi información de entrada? 179 00:09:16,940 --> 00:09:17,220 Pues 180 00:09:17,220 --> 00:09:20,019 La nota numérica, no necesito más datos de entrada 181 00:09:20,019 --> 00:09:22,159 Nota numérica, como ya he hablado yo 182 00:09:22,159 --> 00:09:24,519 Con el cliente y me ha dicho es un número entero 183 00:09:24,519 --> 00:09:26,220 Pues bueno, pues venga 184 00:09:26,220 --> 00:09:27,120 Ala 185 00:09:27,120 --> 00:09:29,820 Declaramos esto 186 00:09:29,820 --> 00:09:31,200 Para que tenga el dato de entrada 187 00:09:31,200 --> 00:09:33,440 Ahí va a ir la nota numérica 188 00:09:33,440 --> 00:09:36,019 Sabemos que tenemos que leerla, etc. 189 00:09:36,740 --> 00:09:40,279 Pero no empezamos a escribir directamente 190 00:09:40,279 --> 00:09:42,620 Todo en línea, papapapapa, el chorizo 191 00:09:42,620 --> 00:09:45,120 Bueno, si es un programa sencillo, que es que ya no sale de corrido, sí 192 00:09:45,120 --> 00:09:47,340 Pero nunca programamos así, lo he dicho mil veces 193 00:09:47,340 --> 00:09:49,580 No programamos, a la vez voy a escribir de corrido, no 194 00:09:49,580 --> 00:09:53,659 Hacemos una primera estructura de cómo va a ser mi programa 195 00:09:53,659 --> 00:09:56,500 Bueno, pues esa nota, este programa 196 00:09:56,500 --> 00:09:58,860 Ya hemos dicho que tendrá varios caminos excluyentes 197 00:09:58,860 --> 00:10:01,000 Cada uno asociado a una condición 198 00:10:01,000 --> 00:10:04,559 Según eso, nosotros ya tenemos en la cabeza 199 00:10:04,559 --> 00:10:06,340 Ah, pues mira, un if, el seif 200 00:10:06,340 --> 00:10:08,360 Porque mi programa va a hacer varias cosas 201 00:10:08,360 --> 00:10:09,980 Que se excluyen entre sí 202 00:10:09,980 --> 00:10:11,500 En función de una condición 203 00:10:11,500 --> 00:10:14,100 Bueno, pues esa tiene toda la pinta 204 00:10:14,100 --> 00:10:15,559 De que mi programa va a ser algo así 205 00:10:15,559 --> 00:10:27,440 Y así, bueno, todos los 206 00:10:27,440 --> 00:10:28,620 Todas las 207 00:10:28,620 --> 00:10:30,240 Un segundín 208 00:10:30,240 --> 00:10:34,059 Así todas las condiciones que fueran 209 00:10:34,059 --> 00:10:35,120 Hasta el else, etc 210 00:10:35,120 --> 00:10:37,059 ¿Vale? 211 00:10:37,100 --> 00:10:37,879 Esa podría ser 212 00:10:37,879 --> 00:10:39,240 Sí 213 00:10:39,240 --> 00:10:48,639 A ver, dime María 214 00:10:48,639 --> 00:10:58,909 Claro, porque solo hay una sentencia 215 00:10:58,909 --> 00:11:01,289 Recordad que la diferencia 216 00:11:01,289 --> 00:11:02,929 Entre poner llaves o no poner llaves 217 00:11:02,929 --> 00:11:04,570 Es si hay solo una sentencia 218 00:11:04,570 --> 00:11:06,370 En esa rama o hay varias 219 00:11:06,370 --> 00:11:07,909 Si hay varias es obligatorio 220 00:11:07,909 --> 00:11:10,830 Porque si no pones llaves 221 00:11:10,830 --> 00:11:12,830 Entonces la máquina virtual cuando ejecuta eso 222 00:11:12,830 --> 00:11:14,529 Interpreta que es la primera solo 223 00:11:14,529 --> 00:11:16,289 Solo la primera 224 00:11:16,289 --> 00:11:17,909 Y que el resto ya quedan fuera de la rama 225 00:11:17,909 --> 00:11:20,389 Entonces, llaves si hay más de una 226 00:11:20,389 --> 00:11:21,590 Obligatorio, si hay solo una 227 00:11:21,590 --> 00:11:22,870 Si quieres sí, si no, no 228 00:11:22,870 --> 00:11:25,450 entonces como yo en principio estoy planteando en mi programa 229 00:11:25,450 --> 00:11:27,529 y no sé si va a haber muchas sentencias o solo una 230 00:11:27,529 --> 00:11:30,070 yo sé que ahí va a haber un agujero negro 231 00:11:30,070 --> 00:11:30,710 que ya llenaré 232 00:11:30,710 --> 00:11:31,590 vale 233 00:11:31,590 --> 00:11:35,570 pues esa es la arquitectura y programa 234 00:11:35,570 --> 00:11:37,870 uy aquí, obviamente tendría que poner las condiciones 235 00:11:37,870 --> 00:11:38,789 que fueran 236 00:11:38,789 --> 00:11:41,549 bueno pues 237 00:11:41,549 --> 00:11:42,610 yo sigo pensando 238 00:11:42,610 --> 00:11:46,070 vale, que tiene que hacer en cada una de las ramas 239 00:11:46,070 --> 00:11:47,789 pues en una de ellas 240 00:11:47,789 --> 00:11:49,830 tendrá que mostrar 241 00:11:49,830 --> 00:11:51,750 insuficiente 242 00:11:51,750 --> 00:12:06,730 Ese es uno de los posibles resultados. ¿Cuál es otro de los posibles resultados? Otro de los posibles resultados excluyente del anterior es este. 243 00:12:06,730 --> 00:12:12,559 Otro de los posibles resultados excluyente del anterior 244 00:12:12,559 --> 00:12:16,399 Vamos a poner otros dos más solo 245 00:12:16,399 --> 00:12:17,100 Es este 246 00:12:17,100 --> 00:12:22,340 Otro de los resultados excluyente del anterior 247 00:12:22,340 --> 00:12:26,159 Pues sería notable y sobresaliente 248 00:12:26,159 --> 00:12:27,379 Ya está, y lo dejamos así 249 00:12:27,379 --> 00:12:29,279 Sería este 250 00:12:29,279 --> 00:12:44,230 Vale, hemos identificado que son caminos que se excluyen 251 00:12:44,230 --> 00:12:45,690 O va por uno o va por otro 252 00:12:45,690 --> 00:12:49,309 La nota no puede ser simultáneamente notable y aprobado 253 00:12:49,309 --> 00:13:03,059 A ver, vamos a bajar esa persiana 254 00:13:03,059 --> 00:13:20,039 Vale, mejor 255 00:13:20,039 --> 00:13:24,100 Vale, son caminos excluyentes, cada uno en su rama 256 00:13:24,100 --> 00:13:29,539 Sigo, sigo iterando hasta conseguir la formulación completa de mi código 257 00:13:29,539 --> 00:13:33,820 Cada uno va a depender de una condición, vale, pues ahora ya pensamos en la condición 258 00:13:33,820 --> 00:13:36,700 La condición siempre va a depender de los datos de entrada 259 00:13:36,700 --> 00:13:40,059 un programa irá por un lado o irá por otro 260 00:13:40,059 --> 00:13:41,320 en función de los datos de entrada 261 00:13:41,320 --> 00:13:43,399 que son los que cambian en cada ejecución 262 00:13:43,399 --> 00:13:45,240 en cada ejecución 263 00:13:45,240 --> 00:13:48,039 el programa tiene los datos de entrada distintos 264 00:13:48,039 --> 00:13:50,259 por eso en cada ejecución el programa o va por un lado 265 00:13:50,259 --> 00:13:51,100 o va por otro 266 00:13:51,100 --> 00:13:53,779 porque los datos de entrada son distintos en cada ejecución 267 00:13:53,779 --> 00:13:55,679 en este caso el dato de entrada 268 00:13:55,679 --> 00:13:57,799 solo uno nota el dato de entrada 269 00:13:57,799 --> 00:13:58,899 tendremos que leerlo 270 00:13:58,899 --> 00:14:02,019 venga pues nada, incorporamos la lectura 271 00:14:02,019 --> 00:14:02,919 del dato de entrada 272 00:14:02,919 --> 00:14:12,740 leemos el dato de entrada 273 00:14:12,740 --> 00:14:25,240 uy, ahí está leído, vale 274 00:14:25,240 --> 00:14:30,139 y ahora ya que tenemos el dato del cual depende la condición 275 00:14:30,139 --> 00:14:34,139 podrían ser muchos, ahora ya empezamos a elaborar la condición 276 00:14:34,139 --> 00:14:37,179 con las herramientas que tenemos, que son los operadores 277 00:14:37,179 --> 00:14:42,000 relacionales, booleanos, todos, vale, pues cuando me iré por el camino 278 00:14:42,000 --> 00:14:44,659 insuficiente, cuando la nota esté comprendida entre 0 y 5 279 00:14:44,659 --> 00:14:50,019 sin incluir el 5, bueno, pues eso que decimos en lenguaje natural, estar comprendido 280 00:14:50,019 --> 00:14:51,980 entre 0 y 5, ahora es lo que 281 00:14:51,980 --> 00:14:53,740 trasladamos al lenguaje Java 282 00:14:53,740 --> 00:14:56,059 pues como podemos poner este argumento 283 00:14:56,059 --> 00:14:58,159 entre 0 y 5, pues ser simultáneamente 284 00:14:58,159 --> 00:15:00,480 mayor que 0 y menor que 5 285 00:15:00,480 --> 00:15:02,120 bueno, pues eso ya 286 00:15:02,120 --> 00:15:04,139 lo podemos poner directamente en Java 287 00:15:04,139 --> 00:15:06,000 y sería, si la nota 288 00:15:06,000 --> 00:15:07,480 es mayor o igual que 0 289 00:15:07,480 --> 00:15:08,899 y 290 00:15:08,899 --> 00:15:12,519 la nota simultáneamente 291 00:15:12,519 --> 00:15:14,279 además a ser mayor o igual que 0 292 00:15:14,279 --> 00:15:15,480 es menor que 5, esto 293 00:15:15,480 --> 00:15:18,179 vale, la simultaneidad de las dos 294 00:15:18,179 --> 00:15:24,120 cosas. Si se dan las dos simultáneamente, entonces está comprendido en ese intervalo. 295 00:15:26,179 --> 00:15:35,299 Vale. Bueno, y así elaboramos las condiciones para el resto. Suficiente, pues que la nota 296 00:15:35,299 --> 00:15:42,019 sea, como estamos hablando de notas enteras, no con decimales, pues suficiente, bueno, 297 00:15:42,019 --> 00:15:47,899 es que distinguido suficiente aprobado es un poco, quería poner bien en realidad. 298 00:15:48,179 --> 00:15:57,320 que el bien de toda la vida era el 6, vale, suficiente, pues como anotas en este caso es entera, solamente que sea 5, no hay otra, 299 00:15:57,720 --> 00:16:04,879 si fuera decimal podría poner que sea mayor o igual que 5 y menor que 6, porque eso comprendería muchos valores decimales, 300 00:16:05,720 --> 00:16:14,039 en este caso como es entera solo hay una posibilidad, que sea 5, bueno, pues la condición de ser 5 la pongo de forma sencilla, 301 00:16:14,039 --> 00:16:20,320 Vale, aquí la condición de ser bien 302 00:16:20,320 --> 00:16:21,820 Puede ser 6 303 00:16:21,820 --> 00:16:24,840 También es sencilla 304 00:16:24,840 --> 00:16:27,820 Notable, pues 7 y 8 305 00:16:27,820 --> 00:16:30,519 La puedo poner, pues ser igual a 6 306 00:16:30,519 --> 00:16:32,940 O ser igual a 7 307 00:16:32,940 --> 00:16:36,059 Perdón, ser igual a 7 o ser igual a 8, por ejemplo 308 00:16:36,059 --> 00:16:41,059 Aquí es un or 309 00:16:41,059 --> 00:16:43,200 La nota es igual a 7 310 00:16:43,200 --> 00:16:45,919 O una cualquiera de las dos 311 00:16:45,919 --> 00:16:48,080 O la nota es igual a 8 312 00:16:48,080 --> 00:17:07,799 O una o la otra. O una o la otra. Bueno, pues si se da cualquiera de las dos, esto no es simultáneo, obviamente, es el or. O una o la otra, pues es notable. Y sobresaliente, pues si es nueve o diez. 313 00:17:07,799 --> 00:17:23,319 me quedaría, y si no es ninguna 314 00:17:23,319 --> 00:17:24,960 de ellas, porque mi sentencia 315 00:17:24,960 --> 00:17:27,200 if else if, admite 316 00:17:27,200 --> 00:17:29,319 un else si yo lo quiero, opcional 317 00:17:29,319 --> 00:17:31,000 un else que es 318 00:17:31,000 --> 00:17:33,480 si no se da ninguna de las anteriores 319 00:17:33,480 --> 00:17:34,920 si no se da 320 00:17:34,920 --> 00:17:36,900 entonces, ¿qué pasa? 321 00:17:37,019 --> 00:17:39,200 pues en este caso, si no se da es que la nota 322 00:17:39,200 --> 00:17:41,339 que hemos metido no es válida, pues podríamos 323 00:17:41,339 --> 00:17:42,779 ponerlo, podríamos poner 324 00:17:42,779 --> 00:17:45,059 nota no 325 00:17:45,059 --> 00:17:46,420 válida 326 00:17:46,420 --> 00:17:48,819 y ya está, ¿vale? 327 00:17:50,059 --> 00:17:51,680 Bueno, este sería mi programa 328 00:17:51,680 --> 00:17:54,299 He identificado varias excluyentes 329 00:17:54,299 --> 00:17:56,519 He puesto lo que hacen cada una y ya está 330 00:17:56,519 --> 00:17:59,539 Ahora es cuando uno 331 00:17:59,539 --> 00:18:02,500 Entraría en la fase de pruebas 332 00:18:02,500 --> 00:18:04,339 Y haría un 333 00:18:04,339 --> 00:18:06,740 Barrido de pruebas lo más completo posible 334 00:18:06,740 --> 00:18:08,299 Que en este caso sería 335 00:18:08,299 --> 00:18:10,200 Probar una nota no válida 336 00:18:10,200 --> 00:18:11,740 A ver si sale por aquí 337 00:18:11,740 --> 00:18:15,279 Y ahora, probar todas y cada una del resto de las notas válidas 338 00:18:15,279 --> 00:18:16,460 0, 1, 2, 3 339 00:18:16,460 --> 00:18:17,500 Ese sería un 340 00:18:17,500 --> 00:18:22,019 grupo completo de casos de prueba 341 00:18:22,019 --> 00:18:24,640 ¿vale? no hace uno una única prueba 342 00:18:24,640 --> 00:18:26,700 en un programa, porque le puede haber salido bien 343 00:18:26,700 --> 00:18:28,720 de casualidad, hace muchas 344 00:18:28,720 --> 00:18:30,619 que cubran todas las posibilidades 345 00:18:30,619 --> 00:18:32,460 de las entradas, bueno en este caso 346 00:18:32,460 --> 00:18:35,019 como es sencillo, yo creo que no merece la pena hacer las pruebas 347 00:18:35,019 --> 00:18:36,619 podríamos deducir que 348 00:18:36,619 --> 00:18:38,579 hombre, a menos que hayamos hecho una 349 00:18:38,579 --> 00:18:40,660 errata sin habernos dado cuenta, esto va a funcionar 350 00:18:40,660 --> 00:18:41,700 vale 351 00:18:41,700 --> 00:18:43,960 bueno 352 00:18:43,960 --> 00:18:46,640 en relación a lo que decías tú María, en este caso 353 00:18:46,640 --> 00:18:50,779 una vez que el programa está hecho, ya está aprobado, funciona, uno se puede plantear 354 00:18:50,779 --> 00:18:54,480 a lo mejor, o bueno, hacer pequeños cambios en el código, que lo dejen más bonito 355 00:18:54,480 --> 00:18:58,519 aquí al final me ha quedado una única sentencia 356 00:18:58,519 --> 00:19:02,099 una única, entonces puedo quitar la llave 357 00:19:02,099 --> 00:19:06,460 ¿vale? podría quitarla, me da igual, lo que pasa es que si luego algo 358 00:19:06,460 --> 00:19:10,519 cambia en mi código y le añado aquí una sentencia, tengo que poner automáticamente 359 00:19:10,519 --> 00:19:14,579 la llave, pues si yo digo, ah vale, lo veo 360 00:19:14,579 --> 00:19:16,460 más clarito, si la quito 361 00:19:16,460 --> 00:19:18,759 lo veo más claro, no me molestan tanto las llaves 362 00:19:18,759 --> 00:19:20,700 pero además de mostrar 363 00:19:20,700 --> 00:19:21,500 insuficiente 364 00:19:21,500 --> 00:19:23,720 quiero aquí pues 365 00:19:23,720 --> 00:19:26,519 poner la nota 366 00:19:26,519 --> 00:19:28,599 a cero, porque en el caso de que sea insuficiente 367 00:19:28,599 --> 00:19:30,519 quiero resetear la nota, ponerla a cero, cualquier 368 00:19:30,519 --> 00:19:30,960 cosa 369 00:19:30,960 --> 00:19:36,190 pues si hago esto, ya obviamente ya me he cargado el programa 370 00:19:36,190 --> 00:19:38,190 porque el compilador 371 00:19:38,190 --> 00:19:39,430 me dice, vale no tienes llave 372 00:19:39,430 --> 00:19:41,869 luego la única sentencia que va dentro 373 00:19:41,869 --> 00:19:43,809 del if es esta, es la única sentencia que va 374 00:19:43,809 --> 00:19:45,990 dentro del if, vale, aquí el if ya ha acabado 375 00:19:45,990 --> 00:19:47,509 esto es un if que acabó 376 00:19:47,509 --> 00:19:49,890 ya ha terminado, ya no hay 377 00:19:49,890 --> 00:19:51,789 else, no hay if, ni hay nada, se acabó, vale 378 00:19:51,789 --> 00:19:53,450 muy bien, este if terminó 379 00:19:53,450 --> 00:19:55,569 ahora yo hago nota igual a cero, muy bien 380 00:19:55,569 --> 00:19:57,049 y ahora me encuentro esto, y esto 381 00:19:57,049 --> 00:19:59,730 y esto donde sale, como puede haber 382 00:19:59,730 --> 00:20:01,549 una sentencia que empieza con ese if directamente 383 00:20:01,549 --> 00:20:02,990 esto de donde ha salido, esto que es 384 00:20:02,990 --> 00:20:05,509 claro, es que esto va 385 00:20:05,509 --> 00:20:07,529 con este, va con este 386 00:20:07,529 --> 00:20:09,269 y para ir con este 387 00:20:09,269 --> 00:20:11,529 esto tiene que quedar muy claro 388 00:20:11,529 --> 00:20:13,630 muy claro, que va todo en la 389 00:20:13,630 --> 00:20:15,289 rama del if, que va todo en esa rama 390 00:20:15,289 --> 00:20:17,710 entonces la única forma de que quede muy claro 391 00:20:17,710 --> 00:20:19,170 que va todo en esa rama es eso 392 00:20:19,170 --> 00:20:21,349 vale 393 00:20:21,349 --> 00:20:23,750 bueno pues esta podría 394 00:20:23,750 --> 00:20:25,710 ser nuestro programa y estaría bien y ya 395 00:20:25,710 --> 00:20:27,670 está y lo entregamos, nos vamos y se 396 00:20:27,670 --> 00:20:29,349 acabó, pero bueno 397 00:20:29,349 --> 00:20:32,069 tenemos diferentes posibilidades sintácticas 398 00:20:32,069 --> 00:20:33,769 en java para hacer las cosas 399 00:20:33,769 --> 00:20:35,549 de forma que queden más claras 400 00:20:35,549 --> 00:20:37,470 más elegantes, más bonitas para el que venga 401 00:20:37,470 --> 00:20:39,049 detrás, que siempre va a venir uno detrás 402 00:20:39,049 --> 00:20:40,950 a mantener ese código, siempre 403 00:20:40,950 --> 00:20:45,509 Y entre ellas está la sentencia de decisión 404 00:20:45,509 --> 00:20:46,490 La switch case 405 00:20:46,490 --> 00:20:47,109 ¿Vale? 406 00:20:47,150 --> 00:20:48,009 Que a muchos os sonará 407 00:20:48,009 --> 00:20:50,130 Bueno, pues 408 00:20:50,130 --> 00:20:54,589 La switch case es una sentencia 409 00:20:54,589 --> 00:20:58,089 Que en función del valor de una variable 410 00:20:58,089 --> 00:21:01,609 Te hace una cosa o te hace otras 411 00:21:01,609 --> 00:21:03,630 En función del valor de una variable 412 00:21:03,630 --> 00:21:05,769 O sea, es un caso particular del if, el save 413 00:21:05,769 --> 00:21:07,829 Porque el if, el save es el caso genérico 414 00:21:07,829 --> 00:21:09,829 O hace esto, o hace esto, o hace esto 415 00:21:09,829 --> 00:21:37,609 Hace esto en función de la condición, sea esa condición la que sea, una condición cualquiera, todo lo tocha que uno quiera, pero cuando esa condición es exclusivamente evaluar el valor de una variable, pues entonces podemos transformarla y expresarlo con el switch case y va a quedar más claro, el que lo vea, el ver el switch case automáticamente ve, ah vale, que esto depende del valor de una variable y eso seguramente le da información del resto del código. 416 00:21:37,609 --> 00:21:40,769 Bueno, vamos a hacer este mismo código con el switch case 417 00:21:40,769 --> 00:21:41,410 Entonces 418 00:21:41,410 --> 00:21:55,599 Versión de lo anterior 419 00:21:55,599 --> 00:21:57,180 Con la sentencia java 420 00:21:57,180 --> 00:22:00,670 Switch case 421 00:22:00,670 --> 00:22:02,730 ¿Vale? 422 00:22:04,730 --> 00:22:05,369 Vale 423 00:22:05,369 --> 00:22:07,650 Sintaxis de esta sentencia 424 00:22:07,650 --> 00:22:09,150 Sintaxis de esta sentencia 425 00:22:09,150 --> 00:22:11,769 Sintaxis 426 00:22:11,769 --> 00:22:16,430 Se pone el switch 427 00:22:16,430 --> 00:22:17,309 Vale 428 00:22:17,309 --> 00:22:19,549 Y aquí abrimos ya un, perdón 429 00:22:19,549 --> 00:22:20,549 Se pone el switch 430 00:22:20,549 --> 00:22:27,690 Aquí ponemos el nombre de la variable en función de la cual 431 00:22:27,690 --> 00:22:30,829 Sea cual sea su valor, hacemos una cosa u otra 432 00:22:30,829 --> 00:22:33,970 En nuestro caso, sería la variable nota, ¿verdad? 433 00:22:38,619 --> 00:22:39,000 ¿Vale? 434 00:22:39,380 --> 00:22:46,240 Entonces, la sentencia empieza así 435 00:22:46,240 --> 00:22:54,240 Switch y entre paréntesis un nombre de variable que existe en mi código 436 00:22:54,240 --> 00:22:55,180 Un nombre de variable 437 00:22:55,180 --> 00:22:57,740 Y las llaves 438 00:22:57,740 --> 00:23:00,119 ¿Vale? Obligatorio 439 00:23:00,119 --> 00:23:02,160 Porque aquí dentro ya hay muchas cosas 440 00:23:02,160 --> 00:23:03,380 Las llaves, vale 441 00:23:03,380 --> 00:23:06,059 Pues aquí empezamos a distinguir casos 442 00:23:06,059 --> 00:23:08,839 Eso significa, en el caso de que nota sea 443 00:23:08,839 --> 00:23:12,950 Distinguimos un caso 444 00:23:12,950 --> 00:23:15,470 Valor 1, el valor que yo quiera 445 00:23:15,470 --> 00:23:18,470 Vamos a suponer, vamos a hacerlo primero sin simplificar 446 00:23:18,470 --> 00:23:20,150 El case, el switch case original 447 00:23:20,150 --> 00:23:21,930 Antes de que lo adaptaran 448 00:23:21,930 --> 00:23:24,450 Pues en el caso de que la nota sea 0 449 00:23:24,450 --> 00:23:27,789 Pues entonces yo pondría 450 00:23:27,789 --> 00:23:29,690 Mostrar 451 00:23:29,690 --> 00:23:32,970 Insuficiente 452 00:23:32,970 --> 00:23:35,809 Vale 453 00:23:35,809 --> 00:23:38,450 En el caso de que la nota sea 1 454 00:23:38,450 --> 00:23:40,430 Vamos a hacer la primera versión 455 00:23:40,430 --> 00:23:41,690 La que sería original 456 00:23:41,690 --> 00:23:44,309 Pero que luego vamos a retocar 457 00:23:44,309 --> 00:23:46,750 Para que sea una versión un poquito más compacta 458 00:23:46,750 --> 00:23:47,849 Pero ahora estamos explicando 459 00:23:47,849 --> 00:23:48,789 Lo que hace 460 00:23:48,789 --> 00:23:51,549 Lo que hace es, repito 461 00:23:51,549 --> 00:23:53,549 Palabra reservada switch 462 00:23:53,549 --> 00:23:56,109 Entre paréntesis la variable que decide 463 00:23:56,109 --> 00:23:58,130 Por qué camino me voy en función de su valor 464 00:23:58,130 --> 00:24:00,089 Y ahora en un montón de case 465 00:24:00,089 --> 00:24:01,349 Los valores 466 00:24:01,349 --> 00:24:04,289 Que yo quiero distinguir 467 00:24:04,289 --> 00:24:06,690 En este caso me queda un switch case 468 00:24:06,690 --> 00:24:07,630 Con un montón de valores 469 00:24:07,630 --> 00:24:14,940 Porque la nota puede tener un montón de 470 00:24:14,940 --> 00:24:17,759 Posibilidades 471 00:24:17,759 --> 00:24:32,039 ¿Vale? Entonces en cada case 472 00:24:32,039 --> 00:24:34,119 Yo contemplaría un caso 473 00:24:34,119 --> 00:24:36,279 En el caso de que sea 0 hago esto 474 00:24:36,279 --> 00:24:37,980 En el caso de que sea 1 hago esto 475 00:24:37,980 --> 00:24:39,680 En el caso de que sea 2 hago esto 476 00:24:39,680 --> 00:24:42,240 Y tengo la opción de hacer un default 477 00:24:42,240 --> 00:24:45,880 Al final de todos los case 478 00:24:45,880 --> 00:24:48,019 Un default 479 00:24:48,019 --> 00:24:51,299 Seguido de dos puntitos también 480 00:24:51,299 --> 00:24:52,039 Como los case 481 00:24:52,039 --> 00:24:53,720 Que significa en caso de que no sea 482 00:24:53,720 --> 00:24:54,779 Ninguno de los anteriores 483 00:24:54,779 --> 00:24:56,460 Entonces vamos a 484 00:24:56,460 --> 00:24:58,579 Poner primero 485 00:24:58,579 --> 00:24:59,640 Ponerlo primero así 486 00:24:59,640 --> 00:25:31,819 Lo suficiente 487 00:25:31,819 --> 00:25:33,680 Con el 5 ya sería 488 00:25:33,680 --> 00:25:36,279 Aprobado 489 00:25:36,279 --> 00:25:42,390 Con el 6 y 7 ya sería 490 00:25:42,390 --> 00:25:44,789 No, con el 6 sería bien 491 00:25:44,789 --> 00:25:47,069 Con el 7 y 8 492 00:25:47,069 --> 00:25:49,630 Sería notable 493 00:25:49,630 --> 00:25:58,160 Y con el 9 y 10 sería sobresaliente 494 00:25:58,160 --> 00:26:10,390 Bueno, la estructura básica es esta 495 00:26:10,390 --> 00:26:13,410 Vamos a entenderla bien antes de retocarla 496 00:26:13,410 --> 00:26:15,630 Para que sea un poco más operativa 497 00:26:15,630 --> 00:26:17,450 La estructura básica es esta 498 00:26:17,450 --> 00:26:19,769 Switch entre paréntesis 499 00:26:19,769 --> 00:26:22,549 Un nombre de variable que existe en mi código 500 00:26:22,549 --> 00:26:24,410 Un nombre de variable que existe en mi código 501 00:26:24,410 --> 00:26:25,289 No hay tutía, vale 502 00:26:25,289 --> 00:26:26,950 Y ahora cada case 503 00:26:26,950 --> 00:26:29,509 cada case, palabra reservada case 504 00:26:29,509 --> 00:26:31,809 yo le pongo 505 00:26:31,809 --> 00:26:33,289 un posible valor 506 00:26:33,289 --> 00:26:34,490 un posible valor 507 00:26:34,490 --> 00:26:37,390 y ahora si la variable 508 00:26:37,390 --> 00:26:39,589 tuviera ese valor, se hace lo que yo 509 00:26:39,589 --> 00:26:41,450 diga aquí, tiene que ser una sentencia obligatoriamente 510 00:26:41,450 --> 00:26:43,049 no, pueden ser más de una 511 00:26:43,049 --> 00:26:45,730 dentro de cada case podría haber más de una 512 00:26:45,730 --> 00:26:47,410 y aquí sí que no 513 00:26:47,410 --> 00:26:48,829 hace falta que ponga llaves 514 00:26:48,829 --> 00:26:51,450 porque ya se sabe que todo hasta el 515 00:26:51,450 --> 00:26:53,269 siguiente case va dentro de ese 516 00:26:53,269 --> 00:26:54,670 entonces no hace falta 517 00:26:54,670 --> 00:26:56,549 aquí podría haber otra sentencia 518 00:26:56,549 --> 00:26:58,630 por ejemplo en el caso 519 00:26:58,630 --> 00:27:01,750 cero, yo no quiero que las notas 520 00:27:01,750 --> 00:27:03,690 cero sean válidas, como poco quiero un uno 521 00:27:03,690 --> 00:27:05,690 pues por ejemplo, si en el caso 522 00:27:05,690 --> 00:27:07,210 cero yo quiero hacer esto también 523 00:27:07,210 --> 00:27:09,609 insuficiente y además poner la nota 524 00:27:09,609 --> 00:27:11,670 uno por lo que sea, pues yo pongo 525 00:27:11,670 --> 00:27:13,430 aquí todas las entidades que quiera y en cada case 526 00:27:13,430 --> 00:27:15,490 también, puedo poner todas las que quiera, aquí ya 527 00:27:15,490 --> 00:27:17,549 sí que no hace falta, no es 528 00:27:17,549 --> 00:27:19,589 necesario poner las llaves 529 00:27:19,589 --> 00:27:21,049 las puedo poner 530 00:27:21,049 --> 00:27:23,549 pero no hace ninguna falta, porque 531 00:27:23,549 --> 00:27:25,470 aquí queda muy claro que hasta 532 00:27:25,470 --> 00:27:27,329 el siguiente case, hasta el siguiente 533 00:27:27,329 --> 00:27:29,569 todo va dentro del de arriba, todo 534 00:27:29,569 --> 00:27:31,410 ¿vale? no hace falta ponerlas 535 00:27:31,410 --> 00:27:33,529 las puedo poner si quiero 536 00:27:33,529 --> 00:27:35,390 por una razón que vamos a entender 537 00:27:35,390 --> 00:27:37,589 un poquito más adelante, pero ahora mismo 538 00:27:37,589 --> 00:27:39,569 ahora mismo, con lo que 539 00:27:39,569 --> 00:27:41,690 sabemos, nos da exactamente igual, ponerla que no ponerla 540 00:27:41,690 --> 00:27:42,950 vale, pues 541 00:27:42,950 --> 00:27:44,650 este movimiento está claro, ¿no? 542 00:27:44,970 --> 00:27:47,569 si no es ni esta, ni esta 543 00:27:47,569 --> 00:27:49,450 ni esta, ni esta, ni esta, ni esta 544 00:27:49,450 --> 00:27:51,369 llegamos hasta el final, y hay un default 545 00:27:51,369 --> 00:27:53,490 que es opcional, puede no estar el default 546 00:27:53,490 --> 00:27:54,789 esto podría no estar 547 00:27:54,789 --> 00:27:56,210 Si hay un default 548 00:27:56,210 --> 00:27:58,210 Entonces se mete a hacer lo que hay aquí 549 00:27:58,210 --> 00:28:06,779 El default es la rama 550 00:28:06,779 --> 00:28:08,099 En la que se mete 551 00:28:08,099 --> 00:28:10,920 Si no ha entrado en ninguno de los case anteriores 552 00:28:10,920 --> 00:28:12,599 Es como el else del else if 553 00:28:12,599 --> 00:28:14,319 Es como el else del else if 554 00:28:14,319 --> 00:28:16,019 ¿Vale? 555 00:28:16,319 --> 00:28:17,700 Bueno, este sería el funcionamiento 556 00:28:17,700 --> 00:28:18,380 Vale 557 00:28:18,380 --> 00:28:21,680 Bueno, pues primera cosa 558 00:28:21,680 --> 00:28:24,480 A ver, que tenemos que incorporar 559 00:28:24,480 --> 00:28:26,599 Esto en realidad 560 00:28:26,599 --> 00:28:27,920 No es como el if else if 561 00:28:27,920 --> 00:28:29,400 que es que cuando encuentra 562 00:28:29,400 --> 00:28:31,440 la rama válida 563 00:28:31,440 --> 00:28:33,119 por ejemplo, si la nota es 0 564 00:28:33,119 --> 00:28:35,640 la rama válida es esta 565 00:28:35,640 --> 00:28:37,599 nota igual a 0 566 00:28:37,599 --> 00:28:39,339 esta es la rama válida, pues entraría aquí 567 00:28:39,339 --> 00:28:42,059 pero el switch case está pensado 568 00:28:42,059 --> 00:28:43,759 para facilitar 569 00:28:43,759 --> 00:28:45,920 usarlo con algunas aplicaciones 570 00:28:45,920 --> 00:28:47,500 que pondremos algún ejemplo para entender 571 00:28:47,500 --> 00:28:49,680 por qué está pensado así, está pensado 572 00:28:49,680 --> 00:28:51,380 para que una vez que encuentra la rama válida 573 00:28:51,380 --> 00:28:53,720 entre en esa rama, haga esa 574 00:28:53,720 --> 00:28:55,420 y además haga ya de corrido 575 00:28:55,420 --> 00:28:56,619 todas las que están a continuación 576 00:28:56,619 --> 00:29:00,220 Sea el valor, el de la variable o no 577 00:29:00,220 --> 00:29:02,299 Es decir, si yo le doy la 0 578 00:29:02,299 --> 00:29:03,799 Va a entrar aquí, me va a hacer esto 579 00:29:03,799 --> 00:29:05,619 Pero es que además me va a hacer todo lo demás 580 00:29:05,619 --> 00:29:08,880 Vamos a comprobarlo 581 00:29:08,880 --> 00:29:10,980 Comentando esto 582 00:29:10,980 --> 00:29:17,170 Vale, vamos a darle a nota 583 00:29:17,170 --> 00:29:18,829 El valor 0 584 00:29:18,829 --> 00:29:21,210 Entonces como en este case 585 00:29:21,210 --> 00:29:22,710 Va a ver que sí que es 0, va a entrar aquí 586 00:29:22,710 --> 00:29:24,130 Va a entrar aquí 587 00:29:24,130 --> 00:29:26,569 Pero es que va a entrar aquí, va a hacer esto 588 00:29:26,569 --> 00:29:28,690 Y luego de corrido va a seguir 589 00:29:28,690 --> 00:29:30,170 Y va a hacer todo lo demás 590 00:29:30,170 --> 00:29:32,509 Vamos a comprobarlo 591 00:29:32,509 --> 00:29:40,049 Se queda esperando la nota 592 00:29:40,049 --> 00:29:40,910 Vale, le pongo un 0 593 00:29:40,910 --> 00:29:43,710 Me ha mostrado 594 00:29:43,710 --> 00:29:46,230 El insuficiente primero 595 00:29:46,230 --> 00:29:47,829 Y es que se ha puesto a hacer todo lo demás 596 00:29:47,829 --> 00:29:49,569 Vamos a suponer que le damos un 9 597 00:29:49,569 --> 00:29:52,369 Un 9, en el 0 no va a entrar 598 00:29:52,369 --> 00:29:54,369 Porque no es 9, en el 1 tampoco, en el 2 tampoco 599 00:29:54,369 --> 00:29:56,750 En el 3 tampoco, en el 9 ya sí que va a entrar 600 00:29:56,750 --> 00:29:58,470 En el 9 sí, va a entrar en el 9 601 00:29:58,470 --> 00:30:00,369 Y me va a mostrar sobresaliente, pero es que a partir 602 00:30:00,369 --> 00:30:02,369 De la rama en la que entra, a partir de la que entra 603 00:30:02,369 --> 00:30:03,450 Ya hace todas las demás 604 00:30:03,450 --> 00:30:05,029 Todas, ya de corrido 605 00:30:05,029 --> 00:30:06,690 Ya sin mirar condición ni nada 606 00:30:06,690 --> 00:30:08,289 A partir de la que entra 607 00:30:08,289 --> 00:30:09,990 Vale, o sea, le vamos a dar un 9 608 00:30:09,990 --> 00:30:12,930 Y vamos a ver como me muestra 609 00:30:12,930 --> 00:30:14,809 Todas las que están a continuación 610 00:30:14,809 --> 00:30:16,710 Me muestra todas las que están 611 00:30:16,710 --> 00:30:18,410 Por debajo de la que ha entrado 612 00:30:18,410 --> 00:30:20,809 Si yo le doy el 9 613 00:30:20,809 --> 00:30:22,609 Me va a entrar en la 9 y me va a mostrar esto 614 00:30:22,609 --> 00:30:24,609 Pero también me va a mostrar esta y esta 615 00:30:24,609 --> 00:30:25,569 Todas las que están debajo 616 00:30:25,569 --> 00:30:28,369 Vamos a comprobarlo 617 00:30:28,369 --> 00:30:30,390 Yo le doy el 9, vale 618 00:30:30,390 --> 00:30:31,190 Y efectivamente 619 00:30:31,190 --> 00:30:34,130 No ha entrado ni en el 0, ni en el 1, ni en el 2 620 00:30:34,130 --> 00:30:34,609 No ha entrado 621 00:30:34,609 --> 00:30:36,309 En el 9 ya sí que ha entrado 622 00:30:36,309 --> 00:30:37,710 Porque la variable es 9 623 00:30:37,710 --> 00:30:39,450 Y desde el momento en que entra 624 00:30:39,450 --> 00:30:40,750 Hace lo que hay en esa rama 625 00:30:40,750 --> 00:30:42,950 Y ya de corrido hace todo lo que hay en las demás 626 00:30:42,950 --> 00:30:46,710 A ver, puede que eso nos interese 627 00:30:46,710 --> 00:30:48,869 Dependiendo de la aplicación 628 00:30:48,869 --> 00:30:50,549 Puede que eso que nos interese 629 00:30:50,549 --> 00:30:51,890 Nos sea útil y práctico 630 00:30:51,890 --> 00:30:55,029 Porque a veces alguna aplicación se puede mantener 631 00:30:55,029 --> 00:30:56,930 Se puede enunciar 632 00:30:56,930 --> 00:30:58,309 Cuando llegues a este valor 633 00:30:58,309 --> 00:30:59,769 A partir de él haz esto 634 00:30:59,769 --> 00:31:01,869 Bueno, podremos ver luego algún ejemplo 635 00:31:01,869 --> 00:31:03,289 Puede que eso nos interese 636 00:31:03,289 --> 00:31:04,789 Pero en la mayoría de los casos 637 00:31:04,789 --> 00:31:07,710 No nos interesa ese funcionamiento 638 00:31:07,710 --> 00:31:09,869 En la mayoría de los casos el funcionamiento que nos interesa es 639 00:31:09,869 --> 00:31:11,369 Que haga sólo 640 00:31:11,369 --> 00:31:14,230 La rama en la que coincide el valor 641 00:31:14,230 --> 00:31:16,369 Sólo esa, como el if, el seif 642 00:31:16,369 --> 00:31:18,630 Suele ser el uso del switch case que nos interesa 643 00:31:18,630 --> 00:31:20,750 Bueno, pues para que el switch case 644 00:31:20,750 --> 00:31:21,509 Funcione así 645 00:31:21,509 --> 00:31:24,569 Entonces hay que poner obligatoriamente 646 00:31:24,569 --> 00:31:26,910 Al final de cada case 647 00:31:26,910 --> 00:31:27,930 Una sentencia 648 00:31:27,930 --> 00:31:29,190 Que es una palabra reservada 649 00:31:29,190 --> 00:31:30,529 Que es la primera vez que la vemos de Java 650 00:31:30,529 --> 00:31:31,130 Que se llama break 651 00:31:31,130 --> 00:31:33,630 Y hay que ponerla sí o sí 652 00:31:33,630 --> 00:31:36,369 Detrás de cada uno de los 653 00:31:36,369 --> 00:31:37,910 Case 654 00:31:37,910 --> 00:31:39,549 Si yo no quiero que funcione 655 00:31:39,549 --> 00:31:41,230 Como acabo de decir 656 00:31:41,230 --> 00:31:45,869 Por eso cuando estudiáis el switch case 657 00:31:45,869 --> 00:31:47,089 O lo miráis en un vídeo 658 00:31:47,089 --> 00:31:48,109 O lo miráis en algún lado 659 00:31:48,109 --> 00:31:50,210 Pues directamente os lo ponen así 660 00:31:50,210 --> 00:31:52,190 Switch case y luego pones break 661 00:31:52,190 --> 00:31:53,849 Pones break por eso 662 00:31:53,849 --> 00:31:54,769 Porque si no lo pones 663 00:31:54,769 --> 00:31:56,230 Desde el momento en que entra en esa rama 664 00:31:56,230 --> 00:31:57,910 Se hace todas las demás 665 00:31:57,910 --> 00:31:59,349 Hasta que llega al 666 00:31:59,349 --> 00:32:48,039 Vale, detrás del default 667 00:32:48,039 --> 00:32:50,180 Aquí ya sí que no hace falta que ponga break 668 00:32:50,180 --> 00:32:52,380 Porque es que detrás del default, que es lo último que se pone 669 00:32:52,380 --> 00:32:53,680 Ya no hay nada más debajo 670 00:32:53,680 --> 00:32:56,640 Entonces ya, si he entrado en el default 671 00:32:56,640 --> 00:32:57,980 Ya no hay nada más 672 00:32:57,980 --> 00:33:00,400 Entonces me da igual poner el break 673 00:33:00,400 --> 00:33:01,460 Que no ponerlo, no molesta 674 00:33:01,460 --> 00:33:03,660 Entonces el break es una palabra 675 00:33:03,660 --> 00:33:05,359 Reservada de Java 676 00:33:05,359 --> 00:33:08,359 Que significa 677 00:33:08,359 --> 00:33:09,680 Sal 678 00:33:09,680 --> 00:33:12,559 Del bloque en el que estés 679 00:33:12,559 --> 00:33:16,140 Esto vamos a entender un poco mejor más adelante 680 00:33:16,140 --> 00:33:18,559 Un bloque es un trozo de código entre llaves 681 00:33:18,559 --> 00:33:19,759 Quedémonos con eso por ahora 682 00:33:19,759 --> 00:33:23,339 Un bloque es un trozo de código entre llaves 683 00:33:23,339 --> 00:33:26,180 Y el concepto de bloque tiene importancia 684 00:33:26,180 --> 00:33:28,220 Ya veremos en breve por qué 685 00:33:28,220 --> 00:33:32,819 Bueno, pues si un bloque es un trozo de código entre llaves 686 00:33:32,819 --> 00:33:34,720 Todo esto de aquí es un bloque, ¿verdad? 687 00:33:35,599 --> 00:33:36,599 Porque está entre llaves 688 00:33:36,599 --> 00:33:37,640 Todo esto de ahí es un bloque 689 00:33:37,640 --> 00:33:39,920 Está entre esta llave y entre esta llave 690 00:33:39,920 --> 00:33:40,460 Eso es un bloque 691 00:33:40,460 --> 00:33:44,480 Bueno, pues break es una palabra que significa 692 00:33:44,480 --> 00:33:48,019 Sal automáticamente del bloque en el que estés 693 00:33:48,019 --> 00:33:51,500 Y sigue con el programa fuera de ese bloque 694 00:33:51,500 --> 00:33:53,279 Pues es justo lo que queremos 695 00:33:53,279 --> 00:33:56,359 Si la nota ha sido cero y ha entrado aquí 696 00:33:56,359 --> 00:33:58,660 Hace esto y se encuentra el break 697 00:33:58,660 --> 00:34:00,579 Y el break le dice, fuera, sal del bloque 698 00:34:00,579 --> 00:34:01,960 Sal del bloque, ya está 699 00:34:01,960 --> 00:34:03,619 Pues él se ve forzado a salir del bloque 700 00:34:03,619 --> 00:34:05,259 Y ya continúa por aquí 701 00:34:05,259 --> 00:34:07,859 Haciendo la siguiente sentencia o la que sea 702 00:34:07,859 --> 00:34:11,239 ¿Vale? 703 00:34:12,019 --> 00:34:13,659 Que no ha entrado en el 0 y entra en el 1. 704 00:34:14,420 --> 00:34:16,440 Muestra esto y luego se encuentra con el break. 705 00:34:16,579 --> 00:34:18,880 Que significa, fuera, sal de este bloque. 706 00:34:19,119 --> 00:34:21,119 Pues estupendo, sale del bloque y se va aquí. 707 00:34:22,340 --> 00:34:25,000 Entonces, ¿para que esto funcione realmente como un if-else-if? 708 00:34:25,099 --> 00:34:26,760 Es decir, que los caminos sean excluyentes. 709 00:34:27,159 --> 00:34:29,820 Y que una vez que ha encontrado el válido, salga. 710 00:34:30,599 --> 00:34:32,099 Y ya no compruebe ninguno más. 711 00:34:32,880 --> 00:34:33,840 Tenemos que poner un break. 712 00:34:34,860 --> 00:34:35,219 ¿Vale? 713 00:34:42,849 --> 00:34:46,969 Entonces, ahora ya, si probamos esto, pues ahora ya sí que lo va a hacer como queremos. 714 00:34:47,090 --> 00:34:47,829 ¿Le metemos un 0? 715 00:34:47,829 --> 00:34:50,469 Pues me muestra solo el insuficiente 716 00:34:50,469 --> 00:34:52,269 Porque le hemos hecho un break y ha salido fuera 717 00:34:52,269 --> 00:34:54,150 Que le ponemos un 9 718 00:34:54,150 --> 00:34:56,409 Pues me muestra solo el sobresaliente 719 00:34:56,409 --> 00:34:57,849 Porque le he puesto un break y se ha ido fuera 720 00:34:57,849 --> 00:35:00,150 Que le ponemos un 12 721 00:35:00,150 --> 00:35:01,769 Pues entra solo en el default 722 00:35:01,769 --> 00:35:03,530 Ah bueno, es que en el default 723 00:35:03,530 --> 00:35:07,050 Yo he puesto insuficiente y en el default tenía que haber puesto 724 00:35:07,050 --> 00:35:07,909 Nota no válida 725 00:35:07,909 --> 00:35:09,889 Con el copia y pega 726 00:35:09,889 --> 00:35:11,730 Si hubiéramos hecho pruebas 727 00:35:11,730 --> 00:35:13,969 Habríamos visto que teníamos un error 728 00:35:13,969 --> 00:35:16,250 Y es que el system.out.println con el copia y pega 729 00:35:16,250 --> 00:35:17,170 El texto está mal 730 00:35:17,170 --> 00:35:18,849 Si uno no hace pruebas 731 00:35:18,849 --> 00:35:20,989 Se le van a escapar errores de esto seguro 732 00:35:20,989 --> 00:35:27,070 Si ahora volvemos a hacer la prueba 733 00:35:27,070 --> 00:35:29,130 Para el caso de prueba que nos ha fallado 734 00:35:29,130 --> 00:35:29,969 El 12 735 00:35:29,969 --> 00:35:32,250 Ahora ya si ya no nos ha fallado el caso de prueba 736 00:35:32,250 --> 00:35:34,809 Vale 737 00:35:34,809 --> 00:35:36,369 Importante lo de las pruebas 738 00:35:36,369 --> 00:35:38,869 Vale 739 00:35:38,869 --> 00:35:40,389 Pues este es el switch case 740 00:35:40,389 --> 00:35:42,590 Así funciona 741 00:35:42,590 --> 00:35:45,230 Y el break se incorpora 742 00:35:45,230 --> 00:35:45,849 Siempre 743 00:35:45,849 --> 00:35:48,650 Para forzar ese comportamiento 744 00:35:48,650 --> 00:35:50,849 Que cuando ya he entrado en una rama 745 00:35:50,849 --> 00:35:52,750 Ya las demás paso de ellas 746 00:35:52,750 --> 00:35:54,389 Porque normalmente el switch case 747 00:35:54,389 --> 00:35:56,110 Lo que queremos es que sean caminos excluyentes 748 00:35:56,110 --> 00:35:58,110 Pero si yo no quiero que funcione así 749 00:35:58,110 --> 00:36:01,110 Si yo quiero que una vez que he entrado en una rama 750 00:36:01,110 --> 00:36:03,130 Haga eso y todo lo que hay a continuación 751 00:36:03,130 --> 00:36:04,449 Todo lo que hay 752 00:36:04,449 --> 00:36:07,170 Pues entonces no pongo el break 753 00:36:07,170 --> 00:36:09,769 En algún caso puede ser que eso me interese 754 00:36:09,769 --> 00:36:11,429 Que una vez que he encontrado una rama 755 00:36:11,429 --> 00:36:13,090 Haga eso y todo lo que viene a continuación 756 00:36:13,090 --> 00:36:15,469 ¿Vale? 757 00:36:16,409 --> 00:36:17,829 Bueno, pues siguiente cosa 758 00:36:17,829 --> 00:36:20,329 no hay duda sobre esto 759 00:36:20,329 --> 00:36:22,610 ¿vale? seleccionamos 760 00:36:22,610 --> 00:36:24,170 el switch case en esa situación 761 00:36:24,170 --> 00:36:26,309 cuando vemos que hay varias 762 00:36:26,309 --> 00:36:28,050 posibilidades para mi programa 763 00:36:28,050 --> 00:36:30,409 y la condición es que 764 00:36:30,409 --> 00:36:32,409 una variable sea un valor o sea 765 00:36:32,409 --> 00:36:34,570 otro, no una condición genérica 766 00:36:34,570 --> 00:36:36,389 como el if, el save, que puede ser la condición 767 00:36:36,389 --> 00:36:38,329 que a mi me dé la gana, sino cuando la condición 768 00:36:38,329 --> 00:36:40,530 es una condición concreta y es que una variable 769 00:36:40,530 --> 00:36:41,989 sea un valor o sea otro 770 00:36:41,989 --> 00:36:44,130 pues en ese caso pongo el switch case 771 00:36:44,130 --> 00:36:46,150 y el programa 772 00:36:46,150 --> 00:36:47,769 escrito con el switch case 773 00:36:47,769 --> 00:36:49,769 el que lo ve desde fuera 774 00:36:49,769 --> 00:36:51,550 lo ve más claro, en cuanto ve un switch case 775 00:36:51,550 --> 00:36:52,809 ya sabe de qué va este rollo 776 00:36:52,809 --> 00:36:55,550 que va de distinguir en función 777 00:36:55,550 --> 00:36:56,610 del valor de una variable 778 00:36:56,610 --> 00:36:58,949 si uno lo ve con un if-else-if 779 00:36:58,949 --> 00:37:01,429 pues no lo ve tan claro, lo ve más feo 780 00:37:01,429 --> 00:37:03,929 porque tiene que repetir esta condición un montón de veces 781 00:37:03,929 --> 00:37:06,030 tiene que ir mirando condición por condición 782 00:37:06,030 --> 00:37:07,570 no vaya a ser que cada condición 783 00:37:07,570 --> 00:37:09,829 se refiera a ideas distintas 784 00:37:09,829 --> 00:37:11,789 no es tan fácil cuando uno ve 785 00:37:11,789 --> 00:37:13,670 un código con if-else-if rápidamente 786 00:37:13,670 --> 00:37:15,030 entender de qué va el rollo 787 00:37:15,030 --> 00:37:18,050 Pero si lo ve con un switch case ya sabe de qué va el rollo 788 00:37:18,050 --> 00:37:19,690 Que es, ah vale, la nota 789 00:37:19,690 --> 00:37:22,190 Me decide el camino, la nota me lo decide 790 00:37:22,190 --> 00:37:23,630 Ya lo has visto de buenas a primeras 791 00:37:23,630 --> 00:37:25,889 Ya te haces una idea de qué va la historia 792 00:37:25,889 --> 00:37:28,389 Cuando tú ves esto de buenas a primeras 793 00:37:28,389 --> 00:37:30,750 No sabes si la nota es la que decide o no 794 00:37:30,750 --> 00:37:32,750 Tienes que ir condición por condición 795 00:37:32,750 --> 00:37:34,449 Porque yo aquí podría haber puesto 796 00:37:34,449 --> 00:37:35,409 Otra que tiene que ver con nota 797 00:37:35,409 --> 00:37:36,969 Podría haber puesto cualquier cosa 798 00:37:36,969 --> 00:37:39,670 Entonces 799 00:37:39,670 --> 00:37:42,309 Aunque un programa se puede hacer 800 00:37:42,309 --> 00:37:43,090 De mil maneras 801 00:37:43,090 --> 00:37:45,250 Y solo con el if else 802 00:37:45,250 --> 00:37:46,630 Podemos hacer cualquier cosa 803 00:37:46,630 --> 00:37:48,369 La idea es seleccionar 804 00:37:48,369 --> 00:37:49,829 De todas las posibilidades que tengo 805 00:37:49,829 --> 00:37:52,230 Estructuras que hagan el código más claro 806 00:37:52,230 --> 00:37:54,829 Que hagan el código más claro para el que lo lee 807 00:37:54,829 --> 00:37:56,449 Pues en la situación que digo 808 00:37:56,449 --> 00:37:57,269 El switch case 809 00:37:57,269 --> 00:37:59,369 Aportará más claridad 810 00:37:59,369 --> 00:38:01,969 Vale, bueno, pues entonces 811 00:38:01,969 --> 00:38:04,170 Seguimos depurando un poco esto 812 00:38:04,170 --> 00:38:06,710 Hasta cierta versión de Java 813 00:38:06,710 --> 00:38:07,969 Esto era así y era así 814 00:38:07,969 --> 00:38:10,909 Pero, ostras, en este caso en particular 815 00:38:10,909 --> 00:38:11,730 Se hace un poco rollo 816 00:38:11,730 --> 00:38:13,530 porque hay un montón de ramas 817 00:38:13,530 --> 00:38:15,230 en las cuales 818 00:38:15,230 --> 00:38:20,389 yo hago lo mismo 819 00:38:20,389 --> 00:38:22,610 para el 0, para el 1, para el 2 820 00:38:22,610 --> 00:38:23,909 para el 3 y para el 4 821 00:38:23,909 --> 00:38:26,789 estoy haciendo para todas ellas 822 00:38:26,789 --> 00:38:27,949 lo mismo 823 00:38:27,949 --> 00:38:30,210 entonces, jolín, esto 824 00:38:30,210 --> 00:38:33,230 queda muy feo 825 00:38:33,230 --> 00:38:34,869 o sea, un montón de veces 826 00:38:34,869 --> 00:38:36,250 lo mismo para varios casos 827 00:38:36,250 --> 00:38:37,570 un montón de veces, vale 828 00:38:37,570 --> 00:38:39,869 con lo que hemos dicho y sabemos hasta ahora 829 00:38:39,869 --> 00:38:42,730 ¿qué apaño haríais? 830 00:38:42,809 --> 00:38:43,809 ¿qué apaño haríais 831 00:38:43,809 --> 00:38:46,269 para que este 832 00:38:46,269 --> 00:38:48,489 System.out.println solo aparezca 833 00:38:48,489 --> 00:38:49,849 escrito una vez 834 00:38:49,849 --> 00:38:51,349 y el programa haga lo mismo 835 00:38:51,349 --> 00:38:53,570 ¿qué apaño se os ocurre? 836 00:38:54,409 --> 00:38:55,289 un programa 837 00:38:55,289 --> 00:38:58,409 que va a hacer exactamente lo mismo que este switch case 838 00:38:58,409 --> 00:38:59,289 lo mismo, lo mismo 839 00:38:59,289 --> 00:39:02,449 pero que el System.out.println insuficiente 840 00:39:02,449 --> 00:39:04,230 solo me aparezca escrito una vez 841 00:39:04,230 --> 00:39:05,969 que ya parece que al menos gana 842 00:39:05,969 --> 00:39:07,969 ¿se os ocurrirá algún apaño? 843 00:39:07,969 --> 00:39:13,860 Espera, este no te lo había 844 00:39:13,860 --> 00:39:22,070 Sí, bueno, eso era lo siguiente que iba a decir 845 00:39:22,070 --> 00:39:24,070 Eso, hasta cierta versión de Java 846 00:39:24,070 --> 00:39:25,530 No se podía usar 847 00:39:25,530 --> 00:39:27,090 Pero sí, eso es lo que haríamos 848 00:39:27,090 --> 00:39:29,750 Pero, olvídate de eso 849 00:39:29,750 --> 00:39:31,250 Con lo que hemos dicho hasta ahora 850 00:39:31,250 --> 00:39:33,869 Lo que quiero ahora mismo simplemente es que penséis 851 00:39:33,869 --> 00:39:35,710 Que penséis 852 00:39:35,710 --> 00:39:36,150 Di 853 00:39:36,150 --> 00:39:49,869 Pero bueno, nota tiene el valor que le he dado 854 00:39:49,869 --> 00:39:50,590 No te entiendo 855 00:39:50,590 --> 00:40:05,559 Eh, sí, pero 856 00:40:05,559 --> 00:40:06,639 ¿Y los queis? 857 00:40:07,019 --> 00:40:07,420 ¿Estos? 858 00:40:18,639 --> 00:40:20,039 Claro, pero el tema es 859 00:40:20,039 --> 00:40:22,619 Si nota es igual a 0 860 00:40:22,619 --> 00:40:23,739 O nota es igual a 1 861 00:40:23,739 --> 00:40:26,500 O sea, que este switch se hace en función de nota 862 00:40:26,500 --> 00:40:28,099 En cualquier caso 863 00:40:28,099 --> 00:40:43,099 Ah, bueno, ya 864 00:40:43,099 --> 00:40:44,300 Ya, ya, ya, ya, ya 865 00:40:44,300 --> 00:40:45,380 Bueno, sí, pero 866 00:40:45,380 --> 00:40:48,599 Sí, pero bueno, que metes una variable adicional 867 00:40:48,599 --> 00:40:50,679 Vale, sí, sí, el objetivo no es 868 00:40:50,679 --> 00:40:51,159 Tanto 869 00:40:51,159 --> 00:40:54,219 Que solo me aparezca una vez, sino que además 870 00:40:54,219 --> 00:40:55,599 simplificando el programa 871 00:40:55,599 --> 00:40:58,199 vale, a ver, por ejemplo, con lo que hemos 872 00:40:58,199 --> 00:41:00,000 dicho, a lo que yo me refiero es 873 00:41:00,000 --> 00:41:01,800 lo que podemos es, por ejemplo 874 00:41:01,800 --> 00:41:04,280 quitar todo esto 875 00:41:04,280 --> 00:41:04,719 ¿verdad? 876 00:41:11,369 --> 00:41:13,250 ¿este programa no haría lo mismo que el anterior? 877 00:41:13,969 --> 00:41:15,750 con lo que hemos explicado el switch case 878 00:41:15,750 --> 00:41:16,909 con lo que hemos explicado hasta ahora 879 00:41:16,909 --> 00:41:18,670 este programa haría lo mismo 880 00:41:18,670 --> 00:41:21,449 ¿qué es cero? 881 00:41:22,329 --> 00:41:23,130 entra en cero 882 00:41:23,130 --> 00:41:24,989 pero como no hay un break 883 00:41:24,989 --> 00:41:27,670 ya hace de corrido todo lo que 884 00:41:27,670 --> 00:41:29,409 viene a continuación, todo, todo, todo 885 00:41:29,409 --> 00:41:31,070 Y lo que viene a continuación es esto 886 00:41:31,070 --> 00:41:31,769 Que es lo que queremos 887 00:41:31,769 --> 00:41:33,909 Entonces si hay un 0 imprime esto 888 00:41:33,909 --> 00:41:35,630 Y aquí ya sí que break se va afuera 889 00:41:35,630 --> 00:41:37,769 Con lo cual si la nota es 0 funciona 890 00:41:37,769 --> 00:41:39,650 Si la nota es 1 891 00:41:39,650 --> 00:41:42,110 En 0 no entra y en 1 también 892 00:41:42,110 --> 00:41:43,349 En 1 también entra 893 00:41:43,349 --> 00:41:45,929 No hace nada pero como no hay un break 894 00:41:45,929 --> 00:41:48,090 Hace de corrido todo lo que hay a continuación 895 00:41:48,090 --> 00:41:49,550 Hasta que llega hasta aquí 896 00:41:49,550 --> 00:41:50,750 Lo muestra 897 00:41:50,750 --> 00:41:54,269 Y como aquí ya sí que hay un break sale 898 00:41:54,269 --> 00:41:55,590 Si la nota es 2 899 00:41:55,590 --> 00:41:57,550 Entra aquí, no hace nada 900 00:41:57,550 --> 00:41:59,489 Pero como no hay un break, hace de corrido 901 00:41:59,489 --> 00:42:00,869 Todo lo que hay a continuación 902 00:42:00,869 --> 00:42:01,969 Luego muestra esto 903 00:42:01,969 --> 00:42:05,730 Con el 4 igual, con el 3 igual y con el 4 igual 904 00:42:05,730 --> 00:42:07,389 Entonces, este código 905 00:42:07,389 --> 00:42:08,789 Quitando todas las líneas de arriba 906 00:42:08,789 --> 00:42:09,949 Es idéntico 907 00:42:09,949 --> 00:42:12,550 Este código y el anterior son idénticos 908 00:42:12,550 --> 00:42:14,829 Sin más que pulírselo de arriba 909 00:42:14,829 --> 00:42:16,570 ¿Vale? Son idénticos 910 00:42:16,570 --> 00:42:17,630 ¿Entendéis? 911 00:42:19,829 --> 00:42:21,809 Bueno, pues así se hacían las cosas 912 00:42:21,809 --> 00:42:23,190 Cuando yo quería agrupar 913 00:42:23,190 --> 00:42:25,210 Varios valores en uno 914 00:42:25,210 --> 00:42:27,769 Quería agrupar varios valores en uno 915 00:42:27,769 --> 00:42:29,269 Así se hacían las cosas 916 00:42:29,269 --> 00:42:31,050 Hasta cierta versión de Java 917 00:42:31,050 --> 00:42:33,730 Y así lo podéis encontrar de hecho en muchos códigos 918 00:42:33,730 --> 00:42:35,190 Si miráis por ahí 919 00:42:35,190 --> 00:42:36,670 Programas o 920 00:42:36,670 --> 00:42:39,389 Así se hacían cuando yo quería agrupar varios en uno 921 00:42:39,389 --> 00:42:41,630 Pues ponía lo que quería hacer 922 00:42:41,630 --> 00:42:42,969 Para todos ellos 923 00:42:42,969 --> 00:42:44,710 En el último de los que hay 924 00:42:44,710 --> 00:42:46,789 Y los demás en blanco 925 00:42:46,789 --> 00:42:48,869 Entonces desde el momento en que entraban cualquiera de ellos 926 00:42:48,869 --> 00:42:50,969 Bajaba, lo hacía ya todo 927 00:42:50,969 --> 00:42:52,409 Hasta el último 928 00:42:52,409 --> 00:42:55,590 ¿Vale? Entonces esto y el código anterior 929 00:42:55,590 --> 00:42:56,730 Es idéntico 930 00:42:56,730 --> 00:42:59,570 Bueno, pues así lo vais a encontrar muchas veces 931 00:42:59,570 --> 00:43:01,449 ¿Qué pasa? Hombre, que esto es feo 932 00:43:01,449 --> 00:43:03,110 De nuevo, esto es un poco feo a la vista 933 00:43:03,110 --> 00:43:04,309 Esto es un poco feo 934 00:43:04,309 --> 00:43:06,869 Entonces, a partir de cierta versión de Java 935 00:43:06,869 --> 00:43:09,130 Se dijo, vale 936 00:43:09,130 --> 00:43:10,570 Pues cuando yo quiero agrupar 937 00:43:10,570 --> 00:43:13,730 Varios valores con un único código 938 00:43:13,730 --> 00:43:14,690 Con un único código 939 00:43:14,690 --> 00:43:17,269 Venga, vamos a permitir ponerlos uno tras otro 940 00:43:17,269 --> 00:43:19,429 Con un ACOF, vamos a permitirlo 941 00:43:19,429 --> 00:43:21,030 ¿Vale? 942 00:43:21,030 --> 00:43:25,210 Entonces, esto lo podríamos entonces simplificar así 943 00:43:25,210 --> 00:43:35,610 Si es 0, o si es 1, o si es 2, o si es 3, o si es 4 944 00:43:35,610 --> 00:43:37,489 ¿Vale? 945 00:43:37,710 --> 00:43:39,469 Es decir, después del case 946 00:43:39,469 --> 00:43:43,969 Yo puedo poner varios valores separados por comas 947 00:43:43,969 --> 00:43:47,469 Y eso es como tener varios case vacíos 948 00:43:47,469 --> 00:43:49,909 Y solo el último, el del 4, tiene la condición 949 00:43:49,909 --> 00:43:54,079 ¿Vale? 950 00:43:54,079 --> 00:43:55,699 entonces esa opción siempre la tenemos 951 00:43:55,699 --> 00:43:58,519 pero esta opción no es válida 952 00:43:58,519 --> 00:44:00,579 para cualquier versión 953 00:44:00,579 --> 00:44:03,099 del nivel de compilación 954 00:44:03,099 --> 00:44:04,579 no es válida 955 00:44:04,579 --> 00:44:11,730 en el switch case no 956 00:44:11,730 --> 00:44:13,210 tú distinguías por casos 957 00:44:13,210 --> 00:44:15,849 de hecho vamos a ver exactamente con qué nivel de compilación 958 00:44:15,849 --> 00:44:17,369 me lo cambia 959 00:44:17,369 --> 00:44:19,530 un momentito 960 00:44:19,530 --> 00:44:28,239 java compiler 961 00:44:28,239 --> 00:44:29,380 por ejemplo 962 00:44:29,380 --> 00:44:32,460 si yo al Java Compiler 963 00:44:32,460 --> 00:44:34,539 como el 964 00:44:34,539 --> 00:44:44,400 ¿veis? por ejemplo 965 00:44:44,400 --> 00:44:46,159 he bajado al nivel 7 966 00:44:46,159 --> 00:44:47,659 que es un nivel de Java 967 00:44:47,659 --> 00:44:49,119 al nivel de compilación 7 968 00:44:49,119 --> 00:44:52,440 que es un nivel de Java que todavía se usa 969 00:44:52,440 --> 00:44:53,760 en muchas empresas, en muchos sitios 970 00:44:53,760 --> 00:44:54,960 porque pueden mirar los servidores 971 00:44:54,960 --> 00:44:57,380 y bajando a ese nivel 7 de Java 972 00:44:57,380 --> 00:45:00,179 eso me dice de que me está afectando 973 00:45:00,179 --> 00:45:00,920 ¿vale? 974 00:45:01,280 --> 00:45:02,059 hasta luego 975 00:45:02,059 --> 00:45:09,679 y a ver en el 8 976 00:45:09,679 --> 00:45:13,840 hay una cosa que también se utiliza 977 00:45:13,840 --> 00:45:15,579 en el 8 sigue siendo ahí 978 00:45:15,579 --> 00:45:16,500 si pones entre 979 00:45:16,500 --> 00:45:19,619 quites la coma que hay desde 0 a 4 y pones los puntos 980 00:45:19,619 --> 00:45:21,420 si, si, si, ya, ya, ya 981 00:45:21,420 --> 00:45:22,679 si, si, si 982 00:45:22,679 --> 00:45:24,519 es el rango de valores 983 00:45:24,519 --> 00:45:25,800 si, si 984 00:45:25,800 --> 00:45:28,880 pero esas cosas se han incorporado posteriormente 985 00:45:28,880 --> 00:45:30,599 la versión 8, que es la versión que se usa 986 00:45:30,599 --> 00:45:32,400 casi todas las empresas no es válida 987 00:45:32,400 --> 00:45:36,000 tenéis que ser conscientes de que es una 988 00:45:36,000 --> 00:45:38,019 posibilidad que se ha hecho 989 00:45:38,019 --> 00:45:39,679 después para simplificar el código 990 00:45:39,679 --> 00:45:41,940 pero que en muchos casos, ahora estoy en la versión 8 991 00:45:41,940 --> 00:45:43,880 que es la que se usa en todas las empresas 992 00:45:43,880 --> 00:45:45,119 y no podría usarla 993 00:45:45,119 --> 00:45:49,880 venga, pues nada 994 00:45:49,880 --> 00:45:51,460 uuuh, yo no he parado esto