1 00:00:04,589 --> 00:00:17,949 Bueno, pues estamos aquí, ¿verdad? Estos son los ejercicios que dejamos la última media horita del viernes pasado para que practicarais, ¿vale? 2 00:00:19,910 --> 00:00:23,989 Espero que lo hayáis hecho y si tenéis algún problema o cosa, pues me lo decís. 3 00:00:25,129 --> 00:00:27,550 Y qué más cosas hay aquí puestas. 4 00:00:27,550 --> 00:00:29,070 esto 5 00:00:29,070 --> 00:00:33,729 lo vamos a dejar un poquito 6 00:00:33,729 --> 00:00:34,310 por ahora 7 00:00:34,310 --> 00:00:36,630 son simplemente como 8 00:00:36,630 --> 00:00:39,310 nosotros tenemos que usar el tipo string 9 00:00:39,310 --> 00:00:41,929 desde ya, porque nuestras aplicaciones 10 00:00:41,929 --> 00:00:43,969 necesitan usar cadenas de texto 11 00:00:43,969 --> 00:00:45,450 una aplicación 12 00:00:45,450 --> 00:00:47,409 que no use cadenas de texto 13 00:00:47,409 --> 00:00:48,049 es muy raro 14 00:00:48,049 --> 00:00:51,009 pues aparte de 15 00:00:51,009 --> 00:00:52,810 saber declarar 16 00:00:52,810 --> 00:00:55,289 la variable 17 00:00:55,289 --> 00:00:57,149 que va a contener esa cadena de texto 18 00:00:57,149 --> 00:00:58,710 que ya sabemos como declararla 19 00:00:58,710 --> 00:01:02,189 pues con este tipo de dato que es especial 20 00:01:02,189 --> 00:01:03,770 porque es objeto 21 00:01:03,770 --> 00:01:05,109 aunque todavía no lo entendamos 22 00:01:05,109 --> 00:01:06,609 ni sabemos por qué es especial 23 00:01:06,609 --> 00:01:08,709 aparte de saber declararla 24 00:01:08,709 --> 00:01:10,829 y de saber asignarle cosas 25 00:01:10,829 --> 00:01:13,230 que ya sabemos cómo se le asigna algo 26 00:01:13,230 --> 00:01:15,670 a una variable string, pues como a cualquier otra variable 27 00:01:15,670 --> 00:01:17,150 asignándole algo compatible 28 00:01:17,150 --> 00:01:19,730 que sea una cadena de texto 29 00:01:19,730 --> 00:01:21,290 literal entre comillas dobles 30 00:01:21,290 --> 00:01:23,189 o otra variable string 31 00:01:23,189 --> 00:01:26,290 o la concatenación de dos cosas 32 00:01:26,290 --> 00:01:27,730 ¿verdad? 33 00:01:28,709 --> 00:01:39,629 la concatenación de dos cosas, también es un string, esto concatenado con lo que hay en esta variable, 34 00:01:39,629 --> 00:01:42,390 pues eso es lo único que sabemos hacer ahora mismo con string. 35 00:01:43,870 --> 00:01:52,870 Entonces, el hecho de que las variables string sean de ese tipo especial, que lo decimos ahora sin entender lo que es, 36 00:01:52,870 --> 00:02:02,109 que es de tipo objeto, les da unas posibilidades que no tienen las variables normales, 37 00:02:02,750 --> 00:02:10,009 las variables primitivas, como los números entre los i decimales, los char y los boole. 38 00:02:10,389 --> 00:02:13,270 ¿Vale? Esas son las variables de tipo primitivo. 39 00:02:13,490 --> 00:02:18,110 Bueno, pues esta, al ser variable objeto, ese nombre que no sabemos qué significa, 40 00:02:18,110 --> 00:02:21,569 tiene unas posibilidades 41 00:02:21,569 --> 00:02:24,050 que no tienen estas variables primitivas 42 00:02:24,050 --> 00:02:26,409 entonces las recojo aquí un poquito 43 00:02:26,409 --> 00:02:30,310 pero para no aburrirnos ahora mirando esto 44 00:02:30,310 --> 00:02:33,210 como no vamos a poder entenderlo en realidad 45 00:02:33,210 --> 00:02:35,889 es solo recoger lo básico para poder usarlo 46 00:02:35,889 --> 00:02:40,810 vamos a empezar con la sentencia de decisión 47 00:02:40,810 --> 00:02:43,310 y según vayamos viendo ejercicios 48 00:02:44,050 --> 00:02:47,129 en los cuales usemos cadenas de texto 49 00:02:47,129 --> 00:02:50,090 es decir, usemos string 50 00:02:50,090 --> 00:02:52,050 según vayamos viendo esos ejercicios 51 00:02:52,050 --> 00:02:53,870 pues iremos viendo 52 00:02:53,870 --> 00:02:54,789 estas 53 00:02:54,789 --> 00:02:57,710 posibilidades, funcionalidades 54 00:02:57,710 --> 00:03:00,129 que tienen las cadenas de texto 55 00:03:00,129 --> 00:03:01,789 ¿vale? 56 00:03:01,789 --> 00:03:03,849 que nos van a, para poder hacer unas cosas 57 00:03:03,849 --> 00:03:05,849 mínimas con ellas, para poder hacer unas cosas 58 00:03:05,849 --> 00:03:07,490 mínimas, aparte de lo que ya sabemos 59 00:03:07,490 --> 00:03:08,409 que es concatenar 60 00:03:08,409 --> 00:03:10,349 ¿vale? 61 00:03:11,250 --> 00:03:13,330 bueno, pues entonces vamos ahora con esto de aquí 62 00:03:13,330 --> 00:03:15,770 la sentencia de decisión 63 00:03:15,770 --> 00:03:16,710 ¿vale? 64 00:03:17,129 --> 00:03:19,409 Ahí lo tenéis todo recogido en ese fichero. 65 00:03:29,229 --> 00:03:32,090 Bueno, pues vamos allá. 66 00:03:33,129 --> 00:03:51,620 Vale, entonces hasta ahora nuestros programas eran exclusivamente una sucesión de sentencias, por supuesto, una tras otra, porque eso es un programa, una sucesión de sentencias. 67 00:03:52,219 --> 00:03:59,379 Pero esas sentencias hacían un conjunto muy reducido de cosas, porque era lo único que sabíamos hacer, ¿verdad? 68 00:03:59,379 --> 00:04:28,389 Esas sentencias podían declarar variables, eso sabemos hacerlo, declarar una variable para que esa variable ya me contenga un dato y yo pueda ya operar con él, hacer asignaciones y ya sabemos lo que es hacer una asignación. 69 00:04:28,389 --> 00:04:53,209 A una variable le asigno un valor. Y bueno, la complejidad de esta primera parte era, ¿qué puedo poner yo aquí? Pues desde el valor directamente hasta una expresión que combine operadores, cuyo resultado sea un valor compatible, pero al fin y al cabo no dejará de ser una asignación, que es lo que hemos estado practicando todo este tiempo. 70 00:04:53,209 --> 00:04:56,689 construir expresiones 71 00:04:56,689 --> 00:04:58,610 válidas, cuyo único 72 00:04:58,610 --> 00:05:00,569 resultado, cuya única finalidad 73 00:05:00,569 --> 00:05:02,829 es asignarse 74 00:05:02,829 --> 00:05:04,550 a una variable de un tipo compatible 75 00:05:04,550 --> 00:05:06,529 ya está, entonces con esas 76 00:05:06,529 --> 00:05:08,529 operaciones, construíamos 77 00:05:08,529 --> 00:05:10,949 expresiones que se asignaban a la variable 78 00:05:10,949 --> 00:05:12,490 y luego también 79 00:05:12,490 --> 00:05:14,970 hemos sabido mostrar por pantalla 80 00:05:14,970 --> 00:05:17,310 esos valores 81 00:05:17,310 --> 00:05:19,329 mostrarlos por pantalla 82 00:05:19,329 --> 00:05:20,430 con un system out 83 00:05:20,430 --> 00:05:23,269 println los hemos mostrado por pantalla 84 00:05:23,269 --> 00:05:24,290 vale 85 00:05:24,290 --> 00:05:27,689 y dentro de las asignaciones 86 00:05:27,689 --> 00:05:29,529 también hemos sabido 87 00:05:29,529 --> 00:05:31,670 hacer una asignación 88 00:05:31,670 --> 00:05:33,529 de un valor que venía 89 00:05:33,529 --> 00:05:35,550 del teclado, eso también lo hemos sabido 90 00:05:35,550 --> 00:05:35,889 hacer 91 00:05:35,889 --> 00:05:41,569 las asignaciones que es lo que nos ha 92 00:05:41,569 --> 00:05:43,810 llevado pues más tiempo 93 00:05:43,810 --> 00:05:45,649 las hemos hecho 94 00:05:45,649 --> 00:05:46,629 valor tal cual 95 00:05:46,629 --> 00:05:48,750 construyendo una expresión 96 00:05:48,750 --> 00:05:50,790 la variante condicionada 97 00:05:50,790 --> 00:05:52,269 que es o asigno esto 98 00:05:52,269 --> 00:05:54,250 o asigno esta otra cosa 99 00:05:54,250 --> 00:05:56,430 en función de la expresión 100 00:05:56,430 --> 00:05:58,250 o asigno un valor 101 00:05:58,250 --> 00:05:59,269 leído del teclado 102 00:05:59,269 --> 00:06:02,870 ¿vale? pues una secuencia 103 00:06:02,870 --> 00:06:04,509 de sentencias 104 00:06:04,509 --> 00:06:06,509 de estos tipos 105 00:06:06,509 --> 00:06:08,470 de aquí han construido nuestros programas 106 00:06:08,470 --> 00:06:10,189 hasta ahora ¿vale? hemos 107 00:06:10,189 --> 00:06:12,550 visto algo más, hemos hecho algo más que eso 108 00:06:12,550 --> 00:06:16,410 bueno 109 00:06:16,410 --> 00:06:18,750 lógicamente 110 00:06:18,750 --> 00:06:20,610 solamente con estas sentencias 111 00:06:20,610 --> 00:06:23,329 no podemos realizar 112 00:06:23,329 --> 00:06:25,550 todo, cualquier función 113 00:06:25,550 --> 00:06:26,870 que queramos hacer, no podemos 114 00:06:26,870 --> 00:06:28,209 nos quedamos muy cortos 115 00:06:28,209 --> 00:06:31,689 no podemos solamente construyendo expresiones 116 00:06:31,689 --> 00:06:33,529 elaborar 117 00:06:33,529 --> 00:06:35,410 la solución para cualquier problema 118 00:06:35,410 --> 00:06:37,310 que nos planteen, es imposible 119 00:06:37,310 --> 00:06:38,829 se queda muy corto 120 00:06:38,829 --> 00:06:41,470 todo esto, tenemos que tener más posibilidades 121 00:06:41,470 --> 00:06:42,370 para hacer cosas 122 00:06:42,370 --> 00:06:45,269 ¿no? por ejemplo 123 00:06:45,269 --> 00:06:47,310 si a mí me dicen 124 00:06:47,310 --> 00:06:48,410 programa que 125 00:06:48,410 --> 00:06:51,050 solicite 126 00:06:51,050 --> 00:06:54,050 nombres 127 00:06:54,050 --> 00:06:55,470 de usuario 128 00:06:55,470 --> 00:06:58,110 y te diga 129 00:06:58,110 --> 00:07:00,310 cuáles de ellos están en castellano 130 00:07:00,310 --> 00:07:02,449 por ejemplo, y cuáles están 131 00:07:02,449 --> 00:07:04,470 en otro idioma, bueno, más que nombres, palabras 132 00:07:04,470 --> 00:07:06,529 los nombres son más 133 00:07:06,529 --> 00:07:07,769 asépticos en el idioma 134 00:07:07,769 --> 00:07:09,250 entonces 135 00:07:09,250 --> 00:07:12,550 y además nos dicen, ese programa 136 00:07:12,550 --> 00:07:13,990 finalizará 137 00:07:13,990 --> 00:07:16,449 cuando el usuario introduzca como 138 00:07:16,449 --> 00:07:17,829 nombre, fin 139 00:07:17,829 --> 00:07:20,350 ¿vale? eso podría ser un programa 140 00:07:20,350 --> 00:07:22,329 perfectamente que nosotros podríamos querer 141 00:07:22,329 --> 00:07:24,389 programar, ¿programa qué? 142 00:07:25,050 --> 00:07:26,189 dame una 143 00:07:26,189 --> 00:07:28,170 dame una palabra 144 00:07:28,170 --> 00:07:29,949 castellano 145 00:07:29,949 --> 00:07:31,449 dame una palabra 146 00:07:31,449 --> 00:07:34,129 inglés, luego habría que ver cómo 147 00:07:34,129 --> 00:07:36,389 averiguamos si es castellano o inglés, pero esa parte 148 00:07:36,389 --> 00:07:38,670 ya me importa menos, dame una palabra 149 00:07:38,670 --> 00:07:42,209 francés, ¿vale? te va dando 150 00:07:42,209 --> 00:07:44,389 respuestas a palabras que tú 151 00:07:44,389 --> 00:07:45,850 vas introduciendo, dame una palabra 152 00:07:45,850 --> 00:07:48,310 Eh, fin 153 00:07:48,310 --> 00:07:49,790 Ah, pues aquí termino 154 00:07:49,790 --> 00:07:52,430 ¿Vale? Podría ser una propuesta de programa 155 00:07:52,430 --> 00:07:53,029 Que nos hace 156 00:07:53,029 --> 00:07:55,149 Entonces 157 00:07:55,149 --> 00:07:58,629 ¿Con qué problema nos encontramos aquí a la hora 158 00:07:58,629 --> 00:08:00,629 De elaborar esto? 159 00:08:02,209 --> 00:08:04,149 Pues que como lo hacemos, podríamos decir 160 00:08:04,149 --> 00:08:05,730 Vale, pues yo le hago un siso 161 00:08:05,730 --> 00:08:10,170 Dame palabra 162 00:08:10,170 --> 00:08:15,180 Leo la palabra 163 00:08:15,180 --> 00:08:21,180 con el 164 00:08:21,180 --> 00:08:23,240 next como sea 165 00:08:23,240 --> 00:08:25,300 ahora incorporaremos como leer un 166 00:08:25,300 --> 00:08:27,279 porque solamente sabemos leer números hasta ahora 167 00:08:27,279 --> 00:08:28,839 números y boolean, leo la palabra 168 00:08:28,839 --> 00:08:31,639 aquí hago lo que tenga que hacer 169 00:08:31,639 --> 00:08:33,159 para 170 00:08:33,159 --> 00:08:35,519 que esa parte, estas sentencias 171 00:08:35,519 --> 00:08:37,159 son las que me importan ahora 172 00:08:37,159 --> 00:08:39,539 y aquí ya pongo el resultado 173 00:08:39,539 --> 00:08:41,179 vale, lo que sea 174 00:08:41,179 --> 00:08:44,940 pero esto yo lo 175 00:08:44,940 --> 00:08:46,419 tengo que hacer de forma indefinida 176 00:08:46,419 --> 00:08:48,120 pues con lo que sabemos hacer ahora 177 00:08:48,120 --> 00:08:49,860 todo esto 178 00:08:49,860 --> 00:08:52,120 lo pondría aquí otra vez 179 00:08:52,120 --> 00:08:53,139 muy bien 180 00:08:53,139 --> 00:08:56,259 todo esto lo pondría aquí otra vez 181 00:08:56,259 --> 00:08:57,940 entonces si el programa me estaría 182 00:08:57,940 --> 00:09:00,919 dame palabra, la lee, me da el resultado 183 00:09:00,919 --> 00:09:03,139 dame palabra, la lee, me da el resultado 184 00:09:03,139 --> 00:09:04,879 pero claro, me veo yo de repente 185 00:09:04,879 --> 00:09:06,320 diciendo, pero vamos a ver 186 00:09:06,320 --> 00:09:08,480 ¿cuántas veces escribo esto? 187 00:09:08,879 --> 00:09:10,419 ¿cuántas veces lo escribo? no sé 188 00:09:10,419 --> 00:09:12,820 porque yo no sé cuántas 189 00:09:12,820 --> 00:09:14,820 veces voy a tener que hacer 190 00:09:14,820 --> 00:09:16,960 esto, porque el usuario 191 00:09:16,960 --> 00:09:19,000 me ha dicho, el que me ha pedido el programa 192 00:09:19,000 --> 00:09:21,080 me ha dicho, oye, el programa 193 00:09:21,080 --> 00:09:23,019 tiene que dejar de hacerte 194 00:09:23,019 --> 00:09:24,840 esto, de pedirte esto, cuando 195 00:09:24,840 --> 00:09:27,059 tú tecles la palabra 196 00:09:27,059 --> 00:09:29,259 fin, entonces ahí termina 197 00:09:29,259 --> 00:09:30,700 vale, muy bien 198 00:09:30,700 --> 00:09:32,940 pero tú cuando estás programando esto 199 00:09:32,940 --> 00:09:35,019 tú no sabes cuándo va a llegar 200 00:09:35,019 --> 00:09:36,899 esa palabra fin, entonces tú 201 00:09:36,899 --> 00:09:38,639 como programador que estás haciendo el código 202 00:09:38,639 --> 00:09:40,639 ¿cuántas veces escribes esto? 203 00:09:41,919 --> 00:09:43,100 no sabes, no tienes 204 00:09:43,100 --> 00:09:45,039 ni idea, lo escribes siete veces 205 00:09:45,039 --> 00:09:50,340 Pues entonces tu programa va a pedir siete palabras, independientemente de cuándo haya escrito el usuario fin. 206 00:09:50,840 --> 00:09:52,860 ¿Lo escribes cien veces? 207 00:09:53,539 --> 00:09:59,440 Pues entonces el programa te va a pedir cien palabras, independientemente de cuándo hayas escrito tu fin. 208 00:10:00,820 --> 00:10:07,960 Luego, con las herramientas que tenemos ahora, este programa sencillo que nos han planteado, no podemos resolverlo. 209 00:10:08,500 --> 00:10:12,340 Porque nos vemos en la duda de, ¿y cuántas veces repito yo esto? 210 00:10:12,340 --> 00:10:16,720 Claro, porque necesitamos un tipo de sentencia adicional 211 00:10:16,720 --> 00:10:19,159 Que no hemos visto 212 00:10:19,159 --> 00:10:21,220 Claro, necesitaríamos 213 00:10:21,220 --> 00:10:26,679 Ah, vale, es que yo necesito una sentencia que me permita repetir algo 214 00:10:26,679 --> 00:10:32,120 Mientras no se cumpla una condición de finalización 215 00:10:32,120 --> 00:10:33,799 Es lo que necesito 216 00:10:33,799 --> 00:10:36,840 Una sentencia de Java que me diga 217 00:10:36,840 --> 00:10:40,799 Repite esto mientras no ocurra lo siguiente 218 00:10:40,799 --> 00:10:43,700 Nosotros no sabemos programar eso 219 00:10:43,700 --> 00:10:45,200 Nos conocemos esa sentencia 220 00:10:45,200 --> 00:10:46,259 La sentencia nos falta 221 00:10:46,259 --> 00:10:48,440 La sentencia que le dice a Java 222 00:10:48,440 --> 00:10:49,740 Repite esto 223 00:10:49,740 --> 00:10:51,840 En nuestro caso sería esto de aquí 224 00:10:51,840 --> 00:10:54,139 Repite esto 225 00:10:54,139 --> 00:10:55,899 Una vez y otra vez y otra vez 226 00:10:55,899 --> 00:11:00,379 Mientras se dé una condición 227 00:11:00,379 --> 00:11:03,559 La que sea en este caso sería 228 00:11:03,559 --> 00:11:05,419 Mientras la palabra introducida 229 00:11:05,419 --> 00:11:06,620 Sea diferente de fin 230 00:11:06,620 --> 00:11:09,259 Mientras la palabra 231 00:11:09,259 --> 00:11:10,759 Sea diferente de fin 232 00:11:10,759 --> 00:11:16,379 Vale, pues deberíamos ser capaces de programar esto 233 00:11:16,379 --> 00:11:20,519 Un código que se repite un montón de veces 234 00:11:20,519 --> 00:11:22,340 No tengo yo que escribir una tras otra 235 00:11:22,340 --> 00:11:24,620 Porque es que yo no sé cuántas veces se va a repetir 236 00:11:24,620 --> 00:11:27,799 Depende de cuándo introduzca el usuario 100 237 00:11:27,799 --> 00:11:30,740 Pues tendría que ser yo capaz de escribir una sentencia 238 00:11:30,740 --> 00:11:32,740 Que le explique a Java 239 00:11:32,740 --> 00:11:37,799 Repite esto mientras esta condición sea cierta 240 00:11:37,799 --> 00:11:38,559 Repítelo 241 00:11:38,559 --> 00:11:56,860 Vale, eso sería pues un bucle, ¿verdad? Eso es lo que se llamaría un bucle. Bueno, pues esa es una sentencia que nos falta para poder hacer cosas. Y también nos falta otra sentencia más. 242 00:11:56,860 --> 00:12:24,600 Por ejemplo, una situación en la que nos dicen, a ver, hazme un programa, por favor, que te solicite un número y si el número es primo te haga no sé qué cosa y si no es primo te haga otra cosa diferente. 243 00:12:24,600 --> 00:12:28,990 entonces, con lo que hemos visto hasta ahora 244 00:12:28,990 --> 00:12:30,309 no sabemos programar eso 245 00:12:30,309 --> 00:12:33,389 nosotros sabemos en función de una condición 246 00:12:33,389 --> 00:12:35,590 asignar un valor 247 00:12:35,590 --> 00:12:36,429 a una variable 248 00:12:36,429 --> 00:12:38,710 asignar un valor o asignar otro 249 00:12:38,710 --> 00:12:40,950 en función de una condición, eso si sabemos, ¿verdad? 250 00:12:41,649 --> 00:12:42,590 nosotros sabemos 251 00:12:42,590 --> 00:12:45,149 a una variable en función 252 00:12:45,149 --> 00:12:46,330 de una condición 253 00:12:46,330 --> 00:12:49,309 asignarle o el valor 254 00:12:49,309 --> 00:12:50,750 este o el valor este 255 00:12:50,750 --> 00:12:52,750 pero no sabemos 256 00:12:52,750 --> 00:12:54,809 en función de una condición 257 00:12:54,809 --> 00:12:56,809 hacer toda una ristra de cosas 258 00:12:56,809 --> 00:12:59,110 o hacer otra, eso no lo sabemos 259 00:12:59,110 --> 00:13:01,350 ¿vale? y necesitaríamos 260 00:13:01,350 --> 00:13:03,049 saberlo hacer para hacer un programa 261 00:13:03,049 --> 00:13:04,049 como el que me han dicho 262 00:13:04,049 --> 00:13:06,230 oye, introduce un número 263 00:13:06,230 --> 00:13:09,029 si es primo, por favor, opera 264 00:13:09,029 --> 00:13:10,330 con él para hacer no sé qué 265 00:13:10,330 --> 00:13:13,149 si no es primo, hace estas otras cosas 266 00:13:13,149 --> 00:13:15,250 con lo que conocemos 267 00:13:15,250 --> 00:13:16,529 no sabemos hacer ese programa 268 00:13:16,529 --> 00:13:18,750 claro, porque necesitamos 269 00:13:18,750 --> 00:13:21,230 una sentencia en Java que nos permita expresar 270 00:13:21,230 --> 00:13:23,090 esa idea, la idea de que 271 00:13:23,090 --> 00:13:26,970 en función de una condición, mi programa hace toda una serie de cosas 272 00:13:26,970 --> 00:13:29,929 o si no hace una serie de cosas diferentes. 273 00:13:31,110 --> 00:13:34,269 Esa sería la sentencia de decisión o selectiva. 274 00:13:37,299 --> 00:13:41,759 Luego, nos faltan sintaxis de sentencias de Java 275 00:13:41,759 --> 00:13:49,059 para poder hacer cualquier cosa que se nos pida en un enunciado, en una aplicación. 276 00:13:49,059 --> 00:14:11,190 Pero la buena noticia es que existe una cosa que es de la estructura o del programa estructurado 277 00:14:11,190 --> 00:14:18,279 ¿Y qué dice esto? 278 00:14:18,279 --> 00:14:27,000 Pues esto, los teóricos de la programación allá en su momento averiguaron que cualquier problema, cualquiera, cualquiera, cualquiera 279 00:14:27,000 --> 00:14:29,860 que una CPU 280 00:14:29,860 --> 00:14:32,200 pueda resolver, una CPU tradicional 281 00:14:32,200 --> 00:14:33,860 como las que están en todos los ordenadores 282 00:14:33,860 --> 00:14:35,620 que tenéis, tablets, móviles, etc. 283 00:14:36,440 --> 00:14:37,740 Cualquier problema que una CPU 284 00:14:37,740 --> 00:14:39,919 pueda resolver mediante 285 00:14:39,919 --> 00:14:43,879 sentencias de código que llegan 286 00:14:43,879 --> 00:14:45,639 hace sus operaciones y las envía a los buses 287 00:14:45,639 --> 00:14:48,019 cualquiera, se puede 288 00:14:48,019 --> 00:14:49,759 elaborar simplemente 289 00:14:49,759 --> 00:14:52,279 combinando en secuencia 290 00:14:52,279 --> 00:14:56,039 estas estructuras que hemos 291 00:14:56,039 --> 00:15:01,820 visto, la asignación por supuesto, esa se asume, la entrada de datos lógicamente, pues 292 00:15:01,820 --> 00:15:08,259 combinando exclusivamente bucles como los que he planteado antes por encima sin explicar 293 00:15:08,259 --> 00:15:16,879 y decisiones, pues combinando exclusivamente sentencias de bucle y sentencias de decisión 294 00:15:16,879 --> 00:15:25,120 en secuencia, se puede hacer cualquier, se puede elaborar cualquier programa, no hace 295 00:15:25,120 --> 00:15:27,080 falta nada más, no hace falta ninguna otra 296 00:15:27,080 --> 00:15:28,799 estructura de programación 297 00:15:28,799 --> 00:15:30,259 nada más 298 00:15:30,259 --> 00:15:33,000 bueno, pues los 299 00:15:33,000 --> 00:15:34,879 programas que usan exclusivamente 300 00:15:34,879 --> 00:15:35,639 esas cosas 301 00:15:35,639 --> 00:15:38,960 que son, por supuesto, lectura de datos 302 00:15:38,960 --> 00:15:40,860 y asignaciones, es inevitable, si no tengo datos 303 00:15:40,860 --> 00:15:43,320 de partida, pues no puedo hacer nada, eso lo damos por sentado 304 00:15:43,320 --> 00:15:45,460 que cualquier lenguaje de programación 305 00:15:45,460 --> 00:15:47,259 permite incorporar 306 00:15:47,259 --> 00:15:48,740 datos a sus variables 307 00:15:48,740 --> 00:15:50,519 mediante asignaciones 308 00:15:50,519 --> 00:15:53,179 pues los programas que usan 309 00:15:53,179 --> 00:15:54,799 exclusivamente en secuencias 310 00:15:54,799 --> 00:15:59,120 sentencias de ese tipo bucles y decisiones bucles y decisiones bucles y 311 00:15:59,120 --> 00:16:06,139 decisiones más repito la asignación de datos son programas estructurados 312 00:16:06,139 --> 00:16:17,240 y los lenguajes de formación estructurados son los que usan estas 313 00:16:17,240 --> 00:16:22,639 sentencias y punto pelota y ninguna otra y para contar y cuáles son 314 00:16:22,639 --> 00:16:27,240 absolutamente todos los que conocemos todos los que conocemos 315 00:16:27,240 --> 00:16:36,419 ¿Vale? Java incluido, son lenguajes de programación estructurados, porque solamente necesitan usar estas sentencias, bucles y decisiones, nada más. 316 00:16:37,600 --> 00:16:50,820 Claro, la complicación viene de que hay que decidir correctamente cuáles, en qué orden hay que usarlas para que el programa haga lo que tiene que hacer, lógicamente, para que el programa haga lo que tiene que hacer. 317 00:16:51,879 --> 00:16:53,000 Esa es la parte complicada. 318 00:16:53,000 --> 00:16:56,899 bueno, pues 319 00:16:56,899 --> 00:16:59,240 todo lo que hay más allá de esto 320 00:16:59,240 --> 00:17:02,200 ahora ya es 321 00:17:02,200 --> 00:17:04,319 cómo organizo mi código 322 00:17:04,319 --> 00:17:06,779 entonces, la programación entrada a objetos 323 00:17:06,779 --> 00:17:09,559 es única y exclusivamente 324 00:17:09,559 --> 00:17:11,259 programación estructurada 325 00:17:11,259 --> 00:17:13,279 a la que se le da 326 00:17:13,279 --> 00:17:15,480 una manera de organizar 327 00:17:15,480 --> 00:17:16,660 el código que permite 328 00:17:16,660 --> 00:17:19,559 la reutilización, sobre todo 329 00:17:19,559 --> 00:17:23,160 la mejora en mantenimiento 330 00:17:23,160 --> 00:17:24,319 el poder trabajar 331 00:17:24,319 --> 00:17:27,220 diferentes personas en diferentes 332 00:17:27,220 --> 00:17:28,920 partes del programa, o sea la operación 333 00:17:28,920 --> 00:17:31,380 orientada a objetos, lo que incorpora 334 00:17:31,380 --> 00:17:33,160 es una manera de 335 00:17:33,160 --> 00:17:35,039 organizar los problemas estructurados 336 00:17:35,039 --> 00:17:36,920 ya está, no incorpora nada más 337 00:17:36,920 --> 00:17:38,400 una manera de organizarlos 338 00:17:38,400 --> 00:17:40,980 entonces, ¿Java es un lenguaje orientado a objetos? 339 00:17:41,140 --> 00:17:43,460 por supuesto, pues como Python 340 00:17:43,460 --> 00:17:44,559 como prácticamente todos 341 00:17:44,559 --> 00:17:46,779 ¿significa eso que no sean estructurados? 342 00:17:46,839 --> 00:17:48,900 no tiene nada que ver, todos son 343 00:17:48,900 --> 00:17:50,859 estructurados porque todos usan 344 00:17:50,859 --> 00:17:52,079 esto en secuencia. 345 00:17:53,400 --> 00:17:55,279 Si además son orientados a objetos, 346 00:17:55,680 --> 00:17:57,000 la orientación a objetos lo que 347 00:17:57,000 --> 00:17:57,559 hace es 348 00:17:57,559 --> 00:18:01,039 ofrecer una forma de organizarlo. 349 00:18:01,599 --> 00:18:02,660 Ya está. Nada más. 350 00:18:03,140 --> 00:18:04,539 ¿Vale? No son conceptos 351 00:18:04,539 --> 00:18:06,740 separados. Lenguajes 352 00:18:06,740 --> 00:18:08,559 estructurados, lenguajes orientados a objetos. 353 00:18:09,119 --> 00:18:10,880 No. Se refieren 354 00:18:10,880 --> 00:18:13,119 a cosas independientes. Por debajo 355 00:18:13,119 --> 00:18:14,519 está el lenguaje estructurado 356 00:18:14,519 --> 00:18:16,799 y luego cómo organizas tú ese código. 357 00:18:16,799 --> 00:18:20,039 pues la programación orientada a objetos 358 00:18:20,039 --> 00:18:21,980 te da una forma eficiente 359 00:18:21,980 --> 00:18:22,700 de organizarlo 360 00:18:22,700 --> 00:18:25,339 ¿por qué es necesaria? 361 00:18:25,720 --> 00:18:27,799 porque si usáramos solamente 362 00:18:27,799 --> 00:18:29,900 los lenguajes 363 00:18:29,900 --> 00:18:31,779 en su forma estructurada 364 00:18:31,779 --> 00:18:34,059 o sea la secuencia de bucles, decisiones 365 00:18:34,059 --> 00:18:36,359 todo estaría muy bien, podríamos hacer lo que quisiéramos 366 00:18:36,359 --> 00:18:37,900 pero un programa 367 00:18:37,900 --> 00:18:39,579 para hacer pues 368 00:18:39,579 --> 00:18:40,940 una aplicación cualquiera 369 00:18:40,940 --> 00:18:42,940 pues podría tener a lo mejor 370 00:18:42,940 --> 00:18:45,819 5.300, 400 líneas 371 00:18:45,819 --> 00:18:46,740 ¿vale? está muy bien 372 00:18:46,740 --> 00:18:48,480 funciona perfectamente, pero hombre 373 00:18:48,480 --> 00:18:50,819 5.430 líneas se hace pesado 374 00:18:50,819 --> 00:18:52,759 si de repente quiero 375 00:18:52,759 --> 00:18:55,599 cambiar algo en su funcionalidad 376 00:18:55,599 --> 00:18:57,519 buscar en un chorizo 377 00:18:57,519 --> 00:18:59,680 de 5.430 líneas 378 00:18:59,680 --> 00:19:00,440 se hace pesado 379 00:19:00,440 --> 00:19:02,720 ¿vale? 380 00:19:04,000 --> 00:19:05,920 si yo ese código 381 00:19:05,920 --> 00:19:07,240 se lo tengo que dar a alguien 382 00:19:07,240 --> 00:19:09,180 para que lo entienda, lo mantenga 383 00:19:09,180 --> 00:19:10,319 en el futuro, lo que sea 384 00:19:10,319 --> 00:19:13,500 si le doy un chorizo de 5.430 líneas 385 00:19:13,500 --> 00:19:14,460 pues se le va a hacer pesado 386 00:19:14,460 --> 00:19:16,319 entonces la programación 387 00:19:16,319 --> 00:19:16,960 y entrada a objetos 388 00:19:16,960 --> 00:19:18,420 permite que los programas 389 00:19:18,420 --> 00:19:19,400 no sean chorizos 390 00:19:19,400 --> 00:19:21,220 de 5.430 líneas 391 00:19:21,220 --> 00:19:21,740 ya está 392 00:19:21,740 --> 00:19:22,799 única y exclusivamente 393 00:19:22,799 --> 00:19:24,559 y al no ser chorizos 394 00:19:24,559 --> 00:19:26,119 de 5.430 líneas 395 00:19:26,119 --> 00:19:27,359 porque los separa en partes 396 00:19:27,359 --> 00:19:29,720 pues esas partes 397 00:19:29,720 --> 00:19:31,119 se pueden atacar 398 00:19:31,119 --> 00:19:32,039 de forma separada 399 00:19:32,039 --> 00:19:33,200 si yo tengo que tocar algo 400 00:19:33,200 --> 00:19:34,299 voy a la parte 401 00:19:34,299 --> 00:19:35,440 que tengo que modificar 402 00:19:35,440 --> 00:19:36,539 y el resto de partes 403 00:19:36,539 --> 00:19:37,359 ni se entera 404 00:19:37,359 --> 00:19:39,400 esa es la filosofía 405 00:19:39,400 --> 00:19:39,740 de la programación 406 00:19:39,740 --> 00:19:40,359 y entrada a objetos 407 00:19:40,359 --> 00:19:40,740 ¿vale? 408 00:19:41,519 --> 00:19:42,500 que ya iremos viendo 409 00:19:42,500 --> 00:19:45,579 Bueno, pues entonces 410 00:19:45,579 --> 00:19:47,640 ¿Qué es lo que vamos a ver nosotros ahora? 411 00:19:47,740 --> 00:19:49,059 Pues vamos a seguir incorporando 412 00:19:49,059 --> 00:19:52,400 Sentencias de programación estructurada 413 00:19:52,400 --> 00:19:53,559 Y la primera de ellas 414 00:19:53,559 --> 00:19:54,859 La de decisión 415 00:19:54,859 --> 00:19:57,660 La siguiente, los bucles 416 00:19:57,660 --> 00:20:20,539 Bueno, pues la sentencia de decisión 417 00:20:20,539 --> 00:20:24,440 Es muy fácil de entender 418 00:20:24,440 --> 00:20:25,400 Conceptualmente 419 00:20:25,400 --> 00:20:28,259 Tiene todo el sentido del mundo 420 00:20:28,259 --> 00:20:28,980 Pensar 421 00:20:28,980 --> 00:20:30,940 Que un programa 422 00:20:30,940 --> 00:20:32,900 en función de una condición 423 00:20:32,900 --> 00:20:35,759 necesite hacer una cosa 424 00:20:35,759 --> 00:20:37,240 o necesite hacer otra 425 00:20:37,240 --> 00:20:39,019 es una idea muy normal 426 00:20:39,019 --> 00:20:43,539 ahí me dan los datos 427 00:20:43,539 --> 00:20:45,059 de un usuario 428 00:20:45,059 --> 00:20:46,559 entonces 429 00:20:46,559 --> 00:20:49,759 si el usuario tiene rol administrador 430 00:20:49,759 --> 00:20:52,039 yo voy a hacer una cosa 431 00:20:52,039 --> 00:20:53,819 que es mostrarle la pantalla de administrador 432 00:20:53,819 --> 00:20:55,440 si tiene rol 433 00:20:55,440 --> 00:20:57,579 usuario normal 434 00:20:57,579 --> 00:20:59,339 cliente, pues voy a hacer otra 435 00:20:59,339 --> 00:21:01,519 que es mostrarle la pantalla de cliente 436 00:21:01,519 --> 00:21:03,640 o sea continuamente los programas 437 00:21:03,640 --> 00:21:05,680 en función de una condición 438 00:21:05,680 --> 00:21:07,119 o tiran por un camino 439 00:21:07,119 --> 00:21:08,359 o tiran por otro 440 00:21:08,359 --> 00:21:09,960 continuamente 441 00:21:09,960 --> 00:21:12,960 yo entro en una aplicación 442 00:21:12,960 --> 00:21:17,359 ¿qué día es una aplicación? 443 00:21:17,480 --> 00:21:18,480 agenda, soy tu agenda 444 00:21:18,480 --> 00:21:20,720 ¿qué día soy? yo le pongo lunes 445 00:21:20,720 --> 00:21:22,660 pues ese programa 446 00:21:22,660 --> 00:21:25,859 si es lunes 447 00:21:25,859 --> 00:21:27,099 me mostrará una cosa 448 00:21:27,099 --> 00:21:29,839 pero si le pongo martes me mostrará otra 449 00:21:29,839 --> 00:21:32,279 pero si le pongo miércoles me mostrará otra 450 00:21:32,279 --> 00:21:34,420 entonces es una situación lo más natural del mundo 451 00:21:34,420 --> 00:21:36,900 que un programa en función de una condición 452 00:21:36,900 --> 00:21:37,940 sea la que sea 453 00:21:37,940 --> 00:21:40,019 o necesite hacer una cosa 454 00:21:40,019 --> 00:21:41,240 o necesite hacer otra 455 00:21:41,240 --> 00:21:44,299 eso se ve muy bien 456 00:21:44,299 --> 00:21:45,779 en 457 00:21:45,779 --> 00:21:48,579 diagramas de flujo 458 00:21:48,579 --> 00:21:50,119 que los diagramas de flujo 459 00:21:50,119 --> 00:21:51,940 son una de tantas estructuras 460 00:21:51,940 --> 00:21:54,019 como los pseudocódigos, como todo eso 461 00:21:54,019 --> 00:21:56,359 que nos permiten en plan borrador 462 00:21:56,359 --> 00:21:58,380 hacer nuestros primeros bocetos 463 00:21:58,380 --> 00:21:59,920 de diseños de programas 464 00:21:59,920 --> 00:22:01,799 antes de pasar a escribir código 465 00:22:01,799 --> 00:22:04,960 antes de pasar a escribir código 466 00:22:04,960 --> 00:22:06,779 pues uno se puede hacer 467 00:22:06,779 --> 00:22:08,160 lógicamente se debería hacer 468 00:22:08,160 --> 00:22:10,200 una primera idea de este programa 469 00:22:10,200 --> 00:22:12,599 como voy a combinar aquí una decisión 470 00:22:12,599 --> 00:22:14,579 y aquí me va a tocar un bucle porque tengo que repetir 471 00:22:14,579 --> 00:22:15,259 muchas cosas 472 00:22:15,259 --> 00:22:18,259 se lo puede hacer uno en papel o a ripet 473 00:22:18,259 --> 00:22:19,920 o hay 474 00:22:19,920 --> 00:22:23,339 pequeñas 475 00:22:23,339 --> 00:22:26,660 herramientas, estándares 476 00:22:26,660 --> 00:22:28,119 más o menos que usamos todos 477 00:22:28,119 --> 00:22:30,140 pues para hacer esos bocetos 478 00:22:30,140 --> 00:22:32,480 de cómo va a ser el diseño 479 00:22:32,480 --> 00:22:33,119 de mi programa 480 00:22:33,119 --> 00:22:36,400 una es el diagrama de flujo 481 00:22:36,400 --> 00:22:38,380 pues por ejemplo, en diagrama de flujo 482 00:22:38,380 --> 00:22:40,220 ¿cuál sería el diagrama de flujo 483 00:22:40,220 --> 00:22:41,660 de una sentencia de decisión? 484 00:22:46,089 --> 00:22:46,990 pues bueno, el programa 485 00:22:46,990 --> 00:22:47,849 me viene por aquí 486 00:22:47,849 --> 00:22:49,869 este es el hilo del programa 487 00:22:49,869 --> 00:22:52,930 el programa 488 00:22:52,930 --> 00:22:54,289 está aquí y de repente 489 00:22:54,289 --> 00:22:59,829 me pregunto yo si se cumple una condición 490 00:22:59,829 --> 00:23:05,680 si la condición se cumple 491 00:23:05,680 --> 00:23:10,059 yo ahora ya haré lo que toque hacer 492 00:23:10,059 --> 00:23:13,500 si la condición no se cumple 493 00:23:13,500 --> 00:23:16,720 ahora haré lo que toque hacer si no se cumple 494 00:23:16,720 --> 00:23:19,160 cuando ya he terminado de hacer 495 00:23:19,160 --> 00:23:22,099 lo que tengo que hacer cuando la condición se cumpla 496 00:23:22,099 --> 00:23:25,660 el programita continúa su camino tranquilamente 497 00:23:25,660 --> 00:23:29,039 Cuando ya he terminado de hacer 498 00:23:29,039 --> 00:23:30,220 Lo que tengo que hacer 499 00:23:30,220 --> 00:23:31,859 Si la condición no se cumple 500 00:23:31,859 --> 00:23:33,599 El programita continúa su camino 501 00:23:33,599 --> 00:23:35,359 Tranquilamente hasta su final 502 00:23:35,359 --> 00:23:37,460 Con las sentencias que haya por aquí 503 00:23:37,460 --> 00:23:38,259 ¿Vale? 504 00:23:38,660 --> 00:23:40,880 Es decir, aquí podría haber más sentencias 505 00:23:40,880 --> 00:23:48,450 Y aquí también podría haber más sentencias 506 00:23:48,450 --> 00:23:49,430 ¿Vale? 507 00:23:57,680 --> 00:23:59,140 Cada cuadradito 508 00:23:59,140 --> 00:24:01,119 En el diagrama de flujo 509 00:24:01,119 --> 00:24:02,539 Cada cuadrado significa 510 00:24:02,539 --> 00:24:04,279 Pues un bloquecito de sentencias 511 00:24:04,279 --> 00:24:09,319 Este sería el inicio del programa 512 00:24:09,319 --> 00:24:10,339 Y este sería el final 513 00:24:10,339 --> 00:24:14,440 Este sería el diagrama de flujo 514 00:24:14,440 --> 00:24:15,640 De un programita 515 00:24:15,640 --> 00:24:17,920 Que usa una sentencia de decisión 516 00:24:17,920 --> 00:24:20,059 El programa arranca 517 00:24:20,059 --> 00:24:22,319 Aquí hará cosas 518 00:24:22,319 --> 00:24:24,259 Cuadradito significa 519 00:24:24,259 --> 00:24:25,759 Unas cuantas sentencias 520 00:24:25,759 --> 00:24:27,000 Como las que hemos hecho hasta ahora 521 00:24:27,000 --> 00:24:29,019 Ahora de repente 522 00:24:29,019 --> 00:24:31,740 Nos damos cuenta de que 523 00:24:31,740 --> 00:24:33,079 En función de una condición 524 00:24:33,079 --> 00:24:35,200 O hay que hacer una cosa o hay que hacer otra 525 00:24:35,200 --> 00:24:37,619 Es decir, no hay que hacer esto siempre 526 00:24:37,619 --> 00:24:39,539 O esto siempre, no lo sé 527 00:24:39,539 --> 00:24:40,619 Depende de una condición 528 00:24:40,619 --> 00:24:42,579 Si la condición se da, hago esto 529 00:24:42,579 --> 00:24:44,059 Y si no se da, hago esto 530 00:24:44,059 --> 00:24:48,630 Por ejemplo 531 00:24:48,630 --> 00:24:52,970 Una agenda que te dice lo que tienes que hacer 532 00:24:52,970 --> 00:24:55,009 En función de si es laborable o es festivo 533 00:24:55,009 --> 00:24:57,210 Pues la agenda arranca 534 00:24:57,210 --> 00:24:58,809 Aquí te muestra, hola, ¿qué tal? 535 00:24:58,890 --> 00:25:00,390 Soy la agenda, patatín, patatán 536 00:25:00,390 --> 00:25:01,650 Te muestra no sé cuántos 537 00:25:01,650 --> 00:25:07,609 Y ahora lo que tiene que hacer la agenda es diferente en función de si es laborable o si es testigo 538 00:25:07,609 --> 00:25:13,029 Por lo cual le toca hacerse la pregunta, sí o sí, no hay tutía, le toca hacerse la pregunta 539 00:25:13,029 --> 00:25:17,109 Por lo cual aquí se abre la sentencia de decisión 540 00:25:17,109 --> 00:25:22,269 La pregunta en diagrama de flujo se pone en rombito siempre 541 00:25:22,269 --> 00:25:25,490 Me toca hacerse la pregunta, se hace la pregunta 542 00:25:25,490 --> 00:25:29,369 Si esto es cierto, hace lo que tenga que hacer 543 00:25:29,369 --> 00:25:33,769 y si es falso hace lo que tenga que hacer 544 00:25:33,769 --> 00:25:35,869 y luego continúa 545 00:25:35,869 --> 00:25:37,730 me da igual que haya ido por aquí 546 00:25:37,730 --> 00:25:38,549 que haya ido por aquí 547 00:25:38,549 --> 00:25:40,069 entonces mi agenda 548 00:25:40,069 --> 00:25:41,569 programa arranca 549 00:25:41,569 --> 00:25:43,609 hola que tal soy la agenda patatín patatán 550 00:25:43,609 --> 00:25:44,990 te muestra lo que sea 551 00:25:44,990 --> 00:25:46,309 ahora se hace la pregunta 552 00:25:46,309 --> 00:25:47,170 el programa 553 00:25:47,170 --> 00:25:48,490 es laborable 554 00:25:48,490 --> 00:25:50,210 se va por aquí 555 00:25:50,210 --> 00:25:52,970 pues tienes que ir a recoger a no se quien patatín patatán 556 00:25:52,970 --> 00:25:54,990 comprar el pan no se cuantos 557 00:25:54,990 --> 00:25:56,470 no es laborable 558 00:25:56,470 --> 00:26:00,289 Pues tienes que dormir hasta las 10 y regar las plantas 559 00:26:00,289 --> 00:26:00,910 Vale 560 00:26:00,910 --> 00:26:05,250 En ambos casos, una vez que ha hecho lo que toca 561 00:26:05,250 --> 00:26:07,509 Tanto si se cumple como si no se cumple 562 00:26:07,509 --> 00:26:08,349 El programa terminará 563 00:26:08,349 --> 00:26:11,569 Como por ejemplo, adiós, me voy y voy a cerrar el programa 564 00:26:11,569 --> 00:26:13,849 No te olvides de hacer lo que te he dicho, etc. 565 00:26:18,140 --> 00:26:20,180 Bueno, pues este diagrama de flujo 566 00:26:20,180 --> 00:26:25,819 Es el diseño de un programa que usa una sentencia de decisión 567 00:26:25,819 --> 00:26:29,420 Nuestro problema ahora 568 00:26:29,420 --> 00:26:31,400 Si hemos entendido realmente 569 00:26:31,400 --> 00:26:32,420 Su utilidad 570 00:26:32,420 --> 00:26:35,220 Y por qué son imprescindibles 571 00:26:35,220 --> 00:26:37,039 Si lo hemos entendido 572 00:26:37,039 --> 00:26:38,700 Nuestro único problema ahora es 573 00:26:38,700 --> 00:26:39,980 Cómo lo programamos 574 00:26:39,980 --> 00:26:47,259 Entonces, recopilando 575 00:26:47,259 --> 00:26:49,880 Primero, tenemos que saber 576 00:26:49,880 --> 00:26:51,619 Que esta posibilidad existe 577 00:26:51,619 --> 00:26:53,279 Lógicamente, que un programa 578 00:26:53,279 --> 00:26:55,420 Haga una serie de cosas 579 00:26:55,420 --> 00:26:57,940 O haga otras en función de una condición 580 00:26:57,940 --> 00:26:59,819 Esa posibilidad existe 581 00:26:59,819 --> 00:27:01,819 segundo 582 00:27:01,819 --> 00:27:04,460 tengo yo que ir cogiendo soltura 583 00:27:04,460 --> 00:27:05,980 lógicamente en identificar 584 00:27:05,980 --> 00:27:07,660 cuando tengo un enunciado 585 00:27:07,660 --> 00:27:10,420 anda, aquí voy a necesitar una sentencia 586 00:27:10,420 --> 00:27:12,359 de decisión, porque lo que me están 587 00:27:12,359 --> 00:27:14,279 pidiendo hacer, o bien 588 00:27:14,279 --> 00:27:16,279 se hace de esta manera, o bien se 589 00:27:16,279 --> 00:27:18,259 hace de esta otra en función de una condición 590 00:27:18,259 --> 00:27:20,539 luego yo tengo que identificar 591 00:27:20,539 --> 00:27:22,559 pues voy a necesitar una sentencia 592 00:27:22,559 --> 00:27:24,019 de decisión, porque mi programa 593 00:27:24,019 --> 00:27:26,000 viene a hacer esto, viene a hacer lo otro en función de la condición 594 00:27:26,000 --> 00:27:28,059 entonces yo lo identifico, porque soy el que 595 00:27:28,059 --> 00:27:29,359 programo, lo identifico 596 00:27:29,359 --> 00:27:47,859 Y luego ya compongo mi programa. Ah, vale, pues la voy a tener que poner aquí, primero pongo lo siguiente, luego lo compongo, hago mi primer diseño y mi boceto. Y luego ya, pues programar esto, una vez que ya sé la sintaxis de esto, pues es inmediato. 597 00:27:47,859 --> 00:27:51,180 entonces, ¿alguien tiene alguna duda 598 00:27:51,180 --> 00:27:52,640 sobre el sentido 599 00:27:52,640 --> 00:27:53,859 la razón 600 00:27:53,859 --> 00:27:56,720 de por qué hay que incorporar 601 00:27:56,720 --> 00:27:58,680 sentencias de decisión en un lenguaje 602 00:27:58,680 --> 00:27:59,400 estructurado 603 00:27:59,400 --> 00:28:02,880 y a qué situaciones 604 00:28:02,880 --> 00:28:03,460 aplica 605 00:28:03,460 --> 00:28:05,859 nadie, ¿no? 606 00:28:06,539 --> 00:28:08,200 ¿tienen ninguna duda de por qué existen? 607 00:28:09,460 --> 00:28:11,220 bueno, pues entonces, ¿qué es lo que nos queda? 608 00:28:12,039 --> 00:28:12,980 ver cómo es 609 00:28:12,980 --> 00:28:15,460 la sintaxis que nos permite 610 00:28:15,460 --> 00:28:17,500 programar esto 611 00:28:17,500 --> 00:28:22,180 que hay unas cuantas posibilidades 612 00:28:22,180 --> 00:28:24,519 con matices cada una de ellas 613 00:28:24,519 --> 00:28:26,079 y yo decido pues en cada momento 614 00:28:26,079 --> 00:28:27,859 pues a lo mejor cuál pega más, etc. 615 00:28:30,640 --> 00:28:31,700 Vale, pues a ver 616 00:28:31,700 --> 00:28:33,940 vamos a ver la sintaxis 617 00:28:33,940 --> 00:28:36,720 de la sentencia de decisión básica 618 00:28:36,720 --> 00:28:37,799 que es esto de aquí 619 00:28:37,799 --> 00:28:40,339 si la condición se cumple hago una cosa 620 00:28:40,339 --> 00:28:43,759 y si no se cumple hago otra 621 00:28:43,759 --> 00:28:52,519 Vale, pues la sintaxis sería 622 00:28:52,519 --> 00:28:54,240 mi programita viene por aquí 623 00:28:54,240 --> 00:28:56,380 hace lo que tenga que hacer, que sería esto 624 00:28:56,380 --> 00:28:58,940 por ahí viene mi programita, hace lo que tiene que hacer 625 00:28:58,940 --> 00:29:00,779 ahora llega el momento 626 00:29:00,779 --> 00:29:01,880 de hacerse la pregunta 627 00:29:01,880 --> 00:29:04,480 porque en función del resultado 628 00:29:04,480 --> 00:29:06,819 de la pregunta, o hago una cosa 629 00:29:06,819 --> 00:29:08,720 o hago otra, pues cuando llega 630 00:29:08,720 --> 00:29:10,099 el momento de hacerse la pregunta 631 00:29:10,099 --> 00:29:12,500 como no podía ser de otra manera 632 00:29:12,500 --> 00:29:13,599 pues yo escribo if 633 00:29:13,599 --> 00:29:16,599 si pasa esto, hace una cosa y si no otra 634 00:29:16,599 --> 00:29:18,160 y aquí pongo 635 00:29:18,160 --> 00:29:20,680 esa pregunta, que esa pregunta 636 00:29:20,680 --> 00:29:55,470 ¿Qué es? Un booleano, una condición. Aquí pongo mi condición, algo que puede ser true o false. Ahí pongo mi condición. Y ahora, lo que viene justo después, yo ahora entre llaves, aquí pongo lo que haría en el caso de que se cumpla. 637 00:29:55,470 --> 00:29:58,869 ¿vale? esto sería la rama del true 638 00:29:58,869 --> 00:30:02,450 si se cumple la condición 639 00:30:02,450 --> 00:30:03,750 esto es lo que se hace 640 00:30:03,750 --> 00:30:08,019 luego después pongo el se 641 00:30:08,019 --> 00:30:10,779 abro otro bloquecito de llaves 642 00:30:10,779 --> 00:30:14,240 y si no se cumple 643 00:30:14,240 --> 00:30:18,500 lo que hay que hacer en ese caso se pone aquí 644 00:30:18,500 --> 00:30:20,119 y ya está 645 00:30:20,119 --> 00:30:22,140 ya terminó 646 00:30:22,140 --> 00:30:24,519 una de las posibilidades de sintaxis 647 00:30:24,519 --> 00:30:26,299 la más estándar 648 00:30:26,299 --> 00:30:26,619 ¿vale? 649 00:30:27,099 --> 00:30:30,460 esto es exactamente esto 650 00:30:30,460 --> 00:30:33,839 que la condición se cumple hago esto 651 00:30:33,839 --> 00:30:37,000 si no se cumple hago esto otro 652 00:30:37,000 --> 00:30:40,619 y luego ya el programa sigue por debajo tranquilamente 653 00:30:40,619 --> 00:30:42,480 ahí sigue, igual que seguía por aquí 654 00:30:42,480 --> 00:30:45,819 me da igual haber hecho esto o haber hecho esto otro 655 00:30:45,819 --> 00:30:48,599 una de las dos cosas habré hecho lógicamente 656 00:30:48,599 --> 00:30:50,720 porque la condición o es true o es false 657 00:30:50,720 --> 00:30:52,039 no hay un término medio 658 00:30:52,039 --> 00:30:53,519 o es true o es false 659 00:30:53,519 --> 00:30:54,839 una de las dos habré hecho 660 00:30:54,839 --> 00:30:56,140 o he ido por aquí 661 00:30:56,140 --> 00:30:59,869 o he ido por aquí 662 00:30:59,869 --> 00:31:02,089 no hay otra 663 00:31:02,089 --> 00:31:04,250 pero me da igual haber ido por aquí 664 00:31:04,250 --> 00:31:06,769 que haber ido por aquí, llega un momento en que ya he terminado 665 00:31:06,769 --> 00:31:07,650 lo que tengo que hacer 666 00:31:07,650 --> 00:31:10,930 esto va aquí y esto va aquí 667 00:31:10,930 --> 00:31:12,430 llega un momento en que ya he terminado 668 00:31:12,430 --> 00:31:14,390 lo que tengo que hacer y sigo 669 00:31:14,390 --> 00:31:15,329 y mi programa sigue 670 00:31:15,329 --> 00:31:17,529 con lo que tenga que hacer después 671 00:31:17,529 --> 00:31:19,990 que en este caso iría después de las llaves estas 672 00:31:19,990 --> 00:31:31,940 vale, pues esta es la sentencia básica 673 00:31:31,940 --> 00:32:57,150 Entonces, si la practicamos aquí para ir incorporando matices, vale, pues por ejemplo, venga, voy a hacer un proyecto cualquiera de pruebas, pruebas de sentencia y decisión, paquete ejemplos. 674 00:32:57,150 --> 00:33:33,109 Vale, pues venga 675 00:33:33,109 --> 00:33:38,740 Vamos a 676 00:33:38,740 --> 00:33:52,460 Dos números 677 00:33:52,460 --> 00:33:58,259 Por ejemplo 678 00:33:58,259 --> 00:34:00,299 Si son distintos 679 00:34:00,299 --> 00:34:07,799 Te muestra la suma 680 00:34:07,799 --> 00:34:13,789 Y si son iguales 681 00:34:13,789 --> 00:34:17,489 Vamos a hacer algo 682 00:34:17,489 --> 00:34:18,849 Que implique varias sentencias 683 00:34:18,849 --> 00:34:20,590 Para que no sea algo que no haríamos 684 00:34:20,590 --> 00:34:22,130 Con el operador ternario básico 685 00:34:22,130 --> 00:34:24,650 Y si son iguales 686 00:34:24,650 --> 00:34:36,900 Te avisa 687 00:34:36,900 --> 00:34:39,519 Te solicita 688 00:34:39,519 --> 00:34:41,960 Te solicita 689 00:34:41,960 --> 00:34:45,730 Otra vez 690 00:34:45,730 --> 00:34:49,199 Los números 691 00:34:49,199 --> 00:34:53,420 Y ahora ya sí que sí los suma 692 00:34:53,420 --> 00:34:56,400 Aunque sean iguales 693 00:34:56,400 --> 00:34:57,860 Porque si no tendríamos que meternos en un bucle 694 00:34:57,860 --> 00:34:58,639 Que no sabemos hacer 695 00:34:58,639 --> 00:35:01,719 Vale, pues venga 696 00:35:01,719 --> 00:35:03,639 Programa te pide dos números 697 00:35:03,639 --> 00:35:06,059 Si son diferentes te muestra la suma 698 00:35:06,059 --> 00:35:32,539 Y si son iguales te da una segunda oportunidad, pidiéndotelos otra vez, y en ese caso ya te hace la suma, o sea, te da una segunda oportunidad, ya no más, ¿vale? Por ejemplo, entonces esto no nos lo plantearíamos hacer con un operador ternario, porque el operador ternario podríamos hacer la condición de ser iguales, pero en el caso de que sean iguales todavía no tenemos la asignación lista, tendríamos que seguir pidiendo cosas, 699 00:35:32,539 --> 00:35:36,280 Entonces esto, como hacíamos en los videos anteriores, no podíamos 700 00:35:36,280 --> 00:35:40,920 Vale, pues entonces 701 00:35:40,920 --> 00:35:45,840 Vamos a declarar primero las variables que necesitamos 702 00:35:45,840 --> 00:35:50,210 Número 1 y número 2 703 00:35:50,210 --> 00:35:53,550 Como vamos a leer del teclado 704 00:35:53,550 --> 00:35:57,570 Pues venga, el objeto este famoso 705 00:35:57,570 --> 00:36:13,599 Ahora leemos los datos 706 00:36:13,599 --> 00:36:16,860 Vale, pues venga, vamos a leer los datos 707 00:36:16,860 --> 00:36:20,679 Número 1 708 00:36:20,679 --> 00:36:22,900 Igual a 709 00:36:22,900 --> 00:36:27,639 Scan.nextin 710 00:36:27,639 --> 00:36:31,500 Bueno, vamos a poner el mensajito 711 00:36:31,500 --> 00:36:37,070 Número 1 712 00:36:37,070 --> 00:36:46,699 Y número 2 713 00:36:46,699 --> 00:36:54,530 Vale, hasta aquí no hay duda 714 00:36:54,530 --> 00:36:56,070 El programa 715 00:36:56,070 --> 00:36:59,510 Ha solicitado dos números enteros por teclado 716 00:36:59,510 --> 00:37:00,170 Y ahí los tiene 717 00:37:00,170 --> 00:37:02,769 y ahora es cuando empezamos a pensar en el algoritmo 718 00:37:02,769 --> 00:37:03,969 que es, vamos a ver 719 00:37:03,969 --> 00:37:06,530 ¿qué hago? pues es que depende 720 00:37:06,530 --> 00:37:08,650 porque hago cosas completamente 721 00:37:08,650 --> 00:37:10,409 diferentes en ambos casos 722 00:37:10,409 --> 00:37:12,449 si son diferentes 723 00:37:12,449 --> 00:37:14,170 directamente los sumo 724 00:37:14,170 --> 00:37:15,730 y muestro la suma 725 00:37:15,730 --> 00:37:17,909 y si son iguales me viene 726 00:37:17,909 --> 00:37:21,130 pedirlos otra vez 727 00:37:21,130 --> 00:37:22,469 leerlos otra vez 728 00:37:22,469 --> 00:37:24,210 ahora y así hacer la suma 729 00:37:24,210 --> 00:37:26,409 hago dos cosas completamente distintas 730 00:37:26,409 --> 00:37:28,650 entonces aquí es cuando yo identifico 731 00:37:28,650 --> 00:37:29,969 que aquí ya 732 00:37:29,969 --> 00:37:32,110 Me tengo que ir por dos ramas separadas 733 00:37:32,110 --> 00:37:32,949 No hay otra 734 00:37:32,949 --> 00:37:35,469 O me voy por una rama o me voy por otra 735 00:37:35,469 --> 00:37:36,750 Porque hago dos cosas diferentes 736 00:37:36,750 --> 00:37:39,590 Entonces aquí es cuando identifico que tengo que poner una sentencia de decisión 737 00:37:39,590 --> 00:37:40,730 Digo, a ver 738 00:37:40,730 --> 00:37:42,789 En función de una condición 739 00:37:42,789 --> 00:37:44,789 O bien hago una cosa 740 00:37:44,789 --> 00:37:47,329 O bien hago otra 741 00:37:47,329 --> 00:37:49,030 ¿Vale? 742 00:37:49,670 --> 00:37:50,710 Aquí lo identifico 743 00:37:50,710 --> 00:37:53,309 Que a partir de aquí mi programa se ramifican dos 744 00:37:53,309 --> 00:37:57,809 Porque aquí ya sí que tengo que mirar 745 00:37:57,809 --> 00:37:59,090 Como son los números 746 00:37:59,090 --> 00:38:01,750 Y hago dos cosas completamente distintas 747 00:38:01,750 --> 00:38:02,570 Completamente 748 00:38:02,570 --> 00:38:04,590 Si son iguales a si son diferentes 749 00:38:04,590 --> 00:38:05,349 Completamente 750 00:38:05,349 --> 00:38:07,869 Entonces a partir de aquí no me queda más remedio 751 00:38:07,869 --> 00:38:10,250 Que poner una sentencia de decisión 752 00:38:10,250 --> 00:38:12,309 Con su sintaxis correcta 753 00:38:12,309 --> 00:38:14,469 En la cual en función de una condición 754 00:38:14,469 --> 00:38:16,829 O bien hago algo 755 00:38:16,829 --> 00:38:19,210 O bien hago 756 00:38:19,210 --> 00:38:21,429 Otra cosa 757 00:38:21,429 --> 00:38:23,050 ¿Vale? 758 00:38:23,909 --> 00:38:26,269 Vamos a parar aquí antes de completarla 759 00:38:26,269 --> 00:38:27,389 Y la completamos a la vuelta