1 00:00:00,560 --> 00:00:15,080 Vale, pues ¿cómo podemos utilizar entonces esta estructura, esta sintaxis tan rara con esas cosas ahí en medio? Repito, podemos utilizarla como nos dé la gana, pero fíjate que se adapta exactamente a la situación que hemos hecho antes. 2 00:00:15,080 --> 00:00:40,439 Nosotros teníamos un bucle aquí, un bucle while que queríamos que se ejecutara exactamente b veces, pues habíamos hecho un contador que lo inicializábamos a 0 y hacíamos mientras cont menor que b haz lo que tengas que hacer, 3 00:00:40,439 --> 00:00:42,439 lo que fuera, que en nuestro caso 4 00:00:42,439 --> 00:00:44,399 era multiplicar por a, pero podía ser cualquier 5 00:00:44,399 --> 00:00:46,679 cosa, e incrementa 6 00:00:46,679 --> 00:00:47,820 luego en uno 7 00:00:47,820 --> 00:00:50,259 luego nos habíamos inventado este 8 00:00:50,259 --> 00:00:52,340 contador para asegurarnos de que este 9 00:00:52,340 --> 00:00:54,439 bucle, fuera lo que fuera 10 00:00:54,439 --> 00:00:56,380 que se ejecutaba ahí, se hacía 11 00:00:56,380 --> 00:00:57,759 exactamente b veces 12 00:00:57,759 --> 00:01:00,100 pues esto es justo 13 00:01:00,100 --> 00:01:01,039 estas tres cosas 14 00:01:01,039 --> 00:01:02,859 son justo 15 00:01:02,859 --> 00:01:05,980 el significado de lo que hay aquí 16 00:01:05,980 --> 00:01:08,439 una sentencia que se 17 00:01:08,439 --> 00:01:10,400 hace una primera vez cuando yo 18 00:01:10,400 --> 00:01:12,359 llego al bucle, yo solo una vez 19 00:01:12,359 --> 00:01:14,519 esta, la de incont igual a cero 20 00:01:14,519 --> 00:01:16,459 pues anda, vamos a poner esta 21 00:01:16,459 --> 00:01:20,109 aquí, y esto 22 00:01:20,109 --> 00:01:22,150 esto es la condición del bucle 23 00:01:22,150 --> 00:01:23,650 que mientras se ejecute yo entro 24 00:01:23,650 --> 00:01:25,790 pues vamos a poner esto aquí 25 00:01:25,790 --> 00:01:27,930 y esto que es 26 00:01:27,930 --> 00:01:30,010 algo que una vez que 27 00:01:30,010 --> 00:01:32,090 acabo lo que hay dentro, lo tengo 28 00:01:32,090 --> 00:01:33,769 que hacer al final siempre si o si 29 00:01:33,769 --> 00:01:35,989 incrementar contador para contar la 30 00:01:35,989 --> 00:01:38,290 iteración, pues esto 31 00:01:38,290 --> 00:01:40,049 voy a meterlo aquí 32 00:01:40,049 --> 00:01:43,629 entonces, esa sentencia 33 00:01:43,629 --> 00:01:45,390 me compacta 34 00:01:45,390 --> 00:01:47,049 esta estructura 35 00:01:47,049 --> 00:01:49,209 que es un bucle que se hace exactamente 36 00:01:49,209 --> 00:01:51,489 B veces, me la compacta 37 00:01:51,489 --> 00:01:53,209 pues es justo 38 00:01:53,209 --> 00:01:55,109 el uso habitual del bucle for 39 00:01:55,109 --> 00:01:57,269 que estáis acostumbrados a ver 40 00:01:57,269 --> 00:01:59,010 y que veréis por ahí de toda la vida 41 00:01:59,010 --> 00:02:00,430 es justo eso 42 00:02:00,430 --> 00:02:04,540 entonces, el bucle for a veces se plantea 43 00:02:04,540 --> 00:02:06,379 el bucle for es esto 44 00:02:06,379 --> 00:02:08,939 no es que sea eso, es que es el uso más habitual 45 00:02:08,939 --> 00:02:11,280 que sería, imaginaos que yo pongo 46 00:02:11,280 --> 00:02:13,240 desde int 47 00:02:13,240 --> 00:02:15,180 la variable la voy a llamar i 48 00:02:15,180 --> 00:02:16,639 porque cont es muy larga 49 00:02:16,639 --> 00:02:18,300 la llamo i que es más cortita 50 00:02:18,300 --> 00:02:20,039 int igual a cero 51 00:02:20,039 --> 00:02:23,400 mientras i sea menor que b 52 00:02:23,400 --> 00:02:25,319 incrementando i 53 00:02:25,319 --> 00:02:26,099 de uno en uno 54 00:02:26,099 --> 00:02:28,259 ahora haz 55 00:02:28,259 --> 00:02:30,379 lo que tengas que hacer 56 00:02:30,379 --> 00:02:31,860 no es esto 57 00:02:31,860 --> 00:02:34,199 exactamente lo de la derecha 58 00:02:34,199 --> 00:02:36,479 cambiando i por cont 59 00:02:36,479 --> 00:02:38,759 es exactamente igual 60 00:02:38,759 --> 00:02:40,680 int igual a cero se hace 61 00:02:40,680 --> 00:02:42,400 una única vez al llegar 62 00:02:42,400 --> 00:02:44,520 incontigual a cero se hace una vez 63 00:02:44,520 --> 00:02:45,419 porque lo he puesto fuera 64 00:02:45,419 --> 00:02:47,560 esta es la condición del bucle 65 00:02:47,560 --> 00:02:49,300 esta es la condición del bucle 66 00:02:49,300 --> 00:02:52,479 y esto se hace cada vez 67 00:02:52,479 --> 00:02:54,599 que yo termino lo que hay dentro 68 00:02:54,599 --> 00:02:56,699 justo, con más más se hacía 69 00:02:56,699 --> 00:02:58,039 cada vez que yo termino lo que hay dentro 70 00:02:58,039 --> 00:03:00,900 luego esto es lo mismo que lo de la derecha 71 00:03:00,900 --> 00:03:02,580 cambiando y por con, pero esto queda 72 00:03:02,580 --> 00:03:03,099 más bonito 73 00:03:03,099 --> 00:03:05,900 queda más bonito 74 00:03:05,900 --> 00:03:08,080 y yo cuando veo un bucle for 75 00:03:08,080 --> 00:03:10,259 que normalmente se usan 76 00:03:10,259 --> 00:03:10,960 de esta manera 77 00:03:10,960 --> 00:03:14,060 pero uno puede poner ahí lo que le dé la gana 78 00:03:14,060 --> 00:03:16,039 si se adapta a lo que él quiere hacer, claro 79 00:03:16,039 --> 00:03:18,460 pero normalmente 80 00:03:18,460 --> 00:03:20,199 se usan para esto y los vemos así 81 00:03:20,199 --> 00:03:22,340 pues cuando yo veo un bucle for así 82 00:03:22,340 --> 00:03:23,919 rápidamente en cuanto lo veo digo 83 00:03:23,919 --> 00:03:25,960 ah mira, lo que hay aquí dentro 84 00:03:25,960 --> 00:03:27,800 se va a hacer B veces 85 00:03:27,800 --> 00:03:30,120 ya está, no hace falta que miremos más, ni que entendemos 86 00:03:30,120 --> 00:03:31,919 más, ni que intentemos entender esta variable 87 00:03:31,919 --> 00:03:33,439 porque está aquí y esto porque está aquí 88 00:03:33,439 --> 00:03:35,919 no hace falta, yo veo un bucle for con esa 89 00:03:35,919 --> 00:03:37,699 estructura que es la habitual y digo ah vale 90 00:03:37,699 --> 00:03:39,659 esto se va a hacer 91 00:03:39,659 --> 00:03:41,520 estas veces, y ya está 92 00:03:41,520 --> 00:03:42,840 no tengo que mirar nada más 93 00:03:42,840 --> 00:03:45,719 ya lo interpreto en cuanto lo veo 94 00:03:45,719 --> 00:03:48,900 ¿vale? 95 00:03:51,349 --> 00:03:54,870 ¿sí? bueno, pues entonces 96 00:03:54,870 --> 00:03:56,250 podríamos haber cambiado 97 00:03:56,250 --> 00:03:57,490 nuestro 98 00:03:57,490 --> 00:04:00,229 ejercicio 99 00:04:00,229 --> 00:04:09,840 esto de aquí 100 00:04:09,840 --> 00:04:19,459 esto de aquí 101 00:04:19,459 --> 00:04:23,180 otra forma de hacerlo, con el bucle 102 00:04:23,180 --> 00:04:32,620 for, con bucle for 103 00:04:32,620 --> 00:04:34,899 pues vale, es esto mismo 104 00:04:34,899 --> 00:04:37,759 Pero lo voy a plantear con un bucle for 105 00:04:37,759 --> 00:04:39,699 En vez de con este while que tiene el contador 106 00:04:39,699 --> 00:04:41,040 Aquí ando por saco 107 00:04:41,040 --> 00:04:42,819 Vale, pues con bucle for 108 00:04:42,819 --> 00:04:44,860 Inicializa el acumulador, esto 109 00:04:44,860 --> 00:04:49,660 Lo pongo aquí 110 00:04:49,660 --> 00:04:51,720 Y ahora ya, como este bucle 111 00:04:51,720 --> 00:04:53,480 Bueno, ya lo tenía 112 00:04:53,480 --> 00:04:55,620 Declarado aquí, lo voy a subir aquí arriba 113 00:04:55,620 --> 00:04:57,019 No hace falta que lo declare otra vez 114 00:04:57,019 --> 00:04:58,019 Lo voy a poner aquí arriba 115 00:04:58,019 --> 00:05:01,600 Para que no se ligue, vale 116 00:05:01,600 --> 00:05:03,959 Y ahora este era mi bucle while 117 00:05:03,959 --> 00:05:06,379 Vale, ahí 118 00:05:06,379 --> 00:05:09,399 bueno pues este mismo bucle 119 00:05:09,399 --> 00:05:11,139 vamos a expresarlo con el bucle for 120 00:05:11,139 --> 00:05:11,620 el mismo 121 00:05:11,620 --> 00:05:14,319 esto irá dentro del for 122 00:05:14,319 --> 00:05:16,199 esto irá dentro del for 123 00:05:16,199 --> 00:05:17,480 y esto irá dentro del for 124 00:05:17,480 --> 00:05:19,579 y se me quedaría 125 00:05:19,579 --> 00:05:20,699 esto ya 126 00:05:20,699 --> 00:05:24,740 pues for int podría poner cont 127 00:05:24,740 --> 00:05:27,139 pero bueno normalmente se usa la variable i 128 00:05:27,139 --> 00:05:28,899 que se llama índice del bucle 129 00:05:28,899 --> 00:05:30,720 por convenio 130 00:05:30,720 --> 00:05:32,399 porque es más cortita queda más claro 131 00:05:32,399 --> 00:05:33,680 y por índice index 132 00:05:33,680 --> 00:05:36,600 i empezando 0 133 00:05:36,600 --> 00:05:39,600 mientras i sea menor que b 134 00:05:39,600 --> 00:05:42,779 siendo b el número de veces que quiero que se ejecute 135 00:05:42,779 --> 00:05:45,680 incrementando i en cada iteración 136 00:05:45,680 --> 00:05:46,680 ¿qué queremos hacer? 137 00:05:47,459 --> 00:05:50,660 pues esto, esto es lo que queremos hacer 138 00:05:50,660 --> 00:05:57,540 entonces, esto de aquí 139 00:05:57,540 --> 00:06:00,519 y esto de aquí abajo 140 00:06:00,519 --> 00:06:09,699 lo voy a poner, esto de aquí 141 00:06:09,699 --> 00:06:11,800 voy a volver a inicializar a coma 1 142 00:06:11,800 --> 00:06:13,920 porque si no se queda con el barro que tenía 143 00:06:13,920 --> 00:06:14,399 de antes 144 00:06:14,399 --> 00:06:21,079 vale, pues este código de aquí 145 00:06:21,079 --> 00:06:23,240 y este código de aquí 146 00:06:23,240 --> 00:06:24,600 son idénticos 147 00:06:24,600 --> 00:06:26,740 hacen exactamente lo mismo 148 00:06:26,740 --> 00:06:29,889 pero este es más bonito 149 00:06:29,889 --> 00:06:32,470 primero es más compacto 150 00:06:32,470 --> 00:06:34,209 y segundo 151 00:06:34,209 --> 00:06:37,209 me permite a mí como lectora del código 152 00:06:37,209 --> 00:06:38,430 decir, anda tengo un for 153 00:06:38,430 --> 00:06:40,350 pues esto de aquí se va a hacer B veces 154 00:06:40,350 --> 00:06:43,089 ya no tengo que preocuparme más porque asocio 155 00:06:43,089 --> 00:06:43,949 un for a eso 156 00:06:43,949 --> 00:06:46,589 entonces interpreto 157 00:06:46,589 --> 00:06:48,649 antes lo que va a hacer 158 00:06:48,649 --> 00:06:49,209 este código 159 00:06:49,209 --> 00:06:56,990 entonces el bucle 160 00:06:56,990 --> 00:06:58,750 como cualquier otra sentencia 161 00:06:58,750 --> 00:07:00,709 pues como veis 162 00:07:00,709 --> 00:07:03,250 me abre un bloque de código 163 00:07:03,250 --> 00:07:05,230 me abre un bloque porque me abre llaves 164 00:07:05,230 --> 00:07:06,949 y de nuevo 165 00:07:06,949 --> 00:07:08,649 esta llave igual que el if 166 00:07:08,649 --> 00:07:10,790 si yo solo tengo una sentencia después 167 00:07:10,790 --> 00:07:11,629 la llave es opcional 168 00:07:11,629 --> 00:07:14,189 si solo tuviera una es opcional 169 00:07:14,189 --> 00:07:17,110 pero bueno siempre es buena 170 00:07:17,110 --> 00:07:18,370 práctica dejarlas 171 00:07:18,370 --> 00:07:20,689 aunque no las necesitemos 172 00:07:20,689 --> 00:07:21,870 cuando solo hay una sentencia 173 00:07:21,870 --> 00:07:23,230 para no liar el código 174 00:07:23,230 --> 00:07:24,110 que quede más claro 175 00:07:24,110 --> 00:07:27,600 vale 176 00:07:27,600 --> 00:07:37,290 entonces repito 177 00:07:37,290 --> 00:07:40,069 aquí yo podría poner más sentencias 178 00:07:40,069 --> 00:07:42,870 no tiene por qué ser solo una 179 00:07:42,870 --> 00:07:44,910 puedo poner más separadas por comas 180 00:07:44,910 --> 00:07:46,910 y aquí también puedo poner más 181 00:07:46,910 --> 00:07:48,089 separadas por comas 182 00:07:48,089 --> 00:07:50,610 y todas estas se van a hacer al final 183 00:07:50,610 --> 00:07:53,230 y todas estas se van a hacer según entre 184 00:07:53,230 --> 00:07:55,910 puede que en algunos ejercicios 185 00:07:55,910 --> 00:07:56,610 me venga bien 186 00:07:56,610 --> 00:07:57,629 poner ahí más de una 187 00:07:57,629 --> 00:07:59,129 pero bueno 188 00:07:59,129 --> 00:08:01,449 por ahora, dejemos el uso 189 00:08:01,449 --> 00:08:03,110 estándar del bucle for, que es este 190 00:08:03,110 --> 00:08:06,889 ¿vale? de hecho puede hacer 191 00:08:06,889 --> 00:08:07,550 un bucle for 192 00:08:07,550 --> 00:08:10,310 sin ninguna, esto 193 00:08:10,310 --> 00:08:12,670 este bucle for es 194 00:08:12,670 --> 00:08:13,730 perfectamente válido 195 00:08:13,730 --> 00:08:18,149 sin nada, este es un bucle 196 00:08:18,149 --> 00:08:19,329 infinito, ¿para qué quiero yo esto? 197 00:08:20,410 --> 00:08:22,410 ¿vale? pero bueno, que sepáis que esos huecos 198 00:08:22,410 --> 00:08:24,269 pueden tener cosas o pueden no tenerlas 199 00:08:24,269 --> 00:08:26,230 no es obligatorio, pero cuando la tienen 200 00:08:26,230 --> 00:08:28,410 significa exactamente lo que hemos dicho 201 00:08:28,410 --> 00:08:32,149 y por último su uso habitual es este 202 00:08:32,149 --> 00:08:33,190 vale 203 00:08:33,190 --> 00:08:35,730 y esto pues es un poco raro 204 00:08:35,730 --> 00:08:45,159 vale, bueno 205 00:08:45,159 --> 00:08:47,360 con esta misma idea 206 00:08:47,360 --> 00:08:49,500 ahora podríais extenderla a hacer el 12 207 00:08:49,500 --> 00:08:51,539 porque esto es una multiplicación acumulativa 208 00:08:51,539 --> 00:08:53,440 y también 209 00:08:53,440 --> 00:08:55,480 podríais extenderlo para hacer el 13 210 00:08:55,480 --> 00:08:57,840 es la misma idea, una multiplicación acumulativa 211 00:08:57,840 --> 00:08:59,139 de nuevo lo que cambiáis es 212 00:08:59,139 --> 00:09:01,220 los factores y la condición 213 00:09:01,220 --> 00:09:03,279 la operación factorial 214 00:09:03,279 --> 00:09:05,559 recordad que sería 215 00:09:05,559 --> 00:09:25,120 El factorial de n es el factorial de n, si alguien no lo sabe, es n por n menos 1 por n menos 2, así hasta 1. 216 00:09:25,940 --> 00:09:28,860 Luego, de nuevo, esto también es una multiplicación acumulativa. 217 00:09:29,779 --> 00:09:36,860 Igual que esta, lo que van cambiando son los factores y las veces que se hace la multiplicación, pero es el mismo algoritmo. 218 00:09:37,860 --> 00:09:39,220 12 y 13 lo mismo. 219 00:09:39,279 --> 00:09:43,240 este ejercicio, el 14 y el 15 220 00:09:43,240 --> 00:09:45,980 este es una suma acumulativa 221 00:09:45,980 --> 00:09:47,019 me pide la media 222 00:09:47,019 --> 00:09:51,120 pero la media de un total de números 223 00:09:51,120 --> 00:09:54,019 que es la suma de todos ellos dividida entre el total 224 00:09:54,019 --> 00:09:57,399 luego este ejercicio es una suma acumulativa 225 00:09:57,399 --> 00:09:58,840 pero también una cuenta 226 00:09:58,840 --> 00:10:02,340 tendré que hacer las dos cosas y luego dividir la suma entre la cuenta 227 00:10:02,340 --> 00:10:05,799 pero son los dos algoritmos que conocemos, sumar y contar 228 00:10:05,799 --> 00:10:09,980 esto también es una suma y una cuenta 229 00:10:09,980 --> 00:10:13,539 aquí lo mismo, pero aquí 230 00:10:13,539 --> 00:10:17,840 como tengo que hacer la suma varias veces es meter un bucle dentro de otro 231 00:10:17,840 --> 00:10:21,039 que es la primera vez que nos va a hacer falta, meter un bucle dentro de otro 232 00:10:21,039 --> 00:10:26,299 ¿vale? entonces hasta el 16 es el algoritmo 233 00:10:26,299 --> 00:10:30,419 el mismo algoritmo una y otra vez de suma acumulativa, multiplicación acumulativa 234 00:10:30,419 --> 00:10:34,440 pero cambiando, cambiando los detalles y en el 16 además 235 00:10:34,440 --> 00:10:38,679 metiendo un bucle dentro de otro, ¿vale? 236 00:10:38,740 --> 00:10:40,940 Bueno, hasta el 16 son los que tenéis que trabajar 237 00:10:40,940 --> 00:10:44,799 ahora mismo, ¿vale? 238 00:10:45,240 --> 00:10:52,360 Pero vamos a hacer otra cosa ahora mismo, ¿vale? 239 00:10:52,379 --> 00:10:55,120 Para cambiar un poco de pensamiento. 240 00:10:56,080 --> 00:10:59,500 Bueno, os voy a subir un código que ya está hecho, 241 00:11:00,139 --> 00:11:04,899 que está hecho con bucles, sumas y contadores, 242 00:11:04,899 --> 00:11:06,740 nada más que eso, bucles, sumas y contadores 243 00:11:06,740 --> 00:11:08,500 que tiene errores 244 00:11:08,500 --> 00:11:10,700 y no errores de compilación 245 00:11:10,700 --> 00:11:13,159 compila perfectamente pero no hace lo que tiene que hacer 246 00:11:13,159 --> 00:11:14,559 vale 247 00:11:14,559 --> 00:11:15,820 pues vamos a encontrarlo 248 00:11:15,820 --> 00:11:18,620 entonces un programa más larguito 249 00:11:18,620 --> 00:11:19,519 que los que hemos hecho 250 00:11:19,519 --> 00:11:22,659 pues voy a subirlo un momento al aula virtual 251 00:11:22,659 --> 00:11:24,919 y 252 00:11:24,919 --> 00:11:27,860 trabajamos sobre él