1 00:00:00,180 --> 00:00:07,839 Vale, estoy registrando, por lo tanto, todo lo que digáis implica que autorizáis que vuestra voz sea grabada 2 00:00:07,839 --> 00:00:13,839 Y vamos a empezar hoy con estructuras de control, ¿vale? 3 00:00:13,880 --> 00:00:15,339 Que son las estructuras de control 4 00:00:15,339 --> 00:00:22,600 Sustancialmente, las estructuras de control son el nuevo paso, el nuevo avance 5 00:00:22,600 --> 00:00:26,500 Que vamos a introducir al mundo de Java, al mundo de la programación 6 00:00:26,500 --> 00:00:34,140 para por un lado complicarlo y por otro lado permitir hacer cosas mucho más avanzadas. 7 00:00:34,399 --> 00:00:39,799 El primer elemento, la primera estructura que vamos a ver que será el IF 8 00:00:39,799 --> 00:00:46,399 es muy parecido a lo que hemos hecho con el operador ternario, ¿vale? 9 00:00:47,240 --> 00:00:51,000 Por favor, con el operador ternario, ¿vale? 10 00:00:51,100 --> 00:00:54,060 Por lo tanto, algunas cosas os sonarán. 11 00:00:54,060 --> 00:00:59,960 Solo que el IF es un poquito más potente con respecto al operador ternario básico, ¿vale? 12 00:01:00,439 --> 00:01:09,280 Operador ternario básico, os recuerdo que al fin y al cabo es un operador, o sea que al final devuelve un resultado, una expresión, ¿vale? 13 00:01:09,659 --> 00:01:18,719 Y además teníais dos opciones, o devuelves esto o devuelves esto de aquí, en base a una condición, pero las dos ramas tenían que tener el mismo tipo, ¿vale? 14 00:01:18,739 --> 00:01:22,680 Si no tenía algún tipo de problemas, el IF veremos que es un poquito más potente, ¿vale? 15 00:01:22,680 --> 00:01:25,319 ¿Qué son las estructuras de controlo? 16 00:01:25,459 --> 00:01:30,180 Son elementos del lenguaje que nos permiten romper el flujo lógico de ejecución de instrucciones 17 00:01:30,180 --> 00:01:30,799 ¿Vale? 18 00:01:31,219 --> 00:01:37,579 Hasta ahora, nosotros estamos acostumbrados a que empiezo desde la primera sentencia 19 00:01:37,579 --> 00:01:42,200 El primer comando de mi programa Java 20 00:01:42,200 --> 00:01:47,700 Y voy ejecutando una línea, otra línea, otra línea, otra instrucción, otra instrucción, otra instrucción 21 00:01:47,700 --> 00:01:49,159 De forma secuencial 22 00:01:49,159 --> 00:01:55,620 Nosotros lo que hemos visto hasta ahora son bloques secuenciales de código 23 00:01:55,620 --> 00:02:04,760 Ahora la idea es que introduzcamos algunas estructuras, algunos comandos, algunas palabras mágicas 24 00:02:04,760 --> 00:02:12,360 Que lo que nos hacen es decir, vale, no sigas la secuencia desde arriba abajo siempre 25 00:02:12,360 --> 00:02:17,159 En determinadas circunstancias te puedes saltar un trozo de código 26 00:02:17,159 --> 00:02:20,360 Puedes hacer una parte pero no otra 27 00:02:20,360 --> 00:02:24,219 O puedes volver a rehacer el mismo trozo de código 28 00:02:24,219 --> 00:02:26,520 Una y otra vez y otra vez y otra vez 29 00:02:26,520 --> 00:02:27,159 ¿Vale? 30 00:02:27,479 --> 00:02:30,080 Entonces también hay la posibilidad de 31 00:02:30,080 --> 00:02:35,159 Desde aquí salta a otro trozo de código que está escrito en otro lado 32 00:02:35,159 --> 00:02:36,939 Ejecuta ese trozo de código 33 00:02:36,939 --> 00:02:39,900 Y luego vuelve desde donde había saltado 34 00:02:39,900 --> 00:02:40,379 ¿Vale? 35 00:02:40,379 --> 00:02:43,300 Hay varias opciones que me permiten 36 00:02:43,300 --> 00:02:47,419 En vez de ser lineal, de ser secuencial en mis programas 37 00:02:47,419 --> 00:02:51,280 Romper cuál es el flujo lógico de esto va detrás de eso 38 00:02:51,280 --> 00:02:55,620 Y hacer cosas distintas, ¿vale? 39 00:02:55,740 --> 00:02:58,520 Por ahora no sabemos cuáles son y por lo tanto lo vemos 40 00:02:58,520 --> 00:03:05,699 El flujo de ejecución sería el orden con el que se ejecutan los determinados conjuntos de instrucciones o sentencias 41 00:03:05,699 --> 00:03:10,180 Y la idea de romper ese flujo de información quiere decir que estoy rompiendo el orden, ¿vale? 42 00:03:10,180 --> 00:03:17,120 Ya lo que está escrito se ejecuta siempre en orden, pero cuando hay estas estructuras, pues ese orden se cambia, ¿vale? 43 00:03:17,120 --> 00:03:18,620 Hay un orden un poquito distinto. 44 00:03:21,240 --> 00:03:25,419 Vale, flujo normal es de arriba abajo y de izquierda a derecha, ¿vale? 45 00:03:25,599 --> 00:03:29,520 Entonces, existen tres tipos, existen más, ¿vale? 46 00:03:29,539 --> 00:03:33,520 Pero por ahora nosotros trabajamos con tres tipos de sentencias de control, ¿vale? 47 00:03:33,520 --> 00:03:42,340 Lo que son los condicionales, lo que son las sentencias de control iterativas y lo que son los llamados a métodos, vale 48 00:03:42,340 --> 00:03:54,159 Los condicionales son el if, vale, el if que nosotros ahora vamos a aprender es parecido a lo que hemos visto del operador ternario, vale 49 00:03:54,159 --> 00:04:02,360 Y es un condicional, en base a una condición ejecuto un código o no lo ejecuto, vale 50 00:04:02,360 --> 00:04:04,500 En su forma más básica 51 00:04:04,500 --> 00:04:07,060 Y luego está la forma un poquito más avanzada 52 00:04:07,060 --> 00:04:07,939 Que es el if-else 53 00:04:07,939 --> 00:04:10,840 Que es, si la condición es verdadera 54 00:04:10,840 --> 00:04:12,379 Ejecuto un determinado código 55 00:04:12,379 --> 00:04:15,560 Si es falsa, ejecuto un código distinto 56 00:04:15,560 --> 00:04:16,639 ¿Vale? 57 00:04:17,399 --> 00:04:19,560 También existe otro condicional 58 00:04:19,560 --> 00:04:20,519 Que es el switch 59 00:04:20,519 --> 00:04:21,579 Que lo veremos 60 00:04:21,579 --> 00:04:22,180 ¿Vale? 61 00:04:22,620 --> 00:04:25,560 Que es comparar un cierto valor 62 00:04:25,560 --> 00:04:27,300 O sea, una variable 63 00:04:27,300 --> 00:04:29,800 Con muchos valores posibles 64 00:04:29,800 --> 00:04:30,800 ¿Vale? 65 00:04:30,800 --> 00:04:32,740 Imaginaos que yo tenga un int 66 00:04:32,740 --> 00:04:35,019 Y diga, si este x es 1 67 00:04:35,019 --> 00:04:36,920 Hace esta cosa, si x es 2 68 00:04:36,920 --> 00:04:38,680 Hace esta otra cosa, si x es 3 69 00:04:38,680 --> 00:04:40,939 Hace esta otra cosa, como si se fuera un if 70 00:04:40,939 --> 00:04:43,279 Pero multivalor 71 00:04:43,279 --> 00:04:44,600 Multiopción 72 00:04:44,600 --> 00:04:45,540 ¿Sí? 73 00:04:45,959 --> 00:04:49,139 La verdad es que if switch 74 00:04:49,139 --> 00:04:50,300 Y if else 75 00:04:50,300 --> 00:04:53,139 Son exactamente iguales 76 00:04:53,139 --> 00:04:54,819 Son estructuras 77 00:04:54,819 --> 00:04:55,899 Condicionales 78 00:04:55,899 --> 00:04:58,199 Todo lo que se hace con un switch 79 00:04:58,199 --> 00:05:00,699 Se puede hacer con un if, todo lo que se hace con un if 80 00:05:00,699 --> 00:05:02,000 Se puede hacer con un switch 81 00:05:02,000 --> 00:05:04,300 La idea es que 82 00:05:04,300 --> 00:05:06,699 En determinados casos 83 00:05:06,699 --> 00:05:08,579 Uno de estos es 84 00:05:08,579 --> 00:05:10,759 Más cómodo que el otro 85 00:05:10,759 --> 00:05:12,660 Y por lo tanto nosotros aprenderemos 86 00:05:12,660 --> 00:05:14,360 Cuando usamos uno y cuando usamos el otro 87 00:05:14,360 --> 00:05:16,220 Pero eso no quita que 88 00:05:16,220 --> 00:05:19,220 Lo que en realidad necesitamos 89 00:05:19,220 --> 00:05:21,259 Es lo que se llama un condicional 90 00:05:21,259 --> 00:05:24,180 Un método 91 00:05:24,180 --> 00:05:27,180 Un mecanismo 92 00:05:27,180 --> 00:05:28,300 Una herramienta 93 00:05:28,300 --> 00:05:30,000 Que lo que me permite hacer es 94 00:05:30,000 --> 00:05:32,579 Decidir si un trozo de código se puede ejecutar 95 00:05:32,579 --> 00:05:33,120 O no 96 00:05:33,120 --> 00:05:34,779 Con eso es suficiente 97 00:05:34,779 --> 00:05:38,019 Hay lenguajes que me proporcionan 98 00:05:38,019 --> 00:05:39,540 Varios tipos de condicionales 99 00:05:39,540 --> 00:05:42,259 Hay lenguajes que me proporcionan menos tipos de condicionales 100 00:05:42,259 --> 00:05:44,480 Pero me da igual con que se pueda ejecutar 101 00:05:44,480 --> 00:05:45,519 Un condicional 102 00:05:45,519 --> 00:05:48,480 Pues ya puedo hacer todos los programas 103 00:05:48,480 --> 00:05:50,399 Que podría hacer con otros programas 104 00:05:50,399 --> 00:05:52,480 Con otros lenguajes que a lo mejor me dan más condicionales 105 00:05:53,060 --> 00:05:54,959 Pero lo que nos interesa 106 00:05:54,959 --> 00:05:56,000 Es la estructura de control 107 00:05:56,000 --> 00:05:57,420 Esta que me permite decir 108 00:05:57,420 --> 00:05:59,740 Si una condición es válida ejecuta ese trozo 109 00:05:59,740 --> 00:06:00,939 Si no, no 110 00:06:00,939 --> 00:06:03,759 Los iterativos 111 00:06:03,759 --> 00:06:06,259 Que son el while, el do while, el for 112 00:06:06,259 --> 00:06:06,680 ¿Vale? 113 00:06:06,800 --> 00:06:09,279 Que son varias estructuras distintas 114 00:06:09,279 --> 00:06:11,240 Y misma cosa 115 00:06:11,240 --> 00:06:11,459 ¿Vale? 116 00:06:12,079 --> 00:06:14,259 Lo que permiten hacer los iterativos es 117 00:06:14,259 --> 00:06:16,899 Repetir un trozo de código 118 00:06:16,899 --> 00:06:18,360 Un bloque de código 119 00:06:18,360 --> 00:06:20,600 Una y otra vez, y otra vez, y otra vez 120 00:06:20,600 --> 00:06:21,699 Mientras 121 00:06:21,699 --> 00:06:22,759 While 122 00:06:22,759 --> 00:06:24,740 Una condición es verdadera 123 00:06:24,740 --> 00:06:28,519 Yo tendré while y una condición 124 00:06:28,519 --> 00:06:32,540 Y mientras esta condición se permanezca como verdadera 125 00:06:32,540 --> 00:06:35,740 Yo seguiré ejecutando el bloque que viene a continuación 126 00:06:35,740 --> 00:06:37,540 Una y otra vez y otra vez 127 00:06:37,540 --> 00:06:39,420 Cuando lo acabo, empiezo desde el principio 128 00:06:39,420 --> 00:06:41,399 Cuando lo acabo, empiezo desde el principio 129 00:06:41,399 --> 00:06:43,680 Cada vez que empiezo otra vez 130 00:06:43,680 --> 00:06:47,379 Vuelvo a comprobar que la condición que he puesto sea verdadera 131 00:06:47,379 --> 00:06:49,980 Si sigue verdadera, lo ejecuto otra vez 132 00:06:49,980 --> 00:06:50,920 Si no, no 133 00:06:50,920 --> 00:06:51,860 ¿Vale? 134 00:06:52,259 --> 00:06:53,600 El do while, lo mismo 135 00:06:53,600 --> 00:06:54,680 ¿Sí? 136 00:06:54,899 --> 00:06:57,939 Con un matiz que una vez siempre lo ejecuto 137 00:06:57,939 --> 00:06:59,839 Y luego chequeo si es verdadero o falso 138 00:06:59,839 --> 00:07:02,800 Mientras aquí, si fuera falsa la condición 139 00:07:02,800 --> 00:07:03,980 No lo ejecutaría nunca 140 00:07:03,980 --> 00:07:07,399 Y el for es más de lo mismo 141 00:07:07,399 --> 00:07:10,100 Pero normalmente se suele utilizar cuando 142 00:07:10,100 --> 00:07:13,800 Sabemos cuantos ciclos quiero hacer 143 00:07:13,800 --> 00:07:15,939 En plan, quiero hacer 10 veces este ciclo 144 00:07:15,939 --> 00:07:17,699 Pues uso más un for que un while 145 00:07:17,699 --> 00:07:21,519 Aún así, lo veremos con detalle más adelante 146 00:07:21,519 --> 00:07:24,579 Aún así, si yo tuviera solo el while 147 00:07:24,579 --> 00:07:25,860 Puedo hacer todo 148 00:07:25,860 --> 00:07:27,939 Me interesa 149 00:07:27,939 --> 00:07:32,459 Una sentencia de control iterativa 150 00:07:32,459 --> 00:07:34,660 Con el for se puede hacer 151 00:07:34,660 --> 00:07:35,759 Todo lo que hace el while 152 00:07:35,759 --> 00:07:37,800 Y con el while se puede hacer todo lo que hace el for 153 00:07:37,800 --> 00:07:39,399 Eso es indiferente 154 00:07:39,399 --> 00:07:41,240 Simplemente que en determinados casos 155 00:07:41,240 --> 00:07:43,120 El for es mucho más cómodo 156 00:07:43,120 --> 00:07:46,079 Y en determinados otros casos el while es mucho más cómodo 157 00:07:46,079 --> 00:07:47,459 Entonces tengo las dos opciones 158 00:07:47,459 --> 00:07:49,759 Y la llamada 159 00:07:49,759 --> 00:07:51,920 SamMethods es lo que me permite 160 00:07:51,920 --> 00:07:53,740 Saltar desde 161 00:07:53,740 --> 00:07:55,279 El punto donde estoy 162 00:07:55,279 --> 00:07:57,360 a otro trozo de código marcado 163 00:07:57,360 --> 00:07:59,259 con un nombre, lo que será un método 164 00:07:59,259 --> 00:08:01,220 ¿vale? ejecutar ese 165 00:08:01,220 --> 00:08:03,379 trozo de código y volver a donde 166 00:08:03,379 --> 00:08:05,199 estaba antes de llamar este 167 00:08:05,199 --> 00:08:07,199 método, vosotros habéis visto un ejemplo 168 00:08:07,199 --> 00:08:08,779 con por ejemplo el println 169 00:08:08,779 --> 00:08:11,500 cuando vosotros hacéis system.auto.println 170 00:08:11,500 --> 00:08:13,259 lo que hace vuestro código 171 00:08:13,259 --> 00:08:14,600 es pararse allí 172 00:08:14,600 --> 00:08:17,220 ejecutar un código que está escrito 173 00:08:17,220 --> 00:08:18,899 en otro lado, que es el método 174 00:08:18,899 --> 00:08:21,259 println que no habéis escrito vosotros, que nos han 175 00:08:21,259 --> 00:08:22,720 dado, ya ha hecho 176 00:08:22,720 --> 00:08:24,480 quien sabe quien, ¿vale? 177 00:08:24,480 --> 00:08:26,720 Una vez ejecutado ese código allí 178 00:08:26,720 --> 00:08:29,040 Que imprime algo en pantalla 179 00:08:29,040 --> 00:08:31,480 Vuelve el control 180 00:08:31,480 --> 00:08:33,379 A mi secuencia 181 00:08:33,379 --> 00:08:35,480 De instrucciones y se ejecuta 182 00:08:35,480 --> 00:08:36,320 Justo la 183 00:08:36,320 --> 00:08:39,080 La sentencia después 184 00:08:39,080 --> 00:08:40,320 ¿Vale? Cuando nosotros hacemos 185 00:08:40,320 --> 00:08:41,799 System.println 186 00:08:41,799 --> 00:08:45,360 Dame un número y luego leemos un número 187 00:08:45,360 --> 00:08:47,460 Ese println es un método 188 00:08:47,460 --> 00:08:49,059 Que está escrito en otro lado que se ejecutará 189 00:08:49,059 --> 00:08:50,500 Por otro lado y luego 190 00:08:50,500 --> 00:08:52,700 El control vuelve a mi programa 191 00:08:52,700 --> 00:08:55,259 Y pasa al scan que ejecuta otro método 192 00:08:55,259 --> 00:08:57,200 También el scan.nexint 193 00:08:57,200 --> 00:08:58,840 Es otra cosa más 194 00:08:58,840 --> 00:08:59,720 Igual, ¿vale? 195 00:08:59,919 --> 00:09:02,240 Yo no lo he escrito, ¿qué hace el nexint? 196 00:09:02,620 --> 00:09:04,059 El nexint es una llamada 197 00:09:04,059 --> 00:09:05,320 A un método 198 00:09:05,320 --> 00:09:08,000 Scan.nexint 199 00:09:08,000 --> 00:09:10,639 Como aquí, objeto.metodo 200 00:09:10,639 --> 00:09:12,659 Y esto me permite ejecutar 201 00:09:12,659 --> 00:09:14,720 Código de otro lado y lo vuelve 202 00:09:14,720 --> 00:09:15,759 ¿Sí? 203 00:09:16,659 --> 00:09:18,639 Entonces, estas tres cosas 204 00:09:18,639 --> 00:09:19,980 Lo que tienen en común 205 00:09:19,980 --> 00:09:22,639 Es que ahora, en vez de ejecutar 206 00:09:22,639 --> 00:09:24,259 Uno tras otro 207 00:09:24,259 --> 00:09:26,019 Todos los comandos que yo tengo 208 00:09:26,019 --> 00:09:28,519 Puedo cambiar el orden 209 00:09:28,519 --> 00:09:30,860 Con que se ejecutan 210 00:09:30,860 --> 00:09:32,279 ¿Vale? En el caso del if 211 00:09:32,279 --> 00:09:34,299 Puedo decidir si un trozo, si un bloque 212 00:09:34,299 --> 00:09:35,460 Se ejecuta o no 213 00:09:35,460 --> 00:09:38,539 En el caso de las iterativas, puedo decir que un bloque 214 00:09:38,539 --> 00:09:40,179 Se ejecute varias veces 215 00:09:40,179 --> 00:09:42,360 Y en el caso de las llamadas métodos, puedo decir 216 00:09:42,360 --> 00:09:44,240 Cuando llegas a este punto, ejecuta 217 00:09:44,240 --> 00:09:46,379 Un trozo de código que está en otro lado 218 00:09:46,379 --> 00:09:47,220 Y luego vuelve 219 00:09:47,220 --> 00:09:49,240 ¿Dudas? 220 00:09:54,039 --> 00:09:54,519 Entonces 221 00:09:54,519 --> 00:09:56,980 esta es el if 222 00:09:56,980 --> 00:09:59,120 ¿vale? el if existe 223 00:09:59,120 --> 00:10:00,500 en dos formados 224 00:10:00,500 --> 00:10:03,019 el if a secas y el if else 225 00:10:03,019 --> 00:10:05,320 ¿vale? en algunos programas 226 00:10:05,320 --> 00:10:06,500 en algún lenguaje de programación 227 00:10:06,500 --> 00:10:07,879 es conocido también como 228 00:10:07,879 --> 00:10:10,399 if then else 229 00:10:10,399 --> 00:10:12,419 si, entonces 230 00:10:12,419 --> 00:10:13,480 y si no 231 00:10:13,480 --> 00:10:16,379 ¿vale? pero por ejemplo en java 232 00:10:16,379 --> 00:10:17,539 el then no se usa 233 00:10:17,539 --> 00:10:20,340 en lenguajes viejos si que había que escribir 234 00:10:20,340 --> 00:10:20,860 también then 235 00:10:20,860 --> 00:10:28,399 Entonces, miramos antes el IFASECAS 236 00:10:28,399 --> 00:10:34,379 Aquí viene mi flujo de información normal de ejecución 237 00:10:34,379 --> 00:10:36,360 Y llega una condición 238 00:10:36,360 --> 00:10:39,799 Si esta condición es verdadera 239 00:10:39,799 --> 00:10:42,980 Entonces se ejecuta lo que está en este bloque de aquí 240 00:10:42,980 --> 00:10:46,120 Todas las instrucciones que están aquí se van a ejecutar 241 00:10:46,120 --> 00:10:50,480 Si es falsa, me salto este bloque y sigo adelante 242 00:10:50,480 --> 00:11:01,159 En los dos casos seguiré adelante haciendo las cosas que vienen después, pero sostancialmente me está diciendo que si esta condición es verdadera, entonces se ejecutará también este bloque y si no, no. 243 00:11:03,440 --> 00:11:05,259 ¿Sí? ¿Dudas? 244 00:11:07,740 --> 00:11:19,360 En el caso del if-else, en vez tengo dos bloques separados y ejecutaré o uno o el otro en base a si la condición es verdadera o falsa. 245 00:11:19,360 --> 00:11:24,899 Y esto nos suena muchísimo a lo que ya hemos hecho, al operador ternario, ¿vale? 246 00:11:25,220 --> 00:11:30,159 Si la operación, si la condición es verdadera, entonces ejecuta el bloque a la izquierda, 247 00:11:30,580 --> 00:11:37,940 si el rango sigue hacia adelante, si la condición es falsa, ejecutarás el bloque a la derecha y sigue hacia adelante. 248 00:11:38,460 --> 00:11:44,299 ¿Qué diferencia fundamental hay entre el IF y el operador ternario? 249 00:11:44,299 --> 00:11:57,399 No tiene que mostrar un tipo de datos 250 00:11:57,399 --> 00:11:57,820 Sí 251 00:11:57,820 --> 00:12:00,220 ¿Qué más? 252 00:12:00,879 --> 00:12:01,340 ¿Qué? 253 00:12:07,830 --> 00:12:09,669 Estos son bloques de instrucciones 254 00:12:09,669 --> 00:12:11,870 Aquí no va una instrucción 255 00:12:11,870 --> 00:12:13,730 O una expresión 256 00:12:13,730 --> 00:12:14,370 ¿Vale? 257 00:12:14,769 --> 00:12:18,330 En el ternario estaba la condición 258 00:12:18,330 --> 00:12:20,669 Y luego la rama verdadera 259 00:12:20,669 --> 00:12:22,330 Y la rama falsa eran expresiones 260 00:12:22,850 --> 00:12:24,649 Podía poner expresiones booleanas 261 00:12:24,649 --> 00:12:26,350 Podría poner expresiones numéricas 262 00:12:26,350 --> 00:12:28,570 Pero eran expresiones, era un cálculo 263 00:12:28,570 --> 00:12:29,750 Y de allí sacaba un valor 264 00:12:29,750 --> 00:12:31,830 Y ese es el valor que devolvía el operador 265 00:12:31,830 --> 00:12:33,309 Es una operación al fin y al cabo 266 00:12:33,309 --> 00:12:35,990 Como la suma, 5 más 3 te devuelve 8 267 00:12:35,990 --> 00:12:36,710 Y ya está 268 00:12:36,710 --> 00:12:39,470 Pues el operador ternario es una cosa compleja 269 00:12:39,470 --> 00:12:42,429 Pero te devuelve 5 o te devuelve 7 270 00:12:42,429 --> 00:12:44,250 O te devuelve válido 271 00:12:44,250 --> 00:12:46,629 O te devuelve no válido 272 00:12:46,629 --> 00:12:46,809 ¿Sí? 273 00:12:47,190 --> 00:12:48,990 Sin embargo, el IF 274 00:12:48,990 --> 00:12:52,049 Es una versión más potente 275 00:12:52,049 --> 00:12:52,730 De esa idea 276 00:12:52,730 --> 00:12:58,809 ¿Vale? Yo no es que tengo que aquí en estos bloques hacer solo una sentencia, hacer solo una operación 277 00:12:58,809 --> 00:13:03,730 ¿Vale? Yo aquí en estos bloques puedo hacer un programa entero si quiero 278 00:13:03,730 --> 00:13:09,509 Yo puedo hacer que aquí al principio esta condición sea un menú donde pida al usuario 279 00:13:09,509 --> 00:13:13,309 ¿Qué quieres hacer? ¿Quieres jugar a este juego o jugar a este otro juego? 280 00:13:13,309 --> 00:13:18,549 Y si tú eliges uno, pues ejecutará el juego a la izquierda 281 00:13:18,549 --> 00:13:21,350 Y si tú eliges dos, ejecutará el juego a la derecha 282 00:13:21,350 --> 00:13:23,269 Y es un programa entero el bloque del I 283 00:13:23,269 --> 00:13:25,149 ¿Sí? 284 00:13:25,730 --> 00:13:27,250 O no lo sé 285 00:13:27,250 --> 00:13:29,289 Lo que nos ocurre, ¿vale? 286 00:13:30,990 --> 00:13:33,269 Tened en cuenta que hay estas dos versiones 287 00:13:33,269 --> 00:13:34,730 Que son iguales 288 00:13:34,730 --> 00:13:36,710 Porque si yo pillo el else 289 00:13:36,710 --> 00:13:38,210 En el bloque de la derecha 290 00:13:38,210 --> 00:13:39,009 Pongo nada 291 00:13:39,009 --> 00:13:40,809 Pues estoy haciendo esto 292 00:13:40,809 --> 00:13:43,610 Estoy haciendo lo que viene a la izquierda 293 00:13:43,610 --> 00:13:43,850 ¿Sí? 294 00:13:44,149 --> 00:13:47,149 Me acuerdo que si este bloque es paréntesis 295 00:13:47,149 --> 00:13:49,110 Llave abierta, llave cerrada 296 00:13:49,110 --> 00:13:51,210 Pues este se está portando 297 00:13:51,210 --> 00:13:52,370 Exactamente como este de aquí 298 00:13:52,370 --> 00:13:54,990 Entonces, en el caso en que yo tenga que hacer 299 00:13:54,990 --> 00:13:57,289 Dos cosas distintas, si la condición es verdadera 300 00:13:57,289 --> 00:13:59,169 O falsa, pues tengo leafels 301 00:13:59,169 --> 00:14:01,289 Normalmente, si yo digo 302 00:14:01,289 --> 00:14:03,549 Simplemente que si la condición es verdadera 303 00:14:03,549 --> 00:14:05,649 Entonces se joda algo, y si no, no hagas nada 304 00:14:05,649 --> 00:14:06,629 Pues esto de aquí 305 00:14:06,629 --> 00:14:09,110 O uso este con un bloque vacío 306 00:14:09,110 --> 00:14:10,049 Pero es más feo 307 00:14:10,049 --> 00:14:11,649 Sí 308 00:14:11,649 --> 00:14:14,649 En el leafels solo puedes hacer dos cosas 309 00:14:14,649 --> 00:14:16,690 Por ejemplo, en las notas 310 00:14:16,690 --> 00:14:33,509 La condición es única 311 00:14:33,509 --> 00:14:36,129 Ahora, nadie te prohíbe 312 00:14:36,129 --> 00:14:37,649 Dentro de un bloque 313 00:14:37,649 --> 00:14:39,090 De poner otro if 314 00:14:39,090 --> 00:14:40,929 Entonces 315 00:14:40,929 --> 00:14:43,990 Empiezas a anidar if 316 00:14:43,990 --> 00:14:45,470 Hacer if en cascada 317 00:14:45,470 --> 00:14:47,309 Un if dentro de otro if dentro de otro if 318 00:14:47,309 --> 00:14:49,629 Que es parecida a la idea que hemos hecho nosotros 319 00:14:49,629 --> 00:14:51,629 Cuando metíamos en una de las ramas 320 00:14:51,629 --> 00:14:52,230 De los 321 00:14:52,230 --> 00:14:54,909 De los operadores ternarios 322 00:14:54,909 --> 00:14:56,450 Otro operador ternario 323 00:14:56,450 --> 00:14:57,570 ¿Sí? 324 00:15:00,330 --> 00:15:01,970 Hasta un cierto nivel 325 00:15:01,970 --> 00:15:02,629 ¿Vale? 326 00:15:02,710 --> 00:15:05,490 Se suele aconsejar que no haya 327 00:15:05,490 --> 00:15:07,710 Demasiado anidación de un if 328 00:15:07,710 --> 00:15:09,129 Dentro de un if, dentro de un if, dentro de un if 329 00:15:09,129 --> 00:15:11,970 También porque, y lo veréis con la experiencia 330 00:15:11,970 --> 00:15:13,649 Cuando llegáis a hacer 331 00:15:13,649 --> 00:15:15,649 demasiados if uno dentro de otro 332 00:15:15,649 --> 00:15:17,250 es que os estáis equivocando 333 00:15:17,250 --> 00:15:18,629 y la solución va por otro lado 334 00:15:18,629 --> 00:15:21,169 ¿vale? pero aún así 335 00:15:21,169 --> 00:15:23,149 que se pueda poner if dentro de if 336 00:15:23,149 --> 00:15:24,450 sí, se hace 337 00:15:24,450 --> 00:15:27,549 y que nosotros lo haremos sobre todo en los primeros ejercicios 338 00:15:27,549 --> 00:15:28,850 que serán ejercicios de if 339 00:15:28,850 --> 00:15:31,350 ¿vale? entonces sí que habrá 340 00:15:31,350 --> 00:15:33,169 como no podemos utilizar 341 00:15:33,169 --> 00:15:35,509 otros mecanismos 342 00:15:35,509 --> 00:15:37,649 y otras herramientas 343 00:15:37,649 --> 00:15:38,970 porque todavía no las hemos visto 344 00:15:38,970 --> 00:15:41,610 pues entonces nos saldrán monstruos 345 00:15:41,610 --> 00:15:43,429 que por ahora son aceptables 346 00:15:43,429 --> 00:15:45,309 Y dentro de un rato veremos que no 347 00:15:45,309 --> 00:15:46,450 Que hay soluciones más 348 00:15:46,450 --> 00:15:49,330 Más elegantes 349 00:15:49,330 --> 00:15:50,490 ¿Más dudas? 350 00:15:51,690 --> 00:15:51,909 Sí 351 00:15:51,909 --> 00:15:59,460 No, cuando es falso sigue adelante 352 00:15:59,460 --> 00:16:04,200 Aquí no estamos en la iterativa 353 00:16:04,200 --> 00:16:05,759 Aquí no repetimos código 354 00:16:05,759 --> 00:16:07,299 Aquí es una condicional 355 00:16:07,299 --> 00:16:09,799 En base a una condición 356 00:16:09,799 --> 00:16:11,220 O hago una cosa o hago otra 357 00:16:11,220 --> 00:16:13,899 Que podría ser no hago nada 358 00:16:13,899 --> 00:16:14,639 ¿Sí? 359 00:16:15,059 --> 00:16:19,639 Pero es condición y me permite elegir, ¿hace esto o hace esto? 360 00:16:23,879 --> 00:16:33,799 Con el if no, en la estructura que estamos viendo ahora, ¿cuál estructura me permitiría volver a hacer el mismo? 361 00:16:37,110 --> 00:16:39,250 La iterativa, que todavía no la he visto, ¿vale? 362 00:16:39,250 --> 00:16:45,250 Con un while, yo puedo decir que cuando llegue a este punto, pues vuelva arriba mientras una condición sea verdadera. 363 00:16:48,970 --> 00:16:50,110 Ejemplo de if. 364 00:16:50,629 --> 00:17:00,779 ¿Vale? Entonces, tengo una variable x que vale 5, if, ¿vale? 365 00:17:00,860 --> 00:17:06,940 Palabra reservada, que no está diciendo un sí, paréntesis, que dice que aquí va la condición, ¿vale? 366 00:17:06,980 --> 00:17:09,319 La condición va entre paréntesis después del if. 367 00:17:09,319 --> 00:17:15,000 Si x es menor que 5, pues entonces escribe esta cosa aquí, punto y coma. 368 00:17:16,279 --> 00:17:18,900 System.org.lf, ¿vale? 369 00:17:19,059 --> 00:17:21,079 ¿Qué escribe este código de aquí? 370 00:17:22,200 --> 00:17:37,829 fin. ¿Por qué? Porque el bloque del if es desde aquí hasta aquí. O sea, solo la primera 371 00:17:37,829 --> 00:17:45,569 línea. Entonces, si esta condición es verdadera, me escribe menor que fin. Y luego, en cualquier 372 00:17:45,569 --> 00:17:47,710 caso, me escribe fin 373 00:17:47,710 --> 00:17:49,630 esto 374 00:17:49,630 --> 00:17:52,950 es la izquierda o la derecha? 375 00:17:54,130 --> 00:17:55,369 azul, vale? 376 00:17:57,430 --> 00:17:58,089 es un if 377 00:17:58,089 --> 00:17:59,609 con solo 378 00:17:59,609 --> 00:18:00,930 si es verdadero o azal 379 00:18:00,930 --> 00:18:05,329 nosotros hemos dicho 380 00:18:05,329 --> 00:18:07,930 que aquí en el if 381 00:18:07,930 --> 00:18:09,670 lo que puede ir es un bloque 382 00:18:09,670 --> 00:18:10,950 de instrucciones 383 00:18:10,950 --> 00:18:13,950 un bloque, lo vimos cuando vimos 384 00:18:13,950 --> 00:18:17,690 El ámbito de una variable 385 00:18:17,690 --> 00:18:18,410 ¿Os acordáis? 386 00:18:18,829 --> 00:18:20,990 Es un trozo de código 387 00:18:20,990 --> 00:18:22,710 Una serie de instrucciones 388 00:18:22,710 --> 00:18:24,890 Que están delineadas 389 00:18:24,890 --> 00:18:26,329 Que están enmarcadas 390 00:18:26,329 --> 00:18:27,869 Entre una llave y otra llave 391 00:18:27,869 --> 00:18:28,869 ¿Vale? 392 00:18:29,230 --> 00:18:30,710 Entonces en este caso de aquí 393 00:18:30,710 --> 00:18:31,849 Por ejemplo yo tengo 394 00:18:31,849 --> 00:18:34,009 Si esta condición es verdadera 395 00:18:34,009 --> 00:18:35,390 X es menor que 6 396 00:18:35,390 --> 00:18:39,690 Entonces ejecuta todas estas instrucciones de aquí 397 00:18:39,690 --> 00:18:41,089 Ejecuta este bloque 398 00:18:41,089 --> 00:18:43,509 ¿Si? 399 00:18:43,950 --> 00:18:55,170 Cuidado, esto es correcto, pero si no pongo las paréntesis, solo ejecuta, o sea, el bloque es una sola instrucción, ¿vale? 400 00:18:55,230 --> 00:19:08,109 Entonces esta, esta no está en el if, la que pone fin no está dentro del if, es después del if, la que pone fin está aquí, aquí donde la flecha, ¿vale? 401 00:19:08,109 --> 00:19:09,589 Ya hemos hecho el if 402 00:19:09,589 --> 00:19:10,730 Y hemos llegado aquí 403 00:19:10,730 --> 00:19:12,869 La única parte que está dentro 404 00:19:12,869 --> 00:19:14,529 Es esa de es menor que 5 405 00:19:14,529 --> 00:19:15,609 Y está aquí en el bloque 406 00:19:15,609 --> 00:19:16,829 ¿Vale? 407 00:19:17,089 --> 00:19:18,390 Entonces si esta es verdadero 408 00:19:18,390 --> 00:19:19,210 Ejecuto esa 409 00:19:19,210 --> 00:19:20,690 Y luego ejecuto aquí debajo 410 00:19:20,690 --> 00:19:21,890 La fin 411 00:19:21,890 --> 00:19:23,569 Si en vez de esta es falsa 412 00:19:23,569 --> 00:19:24,430 Me salto 413 00:19:24,430 --> 00:19:25,670 Ejecutar esta 414 00:19:25,670 --> 00:19:26,230 Y va a dar 415 00:19:26,230 --> 00:19:27,009 Esquivo fin 416 00:19:27,009 --> 00:19:27,750 O sea que 417 00:19:27,750 --> 00:19:29,049 En este caso de aquí 418 00:19:29,049 --> 00:19:30,490 Fin se ejecuta siempre 419 00:19:30,490 --> 00:19:31,349 De hecho lo pone 420 00:19:31,349 --> 00:19:33,210 ¿Sí? 421 00:19:33,829 --> 00:19:36,210 Si pero yo quiero ejecutar 422 00:19:36,210 --> 00:19:36,869 Si esta 423 00:19:36,869 --> 00:19:37,990 Si la condición es verdadera 424 00:19:37,990 --> 00:19:40,170 Más de una sentencia 425 00:19:40,170 --> 00:19:41,029 Más de una 426 00:19:41,029 --> 00:19:43,970 Instrucción, pues entonces 427 00:19:43,970 --> 00:19:45,990 Tengo que marcar que si esto 428 00:19:45,990 --> 00:19:48,049 Es verdadero, haz todo esto 429 00:19:48,049 --> 00:19:49,710 Entonces sí que pongo las llaves 430 00:19:49,710 --> 00:19:52,029 ¿Vale? Consejo mío 431 00:19:52,029 --> 00:19:54,049 Poned las llaves aquí 432 00:19:54,049 --> 00:19:55,769 También, siempre 433 00:19:55,769 --> 00:19:57,970 ¿Vale? Asumid 434 00:19:57,970 --> 00:19:59,890 Que la estructura 435 00:19:59,890 --> 00:20:01,750 De un if, paréntesis 436 00:20:01,750 --> 00:20:03,750 Condición, paréntesis, llave 437 00:20:03,750 --> 00:20:05,450 Bloque, llave 438 00:20:05,450 --> 00:20:07,789 Siempre, hasta si es solo una 439 00:20:07,789 --> 00:20:09,950 Solo una condición, hasta si no hay condición 440 00:20:09,950 --> 00:20:11,910 Ya, o sea, si no hay sentencias 441 00:20:11,910 --> 00:20:13,809 ¿Vale? Llave, cierre y llave 442 00:20:13,809 --> 00:20:17,839 ¿Está? Entonces, ¿qué pondría 443 00:20:17,839 --> 00:20:19,400 Este de aquí? Pues, como 444 00:20:19,400 --> 00:20:21,519 X es menor que 6, porque X es 445 00:20:21,519 --> 00:20:23,660 Igual a 5, escribiría resultado 446 00:20:23,660 --> 00:20:25,299 Que es esta aquí, escribiría 447 00:20:25,299 --> 00:20:27,720 Menor que 6, y escribiría 448 00:20:27,720 --> 00:20:30,759 Fin, ¿sí? 449 00:20:31,099 --> 00:20:33,000 Claro, o sea, y fin, este ya fuera del hit 450 00:20:33,000 --> 00:20:34,019 Porque se sale del corchete 451 00:20:34,019 --> 00:20:37,279 Este y, de hecho 452 00:20:37,279 --> 00:20:39,400 Si yo pusiera que X es 10 453 00:20:39,400 --> 00:20:40,640 ¿Qué escribiría? 454 00:20:41,119 --> 00:20:47,079 Solo fi, porque 10 no es menor que 6, me salto todo el bloque, escribo esto. 455 00:20:48,619 --> 00:20:49,039 ¿Dudas? 456 00:20:54,819 --> 00:20:56,420 No, porque está dentro del bloque. 457 00:20:58,099 --> 00:21:00,700 Entonces, yo esto lo ejecuto solo si x es menor que 6. 458 00:21:01,180 --> 00:21:03,839 Y en este caso x es menor que 6, por lo tanto ejecuto estos dos. 459 00:21:04,279 --> 00:21:10,799 Si yo tuviera x es igual a 10, como 10 no es menor que 6, saltaría todo el bloque, 460 00:21:10,799 --> 00:21:11,740 Escribiría solo fin 461 00:21:11,740 --> 00:21:14,220 O sea, no escribiría ni resultado ni menor que 6 462 00:21:14,220 --> 00:21:22,700 Es solo para que ponga 2 463 00:21:22,700 --> 00:21:24,680 Y aquí podéis hacer 464 00:21:24,680 --> 00:21:25,700 Todo lo que da la gana 465 00:21:25,700 --> 00:21:28,019 Aquí podéis leer una letra 466 00:21:28,019 --> 00:21:29,900 Podéis leer de teclado 467 00:21:29,900 --> 00:21:31,480 Podéis escribir en pantalla 468 00:21:31,480 --> 00:21:32,859 Podéis hacer sumas 469 00:21:32,859 --> 00:21:35,240 Podéis utilizar operador ternario 470 00:21:35,240 --> 00:21:37,160 Podéis hacer lo que os da la gana 471 00:21:37,160 --> 00:21:37,940 Dentro de un bloque 472 00:21:37,940 --> 00:21:38,980 Es un bloque 473 00:21:38,980 --> 00:21:44,180 Es la parte del programa 474 00:21:44,180 --> 00:21:45,319 Que tienes que ejecutar 475 00:21:45,319 --> 00:21:47,460 Cuando esta condición es verdadera 476 00:21:47,460 --> 00:21:58,539 Si yo creo una variable 477 00:21:58,539 --> 00:22:00,480 Dentro del bloque if 478 00:22:00,480 --> 00:22:02,579 Fuera del bloque if 479 00:22:02,579 --> 00:22:04,180 No se ve esa variable 480 00:22:04,180 --> 00:22:07,359 Porque es el ámbito de la variable 481 00:22:07,359 --> 00:22:09,480 Y si yo quiero verla fuera 482 00:22:09,480 --> 00:22:11,579 Pues la declaro antes del if 483 00:22:11,579 --> 00:22:14,519 La actualizo dentro del if 484 00:22:14,519 --> 00:22:16,279 Y fuera sigo viéndola 485 00:22:16,279 --> 00:22:17,640 Porque sigue existiendo 486 00:22:17,640 --> 00:22:19,299 Como está aquí 487 00:22:19,299 --> 00:22:22,099 Fijaos también que 488 00:22:22,099 --> 00:22:23,079 Bueno, aquí no la uso 489 00:22:23,079 --> 00:22:26,099 Si la variable la creo fuera 490 00:22:26,099 --> 00:22:26,759 Mucho del if 491 00:22:26,759 --> 00:22:29,640 Sí, porque si la creo 492 00:22:29,640 --> 00:22:32,220 O sea, el bloque este allí del if 493 00:22:32,220 --> 00:22:34,400 Está incluido en el bloque más grande 494 00:22:34,400 --> 00:22:35,519 Donde he declarado esta 495 00:22:35,519 --> 00:22:38,039 Sí, por lo tanto 496 00:22:38,039 --> 00:22:40,319 El ámbito de la variable incluye también el if 497 00:22:40,319 --> 00:22:41,779 Más preguntas 498 00:22:41,779 --> 00:22:51,460 ¿Qué pasaría 499 00:22:51,460 --> 00:22:53,220 Si no pusiera estas dos 500 00:22:53,220 --> 00:22:55,019 ya ves 501 00:22:55,019 --> 00:22:56,900 ¿qué escribe? 502 00:23:00,599 --> 00:23:02,400 no, escribiría 503 00:23:02,400 --> 00:23:04,299 resultado menor que 6 fin 504 00:23:04,299 --> 00:23:06,619 pero si pusiera 505 00:23:06,619 --> 00:23:08,259 x igual a 10, ¿qué escribiría? 506 00:23:09,559 --> 00:23:11,039 menor que 6 fin 507 00:23:11,039 --> 00:23:14,319 porque ahora if 508 00:23:14,319 --> 00:23:15,819 solo sería la primera 509 00:23:15,819 --> 00:23:18,839 sentencia, entonces esta se la salta 510 00:23:18,839 --> 00:23:20,680 pero esta aquí la escribiría 511 00:23:20,680 --> 00:23:23,980 ¿Sí? Entonces cuidado con 512 00:23:23,980 --> 00:23:25,180 Lo que hacéis con las 513 00:23:25,180 --> 00:23:28,460 Pero si os acostumbráis a 514 00:23:28,460 --> 00:23:30,500 Poner llaves y pensar 515 00:23:30,500 --> 00:23:32,700 Que todo lo que tengo que hacer si este es verdadero 516 00:23:32,700 --> 00:23:34,380 Lo pongo aquí dentro y ya está, ningún problema 517 00:23:34,380 --> 00:23:36,440 Más ejemplo 518 00:23:36,440 --> 00:23:38,880 Este es un ejemplo 519 00:23:38,880 --> 00:23:39,740 De Ifells 520 00:23:39,740 --> 00:23:42,319 Si x 521 00:23:42,319 --> 00:23:44,160 Es menor que 5 522 00:23:44,160 --> 00:23:46,619 Entonces ejecuta 523 00:23:46,619 --> 00:23:48,680 Este bloque de aquí, veis que es un bloque 524 00:23:48,680 --> 00:23:49,500 ¿Ok? 525 00:23:49,500 --> 00:23:51,160 Si no 526 00:23:51,160 --> 00:23:53,839 Ejecuta este bloque de aquí 527 00:23:53,839 --> 00:23:57,500 Y luego ejecuta esto 528 00:23:57,500 --> 00:23:58,740 Sí 529 00:23:58,740 --> 00:24:01,299 Sí 530 00:24:01,299 --> 00:24:06,420 Claro, esta es una sentencia 531 00:24:06,420 --> 00:24:09,740 La sentencia 532 00:24:09,740 --> 00:24:11,740 Exactamente como antes, como se escribía de afuera 533 00:24:11,740 --> 00:24:13,900 De hecho tú has escrito siempre en un bloque 534 00:24:13,900 --> 00:24:15,099 Porque tú pones 535 00:24:15,099 --> 00:24:17,740 Public static void main string 536 00:24:17,740 --> 00:24:18,980 Y abres una llave 537 00:24:18,980 --> 00:24:21,079 Y allí pones punto y coma como te haga gana 538 00:24:21,079 --> 00:24:22,299 ¿Sí? 539 00:24:24,200 --> 00:24:26,880 Fijaos que el if por sí mismo 540 00:24:26,880 --> 00:24:29,380 No tiene un punto y coma al final 541 00:24:29,380 --> 00:24:31,319 Porque si tú lo piensas así 542 00:24:31,319 --> 00:24:33,079 Este es el bloque, luego está el se 543 00:24:33,079 --> 00:24:35,099 Y luego este bloque, aquí iría un punto y coma 544 00:24:35,099 --> 00:24:36,920 Pero no, ¿vale? 545 00:24:37,160 --> 00:24:38,539 El if es una sentencia de comando 546 00:24:38,539 --> 00:24:40,299 Simplemente que dice por un lado o por el otro 547 00:24:40,299 --> 00:24:40,819 No hace falta 548 00:24:40,819 --> 00:24:43,079 Si os olvidáis y ponéis un punto y coma aquí 549 00:24:43,079 --> 00:24:43,799 No pasaría nada 550 00:24:43,799 --> 00:24:45,859 Sería una instrucción vacía que no hace nada 551 00:24:45,859 --> 00:24:47,119 Pero no hace falta 552 00:24:47,119 --> 00:24:48,720 ¿Sí? 553 00:24:48,980 --> 00:24:52,000 Y entonces 554 00:24:52,000 --> 00:24:54,359 Si aquí yo pongo x igual a 5 555 00:24:54,359 --> 00:24:56,160 Como x 556 00:24:56,160 --> 00:24:58,380 No es 5, no es menor que 5 557 00:24:58,380 --> 00:25:00,119 Pues entonces ejecutaría 558 00:25:00,119 --> 00:25:00,859 La rama else 559 00:25:00,859 --> 00:25:03,940 Y entonces me escribiría mayor o igual que 5 560 00:25:03,940 --> 00:25:05,859 Y luego 561 00:25:05,859 --> 00:25:08,000 Acaba el if y me escribe 562 00:25:08,000 --> 00:25:09,000 Fin 563 00:25:09,000 --> 00:25:12,259 No 564 00:25:12,259 --> 00:25:14,759 Puede haber el if 565 00:25:14,759 --> 00:25:15,660 Pero 566 00:25:15,660 --> 00:25:18,799 Por ahora pensarlo con esto 567 00:25:18,799 --> 00:25:20,359 Si quiero hacer varios else 568 00:25:20,359 --> 00:25:21,619 Pues en el else 569 00:25:21,619 --> 00:25:24,500 Pongo e if no sé qué no sé cuánto 570 00:25:24,500 --> 00:25:25,700 Else no sé qué no sé cuánto 571 00:25:25,700 --> 00:25:28,940 ¿Tiene sentido que haya varios else? 572 00:25:31,079 --> 00:25:32,000 Yo te digo 573 00:25:32,000 --> 00:25:34,359 Si x es menor que 5 hace esto 574 00:25:34,359 --> 00:25:35,720 Si no esto 575 00:25:35,720 --> 00:25:37,160 Y si no este otro 576 00:25:37,160 --> 00:25:38,519 ¿Tiene sentido? 577 00:25:38,980 --> 00:25:39,640 Si no a qué 578 00:25:39,640 --> 00:25:42,400 O sea, aquí hay una condición que puede ser o verdadero o falso 579 00:25:42,400 --> 00:25:45,119 O esto, si no, esto 580 00:25:45,119 --> 00:25:48,059 No puede haber un otro y si, si no 581 00:25:48,059 --> 00:25:49,819 No sé si me explico 582 00:25:49,819 --> 00:25:51,759 Lo que sí puede hacer es 583 00:25:51,759 --> 00:25:53,599 Si x es menor que 5, hace esto 584 00:25:53,599 --> 00:25:57,160 Y si no, si x es igual a 5 585 00:25:57,160 --> 00:25:57,720 Hace esto 586 00:25:57,720 --> 00:26:00,480 Y si no a todos esto, pues hace otra cosa 587 00:26:00,480 --> 00:26:04,720 Y eso se puede hacer con 588 00:26:04,720 --> 00:26:07,079 Otro if o con el else if 589 00:26:07,079 --> 00:26:08,680 Es sustancialmente lo mismo 590 00:26:08,680 --> 00:26:09,380 Else 591 00:26:09,380 --> 00:26:14,539 El ese se puede poner en esa línea de arriba 592 00:26:14,539 --> 00:26:15,299 O tiene que ir abajo 593 00:26:15,299 --> 00:26:18,140 Si yo empecé diciendo 594 00:26:18,140 --> 00:26:20,000 Si no, hace esto 595 00:26:20,000 --> 00:26:22,440 ¿Qué tiene sentido? 596 00:26:22,680 --> 00:26:24,599 Si lo lees de izquierda a derecha 597 00:26:24,599 --> 00:26:26,779 El if y lees esto 598 00:26:26,779 --> 00:26:28,279 El el se puede poner ahí 599 00:26:28,279 --> 00:26:31,039 En la línea de arriba 600 00:26:31,039 --> 00:26:32,779 Pero detrás del corchete 601 00:26:32,779 --> 00:26:33,599 ¿Aquí? 602 00:26:34,259 --> 00:26:35,420 ¿Dónde te da la gana? 603 00:26:36,740 --> 00:26:37,299 Normalmente 604 00:26:37,299 --> 00:26:40,359 Por claridad 605 00:26:40,359 --> 00:26:41,779 Se hace una cosa así 606 00:26:41,779 --> 00:26:45,339 El if y luego todo lo que está en el if 607 00:26:45,339 --> 00:26:46,799 Intentado a la derecha 608 00:26:46,799 --> 00:26:49,359 Luego el else al mismo nivel del if 609 00:26:49,359 --> 00:26:51,039 Y todo el bloque del else 610 00:26:51,039 --> 00:26:53,220 Movida hacia la derecha 611 00:26:53,220 --> 00:26:54,779 Con sangría 612 00:26:54,779 --> 00:26:55,700 Sangrilla 613 00:26:55,700 --> 00:27:00,130 ¿Sí? 614 00:27:00,990 --> 00:27:02,829 Otro ejemplo de if, ¿vale? 615 00:27:03,829 --> 00:27:04,990 ¿Qué hace esto? 616 00:27:06,650 --> 00:27:12,730 Lo que acabamos de decir, ¿no? 617 00:27:15,109 --> 00:27:17,390 Si x es menor que 5, este bloque 618 00:27:17,390 --> 00:27:19,210 Si no 619 00:27:19,210 --> 00:27:21,069 Y aquí en vez de un bloque 620 00:27:21,069 --> 00:27:23,130 He puesto una sola instrucción 621 00:27:23,130 --> 00:27:24,430 ¿Y qué instrucción es? Un if 622 00:27:24,430 --> 00:27:27,710 ¿Vale? Entonces, toda la parte roja 623 00:27:27,710 --> 00:27:29,190 Si esto es un rojo 624 00:27:29,190 --> 00:27:29,910 ¿Vale? 625 00:27:30,789 --> 00:27:33,369 Estaría dentro como bloque del else 626 00:27:33,369 --> 00:27:35,170 Como única instrucción del else 627 00:27:35,170 --> 00:27:37,190 ¿Vale? ¿Y qué hago allí? 628 00:27:37,309 --> 00:27:38,029 Pues otro if 629 00:27:38,029 --> 00:27:41,509 Si es igual a 5, escribe que es igual a 5 630 00:27:41,509 --> 00:27:42,589 Y si no 631 00:27:42,589 --> 00:27:44,430 Este si no se ejecutará 632 00:27:44,430 --> 00:27:45,609 Si y solo si 633 00:27:45,609 --> 00:27:48,509 Esto es falso y esto es falso 634 00:27:48,509 --> 00:27:49,930 ¿Vale? 635 00:27:50,069 --> 00:27:52,690 Porque está dentro del else 636 00:27:52,690 --> 00:27:56,950 Yo nunca llegaré a la parte roja 637 00:27:56,950 --> 00:27:59,390 Si la parte azul es verdadera 638 00:27:59,390 --> 00:28:01,670 Si la condición azul es verdadera 639 00:28:01,670 --> 00:28:01,890 ¿Vale? 640 00:28:01,970 --> 00:28:04,250 Entonces para llegar a mayor que 5 641 00:28:04,250 --> 00:28:07,250 Tiene que ser que la condición azul sea falsa 642 00:28:07,250 --> 00:28:08,630 Entonces me voy a la rama else 643 00:28:08,630 --> 00:28:10,609 Y que dentro de 4 otro if 644 00:28:10,609 --> 00:28:12,609 Y que esta condición, la condición roja 645 00:28:12,609 --> 00:28:14,069 También sea falsa 646 00:28:14,069 --> 00:28:15,490 Y entonces me voy a este else 647 00:28:15,490 --> 00:28:16,710 Y aquí explico 648 00:28:16,710 --> 00:28:19,869 Sí 649 00:28:19,869 --> 00:28:26,500 Ahí 650 00:28:26,500 --> 00:28:30,940 Si quisiera esto 651 00:28:30,940 --> 00:28:34,410 Toda la línea 652 00:28:34,410 --> 00:28:37,390 Pero entonces 653 00:28:37,390 --> 00:28:38,849 Si pusiera así 654 00:28:38,849 --> 00:28:43,349 No puedo dar dos alternativas 655 00:28:43,349 --> 00:28:45,009 Negativas a la misma condición 656 00:28:45,009 --> 00:28:48,130 Ponme que has quitado esto 657 00:28:48,130 --> 00:28:49,309 Tienes dos sets 658 00:28:49,309 --> 00:28:50,049 ¿No? 659 00:28:50,430 --> 00:28:51,849 Ok, este es verdadero 660 00:28:51,849 --> 00:28:52,750 Ejecuto esto 661 00:28:52,750 --> 00:28:53,569 Este es falso 662 00:28:53,569 --> 00:28:54,490 ¿Cuál hago? ¿Esto o este? 663 00:28:57,660 --> 00:28:58,259 Acordaros que 664 00:28:58,259 --> 00:28:59,539 Estamos en booleano 665 00:28:59,539 --> 00:29:01,759 Verdadero o falso, no hay un tercer valor 666 00:29:01,759 --> 00:29:02,940 No tengo ni idea 667 00:29:02,940 --> 00:29:05,700 Entonces no puedo poner dos else 668 00:29:05,700 --> 00:29:06,920 A una misma condición 669 00:29:06,920 --> 00:29:08,980 Es o esto o esto 670 00:29:08,980 --> 00:29:10,599 Se acabó, no hay otra opción 671 00:29:10,599 --> 00:29:13,579 Si yo quisiera 672 00:29:13,579 --> 00:29:15,099 Imprimir estas dos a la vez 673 00:29:15,099 --> 00:29:16,859 Pues quito esto, quito este else 674 00:29:16,859 --> 00:29:19,700 Y como else digo que es igual a 5 675 00:29:19,700 --> 00:29:20,480 Es mayor que 5 676 00:29:20,480 --> 00:29:23,599 Eso no tiene sentido 677 00:29:23,599 --> 00:29:25,160 En este ejercicio 678 00:29:25,160 --> 00:29:26,880 ¿Dudas? 679 00:29:27,460 --> 00:29:29,319 Tened en cuenta que esto se ejecuta siempre 680 00:29:29,319 --> 00:29:31,660 ¿Vale? Y aquí había tres casos 681 00:29:31,660 --> 00:29:33,819 Pongamos que esto sea cuatro 682 00:29:33,819 --> 00:29:35,400 Pues entro aquí 683 00:29:35,400 --> 00:29:37,119 Cuatro es menor que cinco 684 00:29:37,119 --> 00:29:39,660 Sí, me escribe menor que cinco 685 00:29:39,660 --> 00:29:42,140 Y sale del if azul 686 00:29:42,140 --> 00:29:44,279 Que sería aquí 687 00:29:44,279 --> 00:29:46,920 Esto no debería ser rojo 688 00:29:46,920 --> 00:29:48,440 Sería, si está en punto alto 689 00:29:48,440 --> 00:29:50,660 En fin, que está fuera del top 690 00:29:50,660 --> 00:29:52,539 ¿Vale? Y lo escribiría 691 00:29:52,539 --> 00:29:54,420 Si yo pongo cinco 692 00:29:54,420 --> 00:29:56,500 Pues cinco es menor que cinco 693 00:29:56,500 --> 00:29:58,160 Falso, iría al else 694 00:29:58,160 --> 00:30:00,880 Y se preguntaría, 5 es igual o igual a 5 695 00:30:00,880 --> 00:30:03,460 Verdadero, entraría aquí dentro 696 00:30:03,460 --> 00:30:05,619 Pone igual que 5 697 00:30:05,619 --> 00:30:07,079 Y luego sale fuera 698 00:30:07,079 --> 00:30:07,619 Escribe este 699 00:30:07,619 --> 00:30:10,299 Y finalmente 700 00:30:10,299 --> 00:30:12,619 Si fuera 6, x igual a 6 701 00:30:12,619 --> 00:30:14,700 Pues entonces 6 es menor que 5 702 00:30:14,700 --> 00:30:16,740 Falso, me voy al else azul 703 00:30:16,740 --> 00:30:19,799 Que me dice, si 6 es igual a 5 704 00:30:19,799 --> 00:30:22,000 Falso, me voy al else rojo 705 00:30:22,000 --> 00:30:23,059 Escribo 706 00:30:23,059 --> 00:30:24,759 Es mayor que 5 707 00:30:24,759 --> 00:30:26,619 Y luego después escribo fin 708 00:30:26,619 --> 00:30:30,480 Esto de aquí 709 00:30:30,480 --> 00:30:32,299 Debería ser negro 710 00:30:32,299 --> 00:30:33,119 Y esto de aquí negro 711 00:30:33,119 --> 00:30:35,779 Para ser más claro 712 00:30:35,779 --> 00:30:50,460 ¿Lo veis? 713 00:30:57,980 --> 00:30:59,019 Más claro así 714 00:30:59,019 --> 00:31:00,299 ¿O así? 715 00:31:04,640 --> 00:31:05,279 ¿Hace más claro? 716 00:31:08,630 --> 00:31:09,809 Bastante más completo 717 00:31:09,809 --> 00:31:16,369 Aquí yo veo los dos bloques 718 00:31:16,369 --> 00:31:18,910 Verdadero y falso 719 00:31:18,910 --> 00:31:19,930 De la primera condición 720 00:31:19,930 --> 00:31:22,029 Y si entro en el falso veo 721 00:31:22,029 --> 00:31:23,970 Verdadero o falso en la condición 722 00:31:23,970 --> 00:31:26,609 ¿Vale? Además fijaos que 723 00:31:26,609 --> 00:31:28,230 Esto está todo alineado 724 00:31:28,230 --> 00:31:30,269 Mientras lo que está dentro de un bloque 725 00:31:30,269 --> 00:31:32,089 Está como empujado un poco a la derecha 726 00:31:32,089 --> 00:31:34,190 Entonces veo fácilmente donde empieza 727 00:31:34,190 --> 00:31:36,190 Y donde acaba el bloque, el C por ejemplo azul 728 00:31:36,190 --> 00:31:38,509 Cosa que aquí 729 00:31:38,509 --> 00:31:40,650 Me cuesta un poquito más 730 00:31:40,650 --> 00:31:42,890 ¿Sí? 731 00:31:43,690 --> 00:31:46,230 Luego haremos ejemplos 732 00:31:46,230 --> 00:31:51,210 ¿Qué devuelve? 733 00:31:51,210 --> 00:32:13,170 Yo escribo esto 734 00:32:13,170 --> 00:32:13,710 ¿Qué pasa? 735 00:32:17,950 --> 00:32:18,970 ¿Dónde está el problema aquí? 736 00:32:22,509 --> 00:32:23,809 ¿Es necesario el else? 737 00:32:27,799 --> 00:32:29,779 ¿Es necesario el else? 738 00:32:30,619 --> 00:32:31,519 Pues ya está 739 00:32:31,519 --> 00:32:38,660 ¿Dónde está el problema aquí? 740 00:32:44,779 --> 00:32:45,480 ¿Cómo no? 741 00:32:45,599 --> 00:32:46,019 Tiene un if 742 00:32:46,019 --> 00:32:53,230 El problema aquí es 743 00:32:53,230 --> 00:32:55,890 Porque yo entiendo que si es menor que 1 744 00:32:55,890 --> 00:32:56,809 ¿Vale? 745 00:32:57,430 --> 00:33:00,130 Entonces aquí iría la instrucción de este if 746 00:33:00,130 --> 00:33:00,670 Que es esta 747 00:33:00,670 --> 00:33:02,130 ¿Vale? 748 00:33:02,309 --> 00:33:04,849 Entonces si he puesto dentro del if como instrucción 749 00:33:04,849 --> 00:33:06,950 Un bloque con este if 750 00:33:06,950 --> 00:33:08,789 Pero la pregunta es 751 00:33:08,789 --> 00:33:09,470 ¿Es este else? 752 00:33:10,410 --> 00:33:12,410 ¿Es el else de este if? 753 00:33:13,190 --> 00:33:15,269 ¿O es el else de este if? 754 00:33:18,519 --> 00:33:19,380 Porque si 755 00:33:19,380 --> 00:33:23,640 o sea, es 756 00:33:23,640 --> 00:33:26,119 y fíjate que uno hace todo esto 757 00:33:26,119 --> 00:33:27,579 ¿por qué no? 758 00:33:28,640 --> 00:33:29,740 de hecho lo hemos hecho 759 00:33:29,740 --> 00:33:31,960 cuando hemos hecho esto 760 00:33:31,960 --> 00:33:33,859 es y hemos puesto un if entero 761 00:33:33,859 --> 00:33:36,319 ¿por qué no? 762 00:33:38,299 --> 00:33:39,279 esto es 763 00:33:39,279 --> 00:33:44,640 por pantalla 764 00:33:44,640 --> 00:33:46,319 no saldría nada 765 00:33:46,319 --> 00:33:46,740 ¿vale? 766 00:33:46,740 --> 00:33:48,900 La que la sentencia if 767 00:33:48,900 --> 00:33:51,200 Tiene dos formas, if e if else 768 00:33:51,200 --> 00:33:53,579 ¿Vale? Y cuando se mezclan ambas 769 00:33:53,579 --> 00:33:55,420 No se puede saber a cuál de los dos 770 00:33:55,420 --> 00:33:56,980 Se hace referencia 771 00:33:56,980 --> 00:33:59,559 ¿Vale? Aquí es un poco un caos 772 00:33:59,559 --> 00:34:01,140 ¿Cómo soluciona este caos? 773 00:34:02,079 --> 00:34:02,839 Con las llaves 774 00:34:02,839 --> 00:34:05,460 Por lo tanto, de aquí el consejo de antes 775 00:34:05,460 --> 00:34:06,859 Usad siempre las llaves 776 00:34:06,859 --> 00:34:09,480 Si yo pongo una llave aquí y una llave aquí 777 00:34:09,480 --> 00:34:11,579 O sea, después de 778 00:34:11,579 --> 00:34:13,320 De i menor que 1 779 00:34:13,320 --> 00:34:14,599 Y al final del todo 780 00:34:14,599 --> 00:34:17,159 Pues lo que estoy diciendo 781 00:34:17,159 --> 00:34:18,559 Es que si este es verdadero 782 00:34:18,559 --> 00:34:19,639 Haz todo lo que hay aquí 783 00:34:19,639 --> 00:34:21,739 El else se refiere al segundo if 784 00:34:21,739 --> 00:34:24,079 Si yo en vez de pongo 785 00:34:24,079 --> 00:34:26,320 Una paréntesis aquí 786 00:34:26,320 --> 00:34:28,300 Y luego otra paréntesis aquí 787 00:34:28,300 --> 00:34:29,159 O sea una llave aquí 788 00:34:29,159 --> 00:34:31,059 Estoy diciendo que si este es verdadero 789 00:34:31,059 --> 00:34:32,300 Haz esta cosa de aquí 790 00:34:32,300 --> 00:34:34,280 Y si no, haz esta otra cosa 791 00:34:34,280 --> 00:34:37,090 ¿Sí? 792 00:34:37,429 --> 00:34:38,710 Entonces usad las llaves 793 00:34:38,710 --> 00:34:41,070 ¿Se pueden usar? 794 00:34:41,309 --> 00:34:42,789 Sí, usadlas siempre 795 00:34:42,789 --> 00:34:44,869 O sea evita problemas 796 00:34:44,869 --> 00:34:48,829 ¿Dudas? 797 00:34:52,760 --> 00:34:55,800 ¿El método main lo puedo meter dentro del main? 798 00:34:56,940 --> 00:34:57,579 No 799 00:34:57,579 --> 00:34:59,960 Todo esto va dentro del método main 800 00:34:59,960 --> 00:35:03,739 Siempre nosotros escribimos dentro del main 801 00:35:03,739 --> 00:35:05,920 Por ahora nosotros no sabemos 802 00:35:05,920 --> 00:35:07,340 Escribir fuera del método main 803 00:35:07,340 --> 00:35:10,579 Todo lo que hacemos es dentro del bloque main 804 00:35:10,579 --> 00:35:11,579 Sí, pero 805 00:35:11,579 --> 00:35:12,960 ¿Por qué el método main? 806 00:35:18,989 --> 00:35:20,309 No puede meter dos main 807 00:35:20,309 --> 00:35:22,670 Por ahora 808 00:35:22,670 --> 00:35:23,590 Olvida 809 00:35:23,590 --> 00:35:27,309 Por ahora simplemente te escribes dentro del main 810 00:35:27,309 --> 00:35:29,349 Todo lo que viene antes y después 811 00:35:29,349 --> 00:35:30,690 Son cosas que tengo que escribir 812 00:35:30,690 --> 00:35:32,570 Porque programación es un objeto 813 00:35:32,570 --> 00:35:34,349 Pero por ahora no te interesa 814 00:35:34,349 --> 00:35:36,690 Y escribes tu if allí dentro 815 00:35:36,690 --> 00:35:39,429 Y esto es 816 00:35:39,429 --> 00:35:43,449 La primera sentencia condicional 817 00:35:43,449 --> 00:35:44,269 Que vamos a ver 818 00:35:44,269 --> 00:35:45,690 Es un if 819 00:35:45,690 --> 00:35:48,309 Si la condición es verdadera 820 00:35:48,309 --> 00:35:49,289 Hace el primer bloque 821 00:35:49,289 --> 00:35:50,590 Si no es verdadera 822 00:35:50,590 --> 00:35:51,530 Hace el segundo bloque 823 00:35:51,530 --> 00:35:53,809 Y luego sigas adelante 824 00:35:53,809 --> 00:35:56,050 ¿Dudas? 825 00:35:58,199 --> 00:35:59,980 ¿Qué puedo poner como condición? 826 00:36:10,960 --> 00:36:11,480 No os lo digo 827 00:36:11,480 --> 00:36:14,820 Buleano, ¿buleano qué? 828 00:36:16,619 --> 00:36:18,940 Me falta una palabra antes de bulear 829 00:36:18,940 --> 00:36:30,659 Exacto, una expresión buleana 830 00:36:30,659 --> 00:36:32,059 ¿Vale? 831 00:36:32,059 --> 00:36:34,480 Es decir, todo lo que nosotros hemos visto 832 00:36:34,480 --> 00:36:42,360 dentro del operador ternario, es decir, operadores de comparación, and, or, not, whatever, ¿vale? 833 00:36:42,420 --> 00:36:46,679 Todas esas cosas de allí, puede ser una condición compleja cuanto os da la gana, 834 00:36:46,679 --> 00:36:52,539 y grande cuanto os da la gana, que al final me dará un true o un false. 835 00:36:52,840 --> 00:36:55,539 Entonces, efectivamente, allí dentro va un boolean, ¿sí? 836 00:36:55,760 --> 00:36:58,579 Pero un boolean no es un poco limitante, es una expresión booleana, 837 00:36:58,920 --> 00:37:03,860 una expresión compleja cuanto te da la gana, que cuando yo la resuelvo, 838 00:37:03,860 --> 00:37:06,039 Me dará un valor de true o false 839 00:37:06,039 --> 00:37:07,880 Si es true, hago esto 840 00:37:07,880 --> 00:37:09,280 Si es false, hago esto 841 00:37:09,280 --> 00:37:11,019 ¿Dudas? 842 00:37:13,710 --> 00:37:15,329 Se ha entendido muy bien el if 843 00:37:15,329 --> 00:37:17,090 Ahora practicamos 844 00:37:17,090 --> 00:37:26,940 Antes de ir a practicar con el if 845 00:37:26,940 --> 00:37:29,199 Veamos la otra sentencia 846 00:37:29,199 --> 00:37:31,280 Condicional que vamos a ver 847 00:37:31,280 --> 00:37:32,239 Que es el switch 848 00:37:32,239 --> 00:37:33,500 O switch case 849 00:37:33,500 --> 00:37:36,980 Esta también es condicional 850 00:37:36,980 --> 00:37:40,599 Porque dependiendo del valor de una cierta variable 851 00:37:40,599 --> 00:37:43,239 Hago una cosa o hago otra 852 00:37:43,239 --> 00:37:43,800 ¿Vale? 853 00:37:43,860 --> 00:37:45,340 O hago varias cosas 854 00:37:45,340 --> 00:37:46,400 Ahora lo veremos 855 00:37:46,400 --> 00:37:46,659 ¿Vale? 856 00:37:47,340 --> 00:37:50,300 Se puede hacer lo mismo que hace el switch 857 00:37:50,300 --> 00:37:51,659 Con una serie de if 858 00:37:51,659 --> 00:37:55,460 Uno dentro de otro, dentro de otro, dentro de otro, dentro de otro 859 00:37:55,460 --> 00:37:56,059 ¿Vale? 860 00:37:57,059 --> 00:38:00,420 Imaginaos un menú textual 861 00:38:00,420 --> 00:38:02,119 Algo que dice 862 00:38:02,119 --> 00:38:04,340 Bienvenido a mi programa 863 00:38:04,340 --> 00:38:06,340 Si quieres añadir un alumno 864 00:38:06,340 --> 00:38:09,059 Pulse 1 si quieres borrar un alumno 865 00:38:09,059 --> 00:38:10,699 Pulse 2 si quieres 866 00:38:10,699 --> 00:38:13,519 Borrar todos los alumnos 867 00:38:13,519 --> 00:38:15,079 Pulse 3 si quieres 868 00:38:15,079 --> 00:38:16,420 Añadir una clase 869 00:38:16,420 --> 00:38:17,340 Pulse 4 870 00:38:17,340 --> 00:38:20,739 ¿Cómo haría yo eso con if? 871 00:38:21,519 --> 00:38:23,000 Sería varios if de 872 00:38:23,000 --> 00:38:25,179 Si la variable que has leído 873 00:38:25,179 --> 00:38:28,079 Es 1, entonces haz todo lo que sea al 1 874 00:38:28,079 --> 00:38:29,179 Si no 875 00:38:29,179 --> 00:38:32,039 Si la variable es 2 876 00:38:32,039 --> 00:38:33,500 Haz todo lo que haría al 2 877 00:38:33,500 --> 00:38:34,159 Si no 878 00:38:34,159 --> 00:38:35,940 Si la variable es 3 879 00:38:35,940 --> 00:38:37,920 ¿Se entiende? 880 00:38:38,579 --> 00:38:40,480 O sea que serían varios if uno dentro de otro 881 00:38:40,480 --> 00:38:41,400 Dentro de otro, dentro de otro 882 00:38:41,400 --> 00:38:44,179 Si yo tengo 25 opciones 883 00:38:44,179 --> 00:38:45,579 Sería un problema 884 00:38:45,579 --> 00:38:48,960 Y entonces en casos como estos 885 00:38:48,960 --> 00:38:50,820 Donde yo tengo una variable 886 00:38:50,820 --> 00:38:53,059 Y puede valer varias cosas 887 00:38:53,059 --> 00:38:55,360 Y yo quiero hacer acciones distintas 888 00:38:55,360 --> 00:38:56,840 Dependiendo de 889 00:38:56,840 --> 00:38:58,099 Una cosa u otra 890 00:38:58,099 --> 00:39:00,239 Uso el switch case 891 00:39:00,239 --> 00:39:02,699 El switch case funciona así 892 00:39:02,699 --> 00:39:04,360 Switch 893 00:39:04,360 --> 00:39:06,519 Y aquí le pongo una variable 894 00:39:06,519 --> 00:39:09,679 X, nombre, edad, lo que sea 895 00:39:09,679 --> 00:39:10,420 ¿Vale? 896 00:39:10,780 --> 00:39:12,719 Funciona con tipos primitivos 897 00:39:12,719 --> 00:39:13,940 ¿Sí? 898 00:39:14,400 --> 00:39:17,539 Y un bloque 899 00:39:17,539 --> 00:39:19,760 ¿Sí? 900 00:39:20,199 --> 00:39:21,679 A partir de este bloque digo 901 00:39:21,679 --> 00:39:23,559 ¿Qué es valor 1? 902 00:39:24,800 --> 00:39:27,119 Si esto vale 1, por ejemplo 903 00:39:27,119 --> 00:39:28,079 ¿Qué es 1? 904 00:39:28,320 --> 00:39:29,880 O si esto es la letra A 905 00:39:29,880 --> 00:39:30,780 ¿Qué es A? 906 00:39:30,980 --> 00:39:31,900 Entre ápices 907 00:39:31,900 --> 00:39:34,079 O si esto... 908 00:39:34,079 --> 00:39:34,699 No sé 909 00:39:34,699 --> 00:39:39,800 Es un número, normalmente el número si char es suficiente, ¿vale? 910 00:39:40,619 --> 00:39:43,079 Entonces, haz esta cosa aquí. 911 00:39:45,679 --> 00:39:51,960 Si en vez es el caso que vale 2, haz esta cosa aquí. 912 00:39:52,659 --> 00:39:55,460 Si es el caso que vale n, haz esta cosa aquí. 913 00:39:56,619 --> 00:39:59,239 ¿Sí? Es una situación como esta aquí. 914 00:39:59,739 --> 00:40:02,219 Y aquí me pregunta, la variable que veo está aquí. 915 00:40:02,219 --> 00:40:05,599 Vale 1, si es verdadero ejecuta esto. 916 00:40:06,139 --> 00:40:09,719 La variable vale, si no es verdadero 917 00:40:09,719 --> 00:40:11,340 Va a preguntar, vale 2 918 00:40:11,340 --> 00:40:13,940 Vale el segundo valor que he puesto aquí 919 00:40:13,940 --> 00:40:14,920 La B 920 00:40:14,920 --> 00:40:17,599 O 2, o 37 921 00:40:17,599 --> 00:40:19,480 O lo que sea, se entiende 922 00:40:19,480 --> 00:40:20,659 Más o menos 923 00:40:20,659 --> 00:40:23,280 Ahora, ¿qué es este break? 924 00:40:24,440 --> 00:40:25,380 Este break 925 00:40:25,380 --> 00:40:27,659 Me dice que si llega a un break 926 00:40:27,659 --> 00:40:29,679 Dejo de ejecutar 927 00:40:29,679 --> 00:40:31,940 Todo el resto de lo que viene debajo 928 00:40:31,940 --> 00:40:33,300 Y me voy 929 00:40:33,300 --> 00:40:34,659 Fuera del switch 930 00:40:34,659 --> 00:40:36,539 Y sigue adelante 931 00:40:36,539 --> 00:40:39,599 Break rompe este switch 932 00:40:39,599 --> 00:40:41,059 Entro un break 933 00:40:41,059 --> 00:40:42,000 Sigue adelante 934 00:40:42,000 --> 00:40:43,860 Y si no pongo el break 935 00:40:43,860 --> 00:40:46,219 Eso quiere decir que cuando 936 00:40:46,219 --> 00:40:48,960 Por ejemplo, quitando el primer break 937 00:40:48,960 --> 00:40:51,579 Si case vale el valor 1 938 00:40:51,579 --> 00:40:52,679 Que por ejemplo es 1 939 00:40:52,679 --> 00:40:54,320 Vale, ok, perfecto, es este de aquí 940 00:40:54,320 --> 00:40:56,260 Ejecuto esta sentencia 941 00:40:56,260 --> 00:40:57,840 Y también esta 942 00:40:57,840 --> 00:41:01,599 Ejecuto no solo el caso 1 943 00:41:01,599 --> 00:41:03,199 Sino todos los casos 944 00:41:03,199 --> 00:41:05,519 A partir del que es verdadero 945 00:41:05,519 --> 00:41:06,440 Para abajo 946 00:41:06,440 --> 00:41:08,639 Hasta que encuentre un break 947 00:41:08,639 --> 00:41:10,039 O hasta que se acabe 948 00:41:10,039 --> 00:41:14,199 En determinados casos 949 00:41:14,199 --> 00:41:15,679 Puede que esto me sirva 950 00:41:15,679 --> 00:41:18,760 Si yo quiero que estos sean 951 00:41:18,760 --> 00:41:20,280 Independientes uno de otro 952 00:41:20,280 --> 00:41:22,340 Por cada uno de estos bloques 953 00:41:22,340 --> 00:41:23,139 Pongo un break 954 00:41:23,139 --> 00:41:26,119 Hace esto y luego ya está, se acabó 955 00:41:26,119 --> 00:41:28,400 No hagas lo que habrías hecho 956 00:41:28,400 --> 00:41:29,440 Si valías otro valor 957 00:41:29,440 --> 00:41:36,179 Existe también 958 00:41:36,179 --> 00:41:37,780 Una opción final 959 00:41:37,780 --> 00:41:38,840 Que se pone al final 960 00:41:38,840 --> 00:41:40,639 Que es la opción default 961 00:41:40,639 --> 00:41:43,260 Esta es como un else 962 00:41:43,260 --> 00:41:45,579 ¿Vale? Es decir, tú compruebas 963 00:41:45,579 --> 00:41:47,019 Si esta variable vale esto 964 00:41:47,019 --> 00:41:49,199 O si vale esto, o si vale esto 965 00:41:49,199 --> 00:41:51,420 Si no vale ninguno de estos 966 00:41:51,420 --> 00:41:53,820 De aquí, pues entonces por defecto 967 00:41:53,820 --> 00:41:55,519 Hace esta cosa aquí 968 00:41:55,519 --> 00:41:58,059 ¿Ve? 969 00:41:58,780 --> 00:42:00,019 Que sería esto 970 00:42:00,019 --> 00:42:02,920 Si encuentro el valor, intento hacerlos todos 971 00:42:02,920 --> 00:42:04,460 Mas si encuentro un break, salgo 972 00:42:04,460 --> 00:42:05,639 ¿Ve? 973 00:42:05,639 --> 00:42:08,639 Si no hubiese break, pues las haría todos 974 00:42:08,639 --> 00:42:10,320 Si no encuentro ninguno 975 00:42:10,320 --> 00:42:12,460 Son todos falsos, pues siempre 976 00:42:12,460 --> 00:42:14,460 Hace esta cosa de aquí y luego sigue adelante 977 00:42:14,460 --> 00:42:16,719 ¿Lo veis? 978 00:42:18,719 --> 00:42:20,260 Si no pongo el default 979 00:42:20,260 --> 00:42:22,199 Cuando 980 00:42:22,199 --> 00:42:24,159 Si son todas falsas, no hago nada 981 00:42:24,159 --> 00:42:24,980 Y sigo adelante 982 00:42:24,980 --> 00:42:28,340 Y aquí es de donde estos break 983 00:42:28,340 --> 00:42:28,940 Llegan aquí 984 00:42:28,940 --> 00:42:30,739 Y sigo adelante 985 00:42:30,739 --> 00:42:32,780 Si en vez 986 00:42:32,780 --> 00:42:35,039 He puesto el default 987 00:42:35,039 --> 00:42:36,780 Si son todas falsas 988 00:42:36,780 --> 00:42:38,719 Al final hago esto y sigo adelante 989 00:42:38,719 --> 00:42:40,119 ¿Sí? 990 00:42:40,320 --> 00:42:42,039 Y si no he usado ningún break 991 00:42:42,039 --> 00:42:43,920 Pues haría todos los verdes 992 00:42:43,920 --> 00:42:45,500 Incluido este de aquí y sigo adelante 993 00:42:45,500 --> 00:42:47,579 ¿Sí? 994 00:42:49,360 --> 00:42:50,480 Este es un ejemplo 995 00:42:50,480 --> 00:42:51,760 Real 996 00:42:51,760 --> 00:42:52,800 No se lee 997 00:42:52,800 --> 00:43:01,590 Tengo una variable nota 998 00:43:01,590 --> 00:43:04,030 Hago switch nota 999 00:43:04,030 --> 00:43:05,030 ¿Vale? 1000 00:43:05,429 --> 00:43:06,889 Entonces compruebo nota 1001 00:43:06,889 --> 00:43:08,190 ¿Qué es 5? 1002 00:43:08,190 --> 00:43:10,130 O sea, si nota vale 5 1003 00:43:10,130 --> 00:43:11,789 Escribe aprobado 1004 00:43:11,789 --> 00:43:13,369 Break 1005 00:43:13,369 --> 00:43:16,650 Si es 6 1006 00:43:16,650 --> 00:43:17,530 Escribe bien 1007 00:43:17,530 --> 00:43:20,630 Si es 7 1008 00:43:20,630 --> 00:43:22,510 O si es 8 1009 00:43:22,510 --> 00:43:24,010 Porque aquí no he puesto break 1010 00:43:24,010 --> 00:43:26,630 Entonces, tanto si entraron en el 7 1011 00:43:26,630 --> 00:43:27,630 Como si entraron en el 8 1012 00:43:27,630 --> 00:43:30,050 Ejecutaría esto, que es notable 1013 00:43:30,050 --> 00:43:31,670 ¿Sí? 1014 00:43:32,769 --> 00:43:34,889 Si es 9, sobresaliente 1015 00:43:34,889 --> 00:43:36,630 Si es 10, matrícula de honor 1016 00:43:36,630 --> 00:43:38,250 de honor y en 1017 00:43:38,250 --> 00:43:40,050 método default 1018 00:43:40,050 --> 00:43:42,170 pues suspenso, vale 1019 00:43:42,170 --> 00:43:44,409 como he puesto break aquí, pues esto me lo 1020 00:43:44,409 --> 00:43:46,429 escribe solo si es menos que 5 1021 00:43:46,429 --> 00:43:48,050 si es distinta de 1022 00:43:48,050 --> 00:43:49,889 los valores que he puesto aquí 1023 00:43:49,889 --> 00:43:55,969 no, aquí 1024 00:43:55,969 --> 00:43:58,329 lo está haciendo él, está haciendo un 1025 00:43:58,329 --> 00:43:58,789 igual igual 1026 00:43:58,789 --> 00:44:02,510 está haciendo un igual igual entre esto 1027 00:44:02,510 --> 00:44:04,269 y esto, pero porque el switch 1028 00:44:04,269 --> 00:44:06,329 se utiliza en casos de 1029 00:44:06,329 --> 00:44:10,170 en estos casos, no cuando tengo una variable 1030 00:44:10,170 --> 00:44:14,469 con una expresión compleja y quiero saber si sí o si no, sino que 1031 00:44:14,469 --> 00:44:18,550 tengo una variable que puede tener varios valores 1032 00:44:18,550 --> 00:44:22,269 y quiero hacer cosas distintas en base a este valor. El ejemplo 1033 00:44:22,269 --> 00:44:26,730 típico es un menú. Yo me hago una cosa así 1034 00:44:26,730 --> 00:44:30,150 con menú, si has pulsado 1, entonces llama el método 1035 00:44:30,150 --> 00:44:34,530 ejecuta1, si es 2, llama el método ejecuta2, o haz lo que debería 1036 00:44:34,530 --> 00:44:49,170 peden dos. Si esto no estuviera, él escribiría aprobado, luego bien y 1037 00:44:49,170 --> 00:44:54,050 seguiría hasta encontrar un break. Cuando encuentre un break, se va. 1038 00:44:54,969 --> 00:45:00,289 Si ha quitado este break de aquí y este lo ha dejado, se pararía aquí y 1039 00:45:00,289 --> 00:45:24,469 seguiría adelante, seguiría aquí, lo que hay aquí abajo, es como aquí, veis, como no he puesto un break aquí, que yo te de 7 o te de 8, lo que hará es empezar a ejecutar todo hasta encontrar un break, entonces tanto con 7 como con 8, me va a escribir notado, 1040 00:45:24,469 --> 00:45:30,989 Sí, el default siempre va al final 1041 00:45:30,989 --> 00:45:32,130 Es como el else 1042 00:45:32,130 --> 00:45:34,130 Tú pruebas todas estas cosas 1043 00:45:34,130 --> 00:45:35,929 Y en caso por defecto 1044 00:45:35,929 --> 00:45:37,070 De que esta cosa no está bien valida 1045 00:45:37,070 --> 00:45:37,889 Pues vas a hacer esto 1046 00:45:37,889 --> 00:45:43,840 Cerrarlo 1047 00:45:43,840 --> 00:45:46,860 No necesariamente 1048 00:45:46,860 --> 00:45:48,360 Porque como es la última cosa 1049 00:45:48,360 --> 00:45:50,059 Aunque hasta si no se pone break 1050 00:45:50,059 --> 00:45:51,400 Pues seguirá adelante y acaba 1051 00:45:51,400 --> 00:45:53,400 Si lo has puesto último 1052 00:45:53,400 --> 00:45:56,159 ¿Más? 1053 00:45:56,159 --> 00:46:00,309 Acordaos con esto de break 1054 00:46:00,309 --> 00:46:01,349 Porque si se os olvida 1055 00:46:01,349 --> 00:46:03,769 Cuando entra en uno hace todo 1056 00:46:03,769 --> 00:46:05,769 Entonces a lo mejor no es lo que queréis 1057 00:46:05,769 --> 00:46:08,369 Si yo me hubiese olvidado 1058 00:46:08,369 --> 00:46:09,289 De poner los break 1059 00:46:09,289 --> 00:46:11,530 Al entrar por ejemplo aquí me habría puesto 1060 00:46:11,530 --> 00:46:14,409 Bien, notable, sobresaliente, antiguo honor, suspenso 1061 00:46:14,409 --> 00:46:25,130 Y esto es 1062 00:46:25,130 --> 00:46:28,369 Nosotros lo usaremos principalmente con enteros 1063 00:46:28,369 --> 00:46:29,929 O con 1064 00:46:29,929 --> 00:46:32,590 chara, chara, chara 1065 00:46:32,590 --> 00:46:34,670 ¿vale? ya, ya, string 1066 00:46:34,670 --> 00:46:36,389 sufre 1067 00:46:36,389 --> 00:46:38,829 ¿vale? casi, no lo sé 1068 00:46:38,829 --> 00:46:40,590 no lo he probado nunca, porque luego después 1069 00:46:40,590 --> 00:46:42,469 switch case se usa ahora 1070 00:46:42,469 --> 00:46:44,230 luego después se pierde un poco de 1071 00:46:44,230 --> 00:46:46,210 ¿vale? pero 1072 00:46:46,210 --> 00:46:50,489 los string debería 1073 00:46:50,489 --> 00:46:52,309 comprobarlo, pero me da miedo 1074 00:46:52,309 --> 00:46:53,610 con los string 1075 00:46:53,610 --> 00:46:56,449 con doble anos tiene 1076 00:46:56,449 --> 00:46:57,010 poco sentido 1077 00:46:57,010 --> 00:46:59,630 Con decimales 1078 00:46:59,630 --> 00:47:01,150 También, tú puedes poner 1079 00:47:01,150 --> 00:47:03,210 Si es 7,5 1080 00:47:03,210 --> 00:47:04,530 Hace esto, si es 7,4 1081 00:47:04,530 --> 00:47:06,530 Pero como es un valor concreto 1082 00:47:06,530 --> 00:47:08,010 Exacto 1083 00:47:08,010 --> 00:47:10,690 Los enteros para valores 1084 00:47:10,690 --> 00:47:11,550 Exactos 1085 00:47:11,550 --> 00:47:28,000 Si tú has creado 1086 00:47:28,000 --> 00:47:29,840 Fuera del switch una variable 1087 00:47:29,840 --> 00:47:31,559 En todo el switch la puedes ver 1088 00:47:31,559 --> 00:47:34,300 Si tú has creado una variable 1089 00:47:34,300 --> 00:47:36,420 Dentro del switch, fuera del switch 1090 00:47:36,420 --> 00:47:37,300 No la puedes ver 1091 00:47:37,300 --> 00:47:39,619 Si tú al case 5 1092 00:47:39,619 --> 00:47:41,119 Has creado un bloque 1093 00:47:41,119 --> 00:47:43,480 Que se cierra aquí 1094 00:47:43,480 --> 00:47:44,460 ¿Vale? 1095 00:47:44,679 --> 00:47:46,960 Y aquí dentro creas una variable 1096 00:47:46,960 --> 00:47:49,760 Esta no se ve en los otros bloques 1097 00:47:49,760 --> 00:47:59,400 Sería switch 1098 00:47:59,400 --> 00:48:01,340 Inicial 1099 00:48:01,340 --> 00:48:02,800 Case 1100 00:48:02,800 --> 00:48:05,260 Apóstrofe a apóstrofe 1101 00:48:05,260 --> 00:48:05,960 Haz algo 1102 00:48:05,960 --> 00:48:08,920 Case apóstrofe b a apóstrofe 1103 00:48:08,920 --> 00:48:09,440 Haz algo 1104 00:48:09,440 --> 00:48:11,480 Ten en cuenta que son mayúsculas y minúsculas 1105 00:48:11,480 --> 00:48:18,769 Asumamos que no 1106 00:48:18,769 --> 00:48:21,190 Si yo por ejemplo quisiera hacerlo 1107 00:48:21,190 --> 00:48:23,429 Case not case sensitive 1108 00:48:23,429 --> 00:48:25,210 Es decir, que me da igual mayúscula o minúscula 1109 00:48:25,210 --> 00:48:26,090 Lo podría hacer así 1110 00:48:26,090 --> 00:48:29,050 Case a mayúscula, case a minúscula 1111 00:48:29,050 --> 00:48:30,110 Haz lo mismo 1112 00:48:30,110 --> 00:48:31,449 Si 1113 00:48:31,449 --> 00:48:36,630 Si quieres leer, si 1114 00:48:36,630 --> 00:48:38,230 Si no quieres leer, no 1115 00:48:38,230 --> 00:48:42,599 Si yo hago char 1116 00:48:42,599 --> 00:48:44,719 Iniciales igual a 1117 00:48:44,719 --> 00:48:47,139 Es que 1118 00:48:47,139 --> 00:48:50,000 Es otro tipo de problema 1119 00:48:50,000 --> 00:48:52,059 Está claro que si tú quieres hacer algo 1120 00:48:52,059 --> 00:48:54,000 Que funciona y que es el usuario 1121 00:48:54,000 --> 00:48:55,260 Que se vente allí a trabajar 1122 00:48:55,260 --> 00:48:57,679 Pues posiblemente tienes que dialogar con el usuario 1123 00:48:57,679 --> 00:48:58,719 ¿Vale? Pero 1124 00:48:58,719 --> 00:49:00,880 Es independiente del switch 1125 00:49:00,880 --> 00:49:03,420 El switch funciona tanto con escáner como sin escáner 1126 00:49:03,420 --> 00:49:04,340 Tú me preguntas 1127 00:49:04,340 --> 00:49:07,239 ¿Es indispensable usar escáner para hacer esto? 1128 00:49:07,320 --> 00:49:07,579 Pues no 1129 00:49:07,579 --> 00:49:10,480 Podría ser que esta nota 1130 00:49:10,480 --> 00:49:13,159 Sea leída como posición 1131 00:49:13,159 --> 00:49:22,159 en una string. Yo voy a hacer el charat 37, que es un simbolito y ese simbolito luego lo miro, ¿sabes? 1132 00:49:22,159 --> 00:49:33,340 Haremos ejemplo. No sé si hay algo más. Ejercicio 3.1, ¿sabes? Entonces aquí nos paramos, hemos