1 00:00:00,000 --> 00:00:09,660 Vale, pues el 8, como de costumbre, leemos y tratamos de interpretar correctamente lo que quiere hacer. 2 00:00:10,679 --> 00:00:16,379 Bueno, pues mostrar una suma, o sea, calcular y mostrar una suma, luego el resultado final es un único dato, 3 00:00:17,019 --> 00:00:18,719 que es la suma de un montón de cosas. 4 00:00:19,399 --> 00:00:22,039 Pues lo de siempre, voy a tener que hacer una suma de un montón de sumandos. 5 00:00:22,859 --> 00:00:24,079 ¿Esos sumandos cuáles son? 6 00:00:24,699 --> 00:00:28,539 Los conozco ya, 3, 7, 12, porque pongo 3 más 7 más 12 y se acabó. 7 00:00:28,539 --> 00:00:30,879 pues a ver cuáles son 8 00:00:30,879 --> 00:00:32,939 son todos los múltiplos de 5 9 00:00:32,939 --> 00:00:35,000 comprendidos entre dos valores A y B 10 00:00:35,000 --> 00:00:37,100 incógnita, con lo cual 11 00:00:37,100 --> 00:00:38,979 no los conozco, no sé cuáles son, dependen 12 00:00:38,979 --> 00:00:39,899 de mis datos de entrada 13 00:00:39,899 --> 00:00:42,939 entonces como dependen de mis datos de entrada, no los conozco 14 00:00:42,939 --> 00:00:45,060 va a ser una suma acumulativa que se vaya 15 00:00:45,060 --> 00:00:46,719 haciendo en un bucle, no hay otra 16 00:00:46,719 --> 00:00:48,820 ¿vale? entonces 17 00:00:48,820 --> 00:00:51,479 se tratará 18 00:00:51,479 --> 00:00:53,100 de pedir estos datos y ahora ya 19 00:00:53,100 --> 00:00:54,600 plantear esa suma acumulativa 20 00:00:54,600 --> 00:00:57,219 pues bueno, uno empieza a hacer esto 21 00:00:57,219 --> 00:01:00,179 Pide los datos 22 00:01:00,179 --> 00:01:03,359 Ojo, qué mala suerte 23 00:01:03,359 --> 00:01:05,060 No tengo el escáner en ningún sitio 24 00:01:05,060 --> 00:01:16,469 Vale, pues venga, los datos de entrada 25 00:01:16,469 --> 00:01:18,230 Como son solo dos, A y B 26 00:01:18,230 --> 00:01:20,670 Pues vamos ya directamente a leerlos 27 00:01:20,670 --> 00:01:24,719 Y ya empezamos a 28 00:01:24,719 --> 00:01:26,079 Trabajar 29 00:01:26,079 --> 00:01:35,129 Venga 30 00:01:35,129 --> 00:01:37,730 Introduzca dos 31 00:01:37,730 --> 00:01:40,129 Números 32 00:01:40,129 --> 00:01:44,400 Y ahora leemos A 33 00:01:44,400 --> 00:01:51,129 Bueno, y otra cosa buena 34 00:01:51,129 --> 00:01:53,689 Habrá exámenes aprobados y exámenes suspensos 35 00:01:53,689 --> 00:01:55,989 Pero no he visto 36 00:01:55,989 --> 00:01:57,989 Prácticamente burradas 37 00:01:57,989 --> 00:02:01,010 De verdad que no 38 00:02:01,010 --> 00:02:02,650 Y eso es otra cosa inaudita 39 00:02:02,650 --> 00:02:13,969 Bueno, a ver, de esas sí he visto una 40 00:02:13,969 --> 00:02:18,310 Que no revelaré el origen 41 00:02:18,310 --> 00:02:22,050 Pero de esas sí he visto una 42 00:02:22,050 --> 00:02:23,330 ¿Pero cómo es YouTube? 43 00:02:23,469 --> 00:02:24,009 Char Commander 44 00:02:24,009 --> 00:02:26,490 Char Mander 45 00:02:26,490 --> 00:02:33,069 ¿Tú crees que yo conozco algún Pokémon? 46 00:02:36,490 --> 00:02:38,030 ¡Que me he equivocado! 47 00:02:41,129 --> 00:02:41,610 Ese 48 00:02:41,610 --> 00:02:44,750 No, pero a ver 49 00:02:44,750 --> 00:02:47,270 John, cuando quieras les cuento 50 00:02:47,270 --> 00:02:48,629 ¿Cómo declaras tú las variables, Char? 51 00:02:56,449 --> 00:02:57,349 Venga, pues a ver. 52 00:02:57,469 --> 00:02:58,969 Tenemos ya los dos datos de entrada. 53 00:02:59,689 --> 00:03:00,050 Ahora, 54 00:03:00,169 --> 00:03:02,750 el resultado de mi programa 55 00:03:02,750 --> 00:03:05,750 es la suma de un montón de sumandos. 56 00:03:06,009 --> 00:03:07,349 La suma de un montón de sumandos 57 00:03:07,349 --> 00:03:09,389 que habrá que ver de dónde salen, porque yo 58 00:03:09,389 --> 00:03:11,250 a priori no sé cuáles son, no puedo plantar 59 00:03:11,250 --> 00:03:13,370 la suma tal cual. Entonces, la suma 60 00:03:13,370 --> 00:03:15,289 de un montón de sumandos es 61 00:03:15,289 --> 00:03:17,270 una suma acumulativa que la voy a acumular 62 00:03:17,270 --> 00:03:19,110 en esa variable suma que empieza valiendo 0 63 00:03:19,110 --> 00:03:21,189 y ahora ya 64 00:03:21,189 --> 00:03:22,849 tendré que hacer algo así. 65 00:03:30,159 --> 00:03:31,740 Entonces, algo así tendrá que ocurrir 66 00:03:31,740 --> 00:03:33,699 para que se vayan metiendo 67 00:03:33,699 --> 00:03:35,580 todos los sumandos 68 00:03:35,580 --> 00:03:37,500 x en esta suma. Entonces, 69 00:03:37,500 --> 00:03:38,699 en cada iteración 70 00:03:38,699 --> 00:03:40,900 x, que todavía no sé 71 00:03:40,900 --> 00:03:43,500 ni por dónde empieza, ni dónde vienen los 72 00:03:43,500 --> 00:03:45,020 tiros, ni cómo generarlo. 73 00:03:46,819 --> 00:03:46,919 ¿Vale? 74 00:03:47,340 --> 00:03:49,539 Cada iteración, x tomará 75 00:03:49,539 --> 00:03:51,360 un valor, se incorporará 76 00:03:51,360 --> 00:03:53,340 a la suma, siguiente 77 00:03:53,340 --> 00:03:55,419 iteración, x tomará 78 00:03:55,419 --> 00:03:57,699 ese otro valor, veremos como lo generamos 79 00:03:57,699 --> 00:03:59,360 se incorporará la suma y así 80 00:03:59,360 --> 00:04:01,319 todo el rato, entonces no hay otra 81 00:04:01,319 --> 00:04:03,379 esta es una suma de muchas cosas 82 00:04:03,379 --> 00:04:05,500 esas cosas son 83 00:04:05,500 --> 00:04:06,840 las sucesivas x 84 00:04:06,840 --> 00:04:09,460 según vamos iterando por el 85 00:04:09,460 --> 00:04:10,699 bucle, las sucesivas x 86 00:04:10,699 --> 00:04:13,060 ¿cuándo acabo de sumar? no lo sé 87 00:04:13,060 --> 00:04:15,439 tendré que poner la condición, pero es 88 00:04:15,439 --> 00:04:17,319 esto, es que no hay otra, vale 89 00:04:17,319 --> 00:04:19,439 pues entonces para seguir centrando esto 90 00:04:19,439 --> 00:04:20,680 tendremos que ver, vamos a ver 91 00:04:20,680 --> 00:04:22,740 Los diferentes sumandos, ¿cuáles son? 92 00:04:23,699 --> 00:04:24,800 Me dice aquí. 93 00:04:25,720 --> 00:04:30,579 Son todos los múltiplos de 5 comprendidos entre A y B. 94 00:04:31,779 --> 00:04:34,100 Vale, vamos a suponer, primera versión, 95 00:04:34,759 --> 00:04:36,759 que A siempre es menor que B. 96 00:04:39,740 --> 00:04:41,500 Y que siempre son positivos. 97 00:04:42,019 --> 00:04:44,000 Con lo cual, esta parte, como si la ignoráramos. 98 00:04:44,819 --> 00:04:46,139 Hacemos la primera versión. 99 00:04:47,360 --> 00:04:48,180 Sí, claro. 100 00:04:48,180 --> 00:04:52,259 Entonces, esa parte es la misma primera versión, esa parte ignorada. 101 00:04:52,920 --> 00:04:55,819 Asumimos que siempre va a meter una menor que b y positivos. 102 00:04:56,480 --> 00:04:58,540 Pues entonces ya sabemos cómo generar los sumandos. 103 00:04:59,279 --> 00:05:02,500 Los sumandos empiezan, x yo lo puedo inicializar a a, 104 00:05:03,519 --> 00:05:06,319 porque los sumandos están comprendidos entre a y b. 105 00:05:07,779 --> 00:05:09,720 ¿Y cuándo va a acabar mi suma? 106 00:05:10,680 --> 00:05:14,000 Pues mientras x sea menor o igual que b, la suma sigue. 107 00:05:14,000 --> 00:05:16,360 ¿Vale? Porque los sumandos están 108 00:05:16,360 --> 00:05:17,800 Partiendo de A 109 00:05:17,800 --> 00:05:20,660 Y yo sigo sumando mientras no haya llegado a B 110 00:05:20,660 --> 00:05:25,860 Sí, pero vamos por partes 111 00:05:25,860 --> 00:05:28,740 No te perdono 112 00:05:28,740 --> 00:05:31,899 Ahora, sumamos todos los X 113 00:05:31,899 --> 00:05:34,199 Con esto sumaríamos todos los números 114 00:05:34,199 --> 00:05:36,220 O no, sumaríamos A 115 00:05:36,220 --> 00:05:37,699 Un montón de veces 116 00:05:37,699 --> 00:05:40,300 Claro, entonces, ¿qué queremos hacer con los X? 117 00:05:40,660 --> 00:05:42,620 Primero, son los que sean múltiplos de 5 118 00:05:42,620 --> 00:05:45,120 Entonces, cuidado, esta suma se hace solo 119 00:05:45,120 --> 00:05:47,560 si el resto de dividir 120 00:05:47,560 --> 00:05:49,139 x entre 5 121 00:05:49,139 --> 00:05:50,540 es igual a 0. 122 00:05:51,060 --> 00:05:51,860 Solo así. 123 00:05:54,199 --> 00:05:54,480 ¿Vale? 124 00:05:55,360 --> 00:05:56,480 ¿Así lo dejamos? 125 00:05:58,000 --> 00:05:58,740 No, no, no. 126 00:05:59,480 --> 00:05:59,920 Casi. 127 00:06:00,519 --> 00:06:00,959 ¿Sí o no? 128 00:06:01,180 --> 00:06:01,800 No, puede ser. 129 00:06:02,379 --> 00:06:03,439 Así no lo dejamos 130 00:06:03,439 --> 00:06:03,980 porque entonces 131 00:06:03,980 --> 00:06:05,899 x empieza siendo a 132 00:06:05,899 --> 00:06:07,079 y es a todo el rato. 133 00:06:07,680 --> 00:06:08,759 ¿a es múltiplo de 5? 134 00:06:09,699 --> 00:06:10,759 Sí, lo sumo. 135 00:06:11,319 --> 00:06:12,699 ¿a es múltiplo de 5? 136 00:06:12,819 --> 00:06:13,439 Sí, lo sumo. 137 00:06:13,459 --> 00:06:14,279 Y me estaría sumando a 138 00:06:14,279 --> 00:06:14,920 hasta el infinito, 139 00:06:15,019 --> 00:06:15,660 bucle infinito. 140 00:06:15,660 --> 00:06:17,560 No, claro, es que X 141 00:06:17,560 --> 00:06:21,439 Va variando por todos los posibles valores 142 00:06:21,439 --> 00:06:22,379 Entre A y B 143 00:06:22,379 --> 00:06:25,680 Claro, entonces me falta aquí a mí sumar esto 144 00:06:25,680 --> 00:06:28,519 Que está afuera 145 00:06:28,519 --> 00:06:29,680 ¿Quieren las llaves? 146 00:06:31,060 --> 00:06:32,779 No, si yo te pongo las llaves 147 00:06:32,779 --> 00:06:34,819 Tú quieres llaves, yo te pongo llaves 148 00:06:34,819 --> 00:06:40,120 Pero que además es muy buena práctica 149 00:06:40,120 --> 00:06:43,459 ¿Se podría poner sin el IPS y poniendo X igual o más a 5? 150 00:06:43,459 --> 00:06:46,540 claro, claro 151 00:06:46,540 --> 00:06:48,699 yo estoy haciendo la versión robótica 152 00:06:48,699 --> 00:06:49,879 que es 153 00:06:49,879 --> 00:06:52,779 vamos a plantear esto 154 00:06:52,779 --> 00:06:54,540 con las estructuras que conocemos 155 00:06:54,540 --> 00:06:56,639 porque esto, y luego ya 156 00:06:56,639 --> 00:06:58,639 claro, esto lo puedes plantear de muchas maneras 157 00:06:58,639 --> 00:07:00,000 puedes compactarlo, puedes 158 00:07:00,000 --> 00:07:02,779 pasar de la variable x, usar la propia variable 159 00:07:02,779 --> 00:07:04,100 a, e irla incrementando 160 00:07:04,100 --> 00:07:06,660 y ya está, puedes hacer muchas cosas 161 00:07:06,660 --> 00:07:06,980 ¿vale? 162 00:07:08,439 --> 00:07:10,540 entonces, esto efectivamente ya sería 163 00:07:10,540 --> 00:07:12,420 un programa que todos aquellos 164 00:07:12,420 --> 00:07:13,959 números que empiezan desde A 165 00:07:13,959 --> 00:07:16,259 se van incrementando de uno en uno 166 00:07:16,259 --> 00:07:17,439 acabando en B 167 00:07:17,439 --> 00:07:20,459 pues solo aquellos que sean múltiplos 168 00:07:20,459 --> 00:07:21,600 de 5 se suman a X 169 00:07:21,600 --> 00:07:23,399 esto en principio va a estar bien 170 00:07:23,399 --> 00:07:26,220 vale, pues entonces 171 00:07:26,220 --> 00:07:28,639 la primera versión 172 00:07:28,639 --> 00:07:29,759 del programa la tengo 173 00:07:29,759 --> 00:07:32,240 ahora me dicen, oye cuidado 174 00:07:32,240 --> 00:07:33,779 amplíala 175 00:07:33,779 --> 00:07:38,220 A y B 176 00:07:38,220 --> 00:07:40,240 no permites que sean negativos 177 00:07:40,240 --> 00:07:43,019 Con no permitir, igual habéis interpretado 178 00:07:43,019 --> 00:07:45,300 Que si son negativos, el programa termine 179 00:07:45,300 --> 00:07:46,779 ¿No? 180 00:07:47,399 --> 00:07:48,579 No, habéis interpretado eso 181 00:07:48,579 --> 00:07:54,069 O sea, que se lo estés pidiendo todo el rato 182 00:07:54,069 --> 00:07:55,649 Hasta que meta un positivo 183 00:07:55,649 --> 00:07:56,750 ¿No? 184 00:07:58,209 --> 00:08:00,250 Vale, entonces, era lo que yo quería decir 185 00:08:00,250 --> 00:08:02,310 ¿Vale? No que si es negativo, te diga adiós 186 00:08:02,310 --> 00:08:04,189 Y no haga más, sino que te pida 187 00:08:04,189 --> 00:08:06,310 Si es negativo, te lo vuelve a pedir 188 00:08:06,310 --> 00:08:07,870 Si es negativo, te lo vuelve a pedir 189 00:08:07,870 --> 00:08:10,649 Y así todo el rato, hasta que no le metas uno que le gusta 190 00:08:10,649 --> 00:08:11,810 Positivo 191 00:08:11,810 --> 00:08:14,310 entonces, ahí de nuevo 192 00:08:14,310 --> 00:08:15,509 ya tenemos otro bucle 193 00:08:15,509 --> 00:08:17,970 un bucle que está todo el rato, dame A 194 00:08:17,970 --> 00:08:19,149 dame A, dame A 195 00:08:19,149 --> 00:08:22,009 ¿vale? pues ¿cuándo tendremos que hacer ese bucle? 196 00:08:22,069 --> 00:08:24,029 vamos a incorporarlo al principio, cuando estamos 197 00:08:24,029 --> 00:08:25,790 leyendo A, entonces, primera modificación 198 00:08:25,790 --> 00:08:28,009 cuidado, esto 199 00:08:28,009 --> 00:08:30,129 no leo una vez A y me quedo 200 00:08:30,129 --> 00:08:32,129 aquí tan tranquila y estupenda, no 201 00:08:32,129 --> 00:08:33,970 yo voy a ir 202 00:08:33,970 --> 00:08:36,009 leyendo todo el rato 203 00:08:36,009 --> 00:08:38,169 A, mientras sea negativo 204 00:08:38,169 --> 00:08:41,090 entonces, esta sería 205 00:08:41,090 --> 00:08:43,889 mi primera modificación 206 00:08:43,889 --> 00:08:46,110 mientras A sea negativo, lo lees 207 00:08:46,110 --> 00:08:48,809 vuelve a ser negativo 208 00:08:48,809 --> 00:08:50,769 lo lees 209 00:08:50,769 --> 00:08:52,509 vuelve a ser negativo 210 00:08:52,509 --> 00:08:53,370 lo lees 211 00:08:53,370 --> 00:08:55,470 y así va a estar todo el rato 212 00:08:55,470 --> 00:08:57,789 y hasta que A no sea positivo 213 00:08:57,789 --> 00:08:59,309 no va a salir del bucle 214 00:08:59,309 --> 00:09:01,110 cuando hayamos salido del bucle 215 00:09:01,110 --> 00:09:03,210 ya tendremos la garantía de que A es positivo 216 00:09:03,210 --> 00:09:05,129 vale, entonces esta idea 217 00:09:05,129 --> 00:09:06,889 está bien, me limita a meterlo en un bucle 218 00:09:06,889 --> 00:09:08,070 para que esté ahí todo el rato 219 00:09:08,070 --> 00:09:10,049 mientras sea negativo 220 00:09:10,049 --> 00:09:11,870 nos hemos encontrado 221 00:09:11,870 --> 00:09:12,769 algo de compilación 222 00:09:12,769 --> 00:09:13,289 uy 223 00:09:13,289 --> 00:09:14,769 ah claro me dice 224 00:09:14,769 --> 00:09:15,470 ah es que A 225 00:09:15,470 --> 00:09:16,690 podría no estar inicializado 226 00:09:16,690 --> 00:09:18,309 claro porque el bucle 227 00:09:18,309 --> 00:09:19,169 while funciona así 228 00:09:19,169 --> 00:09:20,509 lo primero que hace 229 00:09:20,509 --> 00:09:21,629 es evaluar esta condición 230 00:09:21,629 --> 00:09:22,309 para entrar ya 231 00:09:22,309 --> 00:09:23,049 la primera vez 232 00:09:23,049 --> 00:09:23,610 podría ocurrir 233 00:09:23,610 --> 00:09:24,289 que no entrara nunca 234 00:09:24,289 --> 00:09:26,429 pero claro 235 00:09:26,429 --> 00:09:27,769 A todavía 236 00:09:27,769 --> 00:09:28,610 no ha sido leído 237 00:09:28,610 --> 00:09:29,669 A todavía no tiene nada 238 00:09:29,669 --> 00:09:31,269 entonces nosotros 239 00:09:31,269 --> 00:09:32,309 queremos hacer algo 240 00:09:32,309 --> 00:09:33,169 que fuerce 241 00:09:33,169 --> 00:09:34,529 a que entre una primera vez 242 00:09:34,529 --> 00:09:36,049 que fuerce 243 00:09:36,049 --> 00:09:36,889 que entre una primera vez 244 00:09:36,889 --> 00:09:37,870 pues que truquillo 245 00:09:37,870 --> 00:09:38,549 podemos hacer 246 00:09:38,549 --> 00:09:41,580 ¿Cómo que copy-paste? 247 00:09:42,679 --> 00:09:47,220 A ver, poner a 248 00:09:47,220 --> 00:09:49,620 Inicializarlo a un valor que cumpla 249 00:09:49,620 --> 00:09:50,419 Esta condición 250 00:09:50,419 --> 00:09:52,179 El menos 1 251 00:09:52,179 --> 00:09:55,100 Porque el 0 no la cumpliría 252 00:09:55,100 --> 00:09:56,139 Con lo cual no entraría en el while 253 00:09:56,139 --> 00:09:59,879 Entonces lo inicializo a un valor que cumpla esta condición 254 00:09:59,879 --> 00:10:01,759 A menor que 0 255 00:10:01,759 --> 00:10:03,220 Entonces ya entro la primera vez 256 00:10:03,220 --> 00:10:05,259 Luego ya me aseguro de que la primera lectura 257 00:10:05,259 --> 00:10:06,019 La hago sí o sí 258 00:10:06,019 --> 00:10:09,460 Porque A es menor que 0, sí, lo inicio a menos 1 259 00:10:09,460 --> 00:10:12,240 vale, pues haces la primera lectura 260 00:10:12,240 --> 00:10:12,919 la primera 261 00:10:12,919 --> 00:10:15,059 sigue siendo cero 262 00:10:15,059 --> 00:10:17,460 perdón, sigue siendo negativo 263 00:10:17,460 --> 00:10:20,259 otra vez, sigue siendo negativo 264 00:10:20,259 --> 00:10:22,100 otra vez, entonces aquí 265 00:10:22,100 --> 00:10:23,700 le podríamos poner 266 00:10:23,700 --> 00:10:29,919 introduzca 267 00:10:29,919 --> 00:10:32,039 positivo 268 00:10:32,039 --> 00:10:33,500 para que sepa que 269 00:10:33,500 --> 00:10:36,159 si estamos en este punto 270 00:10:36,159 --> 00:10:37,899 es porque lo ha metido mal 271 00:10:37,899 --> 00:10:43,620 vale, introduzca positivo 272 00:10:43,620 --> 00:10:45,080 lo vuelve a pedir 273 00:10:45,080 --> 00:10:48,100 bueno, a ver, lo que pasa es que este programa 274 00:10:48,100 --> 00:10:50,159 está feo porque cuando ya meta un positivo 275 00:10:50,159 --> 00:10:51,799 le va a decir aquí 276 00:10:51,799 --> 00:10:54,080 introduzca positivo 277 00:10:54,080 --> 00:10:54,559 otra vez 278 00:10:54,559 --> 00:10:55,379 ¿vale? 279 00:11:00,649 --> 00:11:01,090 sí 280 00:11:01,090 --> 00:11:04,570 ya, pero se da cuenta cuando ha vuelto 281 00:11:04,570 --> 00:11:06,409 arriba, entonces este introduzca 282 00:11:06,409 --> 00:11:07,629 positivo te lo va a sacar siempre 283 00:11:07,629 --> 00:11:16,490 imagínate que pides el primer número, ese número ya es 284 00:11:16,490 --> 00:11:16,889 positivo 285 00:11:16,889 --> 00:11:19,210 te pone, introduce positivo 286 00:11:19,210 --> 00:11:20,769 y entra arriba 287 00:11:20,769 --> 00:11:23,110 como ya es positivo ya no vuelve a entrar 288 00:11:23,110 --> 00:11:25,470 pero este mensajito te lo va a mostrar 289 00:11:25,470 --> 00:11:27,289 siempre después de haber introducido 290 00:11:27,289 --> 00:11:29,129 número, tanto negativo como positivo 291 00:11:29,129 --> 00:11:33,269 ya, pero es que ya ha entrado 292 00:11:33,269 --> 00:11:34,990 tú aquí has metido el positivo 293 00:11:34,990 --> 00:11:37,149 lo has metido, te muestra el mensajito 294 00:11:37,149 --> 00:11:38,370 y ahora ya se da cuenta 295 00:11:38,370 --> 00:11:41,309 entonces bueno, esto lo podríamos 296 00:11:41,309 --> 00:11:43,110 cambiar, podríamos 297 00:11:43,110 --> 00:11:45,129 ponerlo aquí por ejemplo 298 00:11:45,129 --> 00:11:51,950 y así 299 00:11:51,950 --> 00:11:57,039 y así este system out 300 00:11:57,039 --> 00:11:59,259 ya nos sobra, no hace falta 301 00:11:59,259 --> 00:12:00,179 le decimos primero 302 00:12:00,179 --> 00:12:02,840 introduzca un valor de A positivo 303 00:12:02,840 --> 00:12:05,379 lo lee, que es positivo, ya está, ya no hace nada más 304 00:12:05,379 --> 00:12:07,000 que es negativo, vuelve a pedir 305 00:12:07,000 --> 00:12:08,419 que introduzca un valor de A positivo 306 00:12:08,419 --> 00:12:11,139 vale, pues ya tenemos 307 00:12:11,139 --> 00:12:12,980 ya le hemos prohibido que meta negativo 308 00:12:12,980 --> 00:12:15,200 ya le hemos prohibido, con el B estamos igual 309 00:12:15,200 --> 00:12:16,559 con el B estamos igual 310 00:12:16,559 --> 00:12:18,059 lo tendríamos que meter en un bucle 311 00:12:18,059 --> 00:12:21,139 para que esté todo el rato y que no salga de ese bucle 312 00:12:21,139 --> 00:12:22,220 mientras Y no sea 313 00:12:22,220 --> 00:12:24,299 mientras B no sea negativo 314 00:12:24,299 --> 00:12:25,860 entonces lo mismito 315 00:12:25,860 --> 00:12:27,820 lo mismito que hemos hecho aquí 316 00:12:27,820 --> 00:12:28,940 lo tendríamos que hacer 317 00:12:28,940 --> 00:12:32,440 oye, estate haciendo eso todo el rato 318 00:12:32,440 --> 00:12:34,220 mientras b 319 00:12:34,220 --> 00:12:36,000 no sea 320 00:12:36,000 --> 00:12:39,710 mayor o igual que cero 321 00:12:39,710 --> 00:12:40,929 todo el rato así 322 00:12:40,929 --> 00:12:43,529 le vamos a poner el mensajito para que sepa 323 00:12:43,529 --> 00:12:44,929 que es lo que tiene que hacer 324 00:12:44,929 --> 00:12:56,980 hombre, dejar a la gente expresarse libremente 325 00:12:57,700 --> 00:13:05,039 positivo 326 00:13:05,039 --> 00:13:07,480 A la, ya está 327 00:13:07,480 --> 00:13:13,370 Sí, a ver 328 00:13:13,370 --> 00:13:15,970 Lo podrías meter en el mismo bucle 329 00:13:15,970 --> 00:13:17,230 Y entonces la condición sería 330 00:13:17,230 --> 00:13:20,629 Mientras A menor que 0 o B menor que 0 331 00:13:20,629 --> 00:13:21,450 Con creo que los dos sea 332 00:13:21,450 --> 00:13:22,970 ¿Cuál es el problema que tienes? 333 00:13:23,429 --> 00:13:26,070 Que le estás obligando a meterte los dos cada vez 334 00:13:26,070 --> 00:13:28,549 Y si ya uno lo ha metido como positivo 335 00:13:28,549 --> 00:13:30,269 Ya ese no se lo quiere seguir pidiendo 336 00:13:30,269 --> 00:13:31,110 ¿Vale? 337 00:13:31,450 --> 00:13:32,690 Pero sí, podría 338 00:13:32,690 --> 00:13:36,169 Entonces, aquí nos pasa lo mismo 339 00:13:36,169 --> 00:13:39,110 este B para forzar que entre por primera vez 340 00:13:39,110 --> 00:13:40,610 para forzar que entre por primera vez 341 00:13:40,610 --> 00:13:43,009 este B vamos a inicializárselo 342 00:13:43,009 --> 00:13:44,669 a un valor ya negativo 343 00:13:44,669 --> 00:13:46,830 cualquiera, entonces la primera vez 344 00:13:46,830 --> 00:13:47,529 va a entrar seguro 345 00:13:47,529 --> 00:13:50,289 y ya las siguientes va a depender 346 00:13:50,289 --> 00:13:54,000 ¿vale? entonces aquí nos hemos 347 00:13:54,000 --> 00:13:56,179 encontrado un ejemplo 348 00:13:56,179 --> 00:13:57,399 de situación de bucle 349 00:13:57,399 --> 00:13:59,779 que podemos identificar a menudo 350 00:13:59,779 --> 00:14:01,360 que es un bucle en el cual 351 00:14:01,360 --> 00:14:03,799 yo sé que la primera vez la quiero hacer 352 00:14:03,799 --> 00:14:05,000 sí o sí seguro 353 00:14:05,000 --> 00:14:06,879 incondicionalmente 354 00:14:06,879 --> 00:14:08,940 y las demás ya depende 355 00:14:08,940 --> 00:14:11,059 de lo que ocurra, esa es una situación concreta 356 00:14:11,059 --> 00:14:12,080 pues la situación 357 00:14:12,080 --> 00:14:15,019 es más bonito expresarlo con otra 358 00:14:15,019 --> 00:14:16,580 estructura de bucle que ya 359 00:14:16,580 --> 00:14:18,559 completaremos en breve que es el do while 360 00:14:18,559 --> 00:14:20,259 ¿vale? pero ahora mismo 361 00:14:20,259 --> 00:14:22,759 tenemos el while que con el while se puede hacer todo 362 00:14:22,759 --> 00:14:25,019 lo que pasa es que hemos tenido que hacer esa trampa 363 00:14:25,019 --> 00:14:27,240 pero repito, mirad la situación 364 00:14:27,240 --> 00:14:28,700 la situación es que 365 00:14:28,700 --> 00:14:30,860 estas sentencias sé que la 366 00:14:30,860 --> 00:14:32,960 primera vez se tienen que ejecutar sí o sí 367 00:14:32,960 --> 00:14:35,179 sí o sí, la primera vez es incondicional 368 00:14:35,179 --> 00:14:37,039 y ya las siguientes 369 00:14:37,039 --> 00:14:39,059 depende de la condición 370 00:14:39,059 --> 00:14:41,120 pues hemos tenido que hacer la trampa 371 00:14:41,120 --> 00:14:43,279 de inicializar B a un valor 372 00:14:43,279 --> 00:14:45,820 que nos garantice que la primera vez es positivo 373 00:14:45,820 --> 00:14:47,700 o true, para que la primera vez 374 00:14:47,700 --> 00:14:48,460 entre sí o sí 375 00:14:48,460 --> 00:14:51,120 y ya las siguientes, ya sí que depende 376 00:14:51,120 --> 00:14:53,480 del valor introducido 377 00:14:53,480 --> 00:14:55,679 con un do while habría quedado 378 00:14:55,679 --> 00:14:57,679 más bonito, pero eso ya lo haremos 379 00:14:57,679 --> 00:14:58,500 ¿vale? 380 00:14:59,080 --> 00:15:01,220 con un do while que es una estructura que ahora 381 00:15:01,220 --> 00:15:02,639 el ratito este que has dormido 382 00:15:02,639 --> 00:15:04,299 pues he dicho que 383 00:15:04,299 --> 00:15:06,179 que le íbamos a incorporar 384 00:15:06,179 --> 00:15:08,220 vale 385 00:15:08,220 --> 00:15:12,620 vale 386 00:15:12,620 --> 00:15:14,360 bueno, pues ya está, ya hemos hecho 387 00:15:14,360 --> 00:15:16,320 la primera parte 388 00:15:16,320 --> 00:15:18,720 no permitirle al tío 389 00:15:18,720 --> 00:15:19,440 o a la tía 390 00:15:19,440 --> 00:15:22,379 que meta números negativos 391 00:15:22,379 --> 00:15:25,019 vale, siguiente parte 392 00:15:25,019 --> 00:15:26,940 como los hayas 393 00:15:26,940 --> 00:15:28,980 metido al revés, no pasa nada 394 00:15:28,980 --> 00:15:30,779 a él no le obligamos a hacer nada 395 00:15:30,779 --> 00:15:33,100 simplemente los intercambiamos nosotros 396 00:15:33,100 --> 00:15:34,139 nada más 397 00:15:34,139 --> 00:15:36,919 Bueno, pues entonces, llegados a este punto 398 00:15:36,919 --> 00:15:39,440 Aquí ocurre que 399 00:15:39,440 --> 00:15:41,679 Como A sea mayor que B 400 00:15:41,679 --> 00:15:43,120 No vale 401 00:15:43,120 --> 00:15:44,799 Algo hay que hacer 402 00:15:44,799 --> 00:15:47,419 Como A sea mayor que B, no vale el resto del programa 403 00:15:47,419 --> 00:15:50,220 Claro 404 00:15:50,220 --> 00:15:53,080 Como A sea mayor que B, hay que intercambiarlos 405 00:15:53,080 --> 00:16:00,470 Y claro, nadie me habrá hecho 406 00:16:00,470 --> 00:16:01,629 Esto 407 00:16:01,629 --> 00:16:02,809 A igual a B 408 00:16:02,809 --> 00:16:04,870 Y B igual a A, ¿verdad que no? 409 00:16:07,250 --> 00:16:11,129 a ver, una vez que ya hemos metido 410 00:16:11,129 --> 00:16:12,370 los dos valores positivos 411 00:16:12,370 --> 00:16:15,090 el programa me dice que como A 412 00:16:15,090 --> 00:16:15,850 sea mayor que B 413 00:16:15,850 --> 00:16:18,090 tienes que intercambiarlos 414 00:16:18,090 --> 00:16:20,470 para que A siempre sea el menor 415 00:16:20,470 --> 00:16:22,889 vale, pues entonces 416 00:16:22,889 --> 00:16:24,009 si A es mayor que B 417 00:16:24,009 --> 00:16:26,990 hay que el valor de A llevarlo a B y el valor de B 418 00:16:26,990 --> 00:16:28,830 llevarlo a A, para que en A 419 00:16:28,830 --> 00:16:31,110 siga quedando siempre el menor, no es lo que me han dicho 420 00:16:31,110 --> 00:16:32,870 si A es 37 421 00:16:32,870 --> 00:16:33,970 y B es 12 422 00:16:33,970 --> 00:16:36,330 en A 423 00:16:36,330 --> 00:16:38,389 mete el 12 y en B 424 00:16:38,389 --> 00:16:40,289 lleva el 37. O sea, intercambia 425 00:16:40,289 --> 00:16:41,769 el valor de una variable por la otra. 426 00:16:42,889 --> 00:16:43,210 Entonces, 427 00:16:44,250 --> 00:16:46,590 esto es tentador, lógicamente, 428 00:16:47,009 --> 00:16:48,490 pero esto no hace lo que queremos 429 00:16:48,490 --> 00:16:50,690 hacer. Porque vale, 430 00:16:51,090 --> 00:16:52,490 en A lleva 431 00:16:52,490 --> 00:16:54,389 lo que había B, pero 432 00:16:54,389 --> 00:16:55,669 lo que había en A ya se ha perdido. 433 00:16:56,250 --> 00:16:58,090 Lo que había en A se perdió, se fue a la basura, 434 00:16:58,870 --> 00:17:00,429 con lo cual ya no puedo llevar a B 435 00:17:00,429 --> 00:17:02,549 lo que había en A, porque ya lo he tirado a la basura. 436 00:17:05,490 --> 00:17:06,309 Una variable 437 00:17:06,309 --> 00:17:08,130 extra que me permite 438 00:17:08,130 --> 00:17:09,990 el almacenamiento temporal. 439 00:17:10,190 --> 00:17:12,569 Dice, oye, lo que tiene A, por favor, 440 00:17:14,250 --> 00:17:14,769 guárdamelo 441 00:17:14,769 --> 00:17:15,809 en una variable auxiliar. 442 00:17:16,910 --> 00:17:18,410 Guárdamelo ahí, en una variable auxiliar. 443 00:17:19,750 --> 00:17:20,569 Ahora, si A 444 00:17:20,569 --> 00:17:22,450 tenía 32, el 32 se queda ahí 445 00:17:22,450 --> 00:17:24,349 guardadito. Ahora ya 446 00:17:24,349 --> 00:17:26,130 A lo piso con lo que tenga B. 447 00:17:27,049 --> 00:17:28,589 Que tenía 12, A se queda pisado. 448 00:17:29,450 --> 00:17:30,250 Y ahora en B 449 00:17:30,250 --> 00:17:32,809 tengo que recuperar lo que tenía A de antes. 450 00:17:33,730 --> 00:17:34,369 Menos mal que 451 00:17:34,369 --> 00:17:36,230 lo he guardado en una variable adicional. 452 00:17:36,309 --> 00:17:39,410 Porque como lo he guardado en una variable adicional 453 00:17:39,410 --> 00:17:40,930 Ya lo tengo ahí 454 00:17:40,930 --> 00:17:43,730 Entonces no hay forma de intercambiar 455 00:17:43,730 --> 00:17:45,549 Dos valores de variables 456 00:17:45,549 --> 00:17:47,529 Si no es con un espacio adicional temporal 457 00:17:47,529 --> 00:17:48,170 No hay manera 458 00:17:48,170 --> 00:17:50,089 Claro, pero entonces ahora la A se llama A 459 00:17:50,089 --> 00:17:52,089 No, la A se sigue llamando A 460 00:17:52,089 --> 00:17:54,809 Pero tiene el de B 461 00:17:54,809 --> 00:18:00,910 A ver, hemos hecho un change 462 00:18:00,910 --> 00:18:04,799 Aquí teníamos A 463 00:18:04,799 --> 00:18:09,119 Y aquí teníamos B 464 00:18:09,119 --> 00:18:14,650 Aquí teníamos A 465 00:18:14,650 --> 00:18:19,240 Y aquí teníamos B 466 00:18:19,240 --> 00:18:21,940 Vale 467 00:18:21,940 --> 00:18:24,740 A lo mejor tenía 32 468 00:18:24,740 --> 00:18:29,599 Y B resulta que tiene 12 469 00:18:29,599 --> 00:18:30,420 ¿Vale? 470 00:18:31,119 --> 00:18:32,200 Entonces 471 00:18:32,200 --> 00:18:35,599 Gracias a que tenemos la variable auxiliar 472 00:18:35,599 --> 00:18:36,359 Aux 473 00:18:36,359 --> 00:18:37,759 Esta de aquí 474 00:18:37,759 --> 00:18:41,839 Gracias a que tenemos AUX 475 00:18:41,839 --> 00:18:44,319 Primero, hemos llevado 476 00:18:44,319 --> 00:18:50,410 El 32 477 00:18:50,410 --> 00:18:52,369 Lo hemos guardado aquí 478 00:18:52,369 --> 00:18:54,710 El 32 se queda ahí guardadito 479 00:18:54,710 --> 00:18:56,630 Ahora, el 12 480 00:18:56,630 --> 00:18:58,829 Lo llevamos a A 481 00:18:58,829 --> 00:19:01,170 Mediante la sentencia A igual a B 482 00:19:01,170 --> 00:19:02,690 Mediante A igual a B 483 00:19:02,690 --> 00:19:03,329 El 12 se va 484 00:19:03,329 --> 00:19:05,089 Con lo cual el 32 este 485 00:19:05,089 --> 00:19:06,589 Desapareció 486 00:19:06,589 --> 00:19:08,509 Porque ahora se nos ha quedado el 12 487 00:19:08,509 --> 00:19:11,390 Y ahora en B 488 00:19:11,390 --> 00:19:13,470 tiene que irse el 32, que acabamos 489 00:19:13,470 --> 00:19:15,490 de pisotear, pero no pasa nada porque el 32 490 00:19:15,490 --> 00:19:16,349 se había quedado ahí 491 00:19:16,349 --> 00:19:18,670 había sido el 32 492 00:19:18,670 --> 00:19:21,910 pues ahora ya con la sentencia B igual a AUX 493 00:19:21,910 --> 00:19:23,609 el 32 se va 494 00:19:23,609 --> 00:19:25,289 ahí, pisando el 12 que había 495 00:19:25,289 --> 00:19:27,289 no hay manera de intercambiar uno por otro 496 00:19:27,289 --> 00:19:28,450 si no es con una variable auxiliar 497 00:19:28,450 --> 00:19:31,549 ¿y esta variable auxiliar se queda ahí dando guerra? 498 00:19:31,710 --> 00:19:33,309 no, porque es local 499 00:19:33,309 --> 00:19:34,549 a este bloque 500 00:19:34,549 --> 00:19:37,490 entonces al ser local 501 00:19:37,490 --> 00:19:39,369 a este bloque, en cuanto el IF termina 502 00:19:39,369 --> 00:19:41,549 aux ha desaparecido y no ha molestado. 503 00:19:41,630 --> 00:19:43,230 Ha servido solo como uso temporal 504 00:19:43,230 --> 00:19:43,970 para una y otra. 505 00:19:45,450 --> 00:19:47,250 Vale, pues ya está. Ya hemos intercambiado. 506 00:19:47,410 --> 00:19:49,049 Y ahora ya el resto ya se queda tal cual. 507 00:19:51,380 --> 00:19:51,740 Entonces, 508 00:19:52,640 --> 00:19:54,940 el resto del programa ya no tenemos 509 00:19:54,940 --> 00:19:56,039 que tocarlo. Ya estaba hecho. 510 00:19:57,059 --> 00:19:58,200 Simplemente hemos añadido 511 00:19:58,200 --> 00:20:01,059 forzarle a los 512 00:20:01,059 --> 00:20:02,839 negativos, intercambiar los valores 513 00:20:02,839 --> 00:20:07,079 y sumarlo. Si ejecutamos 514 00:20:07,079 --> 00:20:11,059 esto, vale, 515 00:20:11,200 --> 00:20:12,920 menos 5, menos 516 00:20:12,920 --> 00:20:15,420 6, uh, claro, es que le metí un punto 517 00:20:15,420 --> 00:20:16,220 en vez de un menos 518 00:20:16,220 --> 00:20:22,009 8, vale, introduzca b positivo 519 00:20:22,009 --> 00:20:23,710 menos 5 y le pongo 520 00:20:23,710 --> 00:20:24,970 3 521 00:20:24,970 --> 00:20:27,809 eh, si no muestro 522 00:20:27,809 --> 00:20:29,569 la suma, no me va mostrando nada 523 00:20:29,569 --> 00:20:34,210 vale, a ver, me falta 524 00:20:34,210 --> 00:20:36,450 siempre mostrar el resultado final 525 00:20:36,450 --> 00:20:43,220 la suma 526 00:20:43,220 --> 00:20:44,079 es 527 00:20:44,079 --> 00:20:46,720 suma 528 00:20:46,720 --> 00:20:49,140 vale 529 00:20:49,140 --> 00:20:52,660 ya está, bueno, lo de los negativos 530 00:20:52,660 --> 00:20:53,660 ya he visto que funciona 531 00:20:53,660 --> 00:20:56,200 entonces si le pongo aquí el 8 para el A 532 00:20:56,200 --> 00:20:57,819 y aquí el 3, me tiene que dar 5 533 00:20:57,819 --> 00:20:59,500 porque solo hay un múltiplo de 5 534 00:20:59,500 --> 00:21:02,480 con lo cual la suma es 5 535 00:21:02,480 --> 00:21:02,900 bueno 536 00:21:02,900 --> 00:21:05,920 no son pruebas 537 00:21:05,920 --> 00:21:07,640 concluyentes porque solo es una 538 00:21:07,640 --> 00:21:10,200 pero bueno, tiene pinta de que lo hemos hecho bien 539 00:21:10,200 --> 00:21:15,730 vale 540 00:21:15,730 --> 00:21:18,150 entonces esto es sumar 541 00:21:18,150 --> 00:21:20,210 sumar muchos sumandos, pues es siempre lo mismo 542 00:21:20,210 --> 00:21:22,029 en un bucle voy haciendo esta operación 543 00:21:22,029 --> 00:21:24,069 que esta operación la estoy poniendo 544 00:21:24,069 --> 00:21:26,309 ahora sí para que se vea claro que sobre suma 545 00:21:26,309 --> 00:21:27,150 se va acumulando 546 00:21:27,150 --> 00:21:28,829 pero es esto en realidad 547 00:21:28,829 --> 00:21:31,369 es esta misma sentencia 548 00:21:31,369 --> 00:21:34,470 ya la podemos poner así 549 00:21:34,470 --> 00:21:36,650 porque ya a nadie le entra angustia 550 00:21:36,650 --> 00:21:38,210 ni ansiedad, todo el mundo sabe 551 00:21:38,210 --> 00:21:40,470 que suma más igual x es sobre la 552 00:21:40,470 --> 00:21:42,589 variable suma, sumas x y todo 553 00:21:42,589 --> 00:21:44,509 eso se va otra vez 554 00:21:44,509 --> 00:21:45,529 a suma 555 00:21:45,529 --> 00:21:50,269 bueno, pues ala, esto ya está 556 00:21:50,269 --> 00:21:52,450 magnífico 557 00:21:52,450 --> 00:21:54,529 y estos dos 558 00:21:54,529 --> 00:21:54,950 de aquí 559 00:21:54,950 --> 00:21:58,390 que son prácticamente iguales 560 00:21:58,390 --> 00:22:00,069 bueno y el 11 también 561 00:22:00,069 --> 00:22:01,849 estos 3 562 00:22:01,849 --> 00:22:05,269 es la misma idea que la suma acumulativa 563 00:22:05,269 --> 00:22:06,230 pero en lugar de 564 00:22:06,230 --> 00:22:09,170 hacer suma acumulativa, multiplicación 565 00:22:09,170 --> 00:22:10,569 acumulativa, pero es lo mismo 566 00:22:10,569 --> 00:22:13,069 vale, bueno 567 00:22:13,069 --> 00:22:15,130 paramos 2 o 3 minutos 568 00:22:15,130 --> 00:22:15,650 y hacemos