1 00:00:00,000 --> 00:00:09,640 Bueno, pues el enunciado decía, tenemos que sumar todos los números comprendidos entre 2 00:00:09,640 --> 00:00:15,600 1 y 500, como podría ser entre 1 y 1.000, entre 1 y 300, eso da igual, entonces claro, 3 00:00:15,600 --> 00:00:22,600 uno primero tiene que entender efectivamente qué es lo que se le pide y en este caso está 4 00:00:22,600 --> 00:00:28,840 claro, esta suma, entonces efectivamente habría una forma que es la más sencilla de todas, 5 00:00:28,840 --> 00:00:34,840 pues efectivamente mete uno en un siso esto, escribiendo aquí todos los números y claro 6 00:00:34,840 --> 00:00:41,080 ya está, si vale, ya lo tiene, pero de repente ese programa te pide una modificación sobre 7 00:00:41,080 --> 00:00:46,320 él, una modificación y te dice, no, es que ahora ya no me vale ir hasta 500, ahora necesito 8 00:00:46,320 --> 00:00:51,440 hasta 1.900, ostras, pues tienes que entrar en él y poderte escribir aquí un chorizo 9 00:00:51,440 --> 00:00:57,760 de cosas, entonces, primera conclusión, puede haber varias formas de hacer las cosas, pero 10 00:00:57,760 --> 00:01:03,480 hay algunas, efectivamente, que aunque funcionen, no son operativas, porque no permiten que 11 00:01:03,480 --> 00:01:07,760 yo pueda retocar el programa de forma sencilla, entonces esas no valen, se tienen a la basura 12 00:01:07,760 --> 00:01:11,520 directamente, bueno, en este caso lo vamos a hacer con un bucle, que es la condición 13 00:01:11,520 --> 00:01:19,560 que yo os he dicho y vamos a hacer con un bucle, que es la condición que yo os he dicho 14 00:01:19,560 --> 00:01:23,080 y aquí entonces, si lo vamos a hacer con un bucle, pues uno ya dice, venga, yo tengo 15 00:01:23,080 --> 00:01:29,000 que hacer varias veces algo, pues voy a pensar un poco en este problema, voy a pensar, ¿qué 16 00:01:29,000 --> 00:01:34,080 tenemos que hacer varias veces? Sumas, tenemos que hacer varias veces, tengo que hacer esta 17 00:01:34,080 --> 00:01:39,760 suma y luego tengo que hacer esta y luego tengo que hacer esta otra y luego esta otra, 18 00:01:39,760 --> 00:01:46,240 eso es lo que tenemos que hacer varias veces, ¿no? Pero claro, eso no es tan sencillo, 19 00:01:47,240 --> 00:01:55,640 entonces, ¿cómo lo podemos plantear? Vale, pues a ver, primero, mi resultado tiene que 20 00:01:55,640 --> 00:02:01,520 estar en algún sitio, mi resultado final, el resultado final de mi programa va a ser 21 00:02:01,520 --> 00:02:07,960 que yo muestre un resultado, que yo muestre una variable con esa suma, ¿no? Vamos a suponer 22 00:02:07,960 --> 00:02:12,880 que yo a esa variable la llamo suma y esa variable es en la que voy a guardar ese resultado 23 00:02:13,000 --> 00:02:19,880 que tengo que ver cómo lo obtengo y ese resultado al final de mi programa es lo que tendrá 24 00:02:19,880 --> 00:02:30,400 que aparecer, al final de mi programa tendrá que aparecer, la suma es, suma, esto es lo 25 00:02:30,400 --> 00:02:35,840 que al final tiene que aparecer, pero claro, ¿qué hago aquí? ¿Qué pongo antes? ¿Qué 26 00:02:35,840 --> 00:02:42,860 rollo pongo ahí para que suma acabe conteniendo todo esto? Entonces, suma tiene que ir primero 27 00:02:42,860 --> 00:02:49,380 siendo 1 más 2, luego siendo 1 más 2 más 3, luego siendo 1 más 2 más 4, entonces 28 00:02:49,380 --> 00:03:02,820 lo podemos plantear como, uno piensa esto y dice, vale, pues si yo inicio suma a cero, 29 00:03:02,820 --> 00:03:10,380 suma a cero, lo que puedo hacer es, como voy a hacer varias veces algo, en la primera iteración 30 00:03:10,380 --> 00:03:21,580 sumo un 1, vale, en la siguiente iteración le sumo el 2, en la siguiente le sumo el 3, 31 00:03:21,580 --> 00:03:25,260 todavía estamos diciéndolo un poco por encima, como uno lo iría analizando sin saber muy 32 00:03:25,260 --> 00:03:30,180 bien luego eso cómo se concretará programarlo, lo estamos todavía diciendo en palabras, 33 00:03:30,180 --> 00:03:34,700 en la siguiente iteración le sumo un 4, entonces ya estamos viendo que efectivamente va a haber 34 00:03:34,700 --> 00:03:40,780 iteraciones, va a haber un bucle, en cada iteración voy a hacer una suma, en la que 35 00:03:40,780 --> 00:03:46,580 en cada iteración voy a sumar un numerito que cada vez es mayor, en la siguiente iteración 36 00:03:46,580 --> 00:03:52,740 le sumo un 5, con lo cual ya empiezo a pensar, ah, espérate, me va a venir muy bien una 37 00:03:52,740 --> 00:03:59,500 variable que empiece valiendo 1, la voy incrementando porque es la que voy usando en esa suma, todavía 38 00:03:59,500 --> 00:04:05,660 no sé cómo hacer, me va a venir muy bien, un numerito que lo voy incrementando, cada 39 00:04:05,660 --> 00:04:10,980 vez tendrá una unidad mayor y eso tendrá que formar parte de esa suma, que todavía 40 00:04:10,980 --> 00:04:16,060 pues no sé cómo hacer, vale, pues al menos ya he avanzado algo más, un numerito que 41 00:04:16,060 --> 00:04:22,420 empieza valiendo 1, por ejemplo, entonces ese numerito yo lo iré sumando, para construir 42 00:04:22,420 --> 00:04:29,820 el resultado final lo iré sumando y lo dejaré incrementado, todavía me falta todo esto, 43 00:04:29,820 --> 00:04:37,020 pero bueno, ya esto empieza a acercarse a un código, ¿no? Entonces yo aquí quiero 44 00:04:37,020 --> 00:04:45,820 que pase algo de tal manera que suma vaya recibiendo, primero se le suma un 1, luego 45 00:04:45,820 --> 00:04:53,820 a lo que ya tenga suma le suma un 2, entonces esto tiene ya sentido, si yo hago esto, todavía 46 00:04:53,820 --> 00:04:58,420 me falta por perfilar, porque esto no es una sentencia Java, si yo hago esto suma más 47 00:04:58,420 --> 00:05:04,620 n, esta expresión suma más n ¿qué será? En la primera iteración como suma vale 0 48 00:05:04,620 --> 00:05:14,060 será 0 más 1 y suma se quedará valiendo 0 más 1, o sea, en la siguiente iteración 49 00:05:14,060 --> 00:05:19,660 yo ahora quiero sumar a lo que había de antes, que era 0 más 1, sumar el 2, lo he 50 00:05:19,660 --> 00:05:27,060 dejado incrementado y le sumo ese 2, tendría esta suma, en la siguiente iteración como 51 00:05:27,060 --> 00:05:33,260 n se ha quedado incrementado incorporo el 3, vale, entonces tiene pinta de que esto 52 00:05:33,260 --> 00:05:39,260 realmente está incorporando cada vez una suma a lo que tenía yo de antes con un numerito 53 00:05:39,260 --> 00:05:48,660 mayor, ¿a quién le asigno esto? ¿a quién se lo tendría yo que asignar esta suma? 54 00:05:48,660 --> 00:06:03,260 A la propia variable suma, para que la propia variable suma se vaya actualizando, y ya está, 55 00:06:03,260 --> 00:06:09,260 ya tengo el programa, entonces esto si uno no ha programado nunca, no es fácil de llegar a esto, 56 00:06:09,260 --> 00:06:14,260 pero esto reproduce una situación que es la que se llama suma acumulativa, que ya, 57 00:06:14,260 --> 00:06:19,260 que se nos puede plantear mil veces, entonces como ya la hemos resuelto una vez, ya hemos 58 00:06:19,260 --> 00:06:23,260 incorporado el funcionamiento y la podemos resolver siempre que nos haga falta, y este 59 00:06:23,260 --> 00:06:29,260 funcionamiento de suma acumulativa ¿cuál es? Pues una suma acumulativa es una situación 60 00:06:29,260 --> 00:06:37,260 que se nos da cuando queremos que una variable incorpore un montón de sumandos, ¿vale? 61 00:06:37,260 --> 00:06:40,260 Entonces cuando yo quiero que una variable incorpore un montón de sumandos, un montón 62 00:06:40,260 --> 00:06:45,260 de ellos, una variable cualquiera, la que llamo suma o la llamo como me dé la gana, 63 00:06:45,260 --> 00:06:51,260 quiero que incorpore un montón de sumandos, x1, x2, x3, los que sean, cualquiera, 64 00:06:51,260 --> 00:06:56,260 en este caso, en mi caso particular eran 1, 2, 3, pero puede ser cualquier cantidad de sumandos, 65 00:06:56,260 --> 00:07:00,260 ¿vale? Pues cuando yo quiero que una suma incorpore cualquier cantidad de sumandos, 66 00:07:00,260 --> 00:07:05,260 esto es lo que se llama una suma acumulativa, ¿por qué? ¿Qué operación le haré? 67 00:07:05,260 --> 00:07:12,260 Pues a suma haré una operación de este tipo, suma más el operando que le toque, 68 00:07:12,260 --> 00:07:18,260 entonces suma iniciará, empezará siempre valiendo cero, en la primera operación, 69 00:07:18,260 --> 00:07:23,260 al cero le sumamos el primer operando, y ya suma se queda valiendo esto, 70 00:07:23,260 --> 00:07:29,260 en la siguiente iteración, a lo que tenía de antes, le sumamos el siguiente operando, 71 00:07:29,260 --> 00:07:34,260 y ya suma se queda valiendo esto, y sobreescribe lo que tuviera antes, 72 00:07:34,260 --> 00:07:37,260 es importante que esta suma sobreescriba lo que tenía de antes, 73 00:07:37,260 --> 00:07:42,260 en la siguiente iteración se suma el siguiente operando, 74 00:07:42,260 --> 00:07:46,260 y el resultado final sustituye a lo que tenía suma, 75 00:07:46,260 --> 00:07:50,260 entonces esta es la operación básica de la suma acumulativa, 76 00:07:50,260 --> 00:07:55,260 la inicializo valiendo cero, y en cada hago esta operación muchas veces, 77 00:07:55,260 --> 00:07:59,260 y en cada iteración genera un operando distinto, 78 00:07:59,260 --> 00:08:03,260 ahora ya lo que cambia en función del problema es esto, 79 00:08:03,260 --> 00:08:05,260 esto es lo que cambia en función del problema, 80 00:08:05,260 --> 00:08:10,260 y es qué sumandos le voy metiendo a suma, esto es lo que cambia en función del problema, 81 00:08:10,260 --> 00:08:13,260 y eso es lo que tenemos que generar con alguna expresión, 82 00:08:13,260 --> 00:08:17,260 en nuestro caso lo que le íbamos sumando era primero el 1, 83 00:08:17,260 --> 00:08:20,260 luego el 2, luego el 3, porque los operandos eran esos, 84 00:08:20,260 --> 00:08:23,260 pues eso es fácil de generar, empezamos con un n igual a 1, 85 00:08:23,260 --> 00:08:27,260 empezamos con un n igual a 1, y lo incrementamos, 86 00:08:27,260 --> 00:08:31,260 entonces en este caso los sumandos los voy incrementando, 87 00:08:31,260 --> 00:08:33,260 los voy generando de esta manera, es sencillo, 88 00:08:33,260 --> 00:08:35,260 empieza con 1 y se van incrementando, 89 00:08:35,260 --> 00:08:38,260 porque en este caso en concreto los sumandos son 1, 2, 3, 90 00:08:38,260 --> 00:08:42,260 cuando los sumandos sean otros, pues yo esta expresión que pondré aquí, 91 00:08:42,260 --> 00:08:46,260 será otra, la expresión que generan los sucesivos sumandos, 92 00:08:46,260 --> 00:08:48,260 la expresión que los genera, 93 00:08:48,260 --> 00:08:51,260 pero lo que importa es que entendamos el concepto de suma acumulativa, 94 00:08:51,260 --> 00:08:57,260 es la situación que se da cuando en una variable yo creo que haya la suma de muchas cosas, 95 00:08:57,260 --> 00:08:59,260 la suma de muchas, 96 00:08:59,260 --> 00:09:01,260 entonces eso lo tengo que obtener con un bucle, 97 00:09:01,260 --> 00:09:03,260 y cada bucle me hace una única suma, 98 00:09:03,260 --> 00:09:06,260 cada bucle me hace una única suma, 99 00:09:06,260 --> 00:09:08,260 perdón, cada iteración, 100 00:09:08,260 --> 00:09:10,260 cada iteración del bucle me hace una única suma, 101 00:09:10,260 --> 00:09:12,260 que incorpora la suma total, 102 00:09:12,260 --> 00:09:14,260 que la incorpora y sustituye, que la incorpora, 103 00:09:14,260 --> 00:09:18,260 y ahora ya el problema que depende de la aplicación es esto que sumo, 104 00:09:18,260 --> 00:09:20,260 pues depende, 105 00:09:20,260 --> 00:09:22,260 depende de los sumandos que yo quiera, 106 00:09:22,260 --> 00:09:24,260 depende, 107 00:09:24,260 --> 00:09:27,260 vale, este caso concreto queríamos primero 1, luego 2, luego 3, 108 00:09:27,260 --> 00:09:30,260 pues se solucionaba tan fácil como esto, 109 00:09:30,260 --> 00:09:32,260 vale, 110 00:09:36,260 --> 00:09:38,260 pero por ejemplo, 111 00:09:38,260 --> 00:09:40,260 nos faltaría por supuesto acotar la condición, 112 00:09:40,260 --> 00:09:42,260 vale, cuando acaba la suma, 113 00:09:42,260 --> 00:09:44,260 cuando acaba, 114 00:09:44,260 --> 00:09:46,260 vale, 115 00:09:46,260 --> 00:09:48,260 pero antes de acotar la condición, 116 00:09:48,260 --> 00:09:50,260 por ejemplo, si aquí me hubieran dicho, 117 00:09:50,260 --> 00:09:54,260 suma todos los múltiplos de 5 entre 1 y 500, 118 00:09:54,260 --> 00:09:56,260 los múltiplos de 5, 119 00:09:56,260 --> 00:09:58,260 pues entonces en este caso mi suma acumulativa, 120 00:09:58,260 --> 00:10:00,260 pues sería 5, 121 00:10:00,260 --> 00:10:02,260 más 10, 122 00:10:02,260 --> 00:10:04,260 más 15, 123 00:10:04,260 --> 00:10:06,260 entonces aquí los sumandos son distintos, 124 00:10:06,260 --> 00:10:08,260 no los puedo generar con esta estrategia que he inventado, 125 00:10:08,260 --> 00:10:10,260 partiendo del 1 y incrementando de 1, 126 00:10:10,260 --> 00:10:12,260 aquí que estrategia inventaría 127 00:10:12,260 --> 00:10:14,260 para que los sumandos 128 00:10:14,260 --> 00:10:16,260 que van incorporándose a suma 129 00:10:16,260 --> 00:10:18,260 vayan siguiendo esta secuencia, 130 00:10:18,260 --> 00:10:20,260 como podríamos cambiar esto, 131 00:10:20,260 --> 00:10:22,260 venga, decidme algo, 132 00:10:28,260 --> 00:10:30,260 repito, vale, 133 00:10:30,260 --> 00:10:32,260 tenemos claro que una suma acumulativa 134 00:10:32,260 --> 00:10:34,260 es cuando en una variable queremos 135 00:10:34,260 --> 00:10:36,260 meter muchos sumandos distintos, 136 00:10:36,260 --> 00:10:38,260 la expresión que se va a repetir 137 00:10:38,260 --> 00:10:40,260 n veces, las veces que sean es esta, 138 00:10:40,260 --> 00:10:42,260 porque ya la entendemos, 139 00:10:42,260 --> 00:10:44,260 ¿verdad?, entendemos lo que significa esta expresión, 140 00:10:44,260 --> 00:10:46,260 inicializando la 0, 141 00:10:46,260 --> 00:10:48,260 inicializando la 0, 142 00:10:48,260 --> 00:10:50,260 la primera iteración incorporo el primer sumando 143 00:10:50,260 --> 00:10:52,260 y piso el que tenga, 144 00:10:52,260 --> 00:10:54,260 en la siguiente iteración 145 00:10:54,260 --> 00:10:56,260 incorporo el siguiente sumando y piso el que tenga, 146 00:10:56,260 --> 00:10:58,260 ¿qué es lo que cambia?, es la quinta vez 147 00:10:58,260 --> 00:11:00,260 que lo repito, ¿qué es lo que cambia?, 148 00:11:00,260 --> 00:11:02,260 lo que cambia es cómo genero 149 00:11:02,260 --> 00:11:04,260 los diferentes sumandos, 150 00:11:04,260 --> 00:11:06,260 eso depende de mi problema, 151 00:11:06,260 --> 00:11:08,260 cada problema yo sumaré lo que me hayan pedido que sume, 152 00:11:08,260 --> 00:11:10,260 bueno, 153 00:11:10,260 --> 00:11:12,260 la pregunta es, 154 00:11:12,260 --> 00:11:14,260 imaginaos que nos han cambiado el problema 155 00:11:14,260 --> 00:11:16,260 y nos han dicho, no, no, 156 00:11:16,260 --> 00:11:18,260 lo que tienes que incorporar es una suma acumulativa tuya, 157 00:11:18,260 --> 00:11:20,260 no es 1 más 2 más 3, sino los múltiplos de 5, 158 00:11:20,260 --> 00:11:22,260 5 más 10 más 15, 159 00:11:22,260 --> 00:11:24,260 eso significa que esto, 160 00:11:24,260 --> 00:11:26,260 que es la expresión, 161 00:11:26,260 --> 00:11:28,260 la expresión que va 162 00:11:28,260 --> 00:11:30,260 aportando un sumando nuevo 163 00:11:30,260 --> 00:11:32,260 cada vez, en cada iteración, 164 00:11:32,260 --> 00:11:34,260 esto aporta un sumando nuevo 165 00:11:34,260 --> 00:11:36,260 cada vez, pues tendría que cambiarlo, 166 00:11:36,260 --> 00:11:38,260 porque esta que he hecho 167 00:11:38,260 --> 00:11:40,260 está muy bien pensada 168 00:11:40,260 --> 00:11:42,260 para que esta expresión que va aportando 169 00:11:42,260 --> 00:11:44,260 un sumando cada vez, primero me aportará 1, 170 00:11:44,260 --> 00:11:46,260 la siguiente vez me aportará 2, 171 00:11:46,260 --> 00:11:48,260 estaba pensado para eso, 172 00:11:48,260 --> 00:11:50,260 pues si me cambian el problema y me dicen, no, no, no, 173 00:11:50,260 --> 00:11:52,260 los sumandos que tienes que ir inyectando 174 00:11:52,260 --> 00:11:54,260 a esta variable 175 00:11:54,260 --> 00:11:56,260 para incorporar uno más y pisar la anterior 176 00:11:56,260 --> 00:11:58,260 en cada iteración, 177 00:11:58,260 --> 00:12:00,260 los sumandos ahora no son esos, son estos, 178 00:12:00,260 --> 00:12:02,260 pues tendría que cambiar el programa, obviamente, 179 00:12:02,260 --> 00:12:04,260 pues esa es la pregunta, ¿qué cambiaríais aquí? 180 00:12:04,260 --> 00:12:06,260 para que los sumandos que se van incorporando 181 00:12:06,260 --> 00:12:08,260 a su suma acumulativa, ahora ya no sean 182 00:12:08,260 --> 00:12:10,260 1 más 2 más 3, sino que sean 183 00:12:10,260 --> 00:12:12,260 5 más 10 más 15, 184 00:12:12,260 --> 00:12:14,260 ¿qué cambios podríais hacer? 185 00:12:14,260 --> 00:12:16,260 ¿eh? 186 00:12:16,260 --> 00:12:18,260 Poner aquí 187 00:12:18,260 --> 00:12:20,260 n por 5, 188 00:12:24,260 --> 00:12:26,260 por ejemplo, ese sería un cambio, 189 00:12:26,260 --> 00:12:28,260 porque cuando n es igual a 1 le pongo más 5, 190 00:12:28,260 --> 00:12:30,260 y se queda incrementado, 191 00:12:30,260 --> 00:12:32,260 cuando, a 2, 192 00:12:32,260 --> 00:12:34,260 cuando n es igual a 2 le sumas 10, 193 00:12:34,260 --> 00:12:36,260 ¿vale? pues por ejemplo, 194 00:12:36,260 --> 00:12:38,260 hemos hecho un cambio y ahora cada 195 00:12:38,260 --> 00:12:40,260 sumando que incorporamos es primero el 5, 196 00:12:40,260 --> 00:12:42,260 luego el 10, luego el 15, 197 00:12:42,260 --> 00:12:44,260 ¿vale? 198 00:12:44,260 --> 00:12:46,260 ¿Qué otra posibilidad? 199 00:12:46,260 --> 00:12:48,260 Ah, habría más posibilidades, 200 00:12:48,260 --> 00:12:50,260 ¿qué otra se os ocurriría? 201 00:12:56,260 --> 00:12:58,260 Podríamos inicializarlo a 5 202 00:12:58,260 --> 00:13:00,260 e incrementarlo a 5 cada vez, 203 00:13:00,260 --> 00:13:02,260 ¿no? si de lo que se trata 204 00:13:02,260 --> 00:13:04,260 es de hacer que esta 205 00:13:04,260 --> 00:13:06,260 expresión que yo voy incorporando 206 00:13:06,260 --> 00:13:08,260 vaya siendo 5, 10, 207 00:13:08,260 --> 00:13:10,260 15, 20, bueno, pues pensemos 208 00:13:10,260 --> 00:13:12,260 con lo que tenemos, ¿vale? pues si yo 209 00:13:12,260 --> 00:13:14,260 la inicializo a 5 210 00:13:14,260 --> 00:13:16,260 y la incremento en vez de en 1, 211 00:13:16,260 --> 00:13:18,260 la incremento en 5 cada vez, 212 00:13:18,260 --> 00:13:20,260 pues ya está, 213 00:13:20,260 --> 00:13:22,260 tengo una suma 214 00:13:22,260 --> 00:13:24,260 acumulativa exactamente 215 00:13:24,260 --> 00:13:26,260 igual, pero los sumandos que van entrando, 216 00:13:26,260 --> 00:13:28,260 que van entrando en cada iteración 217 00:13:28,260 --> 00:13:30,260 ahora son 5, 10, 15, 218 00:13:30,260 --> 00:13:32,260 ¿vale? 219 00:13:34,260 --> 00:13:36,260 Bueno, pues entended 220 00:13:36,260 --> 00:13:38,260 entonces este concepto, suma 221 00:13:38,260 --> 00:13:40,260 acumulativa, una variable que yo 222 00:13:40,260 --> 00:13:42,260 en algún momento del programa he identificado 223 00:13:42,260 --> 00:13:44,260 que necesito que incluya un montón de sumandos, 224 00:13:44,260 --> 00:13:46,260 muchos, muchos, 225 00:13:46,260 --> 00:13:48,260 pues lo voy a hacer con un bucle, 226 00:13:48,260 --> 00:13:50,260 un bucle de este tipo, 227 00:13:50,260 --> 00:13:52,260 entonces la expresión va a ser esta, suma 228 00:13:52,260 --> 00:13:54,260 igual a suma más el operando 229 00:13:54,260 --> 00:13:56,260 nuevo, el sumando nuevo, 230 00:13:56,260 --> 00:13:58,260 y este sumando nuevo, 231 00:13:58,260 --> 00:14:00,260 ya dependerá, dependerá del problema 232 00:14:00,260 --> 00:14:02,260 del que yo esté, ya veré cómo lo voy construyendo, 233 00:14:02,260 --> 00:14:04,260 ¿vale? 234 00:14:04,260 --> 00:14:06,260 En nuestro 235 00:14:06,260 --> 00:14:08,260 caso, que era 1 más 2 más 3, 236 00:14:08,260 --> 00:14:10,260 pues habíamos dicho algo así, 237 00:14:10,260 --> 00:14:12,260 ¿vale? 238 00:14:16,260 --> 00:14:18,260 Aquí, como conocemos 239 00:14:18,260 --> 00:14:20,260 el operando más igual, pues poner 240 00:14:20,260 --> 00:14:22,260 suma igual a suma más n, 241 00:14:22,260 --> 00:14:24,260 a lo mejor lo vemos claro, pero hay una 242 00:14:24,260 --> 00:14:26,260 forma más compacta de ponerlo que queda más bonita, 243 00:14:26,260 --> 00:14:28,260 con la que ya deberíamos estar 244 00:14:28,260 --> 00:14:30,260 más familiarizados, 245 00:14:30,260 --> 00:14:32,260 que es suma más igual, ¿verdad? 246 00:14:36,260 --> 00:14:38,260 Esto, pues como lo tenéis todo demonizado en la cabeza, 247 00:14:38,260 --> 00:14:40,260 porque es el proceso que habéis seguido todo este 248 00:14:40,260 --> 00:14:42,260 tiempo, todo lo que hemos visto, tenerlo aquí ya 249 00:14:42,260 --> 00:14:44,260 grabado, aparte de entendido, 250 00:14:44,260 --> 00:14:46,260 pues ya sabéis que esta es 251 00:14:46,260 --> 00:14:48,260 una forma compacta de poner, 252 00:14:48,260 --> 00:14:50,260 como si quitar al igual, 253 00:14:50,260 --> 00:14:52,260 me queda suma más n, 254 00:14:52,260 --> 00:14:54,260 y ahora, ¿a quién le asigno 255 00:14:54,260 --> 00:14:56,260 suma más n? A la primera 256 00:14:56,260 --> 00:14:58,260 variable que me encuentro, eso significaba ese operando, 257 00:14:58,260 --> 00:15:00,260 ¿no? Bueno, pues es una forma compacta 258 00:15:00,260 --> 00:15:02,260 de poner lo mismo que he puesto antes, 259 00:15:02,260 --> 00:15:04,260 más habitual, 260 00:15:04,260 --> 00:15:06,260 ¿vale? 261 00:15:06,260 --> 00:15:08,260 Vale, pero este programa está sin terminar, 262 00:15:08,260 --> 00:15:10,260 porque tenemos 263 00:15:10,260 --> 00:15:12,260 que saber cuándo 264 00:15:12,260 --> 00:15:14,260 dejamos de incorporar sumandos, 265 00:15:14,260 --> 00:15:16,260 ¿vale? Voy a dejarlo puesto ahora de la otra manera, 266 00:15:16,260 --> 00:15:18,260 porque se ve más claro lo que estamos 267 00:15:18,260 --> 00:15:20,260 haciendo con la variable suma, 268 00:15:20,260 --> 00:15:22,260 que es cada iteración, 269 00:15:22,260 --> 00:15:24,260 en cada iteración, meterle 270 00:15:24,260 --> 00:15:26,260 un n nuevo a lo que tenía de antes, 271 00:15:26,260 --> 00:15:28,260 ¿no? Es lo que 272 00:15:28,260 --> 00:15:30,260 hacemos en cada iteración, la primera le hemos metido un 1, 273 00:15:30,260 --> 00:15:32,260 se queda con 1, en la siguiente 274 00:15:32,260 --> 00:15:34,260 iteración le metemos el 2, se queda 275 00:15:34,260 --> 00:15:36,260 con 1 más 2, en la siguiente 276 00:15:36,260 --> 00:15:38,260 le metemos el 3, se queda con 1 más 2 277 00:15:38,260 --> 00:15:40,260 más 3, voy a dejar con esta expresión 278 00:15:40,260 --> 00:15:42,260 que se ve más claro. Vale, aquí 279 00:15:42,260 --> 00:15:44,260 nos falta, y hasta cuándo hacemos la 280 00:15:44,260 --> 00:15:46,260 suma, en este caso me habían dicho, incorpora 281 00:15:46,260 --> 00:15:48,260 sumandos a esa suma 282 00:15:48,260 --> 00:15:50,260 del 1 al 283 00:15:50,260 --> 00:15:52,260 500, pues ¿qué condición pondríais 284 00:15:52,260 --> 00:15:54,260 ahí? 285 00:15:58,260 --> 00:16:00,260 Venga, que alguien me la diga, 286 00:16:00,260 --> 00:16:02,260 ¿qué condición pondríais? 287 00:16:02,260 --> 00:16:04,260 Que n esté entre 288 00:16:04,260 --> 00:16:06,260 0 y 500 289 00:16:06,260 --> 00:16:08,260 Que n esté entre 0 y 500 290 00:16:08,260 --> 00:16:10,260 Que n esté entre 0 y 500 291 00:16:10,260 --> 00:16:12,260 literalmente sería esto, ¿no? 292 00:16:12,260 --> 00:16:14,260 Si, mayor o igual a 0 293 00:16:14,260 --> 00:16:16,260 Si, mayor o igual a 0 294 00:16:20,260 --> 00:16:22,260 Vale, entonces, primera cosa 295 00:16:24,260 --> 00:16:26,260 Esto 296 00:16:26,260 --> 00:16:28,260 te sobra, esto va a ser siempre cierto 297 00:16:28,260 --> 00:16:30,260 porque n empieza siendo 1 298 00:16:30,260 --> 00:16:32,260 y lo vas incrementando 299 00:16:32,260 --> 00:16:34,260 entonces es imposible que n sea menor que 0 300 00:16:34,260 --> 00:16:36,260 en este programa, entonces true and 301 00:16:36,260 --> 00:16:38,260 lo que sea, el true 302 00:16:38,260 --> 00:16:40,260 te sobraría, entonces 303 00:16:40,260 --> 00:16:42,260 ponerlo así y ponerlo así sería lo mismo 304 00:16:42,260 --> 00:16:44,260 Vale, entonces vamos a poner 305 00:16:44,260 --> 00:16:46,260 n menor o igual 306 00:16:46,260 --> 00:16:48,260 que 500 307 00:16:50,260 --> 00:16:52,260 Vale, entonces este programa 308 00:16:52,260 --> 00:16:54,260 entraría para la primera vez 309 00:16:54,260 --> 00:16:56,260 con lo cual ya sumaría el 1 310 00:16:56,260 --> 00:16:58,260 al primer valor que es el 0 311 00:16:58,260 --> 00:17:00,260 entraría la segunda 312 00:17:00,260 --> 00:17:02,260 cuando n llega a ser 500 313 00:17:02,260 --> 00:17:04,260 también entraría, porque he puesto menor o igual 314 00:17:04,260 --> 00:17:06,260 luego el 500 también lo sumaría 315 00:17:06,260 --> 00:17:08,260 501 316 00:17:08,260 --> 00:17:10,260 cuando ya es 501, esto es falso 317 00:17:10,260 --> 00:17:12,260 Entonces ya no entra 318 00:17:12,260 --> 00:17:14,260 y se acabó, y efectivamente 319 00:17:14,260 --> 00:17:16,260 mostraría aquí la suma de 1 más 2 más 3 320 00:17:16,260 --> 00:17:18,260 Cuidado, si le quitamos 321 00:17:18,260 --> 00:17:20,260 el igual 322 00:17:20,260 --> 00:17:22,260 no mostraría esa, el 500 se lo 323 00:17:22,260 --> 00:17:24,260 no lo sumaría 324 00:17:24,260 --> 00:17:26,260 Si yo pongo menor 325 00:17:26,260 --> 00:17:28,260 cuando le he sumado el 499 326 00:17:30,260 --> 00:17:32,260 ahora se queda incrementado a 500 327 00:17:32,260 --> 00:17:34,260 ¿Es 500 menor que 500? No 328 00:17:34,260 --> 00:17:36,260 Entonces saldría, luego el 500 no llegaría 329 00:17:36,260 --> 00:17:38,260 a sumar, se quedaría aquí 330 00:17:38,260 --> 00:17:40,260 Entonces cuidado 331 00:17:40,260 --> 00:17:42,260 o menor o igual que 500 332 00:17:42,260 --> 00:17:44,260 o menor que 501, no es lo mismo 333 00:17:44,260 --> 00:17:46,260 Más claro, menor o igual que 500 334 00:17:46,260 --> 00:17:48,260 Vale, pues este programa 335 00:17:48,260 --> 00:17:50,260 ya sí que muestraba esta suma 336 00:17:50,260 --> 00:17:52,260 Pero fundamental 337 00:17:52,260 --> 00:17:54,260 de esto, que incorporeis 338 00:17:54,260 --> 00:17:56,260 que incorporeis 339 00:17:56,260 --> 00:17:58,260 ese 340 00:17:58,260 --> 00:18:00,260 pequeño algoritmo 341 00:18:00,260 --> 00:18:02,260 para ya poder usarlo 342 00:18:02,260 --> 00:18:04,260 automáticamente 343 00:18:04,260 --> 00:18:06,260 porque siempre hay que luego adaptarlo 344 00:18:06,260 --> 00:18:08,260 Que incorporeis ese concepto 345 00:18:08,260 --> 00:18:10,260 el concepto de la suma acumulativa 346 00:18:10,260 --> 00:18:12,260 Ya lo incorporáis, lo interiorizáis 347 00:18:12,260 --> 00:18:14,260 entendéis lo que es, y ya se queda 348 00:18:14,260 --> 00:18:16,260 en la cabeza grabado 349 00:18:16,260 --> 00:18:18,260 Y es, cuando una variable 350 00:18:18,260 --> 00:18:20,260 tiene que tener la suma de muchas cosas 351 00:18:20,260 --> 00:18:22,260 pues no me va a quedar 352 00:18:22,260 --> 00:18:24,260 más remedio que poner en un bucle 353 00:18:24,260 --> 00:18:26,260 una expresión como esta 354 00:18:26,260 --> 00:18:28,260 Y en cada iteración le va llegando 355 00:18:28,260 --> 00:18:30,260 una cosa nueva, y esa cosa nueva 356 00:18:30,260 --> 00:18:32,260 pisa lo que tuviera de antes 357 00:18:32,260 --> 00:18:34,260 Las cosas nuevas que le van llegando 358 00:18:34,260 --> 00:18:36,260 y que sigue construyendo 359 00:18:36,260 --> 00:18:38,260 Depende, el resto del código 360 00:18:38,260 --> 00:18:40,260 va a ser para construir 361 00:18:40,260 --> 00:18:42,260 esta cosa nueva 362 00:18:42,260 --> 00:18:44,260 ¿Vale? 363 00:18:48,260 --> 00:18:50,260 Vale, por ejemplo 364 00:18:52,260 --> 00:18:54,260 La variante que os he dicho antes 365 00:18:54,260 --> 00:18:56,260 Vamos a suponer que solamente queremos 366 00:18:56,260 --> 00:18:58,260 5 más 10 más 15 367 00:18:58,260 --> 00:19:00,260 son los múltiplos de 5 hasta 500 368 00:19:01,260 --> 00:19:03,260 Cuidado con los cambios 369 00:19:03,260 --> 00:19:05,260 Por ejemplo, ahora me han cambiado 370 00:19:05,260 --> 00:19:07,260 Son los múltiplos de 5 371 00:19:07,260 --> 00:19:09,260 de 5 a 500 372 00:19:09,260 --> 00:19:11,260 Y he dicho, ah vale, pues no pasa nada 373 00:19:11,260 --> 00:19:13,260 lo que hago es multiplicarlo por 5 374 00:19:13,260 --> 00:19:15,260 Es la solución que me habéis dicho 375 00:19:15,260 --> 00:19:17,260 Entonces la primera vez 376 00:19:17,260 --> 00:19:19,260 cuando empieza siendo 1 377 00:19:19,260 --> 00:19:21,260 le sumas 1 por 5, 5 378 00:19:21,260 --> 00:19:23,260 En ese queda valiendo 2 379 00:19:23,260 --> 00:19:25,260 La siguiente vez 380 00:19:25,260 --> 00:19:27,260 a la suma que ya hubiera de antes 381 00:19:27,260 --> 00:19:29,260 le acumulas encima 382 00:19:29,260 --> 00:19:31,260 2 por 5, 10 383 00:19:31,260 --> 00:19:33,260 ¿No? Entonces uno está en el proceso 384 00:19:33,260 --> 00:19:35,260 de mantenimiento de una aplicación 385 00:19:35,260 --> 00:19:37,260 le han dicho que haga este cambio 386 00:19:37,260 --> 00:19:39,260 hará ya hasta 500, pero son los múltiplos de 5 387 00:19:39,260 --> 00:19:41,260 e incorpora eso 388 00:19:41,260 --> 00:19:43,260 ¿Este programa 389 00:19:43,260 --> 00:19:45,260 estaría bien con este cambio que hemos hecho? 390 00:19:45,260 --> 00:19:47,260 ¿Haría esta suma? 391 00:19:47,260 --> 00:19:49,260 No, ¿por qué no la haría? 392 00:19:59,260 --> 00:20:01,260 O sea, está sumando 5, luego 10 393 00:20:01,260 --> 00:20:03,260 luego 15, eso sí, ¿no? 394 00:20:03,260 --> 00:20:05,260 Sí, pero no hasta 500 395 00:20:05,260 --> 00:20:07,260 Esa es la clave, es que se saldría 396 00:20:07,260 --> 00:20:09,260 O sea, no me sumaría hasta 500 397 00:20:09,260 --> 00:20:11,260 Se iría 398 00:20:11,260 --> 00:20:13,260 porque cuando llegue, es que fijaos 399 00:20:13,260 --> 00:20:15,260 cuando ya esté en 200 400 00:20:15,260 --> 00:20:17,260 la condición seguiría siendo cierta 401 00:20:17,260 --> 00:20:19,260 Cuando esté en 200, 200 por n 402 00:20:19,260 --> 00:20:21,260 o sea, 200 por 5000 403 00:20:21,260 --> 00:20:23,260 Entendéis que 404 00:20:23,260 --> 00:20:25,260 si yo hago este cambio 405 00:20:25,260 --> 00:20:27,260 sin más, ah vale, multiplico por 5 y ya 406 00:20:27,260 --> 00:20:29,260 y me quedo tan tranquilo 407 00:20:29,260 --> 00:20:31,260 sin revisarlo bien, no me doy cuenta de que 408 00:20:31,260 --> 00:20:33,260 no, no, espera, con este cambio que has hecho 409 00:20:33,260 --> 00:20:35,260 vas a sumar ahí hasta ni se sabe 410 00:20:35,260 --> 00:20:37,260 ¿no? hasta ni se sabe 411 00:20:37,260 --> 00:20:39,260 Entonces, o cambiamos 412 00:20:39,260 --> 00:20:41,260 la condición 413 00:20:41,260 --> 00:20:43,260 o ponemos la otra variante 414 00:20:43,260 --> 00:20:45,260 que dijimos, por ejemplo 415 00:20:45,260 --> 00:20:47,260 que era esta, empezar aquí con 5 416 00:20:47,260 --> 00:20:49,260 y aquí incrementando 417 00:20:49,260 --> 00:20:51,260 n más, igual 5 418 00:20:51,260 --> 00:20:53,260 Esta variante ya sí 419 00:20:53,260 --> 00:20:55,260 Esta variante 420 00:20:55,260 --> 00:20:57,260 ¿Vale? Primero suma el 5 421 00:20:57,260 --> 00:20:59,260 luego suma el 10, luego el 15 422 00:20:59,260 --> 00:21:01,260 pero mientras n sea menor o igual que 500 423 00:21:01,260 --> 00:21:03,260 mientras n, sumadito lo sumamos 424 00:21:09,260 --> 00:21:11,260 Si dejáis la variante de antes 425 00:21:11,260 --> 00:21:13,260 n por 5 426 00:21:13,260 --> 00:21:15,260 y aquí n más más 427 00:21:15,260 --> 00:21:17,260 y aquí con 1 428 00:21:17,260 --> 00:21:19,260 ¿Qué cambiaríais 429 00:21:19,260 --> 00:21:21,260 en este programa para que 430 00:21:21,260 --> 00:21:23,260 siguiera sumando de 5 hasta 431 00:21:23,260 --> 00:21:25,260 500 pero sin salirse? 432 00:21:25,260 --> 00:21:27,260 ¿Qué cambiaríais en este programa? 433 00:21:27,260 --> 00:21:29,260 ¿Tú qué haces con esta resolución? 434 00:21:29,260 --> 00:21:31,260 La n 435 00:21:31,260 --> 00:21:33,260 se le cambia por suma 436 00:21:33,260 --> 00:21:35,260 ¿Cómo la n? 437 00:21:35,260 --> 00:21:37,260 Donde igual entre paréntesis 438 00:21:37,260 --> 00:21:39,260 La condición, eso quieres decir 439 00:21:39,260 --> 00:21:41,260 Claro, cambiamos la condición 440 00:21:41,260 --> 00:21:43,260 en lugar de llegar a 500, pues que llegue a 100 441 00:21:43,260 --> 00:21:45,260 ¿no? porque cuando n sea 100 442 00:21:45,260 --> 00:21:47,260 ya hemos llegado a 443 00:21:47,260 --> 00:21:49,260 5 por 100, 500 444 00:21:49,260 --> 00:21:51,260 por ejemplo 445 00:21:51,260 --> 00:21:53,260 En lugar de menor o igual que 500 446 00:21:53,260 --> 00:21:55,260 menor o igual que 100 447 00:21:57,260 --> 00:21:59,260 Entonces cuando n sea 100 448 00:21:59,260 --> 00:22:01,260 es cuando me hará sumarme ya el último 449 00:22:01,260 --> 00:22:03,260 sumando, que es el 500 450 00:22:03,260 --> 00:22:05,260 100 por 5, 500 451 00:22:05,260 --> 00:22:07,260 y ya no quiero que me sume más 452 00:22:07,260 --> 00:22:09,260 Entonces podríamos, por ejemplo, modificarla así 453 00:22:17,260 --> 00:22:19,260 ¿Entendéis lo de la suma? 454 00:22:19,260 --> 00:22:21,260 Entonces ya no puede ocurrir 455 00:22:21,260 --> 00:22:23,260 porque además tenéis un fin de semana por medio 456 00:22:23,260 --> 00:22:25,260 para interiorizarlo y para, ya no puede ocurrir 457 00:22:25,260 --> 00:22:27,260 que en otro ejercicio se dé 458 00:22:27,260 --> 00:22:29,260 que una de las partes que uno tiene que hacer 459 00:22:29,260 --> 00:22:31,260 dentro de muchas partes sea 460 00:22:31,260 --> 00:22:33,260 una suma acumulativa 461 00:22:33,260 --> 00:22:35,260 y que no 462 00:22:35,260 --> 00:22:37,260 no sé cómo hacer esta suma, claro que sabéis cómo hacer esta suma 463 00:22:37,260 --> 00:22:39,260 sabéis cómo hacerlo porque ya tenemos 464 00:22:39,260 --> 00:22:41,260 cómo plasmar ese algoritmo 465 00:22:41,260 --> 00:22:43,260 ¿vale? lo que tenéis ahora es que entenderlo bien 466 00:22:43,260 --> 00:22:45,260 a quien se le 467 00:22:45,260 --> 00:22:47,260 escape alguna cosa 468 00:22:49,260 --> 00:22:51,260 por ejemplo, imagináis 469 00:22:51,260 --> 00:22:53,260 imaginad que ahora cambiáramos 470 00:22:53,260 --> 00:22:55,260 el enunciado 471 00:22:55,260 --> 00:22:57,260 y que en lugar de sumar los números 472 00:22:57,260 --> 00:22:59,260 entre 1 y 500 473 00:22:59,260 --> 00:23:01,260 sumara 474 00:23:01,260 --> 00:23:03,260 todos los números que le llegan 475 00:23:03,260 --> 00:23:05,260 por teclado 476 00:23:05,260 --> 00:23:07,260 por ejemplo, todos los números que le llegan por teclado 477 00:23:07,260 --> 00:23:09,260 hasta que le llegue un 0 478 00:23:09,260 --> 00:23:11,260 ¿vale? 479 00:23:11,260 --> 00:23:13,260 podríais hacer esa variante, programa que va 480 00:23:13,260 --> 00:23:15,260 pidiendo números por teclado 481 00:23:15,260 --> 00:23:17,260 y los va sumando todos 482 00:23:17,260 --> 00:23:19,260 y introduzca un número 483 00:23:19,260 --> 00:23:21,260 te lo va sumando y te lo va introduzcando 484 00:23:21,260 --> 00:23:23,260 ¿hasta cuándo? hasta que el usuario 485 00:23:23,260 --> 00:23:25,260 introduzca el 0 486 00:23:25,260 --> 00:23:27,260 se supone que ya no queremos más 487 00:23:27,260 --> 00:23:29,260 que queremos que el programa termine 488 00:23:29,260 --> 00:23:31,260 ¿vale? pues ¿cómo haríais ese programa? 489 00:23:31,260 --> 00:23:33,260 ese pequeño cambio 490 00:23:33,260 --> 00:23:35,260 pues venga, hacedlo, y ya nos vamos 491 00:23:37,260 --> 00:23:39,260 ahora, lo que hay que sumar 492 00:23:39,260 --> 00:23:41,260 no son directamente los números que yo digo 493 00:23:41,260 --> 00:23:43,260 el 1, el 2, el 3 494 00:23:43,260 --> 00:23:45,260 sino números que se van pidiendo por teclado 495 00:23:45,260 --> 00:23:47,260 ¿vale? se van pidiendo 496 00:23:47,260 --> 00:23:49,260 y después de que se introduzca 497 00:23:49,260 --> 00:23:51,260 el número 3, introduzca el número 7 498 00:23:51,260 --> 00:23:53,260 introduzca el número 0 499 00:23:53,260 --> 00:23:55,260 en ese momento el programa ya ha terminado 500 00:23:55,260 --> 00:23:57,260 y te dice la suma de los que has introducido es 501 00:23:57,260 --> 00:23:59,260 pagapon 502 00:23:59,260 --> 00:24:01,260 ¿vale?