1 00:00:00,500 --> 00:00:12,300 Vale, no perdáis nunca el contexto de donde estamos, porque tenéis que conocer de qué estamos hablando para luego poder vosotros hablar con propiedad cuando se hagan entrevistas o tengáis que empezar a trabajar, ¿vale? 2 00:00:12,300 --> 00:00:16,699 No olvidéis nunca saber en qué contexto nos estamos moviendo. 3 00:00:18,019 --> 00:00:24,019 Vale, pues ahora nos estamos moviendo en el contexto de la programación estructurada, ¿verdad? 4 00:00:24,019 --> 00:00:44,289 Y a ver, ¿alguien me podría decir por qué se caracterizaba la programación estructurada? 5 00:00:45,710 --> 00:00:47,229 ¿Quién me lo dice? ¿Algún voluntario? 6 00:00:52,960 --> 00:00:56,799 No exactamente, ¿qué era lo más característico de ella? 7 00:00:57,520 --> 00:01:01,179 La programación estructurada, ¿por qué está basada exclusivamente en qué? 8 00:01:04,760 --> 00:01:06,939 En dos tipos de sentencias, ¿vale? 9 00:01:06,980 --> 00:01:09,700 Recordad que el teorema de la estructura decía 10 00:01:09,700 --> 00:01:13,640 que cualquier problema que yo quiera resolver con un ordenador 11 00:01:13,640 --> 00:01:17,599 lo puedo hacer combinando en secuencia, una tras otra, 12 00:01:17,760 --> 00:01:22,420 combinando en secuencia, sentencias selectivas y repetitivas. 13 00:01:24,599 --> 00:01:27,459 Entonces, una vez llegada esa conclusión, 14 00:01:28,000 --> 00:01:32,299 se desarrollan lenguajes de programación que tienen esas sentencias 15 00:01:32,299 --> 00:01:37,620 y punto de pelota, añadiendo, por supuesto, la posibilidad de usar variables, 16 00:01:37,620 --> 00:01:42,400 Porque es inevitable, si los programas trabajan con datos, esos datos tienen que estar en algún sitio. 17 00:01:43,060 --> 00:01:50,680 Bueno, pues obviamente los lenguajes de programación tienen la posibilidad de declarar, crear y asignar valor a las variables 18 00:01:50,680 --> 00:01:58,519 y luego ya con esos valores que están en las variables, cualquier cosa que uno quiera hacer, cualquier transformación que uno quiera hacer con esos datos, 19 00:01:58,519 --> 00:02:07,260 cualquier operación, cualquier problema que se le plante, lo puede hacer combinando en secuencia estructuras selectivas y repetitivas. 20 00:02:07,620 --> 00:02:13,020 o lo que es lo mismo, que nos suena más el nombre, decisiones y bucles, y ya está. 21 00:02:13,240 --> 00:02:17,659 El problema es decidir exactamente cuál es la secuencia para construir algoritmo, ¿verdad? 22 00:02:19,319 --> 00:02:24,259 ¿Vale? Pues esa es la programación estructurada y esa es toda la programación que hay. 23 00:02:24,340 --> 00:02:28,680 Otra cosa es que luego la metamos en unas estructuras más eficientes para reutilizar, 24 00:02:28,800 --> 00:02:29,879 como la programación en todo objeto. 25 00:02:31,479 --> 00:02:37,139 Pero la programación que conocemos y que programamos, salvo para aplicaciones muy específicas, 26 00:02:37,620 --> 00:02:42,099 o basadas en otro tipo de computación o inteligencia artificial, todas son estructuradas, sí o sí. 27 00:02:42,219 --> 00:02:46,960 Entonces, da igual que aprendáis Java, que aprendáis Python, que aprendáis lo que sea, porque es lo mismo. 28 00:02:48,259 --> 00:02:54,219 Bueno, pues entonces, si cualquier programa se puede realizar combinando estructuras selectivas y repetitivas, 29 00:02:54,680 --> 00:02:55,840 vámonos con la primera, ¿verdad? 30 00:02:56,400 --> 00:03:02,400 Porque todo lo relacionado con variables primitivas, claro, con variables primitivas, 31 00:03:02,400 --> 00:03:04,520 aunque ahora no entendamos lo que significa primitiva. 32 00:03:04,520 --> 00:03:08,939 Primitiva es entender qué significa que no es variable objetos. 33 00:03:09,039 --> 00:03:10,979 Hay dos tipos de variables, primitivas y objetos. 34 00:03:11,240 --> 00:03:13,500 Las objetos no las conocemos todavía si las hemos manejado. 35 00:03:14,159 --> 00:03:19,020 Y sobre las variables primitivas, que son las que hemos visto, ya sabemos todo lo que hay que saber. 36 00:03:20,379 --> 00:03:31,900 Bueno, pues vamos a incorporar entonces las estructuras, las sentencias selectivas. 37 00:03:31,900 --> 00:03:33,800 que es lo que 38 00:03:33,800 --> 00:03:36,719 o ya podemos llamar 39 00:03:36,719 --> 00:03:38,099 las sentencias de decisión 40 00:03:38,099 --> 00:03:43,219 bueno pues esto incluye 41 00:03:43,219 --> 00:03:45,719 la primera de dos necesidades 42 00:03:45,719 --> 00:03:47,580 que hay que satisfacer 43 00:03:47,580 --> 00:03:48,960 y solo esas dos, repito 44 00:03:48,960 --> 00:03:49,699 solo esas dos 45 00:03:49,699 --> 00:03:52,319 que es la posibilidad de 46 00:03:52,319 --> 00:03:55,439 en función de una condición 47 00:03:55,439 --> 00:03:57,560 y siempre en función 48 00:03:57,560 --> 00:03:58,680 de una condición 49 00:03:58,680 --> 00:04:01,639 no hay otra, en función de una condición 50 00:04:01,639 --> 00:04:03,639 ya sabemos lo que es una condición 51 00:04:03,639 --> 00:04:06,439 Una condición es algo que puede ser true o false 52 00:04:06,439 --> 00:04:07,520 Solo tiene dos posibilidades 53 00:04:07,520 --> 00:04:08,979 Una condición no es verdad o es mentira 54 00:04:08,979 --> 00:04:11,639 Una condición no puede ser 7 o puede ser 5 55 00:04:11,639 --> 00:04:13,199 O puede ser, hola, ¿qué tal? 56 00:04:13,340 --> 00:04:16,519 No, una condición es algo que puede tomar solo dos valores 57 00:04:16,519 --> 00:04:17,300 Verdad o mentira 58 00:04:17,300 --> 00:04:20,519 Entonces lo podemos guardar en variables Boolean 59 00:04:20,519 --> 00:04:21,139 Si queremos 60 00:04:21,139 --> 00:04:23,600 Bueno, pues en función de una condición 61 00:04:23,600 --> 00:04:25,120 Que ya entendemos lo que es 62 00:04:25,120 --> 00:04:27,720 Y sabemos cómo construirlas en Java 63 00:04:27,720 --> 00:04:30,000 Operadores relacionales 64 00:04:30,000 --> 00:04:32,060 Y a su vez combinados con Anior 65 00:04:32,060 --> 00:04:32,800 No hay otra 66 00:04:33,279 --> 00:04:35,519 Bueno, pues en función de una condición decidir un camino. 67 00:04:36,540 --> 00:04:41,300 ¿Mi programa va por el camino 1 o mi programa va por el camino 2? 68 00:04:42,740 --> 00:04:43,180 ¿Vale? 69 00:04:44,480 --> 00:04:47,620 Pues satisface esta necesidad que tiene todo el sentido del mundo. 70 00:04:48,279 --> 00:04:53,500 Yo puedo querer que mi programa haga una cosa o haga otra en función de valores de datos de entrada, 71 00:04:53,740 --> 00:04:59,100 en función de cosas que han pasado, es decir, en función de cosas que yo meto en una condición. 72 00:04:59,939 --> 00:05:00,139 ¿Vale? 73 00:05:00,139 --> 00:05:03,279 pues entonces en función de cosas que yo meto 74 00:05:03,279 --> 00:05:05,060 una condición que normalmente es 75 00:05:05,060 --> 00:05:07,060 efectivamente calibra datos de entrada 76 00:05:07,060 --> 00:05:08,579 en función de eso 77 00:05:08,579 --> 00:05:11,279 pues yo tiro, mi programa tira por un camino 78 00:05:11,279 --> 00:05:13,040 o mi programa tira 79 00:05:13,040 --> 00:05:14,199 por otro camino 80 00:05:14,199 --> 00:05:16,500 ¿vale? recorre 81 00:05:16,500 --> 00:05:18,779 esa necesidad que es inevitable 82 00:05:18,779 --> 00:05:21,540 el programa puede hacer cosas distintas 83 00:05:21,540 --> 00:05:23,180 en función de 84 00:05:23,180 --> 00:05:24,660 circunstancias distintas 85 00:05:24,660 --> 00:05:27,620 ¿vale? 86 00:05:28,720 --> 00:05:29,819 entonces el programa 87 00:05:29,819 --> 00:05:32,240 Si la condición se cumple, tira por un lado 88 00:05:32,240 --> 00:05:34,620 Si la condición no se cumple, tira por otro lado 89 00:05:34,620 --> 00:05:35,220 No hay otra 90 00:05:35,220 --> 00:05:36,920 Porque la condición no se cumple, no 91 00:05:36,920 --> 00:05:37,980 ¿Vale? 92 00:05:38,040 --> 00:05:40,000 No es que esto de 93 00:05:40,000 --> 00:05:43,819 Así, esta estructura así 94 00:05:43,819 --> 00:05:46,699 Varios caminos en función de una condición 95 00:05:46,699 --> 00:05:47,579 No tiene sentido 96 00:05:47,579 --> 00:05:50,600 Porque la condición no es verdad o es mentira 97 00:05:50,600 --> 00:05:51,920 Con lo cual, de una condición 98 00:05:51,920 --> 00:05:53,560 Solo pueden salir dos caminos 99 00:05:53,560 --> 00:05:55,319 ¿Vale? 100 00:05:55,360 --> 00:05:56,220 Esa primera cosa 101 00:05:56,220 --> 00:05:58,800 Que parece trivial, pero tenemos que tener clara 102 00:05:58,800 --> 00:06:00,920 para tener la cabeza estructurada 103 00:06:00,920 --> 00:06:03,800 de una condición solo pueden partir dos caminos 104 00:06:03,800 --> 00:06:06,939 esto es lo que se representa 105 00:06:06,939 --> 00:06:09,319 ¿recordáis del primer día o segundo día de clase? 106 00:06:09,680 --> 00:06:13,420 cuando hablábamos de que hay herramientas 107 00:06:13,420 --> 00:06:15,879 cuando uno está en esa fase previa de análisis y diseño 108 00:06:15,879 --> 00:06:18,379 que es la fase más importante de la programación 109 00:06:18,379 --> 00:06:21,160 cuando uno está entendiendo lo que tiene que hacer 110 00:06:21,160 --> 00:06:24,459 y empezando a pensar cómo puede construirlo 111 00:06:24,459 --> 00:06:27,399 todavía sin lenguaje de programación 112 00:06:27,399 --> 00:06:29,819 sino grabador y sin nada, con papel y lápiz y ya está 113 00:06:29,819 --> 00:06:31,680 pues cuando estábamos en esa fase 114 00:06:31,680 --> 00:06:33,319 hablábamos de que uno entonces 115 00:06:33,319 --> 00:06:35,779 pues se hace sus diagramitas, se escribe sus cosas 116 00:06:35,779 --> 00:06:37,420 y uno de los diagramitas 117 00:06:37,420 --> 00:06:39,319 que más sirven para clarificar 118 00:06:39,319 --> 00:06:42,040 cómo podemos hacer un algoritmo 119 00:06:42,040 --> 00:06:43,759 mencionamos que eran 120 00:06:43,759 --> 00:06:45,620 los diagramas de flujo 121 00:06:45,620 --> 00:06:46,660 ¿verdad? 122 00:06:56,240 --> 00:06:57,639 entonces un diagrama de flujo 123 00:06:57,639 --> 00:06:59,779 es la expresión gráfica 124 00:06:59,779 --> 00:07:01,120 de un algoritmo 125 00:07:01,120 --> 00:07:03,959 entonces ahora ya si nos es más útil 126 00:07:03,959 --> 00:07:05,800 pues para entender nuestros algoritmos 127 00:07:05,800 --> 00:07:07,420 que tienen decisiones, bucles 128 00:07:07,420 --> 00:07:09,680 ahora ya sí que puede ser más interesante 129 00:07:09,680 --> 00:07:11,600 cuando solamente teníamos asignación a sentencias 130 00:07:11,600 --> 00:07:13,439 el diagrama de flujo no tenía nada 131 00:07:13,439 --> 00:07:15,779 ahora ya sí que puede ser más útil 132 00:07:15,779 --> 00:07:17,800 expresión gráfica 133 00:07:19,319 --> 00:07:26,930 de un algoritmo 134 00:07:26,930 --> 00:07:30,610 recordad que el algoritmo 135 00:07:30,610 --> 00:07:32,629 es la secuencia ordenada 136 00:07:32,629 --> 00:07:33,910 de sentencias 137 00:07:33,910 --> 00:07:36,829 pues la expresión gráfica de esa secuencia de sentencias 138 00:07:36,829 --> 00:07:40,470 bueno pues una sentencia 139 00:07:40,470 --> 00:07:52,040 sentencia de una sentencia selectiva, ¿qué aspecto tiene en un diagrama de flujo? Pues 140 00:07:52,040 --> 00:07:56,620 el siguiente, los diagramas de flujo, cuando los veis en documentación, cuando estáis 141 00:07:56,620 --> 00:08:00,220 estudiando por internet para entender algoritmos, para hacer cosas, los diagramas de flujo 142 00:08:00,220 --> 00:08:04,540 veréis que suelen tener este aspecto. Un punto que es el punto que es el que se considera 143 00:08:04,540 --> 00:08:10,120 de inicio. Ahí el programa arranca, inicio, ahí empieza nuestro algoritmo. El programa 144 00:08:10,120 --> 00:08:12,000 tiene una línea de ejecución, va por aquí 145 00:08:12,000 --> 00:08:14,339 el programa y va haciendo las sentencias 146 00:08:14,339 --> 00:08:15,360 una tras otra 147 00:08:15,360 --> 00:08:18,019 las sentencias de asignación 148 00:08:18,019 --> 00:08:19,500 que son las únicas que hemos dado hasta ahora 149 00:08:19,500 --> 00:08:22,000 asignar valor a una variable, sentencias de asignación 150 00:08:22,000 --> 00:08:23,959 pues se mete en un cuadradito 151 00:08:23,959 --> 00:08:25,980 por ejemplo, si yo quisiera 152 00:08:25,980 --> 00:08:28,319 a una variable n asignarle el valor 7 153 00:08:28,319 --> 00:08:29,519 pues 154 00:08:29,519 --> 00:08:31,819 lo podría ir en un cuadradito 155 00:08:31,819 --> 00:08:33,340 por ejemplo, ¿vale? 156 00:08:33,720 --> 00:08:35,779 cualquier sentencia de asignación, un cuadradito 157 00:08:35,779 --> 00:08:37,940 para decir, aquí asigno este valor, aquí asigno este valor 158 00:08:37,940 --> 00:08:39,980 son las únicas sentencias que hemos visto hasta ahora 159 00:08:39,980 --> 00:08:42,679 las que asignan valores a variables 160 00:08:42,679 --> 00:08:47,559 para que os familiaricéis con los diagramas de flujo 161 00:08:47,559 --> 00:08:52,679 cuando la asignación a una variable viene del exterior 162 00:08:52,679 --> 00:08:55,980 de la consola, de un fichero 163 00:08:55,980 --> 00:09:00,179 este cuadradito se cambia y se convierte en un romboide 164 00:09:00,179 --> 00:09:05,720 porque el romboide implica sentencia de entrada desde el exterior 165 00:09:05,720 --> 00:09:07,679 o salida al exterior 166 00:09:07,679 --> 00:09:11,620 Entonces, si yo aquí quisiera leer del exterior 167 00:09:11,620 --> 00:09:13,840 Pues lo que se suele poner es esto 168 00:09:13,840 --> 00:09:15,179 Leer n 169 00:09:15,179 --> 00:09:18,360 Pues esto ya sabemos cómo se programa en Java 170 00:09:18,360 --> 00:09:23,419 Pues n igual a scan.nextin y ya está 171 00:09:23,419 --> 00:09:25,379 Esto ya como se programa en Java es lo de menos 172 00:09:25,379 --> 00:09:26,559 ¿Vale? 173 00:09:26,620 --> 00:09:28,120 Pero esto es una asignación más 174 00:09:28,120 --> 00:09:29,980 Una asignación más donde a n 175 00:09:29,980 --> 00:09:34,220 Lo que se le asigna es un valor recogido de fuera 176 00:09:34,220 --> 00:09:35,460 Pero es una asignación 177 00:09:35,460 --> 00:09:36,419 ¿Vale? 178 00:09:36,419 --> 00:09:38,820 pero bueno, para indicar que es una asignación especial 179 00:09:38,820 --> 00:09:40,360 porque el valor viene recogido de fuera 180 00:09:40,360 --> 00:09:42,419 en los derramas de flujo 181 00:09:42,419 --> 00:09:44,000 se puede resultar con el romboide 182 00:09:44,000 --> 00:09:46,279 y cuando mostramos por consola 183 00:09:46,279 --> 00:09:47,799 igual, cuando mostramos por consola 184 00:09:47,799 --> 00:09:49,539 como se entiende que es una salida hacia afuera 185 00:09:49,539 --> 00:09:52,059 pues también se pone como un romboide 186 00:09:52,059 --> 00:09:53,700 por ejemplo así 187 00:09:53,700 --> 00:09:55,320 mostrar n 188 00:09:55,320 --> 00:09:57,720 y ya sabemos como se muestra n en java 189 00:09:57,720 --> 00:09:59,379 si luego queremos programar esto en java 190 00:09:59,379 --> 00:10:01,440 pues system.out.print n 191 00:10:01,440 --> 00:10:04,519 bueno, entonces las sentencias que hemos visto 192 00:10:04,519 --> 00:10:05,980 hasta ahora eran esas, asignaciones 193 00:10:05,980 --> 00:10:08,480 a variables previamente declaradas 194 00:10:08,480 --> 00:10:10,559 claro, previamente declaradas 195 00:10:10,559 --> 00:10:11,759 y ya está 196 00:10:11,759 --> 00:10:13,039 y mostrar por consola 197 00:10:13,039 --> 00:10:14,600 vale 198 00:10:14,600 --> 00:10:18,100 en los diagramas de flujo las declaraciones 199 00:10:18,100 --> 00:10:19,879 no tienen sentido 200 00:10:19,879 --> 00:10:22,279 porque que una variable se declare o no 201 00:10:22,279 --> 00:10:24,039 ya dependerá del lenguaje de declaración 202 00:10:24,039 --> 00:10:25,580 que estemos usando, el lenguaje de declaración 203 00:10:25,580 --> 00:10:27,559 que exige la declaración previa 204 00:10:27,559 --> 00:10:29,639 es decir, esto 205 00:10:29,639 --> 00:10:32,299 antes de que la variable se pueda usar 206 00:10:32,299 --> 00:10:33,059 para lo que sea 207 00:10:33,059 --> 00:10:37,360 y hay lenguajes que no exigen la declaración previa. 208 00:10:37,879 --> 00:10:39,799 En el momento en el que se usa por primera vez, 209 00:10:40,559 --> 00:10:43,259 el lenguaje de pronunciación automáticamente la declara. 210 00:10:44,840 --> 00:10:48,320 Entonces la declaración como tal, como es específica ya del lenguaje, 211 00:10:49,159 --> 00:10:52,440 no se incluye en los diagramas de flujo. 212 00:10:52,519 --> 00:10:55,639 Los diagramas de flujo se incluyen las acciones, lo que hace cosas, 213 00:10:56,740 --> 00:11:02,019 pues como asignaciones, lecturas desde el exterior o llevar cuentas. 214 00:11:02,019 --> 00:11:03,919 vale, bueno, pues entonces 215 00:11:03,919 --> 00:11:07,240 vamos a suponer que nuestro diagrama de flujo 216 00:11:07,240 --> 00:11:08,879 además tenemos una decisión 217 00:11:08,879 --> 00:11:10,460 en función del valor de n 218 00:11:10,460 --> 00:11:14,480 es decir, primero lo leemos 219 00:11:14,480 --> 00:11:18,440 leer la variable n 220 00:11:18,440 --> 00:11:21,000 tendríamos la primera sentencia de nuestro 221 00:11:21,000 --> 00:11:22,840 algoritmo 222 00:11:22,840 --> 00:11:24,360 y ahora 223 00:11:24,360 --> 00:11:26,679 este programita ejemplo 224 00:11:26,679 --> 00:11:28,059 pues que va a hacer 225 00:11:28,059 --> 00:11:29,480 pues por ejemplo lo que hicimos el otro día 226 00:11:29,480 --> 00:11:31,720 mostrar si la variable 227 00:11:31,720 --> 00:11:32,840 es par o impar 228 00:11:32,840 --> 00:11:35,399 ¿vale? entonces 229 00:11:35,399 --> 00:11:37,620 el programa puede hacer 230 00:11:37,620 --> 00:11:39,580 dos cosas distintas, o lo que es lo mismo 231 00:11:39,580 --> 00:11:41,179 el programa tiene dos caminos 232 00:11:41,179 --> 00:11:43,360 o bien el programa 233 00:11:43,360 --> 00:11:44,139 me muestra 234 00:11:44,139 --> 00:11:46,840 es par 235 00:11:46,840 --> 00:11:49,639 o bien el 236 00:11:49,639 --> 00:11:50,799 programa me muestra 237 00:11:50,799 --> 00:11:56,879 es impar, tiene dos caminos 238 00:11:56,879 --> 00:11:57,419 en realidad 239 00:11:57,419 --> 00:12:01,019 ¿vale? pero esto no se puede poner así, lógicamente 240 00:12:01,019 --> 00:12:04,279 ¿Y cuándo voy por este camino y cuándo voy por este otro? 241 00:12:04,860 --> 00:12:06,440 Pues depende de una decisión 242 00:12:06,440 --> 00:12:08,980 En cuanto a un programa se le abren dos caminos 243 00:12:08,980 --> 00:12:12,659 Es decir, tiene la opción de hacer dos cosas distintas 244 00:12:12,659 --> 00:12:13,620 Si yo lo identifico 245 00:12:13,620 --> 00:12:15,879 Y este lo tiene identificado claramente 246 00:12:15,879 --> 00:12:17,500 Tiene la opción de hacer dos cosas distintas 247 00:12:17,500 --> 00:12:19,899 O mostrar es par o mostrar es impar 248 00:12:19,899 --> 00:12:23,100 Pues cuando yo identifico que un programa tiene dos caminos 249 00:12:23,100 --> 00:12:27,620 Automáticamente, como ya hemos practicado con ese operador ternario 250 00:12:27,620 --> 00:12:29,580 Pues automáticamente tenemos que pensar 251 00:12:29,580 --> 00:12:31,000 En función de qué condición 252 00:12:31,000 --> 00:12:34,139 Si hay dos caminos posibles, tiene que haber una condición asociada 253 00:12:34,139 --> 00:12:35,639 No hay otra 254 00:12:35,639 --> 00:12:38,179 En cuanto yo identifico dos posibles ramas 255 00:12:38,179 --> 00:12:39,539 De actuación del programa 256 00:12:39,539 --> 00:12:41,440 Automática ya tengo que decir 257 00:12:41,440 --> 00:12:43,200 Vale, ¿y cuál es la condición? 258 00:12:43,899 --> 00:12:45,620 Que fija si voy por aquí o soy por aquí 259 00:12:45,620 --> 00:12:47,179 Bueno, pues en este caso 260 00:12:47,179 --> 00:12:49,320 Ya pusimos el otro día que hicimos el programa 261 00:12:49,320 --> 00:12:51,600 Dijimos, bueno, pues la condición para ver si un número es par 262 00:12:51,600 --> 00:12:53,220 O impar es 263 00:12:53,220 --> 00:12:55,580 Si el resto de dividir 264 00:12:55,580 --> 00:12:57,639 Ese número entre dos 265 00:12:57,639 --> 00:12:58,860 Me da igual a cero 266 00:12:58,860 --> 00:13:00,399 vale, esto es escrito en Java 267 00:13:00,399 --> 00:13:02,759 vale, esto ya es escrito en Java 268 00:13:02,759 --> 00:13:04,200 pero la condición en realidad es 269 00:13:04,200 --> 00:13:05,779 resto de dividir entre 2 es 0 270 00:13:05,779 --> 00:13:07,500 vale, pues ya tengo la condición 271 00:13:07,500 --> 00:13:10,559 pues entonces esto en el diagrama de flujo 272 00:13:10,559 --> 00:13:12,120 lo veríamos así 273 00:13:12,120 --> 00:13:14,740 la condición 274 00:13:14,740 --> 00:13:17,320 se pone siempre en un rombo 275 00:13:17,320 --> 00:13:18,600 vale 276 00:13:18,600 --> 00:13:27,070 entonces lo puedo poner en mi propio lenguaje 277 00:13:27,070 --> 00:13:28,190 aquí no estoy programando 278 00:13:28,190 --> 00:13:29,929 vale, aquí no estoy programando 279 00:13:29,929 --> 00:13:32,230 aquí yo sé que la condición es n es par 280 00:13:32,230 --> 00:13:33,110 esa es la condición 281 00:13:33,110 --> 00:13:36,029 ahora otra cosa es como la programe yo cuando vaya a codificar 282 00:13:36,029 --> 00:13:37,909 esto, dependerá del lenguaje 283 00:13:37,909 --> 00:13:39,970 pero yo tengo que aislar la condición 284 00:13:39,970 --> 00:13:41,909 la condición para indicar 285 00:13:41,909 --> 00:13:43,690 si voy por un camino o si voy por otro 286 00:13:43,690 --> 00:13:45,090 es que n sea par 287 00:13:45,090 --> 00:13:47,929 ¿vale? bueno, pues del rombito 288 00:13:47,929 --> 00:13:49,610 que diga la condición, tienen que salir 289 00:13:49,610 --> 00:13:51,830 dos ramas obligatoriamente 290 00:13:51,830 --> 00:13:53,929 dos, tienen que salir 291 00:13:53,929 --> 00:13:55,710 la rama de lo que se hace, cuando 292 00:13:55,710 --> 00:13:57,429 sí se cumple y la rama de la que no 293 00:13:57,429 --> 00:13:59,750 y cuando se cumple 294 00:13:59,750 --> 00:14:01,950 nos llevará ya a una sentencia 295 00:14:01,950 --> 00:14:09,610 o muchas. No te duermas, anda. ¿Vale? A una o muchas. Y cuando es que no, me tiene que 296 00:14:09,610 --> 00:14:15,950 llevar por otro camino, a otra serie de sentencias, a una o muchas. En este caso solo hay una, 297 00:14:16,049 --> 00:14:19,990 pero bueno, a lo mejor podría haber más por aquí. En este caso solo hay una, podría 298 00:14:19,990 --> 00:14:25,269 haber más por aquí. Entonces, este es el diagrama de control de flujo de una sentencia 299 00:14:25,269 --> 00:14:29,610 de decisión o selectiva. El problema viene por donde venga. Tiene una única línea de 300 00:14:29,610 --> 00:14:36,710 ejecución, viene por aquí, de repente se encuentra una condición y en función de 301 00:14:36,710 --> 00:14:41,929 esa condición hay solo dos posibilidades, dos caminos, o voy por aquí o voy por aquí, 302 00:14:42,409 --> 00:14:48,610 hay dos caminos, si voy por aquí, aquí habrá ya una o más sentencias, en mi caso solo 303 00:14:48,610 --> 00:14:54,629 una, mostrar es par, si voy por aquí habrá una o más sentencias, en mi caso solo hay 304 00:14:54,629 --> 00:14:55,570 una muestra de sin par 305 00:14:55,570 --> 00:14:57,889 y luego que pasa, el programa sigue 306 00:14:57,889 --> 00:15:00,210 en dos ramas hasta el infinito 307 00:15:00,210 --> 00:15:03,129 no, si el programa está bien construido 308 00:15:03,129 --> 00:15:04,049 el algoritmo 309 00:15:04,049 --> 00:15:06,690 si el algoritmo está bien construido 310 00:15:06,690 --> 00:15:07,690 y lo he diseñado bien 311 00:15:07,690 --> 00:15:09,490 estas dos ramas 312 00:15:09,490 --> 00:15:12,370 una vez que se ha terminado lo que se hace 313 00:15:12,370 --> 00:15:13,409 en el caso de que sea par 314 00:15:13,409 --> 00:15:15,830 y una vez que se ha terminado lo que se hace cuando sea impar 315 00:15:15,830 --> 00:15:17,889 estas ramas tienen que juntar 316 00:15:17,889 --> 00:15:20,389 y ahora ya el programa continúa por aquí 317 00:15:20,389 --> 00:15:23,029 haciendo lo que sea que tenga que hacer 318 00:15:23,029 --> 00:15:25,450 hasta que ya termine 319 00:15:25,450 --> 00:15:28,409 ¿vale? este sería el inicio 320 00:15:28,409 --> 00:15:32,720 y este sería el fin 321 00:15:32,720 --> 00:15:34,460 ¿vale? 322 00:15:35,039 --> 00:15:37,679 pues esta es la expresión de la sentencia de decisión 323 00:15:37,679 --> 00:15:39,259 en el diagrama de flujo 324 00:15:39,259 --> 00:15:40,340 entonces verla 325 00:15:40,340 --> 00:15:43,860 nos ayuda sobre todo a entender una cosa 326 00:15:43,860 --> 00:15:44,340 y es 327 00:15:44,340 --> 00:15:48,159 que la sentencia de decisión en realidad es una única sentencia 328 00:15:48,159 --> 00:15:49,419 para Java, ¿qué es todo esto? 329 00:15:49,419 --> 00:15:51,480 ¿qué es todo esto? 330 00:15:51,519 --> 00:15:52,559 es una única sentencia 331 00:15:52,559 --> 00:15:53,740 todo esto 332 00:15:53,740 --> 00:15:56,440 lo que pasa es que es una sentencia compleja 333 00:15:56,440 --> 00:15:58,139 porque involucra muchas cosas dentro 334 00:15:58,139 --> 00:16:00,799 esta sentencia de asignación 335 00:16:00,799 --> 00:16:02,700 o lectura, esta sería 336 00:16:02,700 --> 00:16:03,659 la sentencia 1 337 00:16:03,659 --> 00:16:05,340 de mi algoritmo 338 00:16:05,340 --> 00:16:07,980 es sencilla, la sentencia 1 339 00:16:07,980 --> 00:16:10,480 la puedo programar solamente por una línea 340 00:16:10,480 --> 00:16:12,399 scan, next y lero 341 00:16:12,399 --> 00:16:14,840 sentencia 2, la sentencia 2 342 00:16:14,840 --> 00:16:16,379 esta es una sentencia 343 00:16:16,379 --> 00:16:17,360 selectiva ya 344 00:16:17,360 --> 00:16:20,840 esta es más compleja 345 00:16:20,840 --> 00:16:23,220 porque involucra poner la condición 346 00:16:23,220 --> 00:16:26,440 poner lo que hago en la rama del sí, poner lo que hago en la rama del no 347 00:16:26,440 --> 00:16:28,620 pero es una sentencia más que tiene que acabar 348 00:16:28,620 --> 00:16:33,019 tiene su inicio, que es aquí, y su fin, que es aquí cuando se juntan las dos cosas 349 00:16:33,019 --> 00:16:34,799 y es una sentencia dos 350 00:16:34,799 --> 00:16:38,779 ahora, después, vendrá una sentencia tres 351 00:16:38,779 --> 00:16:39,580 si es que la hay 352 00:16:39,580 --> 00:16:47,000 pero el programa siempre va a ser, como hemos dicho desde el principio 353 00:16:47,000 --> 00:16:50,299 una secuencia de sentencias, una tras otra 354 00:16:50,299 --> 00:16:52,980 una tras otra, esta de lectura 355 00:16:52,980 --> 00:16:55,759 esta selectiva, ahora la que hay después 356 00:16:55,759 --> 00:16:58,059 que puede ser despedirse, lo que sea 357 00:16:58,059 --> 00:16:59,860 siempre es una secuencia de sentencias 358 00:16:59,860 --> 00:17:02,039 y lo tengo que ver claro en mi diagrama 359 00:17:02,039 --> 00:17:03,700 de flujo, porque si no, he hecho un programa 360 00:17:03,700 --> 00:17:06,220 que no es estructurado y no lo puedo programar 361 00:17:06,220 --> 00:17:08,460 me puedo empezar a plantear 362 00:17:08,460 --> 00:17:10,059 empezar a programarlo y me sale 363 00:17:10,059 --> 00:17:11,099 algo que no tiene ningún sentido 364 00:17:11,099 --> 00:17:13,700 entonces el algoritmo, yo tengo que ver 365 00:17:13,700 --> 00:17:15,640 gráficamente claro que, hombre, que sí 366 00:17:15,640 --> 00:17:17,380 que esto es una secuencia de sentencias 367 00:17:17,380 --> 00:17:18,759 válidas 368 00:17:18,759 --> 00:17:21,359 esta es válida porque se va a programarla 369 00:17:21,359 --> 00:17:23,420 esta es válida, es la sentencia de decisión 370 00:17:23,420 --> 00:17:25,319 tal y como la hemos 371 00:17:25,319 --> 00:17:27,579 definido, las que vengan por aquí 372 00:17:27,579 --> 00:17:28,220 después 373 00:17:28,220 --> 00:17:31,539 vale, importante esto 374 00:17:31,539 --> 00:17:33,559 que cuando se acaba la rama 375 00:17:33,559 --> 00:17:35,759 del sí, lo que se hace cuando se cumple 376 00:17:35,759 --> 00:17:36,980 y cuando se acaba 377 00:17:36,980 --> 00:17:39,619 la rama del no, lo que hace cuando 378 00:17:39,619 --> 00:17:40,380 no se cumple 379 00:17:40,380 --> 00:17:42,880 ambas ramas vienen al mismo punto 380 00:17:42,880 --> 00:17:45,680 y el programa continúa por aquí 381 00:17:45,680 --> 00:17:48,079 vale, continúa por aquí 382 00:17:48,079 --> 00:17:49,839 y todo esto se seguirá 383 00:17:49,839 --> 00:17:51,579 haciendo independientemente 384 00:17:51,579 --> 00:17:53,059 de la condición porque ya está afuera 385 00:17:53,059 --> 00:18:00,319 Voy a poner el diagrama un poco más arriba 386 00:18:00,319 --> 00:18:15,599 Vamos a poner la sentencia aquí un poquito más arriba 387 00:18:15,599 --> 00:18:16,579 Esta es la condición 388 00:18:16,579 --> 00:18:18,400 La que sea 389 00:18:18,400 --> 00:18:23,099 Rama de sí se cumple 390 00:18:23,099 --> 00:18:25,000 Rama de no 391 00:18:25,000 --> 00:18:27,759 Aquí puede haber un montón de sentencias 392 00:18:27,759 --> 00:18:29,220 Las que sean, me dan igual 393 00:18:29,220 --> 00:18:32,440 Aquí puede haber un montón de sentencias 394 00:18:32,440 --> 00:18:33,980 Las que sean, me dan igual 395 00:18:33,980 --> 00:18:36,720 Cuando estas han terminado 396 00:18:36,720 --> 00:18:38,839 El programa ya continúa por aquí 397 00:18:38,839 --> 00:18:40,319 Cuando estas han terminado 398 00:18:40,319 --> 00:18:41,539 El programa continúa por aquí 399 00:18:41,539 --> 00:18:43,819 ¿Vale? 400 00:18:43,859 --> 00:18:45,339 Imaginamos que esta sentencia 1 401 00:18:45,339 --> 00:18:46,279 Sentencia 2 402 00:18:46,279 --> 00:18:47,400 Sentencia 3 403 00:18:47,400 --> 00:18:48,779 Sentencia 4 404 00:18:48,779 --> 00:18:49,859 Sentencia 5 405 00:18:49,859 --> 00:18:52,220 El programa continúa hasta que termine 406 00:18:52,220 --> 00:18:53,859 Y el programa viene por donde venga 407 00:18:53,859 --> 00:18:55,519 ¿Vale? 408 00:18:56,279 --> 00:18:58,640 Entonces el programa siempre tiene que ser tal 409 00:18:58,640 --> 00:19:01,799 Que cuando ya he terminado por esta rama 410 00:19:01,799 --> 00:19:03,359 O cuando ya he terminado por esta rama 411 00:19:03,359 --> 00:19:05,839 sigo por el mismo camino, sigo por aquí 412 00:19:05,839 --> 00:19:09,319 y esta sentencia la voy a hacer igual 413 00:19:09,319 --> 00:19:11,759 si la condición se ha cumplido o no 414 00:19:11,759 --> 00:19:15,559 porque esta sentencia ya está, la sentencia 5 ya está fuera 415 00:19:15,559 --> 00:19:18,460 de esta, ya está fuera 416 00:19:18,460 --> 00:19:20,019 de la decisión, ya está fuera 417 00:19:20,019 --> 00:19:24,079 si yo esta sentencia la quiero condicionar y que se haga solo 418 00:19:24,079 --> 00:19:27,460 si se cumple la condición o si no, entonces la tendría que mover 419 00:19:27,460 --> 00:19:29,319 ahí dentro, la tendría que mover 420 00:19:29,319 --> 00:19:31,339 ¿vale? 421 00:19:31,339 --> 00:19:34,420 Pero si no, esta sentencia 422 00:19:34,420 --> 00:19:36,519 Será la que se continúe 423 00:19:36,519 --> 00:19:39,039 Ejecutando, tanto si voy por la rama del sí 424 00:19:39,039 --> 00:19:40,460 Como si voy por la rama del no 425 00:19:40,460 --> 00:19:42,140 ¿Vale? 426 00:19:43,920 --> 00:19:45,119 A ver, podría ocurrir 427 00:19:45,119 --> 00:19:46,700 Que aquí el programa terminara 428 00:19:46,700 --> 00:19:48,500 Que no hubiera más sentencias, vale, pues ha terminado 429 00:19:48,500 --> 00:19:50,359 Estas dos ramas se han juntado 430 00:19:50,359 --> 00:19:52,259 Y lo que hay que hacer a continuación es ya 431 00:19:52,259 --> 00:19:54,119 Nada, por el programa terminado 432 00:19:54,119 --> 00:19:56,019 Bueno, pues no pasa nada, el programa terminado no se hace nada 433 00:19:56,019 --> 00:19:59,380 Pero tiene por qué, el programa puede ser que continúe haciendo cosas 434 00:19:59,380 --> 00:20:00,200 ¿Vale? 435 00:20:01,339 --> 00:20:03,660 bueno, pues esto 436 00:20:03,660 --> 00:20:05,400 aunque es una sentencia compleja 437 00:20:05,400 --> 00:20:07,859 esto tenemos que verlo 438 00:20:07,859 --> 00:20:09,640 como una única sentencia 439 00:20:09,640 --> 00:20:13,720 lo que pasa es que es una sentencia compleja 440 00:20:13,720 --> 00:20:15,559 porque a la hora de programarla 441 00:20:15,559 --> 00:20:16,700 tengo que programar un montón de cosas 442 00:20:16,700 --> 00:20:18,299 pero es una única sentencia 443 00:20:18,299 --> 00:20:21,759 que va detrás de una y delante de otra 444 00:20:21,759 --> 00:20:22,839 en secuencia 445 00:20:22,839 --> 00:20:25,859 una detrás de una y otra delante de otra 446 00:20:25,859 --> 00:20:27,920 y así tenemos que ver el programa 447 00:20:27,920 --> 00:20:30,059 porque cuando entendamos 448 00:20:30,059 --> 00:20:36,180 que eso es así, es una secuencia de cosas, es cuando ya podemos pensarlo, podemos pensar, 449 00:20:36,319 --> 00:20:39,940 cuando tenemos la atención concreta ya podemos pensar cómo programarla, tenemos que entender 450 00:20:39,940 --> 00:20:45,720 antes bien el funcionamiento, entonces es una secuencia, una sentencia tras otra y esta 451 00:20:45,720 --> 00:20:53,839 es una de ellas, la de selección. Bueno, pues entonces, para usarla uno tiene que identificar 452 00:20:53,839 --> 00:20:55,980 primero que la necesita, fundamental 453 00:20:55,980 --> 00:20:57,539 ¿vale? 454 00:20:57,700 --> 00:20:59,819 entonces, después de leer un enunciado 455 00:20:59,819 --> 00:21:01,839 entenderlo, pensarlo, es cuando uno identifica 456 00:21:01,839 --> 00:21:03,599 si la necesita, porque dice 457 00:21:03,599 --> 00:21:04,960 ah, vale, mi programa 458 00:21:04,960 --> 00:21:07,759 que este es su resultado, esto es lo que tiene que hacer 459 00:21:07,759 --> 00:21:09,259 o hace esto 460 00:21:09,259 --> 00:21:10,599 o hace esto otro 461 00:21:10,599 --> 00:21:13,440 o va por aquí o va por aquí 462 00:21:13,440 --> 00:21:15,220 depende de una condición, ah, vale 463 00:21:15,220 --> 00:21:17,380 pues identifico entonces que necesito 464 00:21:17,380 --> 00:21:19,180 una sentencia de 465 00:21:19,180 --> 00:21:21,220 selectiva 466 00:21:21,220 --> 00:21:23,460 vale, lo identifico 467 00:21:23,460 --> 00:21:28,660 que la necesito. Pues ahora ya la incorporo y voy construyendo mi programa. Pero primero 468 00:21:28,660 --> 00:21:33,019 tengo que identificar la necesito. Entonces la necesito, es una sentencia más y la pongo 469 00:21:33,019 --> 00:21:37,259 en mi programa. La pongo en mi programa dentro del conjunto de sentencias que él tenga. 470 00:21:38,759 --> 00:21:53,089 ¿Vale? Bueno, pues la tenemos clara y entendida, ¿cómo la programamos? Pues ya la parte de 471 00:21:53,089 --> 00:22:09,130 programarla es inmediata. En el ejemplo de en es par o impar. Aquí mostramos un mensaje, 472 00:22:09,269 --> 00:22:16,910 aquí mostramos otro. Y el programa llega por aquí y nos dice luego adiós. Entonces 473 00:22:16,910 --> 00:22:23,450 el adiós identificamos que va fuera, claro, porque decir adiós lo va a decir tanto si 474 00:22:23,450 --> 00:22:25,549 ha dado que es par o que ha dado que es impar 475 00:22:25,549 --> 00:22:27,029 entonces el adiós va afuera 476 00:22:27,029 --> 00:22:29,589 ¿vale? lo que va adentro solamente 477 00:22:29,589 --> 00:22:31,490 decir si es par 478 00:22:31,490 --> 00:22:36,140 o decir si 479 00:22:36,140 --> 00:22:36,799 es impar 480 00:22:36,799 --> 00:22:39,880 ¿vale? eso es lo que va 481 00:22:39,880 --> 00:22:41,839 lo que va afuera 482 00:22:41,839 --> 00:22:56,440 vale 483 00:22:56,440 --> 00:22:58,339 bueno pues ahora programar esto 484 00:22:58,339 --> 00:23:00,160 es inmediato 485 00:23:00,160 --> 00:23:02,539 la parte de antes 486 00:23:02,539 --> 00:23:03,859 que sería leer n 487 00:23:03,859 --> 00:23:08,230 bueno pues nuestro par vendría 488 00:23:08,230 --> 00:23:10,029 por aquí con su main 489 00:23:10,029 --> 00:23:13,660 Vendría por aquí 490 00:23:13,660 --> 00:23:16,039 Y ahora ya programarlo 491 00:23:16,039 --> 00:23:17,599 Pues es una tras otra 492 00:23:17,599 --> 00:23:18,500 Una tras otra 493 00:23:18,500 --> 00:23:21,680 Leer n, pues bueno, tenemos el escáner 494 00:23:21,680 --> 00:23:22,859 No sé qué, vamos a 495 00:23:22,859 --> 00:23:26,039 Aquí lo que fuera 496 00:23:26,039 --> 00:23:27,339 Para leer, ahora lo voy a escribir 497 00:23:27,339 --> 00:23:28,700 Porque me voy a... 498 00:23:28,700 --> 00:23:32,259 N ya está leído con un valor del teclado 499 00:23:32,259 --> 00:23:34,039 Y ahora ya tenemos que programar 500 00:23:34,039 --> 00:23:35,240 Esta sentencia 501 00:23:35,240 --> 00:23:36,099 Esta 502 00:23:36,099 --> 00:23:39,460 Vale, pues esa es una única sentencia, repito 503 00:23:39,460 --> 00:23:40,319 Que toca programar 504 00:23:40,319 --> 00:23:41,720 Pues como se programa 505 00:23:41,720 --> 00:23:44,880 Bueno, pues en cuanto tengo una sentencia de decisión la programo 506 00:23:44,880 --> 00:23:46,900 Empiezo con un if 507 00:23:46,900 --> 00:23:51,279 Pongo entre paréntesis la condición 508 00:23:51,279 --> 00:23:53,259 Ahora es el momento en el que tengo que pensar 509 00:23:53,259 --> 00:23:56,940 ¿Y cómo expreso yo mediante una condición este enunciado? 510 00:23:57,619 --> 00:23:59,380 Pues ahí ya enlazamos con lo del otro día 511 00:23:59,380 --> 00:24:02,619 Pues a ver, tengo un enunciado que en lenguaje natural lo entiendo perfectamente 512 00:24:02,619 --> 00:24:05,200 Ahora tengo que convertirlo a lenguaje Java 513 00:24:05,200 --> 00:24:08,480 Una expresión con operadores relacionales, operadores booleanos 514 00:24:08,480 --> 00:24:11,559 Bueno, en este caso ya la convertimos el otro día 515 00:24:11,559 --> 00:24:17,339 Y llegamos a la conclusión de que la expresión Java 516 00:24:17,339 --> 00:24:19,980 Que expresa esa condición es esta 517 00:24:19,980 --> 00:24:22,160 El resto de dividir entre 2 es igual a 0 518 00:24:22,160 --> 00:24:26,180 Vale, pues una vez que ya tenemos la condición 519 00:24:26,180 --> 00:24:27,680 Ahora ya tenemos que decir 520 00:24:27,680 --> 00:24:31,400 ¿Qué hacemos en la rama del sí y qué hacemos en la rama del no? 521 00:24:32,039 --> 00:24:33,259 Pues en la rama del sí 522 00:24:33,259 --> 00:24:38,460 Hacemos lo que metamos en unas primeras llaves 523 00:24:38,460 --> 00:24:40,420 Por cuestiones de estilo 524 00:24:40,420 --> 00:24:42,059 Para que el código no sea un chapucero 525 00:24:42,059 --> 00:24:43,880 Y te echen al día siguiente 526 00:24:43,880 --> 00:24:46,759 La llave se abre siempre 527 00:24:46,759 --> 00:24:47,380 Igual que en el mail 528 00:24:47,380 --> 00:24:49,680 La llave se abre siempre, la misma línea 529 00:24:49,680 --> 00:24:51,119 Donde arranca 530 00:24:51,119 --> 00:24:54,400 Y se cierra a la misma altura 531 00:24:54,400 --> 00:24:55,339 Donde empecé 532 00:24:55,339 --> 00:24:57,859 La sentencia en la que la abrí 533 00:24:57,859 --> 00:24:59,920 ¿Vale? 534 00:25:00,160 --> 00:25:02,619 Por favor, seguid siempre esas reglas de estilo 535 00:25:02,619 --> 00:25:04,400 Para que vuestros programas no sean un desastre 536 00:25:04,400 --> 00:25:05,140 Desde el principio 537 00:25:05,140 --> 00:25:07,519 Bueno, pues se abre aquí 538 00:25:07,519 --> 00:25:09,319 y le acero la misma línea 539 00:25:09,319 --> 00:25:11,299 y todo lo que ponga aquí, todo lo que ponga 540 00:25:11,299 --> 00:25:13,039 que puede ser una sentencia dos o mil 541 00:25:13,039 --> 00:25:14,460 todo lo que ponga 542 00:25:14,460 --> 00:25:17,500 es lo que se hace en la rama 543 00:25:17,500 --> 00:25:19,319 esta del sí, en este caso 544 00:25:19,319 --> 00:25:21,000 lo que se hace en la rama del sí era muy sencillo 545 00:25:21,000 --> 00:25:22,180 que era mostrar 546 00:25:22,180 --> 00:25:24,000 es par 547 00:25:24,000 --> 00:25:29,420 en este caso era solo esto 548 00:25:29,420 --> 00:25:31,940 pero podría ser 549 00:25:31,940 --> 00:25:34,000 más cosas, porque el programa hiciera más cosas 550 00:25:34,000 --> 00:25:36,000 en la rama del sí, en este caso es esto 551 00:25:36,000 --> 00:25:36,819 pues ya no meto más 552 00:25:36,819 --> 00:25:40,279 Ahora, ¿cómo indico lo que hago en la rama del no? 553 00:25:40,920 --> 00:25:42,099 Pues pongo aquí un else 554 00:25:42,099 --> 00:25:47,160 De nuevo, regla de estilo a continuación de la llave 555 00:25:47,160 --> 00:25:49,839 Y abro su llave 556 00:25:49,839 --> 00:25:57,359 Llave que voy a cerrar a la altura de la línea donde abrí la llave 557 00:25:57,359 --> 00:25:59,440 A esa altura 558 00:25:59,440 --> 00:26:01,000 ¿Vale? 559 00:26:01,160 --> 00:26:03,480 Y aquí pongo lo que se hace cuando no 560 00:26:03,480 --> 00:26:05,079 Lo que se hace cuando no 561 00:26:05,079 --> 00:26:08,400 En este caso, simplemente mostrar por consola es impar. 562 00:26:15,519 --> 00:26:16,980 ¿Vale? Pues ya está. 563 00:26:24,029 --> 00:26:26,589 Esa es la codificación tal cual de esa sentencia. 564 00:26:27,470 --> 00:26:28,769 Y la condición. 565 00:26:29,470 --> 00:26:31,670 La condición. Parte complicado, obviamente. 566 00:26:32,390 --> 00:26:34,210 Pensar qué condición necesitamos. 567 00:26:34,990 --> 00:26:37,150 La condición. Puede ser pequeña o puede ser enorme. 568 00:26:37,369 --> 00:26:40,190 La condición que sea. Puede tener un montón de andeos, la que sea. 569 00:26:41,109 --> 00:26:43,490 Entre las llaves bien colocadas, 570 00:26:43,890 --> 00:26:45,809 esto por estilo, no por obligación, 571 00:26:45,809 --> 00:26:47,470 Todas las sentencias que hago cuando sí 572 00:26:47,470 --> 00:26:49,529 Y cuando no 573 00:26:49,529 --> 00:26:52,569 Pues dentro de las llaves bien colocadas 574 00:26:52,569 --> 00:26:53,349 Después del else 575 00:26:53,349 --> 00:26:54,869 Y ya está 576 00:26:54,869 --> 00:26:56,630 Y ahora ya este punto 577 00:26:56,630 --> 00:26:58,349 Que es en el que se unen las dos 578 00:26:58,349 --> 00:26:59,089 Es este punto 579 00:26:59,089 --> 00:27:02,210 Ahora ya mi programa continúa por aquí 580 00:27:02,210 --> 00:27:04,470 Mi programa sigue a partir de aquí 581 00:27:04,470 --> 00:27:06,990 Y todo esto se va a hacer 582 00:27:06,990 --> 00:27:08,410 Me da igual que yo haya entrado 583 00:27:08,410 --> 00:27:10,089 Por sí, por el if 584 00:27:10,089 --> 00:27:11,190 O que haya entrado por el else 585 00:27:11,190 --> 00:27:12,529 Me da lo mismo 586 00:27:12,529 --> 00:27:15,349 El programa continúa con su siguiente sentencia 587 00:27:15,349 --> 00:27:17,450 ¿Veis? Tenemos ahora mismo dos 588 00:27:17,450 --> 00:27:20,170 Tenemos esta, que es la sentencia 1 589 00:27:20,170 --> 00:27:23,869 Esta otra, otra sentencia más 590 00:27:23,869 --> 00:27:26,029 Sentencia 2, llamémosle 591 00:27:26,029 --> 00:27:28,250 Y a partir de aquí las sentencias que sigan 592 00:27:28,250 --> 00:27:31,410 Sentencia 3, es una secuencia, una tras otra 593 00:27:31,410 --> 00:27:34,369 Una sentencia, otra, otra 594 00:27:34,369 --> 00:27:35,910 Y así se van ejecutando una tras otra 595 00:27:35,910 --> 00:27:38,410 Lo que pasa es que esta es una sentencia compleja 596 00:27:38,410 --> 00:27:40,809 Que incluye dos ramas 597 00:27:40,809 --> 00:27:43,730 Se hace esta o se hace la otra en función de esta condición 598 00:27:43,730 --> 00:27:45,630 Pero me da igual 599 00:27:45,630 --> 00:27:47,269 Haber entrado aquí que haber entrado aquí 600 00:27:47,269 --> 00:27:47,849 Me da igual 601 00:27:47,849 --> 00:27:51,710 Luego, una vez que ya he terminado con esto 602 00:27:51,710 --> 00:27:52,890 El programa continúa por aquí 603 00:27:52,890 --> 00:27:55,349 Que en este caso, pues podría ser mostrar 604 00:27:55,349 --> 00:27:59,579 El adiós 605 00:27:59,579 --> 00:28:01,420 O sea, el adiós, ahí lo muestro 606 00:28:01,420 --> 00:28:03,140 ¿Vale? 607 00:28:07,420 --> 00:28:09,140 Y esta sentencia se va a hacer 608 00:28:09,140 --> 00:28:09,880 Repito 609 00:28:09,880 --> 00:28:11,880 Me da igual haber entrado aquí que aquí 610 00:28:11,880 --> 00:28:20,099 Bueno, pues esa es la codificación 611 00:28:20,099 --> 00:28:21,660 Y con eso 612 00:28:21,660 --> 00:28:23,880 esa es la única sentencia selectiva 613 00:28:23,880 --> 00:28:25,680 que necesitaríamos, la única 614 00:28:25,680 --> 00:28:27,720 lo que pasa es que 615 00:28:27,720 --> 00:28:29,619 luego se hacen otras variantes 616 00:28:29,619 --> 00:28:31,720 para expresar 617 00:28:31,720 --> 00:28:33,700 de forma más sencilla a lo mejor situaciones 618 00:28:33,700 --> 00:28:35,819 concretas, que ya vamos 619 00:28:35,819 --> 00:28:37,859 a ir incorporando, pero otras variantes 620 00:28:37,859 --> 00:28:39,900 no son necesarias, son como diferentes 621 00:28:39,900 --> 00:28:41,619 posibilidades, es como hacer mesas 622 00:28:41,619 --> 00:28:43,759 de diferentes colores, pues con tener 623 00:28:43,759 --> 00:28:45,680 una del color que fuera 624 00:28:45,680 --> 00:28:47,720 podríamos tirar, pero si nos las dan 625 00:28:47,720 --> 00:28:49,339 de diferentes colores, pues mira, a lo mejor 626 00:28:49,339 --> 00:28:51,519 me pega mejor con la alfombra 627 00:28:51,519 --> 00:28:55,720 Pues aquí igual, la única sentencia que damos para programar 628 00:28:55,720 --> 00:28:59,279 En lo que a decisiones se refiere es esta 629 00:28:59,279 --> 00:29:00,579 Con esto podemos hacerlo todo 630 00:29:00,579 --> 00:29:04,119 Pero bueno, tiene pequeñas variantes 631 00:29:04,119 --> 00:29:07,119 Pues para adaptar situaciones 632 00:29:07,119 --> 00:29:09,359 Y que te quede el código más bonito 633 00:29:09,359 --> 00:29:11,279 Solamente para eso, que te quede el código más bonito 634 00:29:11,279 --> 00:29:13,140 Para nada más 635 00:29:13,140 --> 00:29:20,619 Bueno, alguna duda 636 00:29:20,619 --> 00:29:22,059 Entonces aquí los pasos son 637 00:29:22,059 --> 00:29:23,980 Primero, el más importante 638 00:29:23,980 --> 00:29:26,680 cuando uno está analizando y diseñando 639 00:29:26,680 --> 00:29:27,319 un código 640 00:29:27,319 --> 00:29:30,559 identificar cuando necesita 641 00:29:30,559 --> 00:29:32,519 esa sentencia, eso es lo más importante 642 00:29:32,519 --> 00:29:34,619 esto, lo que es escribir Java 643 00:29:34,619 --> 00:29:36,180 eso es lo de menos, es lo que menos nos importa 644 00:29:36,180 --> 00:29:38,119 en este módulo, en programación 645 00:29:38,119 --> 00:29:39,579 lo que menos nos importa es teclear código 646 00:29:39,579 --> 00:29:40,920 lo que más nos importa es 647 00:29:40,920 --> 00:29:44,559 identificar estructuras e incorporar 648 00:29:44,559 --> 00:29:47,259 patrones de pensamiento 649 00:29:47,259 --> 00:29:48,420 y destrezas lógicas 650 00:29:48,420 --> 00:29:50,119 es lo que nos importa, escribir código 651 00:29:50,119 --> 00:29:51,279 no nos da igual 652 00:29:51,279 --> 00:29:54,900 entonces, aquí lo importante es 653 00:29:54,900 --> 00:29:56,819 que cuando uno está en esa fase, analizar y enseñar un código 654 00:29:56,819 --> 00:29:59,099 identifique en un momento dado 655 00:29:59,099 --> 00:30:00,559 que lo que necesita es 656 00:30:00,559 --> 00:30:01,839 efectivamente dos ramas 657 00:30:01,839 --> 00:30:04,740 porque o bien hago esto o bien hago lo otro 658 00:30:04,740 --> 00:30:05,480 identificarlo 659 00:30:05,480 --> 00:30:07,460 pero tengo identificado 660 00:30:07,460 --> 00:30:10,059 dar el salto de y de que dependo 661 00:30:10,059 --> 00:30:12,740 pues ahí viene otra parte complicada 662 00:30:12,740 --> 00:30:13,299 que es 663 00:30:13,299 --> 00:30:16,000 identificar bien esa condición 664 00:30:16,000 --> 00:30:17,980 identificarla bien y luego ya 665 00:30:17,980 --> 00:30:21,140 ver como programarla 666 00:30:21,140 --> 00:30:23,059 eso ya sí, una vez que uno 667 00:30:23,059 --> 00:30:25,000 haya identificado la condición en su lenguaje 668 00:30:25,000 --> 00:30:26,740 natural, ver cómo 669 00:30:26,740 --> 00:30:28,700 trasladarla al lenguaje de programación 670 00:30:28,700 --> 00:30:29,359 la condición 671 00:30:29,359 --> 00:30:32,660 y luego ya, mete en la rama del sí esto 672 00:30:32,660 --> 00:30:33,720 en la rama del no esto 673 00:30:33,720 --> 00:30:36,319 y ya está, y tira 674 00:30:36,319 --> 00:30:38,940 ¿vale? 675 00:30:40,420 --> 00:30:40,859 vale 676 00:30:40,859 --> 00:30:42,440 bueno, vamos a 677 00:30:42,440 --> 00:30:44,480 bueno no, espera, como quedan tres minutos 678 00:30:44,480 --> 00:30:45,160 vamos a dejar esto 679 00:30:45,160 --> 00:30:48,380 entonces, en realidad hemos estado haciendo esto 680 00:30:48,380 --> 00:30:49,200 todo el rato 681 00:30:49,200 --> 00:30:51,920 cuando estábamos haciendo el operador 682 00:30:51,920 --> 00:30:52,900 ternario este famoso 683 00:30:52,900 --> 00:30:55,839 pero lo hemos estado haciendo para un caso muy concreto 684 00:30:55,839 --> 00:30:57,400 o sea, esto tal y como yo lo he hecho 685 00:30:57,400 --> 00:30:59,759 con el, mostrando aquí 686 00:30:59,759 --> 00:31:01,119 system out, system out 687 00:31:01,119 --> 00:31:03,700 no lo puedo hacer, el operador 688 00:31:03,700 --> 00:31:05,579 ternario es una 689 00:31:05,579 --> 00:31:07,599 abreviatura, una forma 690 00:31:07,599 --> 00:31:09,779 sencilla de poner un 691 00:31:09,779 --> 00:31:11,660 if cuando lo único que tengo 692 00:31:11,660 --> 00:31:13,799 en la rama del sí y lo único que tengo en la rama del no 693 00:31:13,799 --> 00:31:15,240 es una sentencia de asignación 694 00:31:15,240 --> 00:31:17,819 como por ejemplo, si yo tengo un string 695 00:31:17,819 --> 00:31:26,680 ese? ¿S igual a es par o S igual a es impar? ¿Vale? Luego en el caso concreto, en el caso 696 00:31:26,680 --> 00:31:33,359 concreto de que yo tengo un if donde la única sentencia que tengo aquí es una asignación 697 00:31:33,359 --> 00:31:39,539 a una variable y la única sentencia que tengo aquí es otra asignación a esa misma variable, 698 00:31:39,700 --> 00:31:44,599 a esa misma, solo en ese caso, que es un caso reducido de if muy sencillo, normal es que 699 00:31:44,599 --> 00:31:46,660 una estructura de selección, tengamos aquí un tropecientas 700 00:31:46,660 --> 00:31:47,920 sentencia y otro tropecientas. 701 00:31:49,039 --> 00:31:50,680 Bueno, pues en el caso de que sólo tenga 702 00:31:50,680 --> 00:31:52,039 aquí una, que es una asignación, 703 00:31:52,579 --> 00:31:54,640 y sólo tenga aquí otra, que es otra asignación, 704 00:31:54,799 --> 00:31:55,880 pero a la misma variable, 705 00:31:56,640 --> 00:31:58,579 pues en ese caso esto lo podemos convertir en lo que 706 00:31:58,579 --> 00:31:59,859 ya lo hemos convertido muchas veces. 707 00:32:01,039 --> 00:32:02,539 ¿A ese qué le asigno? 708 00:32:03,039 --> 00:32:04,220 Pues le asignas 709 00:32:04,220 --> 00:32:06,619 par o le 710 00:32:06,619 --> 00:32:08,240 asignas impar. 711 00:32:09,099 --> 00:32:10,599 ¿Y en función de qué se lo 712 00:32:10,599 --> 00:32:12,799 asignas? De una condición. 713 00:32:12,799 --> 00:32:19,349 entonces el operador ternario es un if 714 00:32:19,349 --> 00:32:21,329 pero lo que haces en la rama del sí 715 00:32:21,329 --> 00:32:22,630 y lo que haces en la rama del no 716 00:32:22,630 --> 00:32:25,690 es simplemente una asignación 717 00:32:25,690 --> 00:32:27,089 y a la misma variable 718 00:32:27,089 --> 00:32:30,390 entonces si tú tienes un if 719 00:32:30,390 --> 00:32:33,130 en lo que haces una asignación y a la misma variable 720 00:32:33,130 --> 00:32:34,009 y solo haces eso 721 00:32:34,009 --> 00:32:35,849 pues lo puedes abreviar así 722 00:32:35,849 --> 00:32:39,970 pero en el caso general 723 00:32:39,970 --> 00:32:42,630 que lo que hagas en la rama del sí o del no sean un montón de cosas 724 00:32:42,630 --> 00:32:44,390 Pues a la vez pedir otro número 725 00:32:44,390 --> 00:32:46,029 Compararlo con no sé qué, la rama del no 726 00:32:46,029 --> 00:32:47,750 Pues pedir otra cosa 727 00:32:47,750 --> 00:32:50,569 Pues ahí no tiene sentido ya meter esto 728 00:32:50,569 --> 00:32:52,829 ¿Vale? Esto lo metes solo 729 00:32:52,829 --> 00:32:55,630 Cuando lo que haces en función de la condición es 730 00:32:55,630 --> 00:32:57,730 Asignar un valor a esto 731 00:32:57,730 --> 00:32:59,630 O asignar otro valor a esto 732 00:32:59,630 --> 00:33:01,150 En ese caso no se puede simplificar 733 00:33:01,150 --> 00:33:01,450 ¿Vale? 734 00:33:04,349 --> 00:33:06,250 Vale, venga, pues ahora sí que vamos a 735 00:33:06,250 --> 00:33:07,690 A parar 736 00:33:11,589 --> 00:33:12,150 A parar