1 00:00:02,220 --> 00:00:37,429 Pues así calcado, porque estamos un poco todavía pensando muy detenidamente, con pinzas, dime, a ver, un momento, vale, pues entonces, si entendemos el ejercicio, después de haberlo leído, haber analizado un poquito lo que significa a elevado a b, pues ya llegamos a la conclusión de que es a por a por a por a b veces, 2 00:00:37,429 --> 00:00:42,409 entonces es hacer una multiplicación acumulativa 3 00:00:42,409 --> 00:00:43,829 muchas multiplicaciones 4 00:00:43,829 --> 00:00:46,130 entonces ya identificamos que eso es lo que tenemos que hacer 5 00:00:46,130 --> 00:00:49,270 y ya identificamos que es el patrón entonces de siempre 6 00:00:49,270 --> 00:00:51,689 este para la suma acumulativa 7 00:00:51,689 --> 00:00:54,369 y este para la multiplicación acumulativa 8 00:00:54,369 --> 00:00:57,810 cambia el más por el por y el valor inicial 9 00:00:57,810 --> 00:01:01,369 luego ya para cada ejemplo tenemos que ver 10 00:01:01,369 --> 00:01:04,469 cómo ponemos la condición y de dónde sale este factor 11 00:01:04,469 --> 00:01:09,549 Bueno, pues, bueno, vamos a leer a y b lo primero 12 00:01:09,549 --> 00:01:21,859 Entonces, leemos a y b lo primero de todo 13 00:01:21,859 --> 00:01:29,980 Introduzca base de la potencia 14 00:01:29,980 --> 00:01:36,379 Introduzca la base, pues venga, la base igual 15 00:01:36,379 --> 00:01:38,840 Uy, perdón 16 00:01:38,840 --> 00:01:49,640 Pues venga, la base igual a scan.nextint 17 00:01:49,640 --> 00:01:52,739 Vale, ahora introduzca el exponente 18 00:01:52,739 --> 00:02:02,969 Introduzca el exponente de mi potencia 19 00:02:02,969 --> 00:02:06,989 Pues, bueno, perdón, la base es A 20 00:02:06,989 --> 00:02:08,969 Y el exponente es B 21 00:02:08,969 --> 00:02:10,469 Vale, ya tenemos A elevado a B 22 00:02:10,469 --> 00:02:12,849 Y ya sabemos que esto, por tanto, tiene que ser 23 00:02:12,849 --> 00:02:15,990 A por A y por A 24 00:02:15,990 --> 00:02:18,750 Y así un montón de veces 25 00:02:18,750 --> 00:02:33,610 ¿cuántas? b veces, vale, bueno, pues es una multiplicación acumulativa, pues nada, un acumulador, un acumulador, en este caso, como es multiplicación, inicializado a 1, 26 00:02:33,610 --> 00:02:37,689 y ahora ya esto se va a ejecutar en un bucle 27 00:02:37,689 --> 00:02:41,650 ¿cuántas veces? pues no lo sé, tendremos que definirlo 28 00:02:41,650 --> 00:02:45,810 y ahora en este bucle la operación que yo tengo que hacer es 29 00:02:45,810 --> 00:02:51,389 acum igual a acum por 30 00:02:51,389 --> 00:02:55,310 el factor que yo quiero multiplicar cada vez 31 00:02:55,310 --> 00:02:59,550 esta sería la idea, ¿vale? y el resultado 32 00:02:59,550 --> 00:03:03,289 sería pues esto, ¿vale? ahora ya esto 33 00:03:03,289 --> 00:03:06,610 si entendemos lo que hay debajo de esto 34 00:03:06,610 --> 00:03:08,490 que se supone que lo tenemos que entender 35 00:03:08,490 --> 00:03:11,090 ahora ya se trata de que yo adapte 36 00:03:11,090 --> 00:03:14,689 este factor que es lo que se va multiplicando cada vez 37 00:03:14,689 --> 00:03:16,789 y que adapte esto 38 00:03:16,789 --> 00:03:19,210 ¿vale? ¿qué es lo que se va multiplicando? 39 00:03:19,210 --> 00:03:20,169 A todo el rato 40 00:03:20,169 --> 00:03:22,889 todas las multiplicaciones son por A 41 00:03:22,889 --> 00:03:25,430 no son por nada variable 42 00:03:25,430 --> 00:03:26,889 si fueran por algo variable 43 00:03:26,889 --> 00:03:30,430 yo tendría que declarar aquí esto como una variable 44 00:03:30,430 --> 00:03:33,050 porque es por algo variable 45 00:03:33,050 --> 00:03:58,969 y ahora esta variable, darle aquí el valor que fuera, el valor que correspondiera, hasta construir en cada iteración el factor nuevo, pero esto es mucho más sencillo, este factor es a todo el rato, todo el rato es por a, por a, por a, pues mira, tan sencillo como era ya, no necesito una variable adicional para construir ese factor ni nada, por a todo el rato, 46 00:03:58,969 --> 00:04:01,490 entonces la primera vez que entro aquí 47 00:04:01,490 --> 00:04:03,250 hago 1 por A 48 00:04:03,250 --> 00:04:04,969 y actualizo el acumulador 49 00:04:04,969 --> 00:04:07,210 la siguiente vez que entre 50 00:04:07,210 --> 00:04:09,789 ese 1 por A se multiplica por otro A 51 00:04:09,789 --> 00:04:11,110 ya van 2, A por A 52 00:04:11,110 --> 00:04:13,889 la siguiente vez que entre 53 00:04:13,889 --> 00:04:14,949 ese A por A 54 00:04:14,949 --> 00:04:17,050 se multiplica por un A adicional 55 00:04:17,050 --> 00:04:18,870 ya van 3, A por A por A 56 00:04:18,870 --> 00:04:21,430 y así todo el rato 57 00:04:21,430 --> 00:04:23,029 cada iteración de este bucle 58 00:04:23,029 --> 00:04:25,709 multiplico por un A adicional 59 00:04:25,709 --> 00:04:28,350 pues esto ya está casi hecho 60 00:04:28,350 --> 00:04:30,550 pero claro, me falta, oye 61 00:04:30,550 --> 00:04:32,689 y cuan 62 00:04:32,689 --> 00:04:35,230 ese bucle, cuantas veces 63 00:04:35,230 --> 00:04:36,670 tengo que hacerlo, hasta cuando 64 00:04:36,670 --> 00:04:38,990 bueno, pues aquí la condición 65 00:04:38,990 --> 00:04:40,970 digo, lo tienes que hacer B veces 66 00:04:40,970 --> 00:04:43,310 esa es una condición muy concreta 67 00:04:43,310 --> 00:04:44,810 y es, tienes que asegurarte 68 00:04:44,810 --> 00:04:47,449 de que este bucle se hace B veces 69 00:04:47,449 --> 00:04:49,449 que se hace B veces 70 00:04:49,449 --> 00:04:50,930 ahhh 71 00:04:50,930 --> 00:04:52,949 pues automáticamente aquí me viene 72 00:04:52,949 --> 00:04:54,329 anda, un contador 73 00:04:54,329 --> 00:04:55,889 yo tengo que contar 74 00:04:55,889 --> 00:04:58,370 las iteraciones del bucle 75 00:04:58,370 --> 00:05:00,990 y cuando este bucle se haya hecho exactamente 76 00:05:00,990 --> 00:05:01,529 B 77 00:05:01,529 --> 00:05:03,389 ya termino 78 00:05:03,389 --> 00:05:06,509 pues ahí ya me viene, bueno, tengo que contar 79 00:05:06,509 --> 00:05:09,129 tengo que contar vueltas del bucle 80 00:05:09,129 --> 00:05:09,949 contarlas 81 00:05:09,949 --> 00:05:12,750 claro, ya tenemos la estructura 82 00:05:12,750 --> 00:05:14,829 de contar en la cabeza, sabemos que yo puedo 83 00:05:14,829 --> 00:05:16,750 contar las veces 84 00:05:16,750 --> 00:05:17,970 que paso por un bucle 85 00:05:17,970 --> 00:05:20,629 pues vamos a poner un contador 86 00:05:20,629 --> 00:05:22,089 y las vamos a contar 87 00:05:22,089 --> 00:05:24,170 y cuando ese contador llegue a B 88 00:05:24,170 --> 00:05:26,370 adiós 89 00:05:26,370 --> 00:05:28,329 pues venga, vamos a poner ahí un contador 90 00:05:28,329 --> 00:05:29,050 para contar 91 00:05:29,050 --> 00:05:32,250 todas las cuentas se inician a 0 92 00:05:32,250 --> 00:05:34,490 y ahora este por ser un contador 93 00:05:34,490 --> 00:05:36,569 en cada vuelta del bucle lo incremento 94 00:05:36,569 --> 00:05:38,490 esta es mi estructura de contador 95 00:05:38,490 --> 00:05:40,370 ¿no? un contador 96 00:05:40,370 --> 00:05:42,110 que empieza su cuenta a 0 97 00:05:42,110 --> 00:05:44,209 y se incrementa en 1 98 00:05:44,209 --> 00:05:45,589 cada vuelta del bucle 99 00:05:45,589 --> 00:05:47,290 y así va contando 100 00:05:47,290 --> 00:05:50,050 vale, pues este contador 101 00:05:50,050 --> 00:05:52,110 me permite ahora fijar la condición 102 00:05:52,110 --> 00:05:55,860 qué condición pongo aquí 103 00:05:55,860 --> 00:05:58,060 para asegurarme que el bucle 104 00:05:58,060 --> 00:06:00,019 se va a ejecutar exactamente 105 00:06:00,019 --> 00:06:01,540 b veces 106 00:06:01,540 --> 00:06:04,540 tengo la variable b que la acabo de leer 107 00:06:04,540 --> 00:06:06,259 y tengo la variable cont 108 00:06:06,259 --> 00:06:08,220 que se va incrementando de uno en uno 109 00:06:08,220 --> 00:06:10,519 vale, pues decidme qué condición 110 00:06:10,519 --> 00:06:12,139 pondríais ahí exactamente 111 00:06:12,139 --> 00:06:14,339 para aseguraros 112 00:06:14,339 --> 00:06:16,540 de que ese bucle se hace exactamente 113 00:06:16,540 --> 00:06:18,779 b veces, en la vez b más 1 114 00:06:18,779 --> 00:06:20,019 ya no entra 115 00:06:20,019 --> 00:06:21,439 qué condición pondríais aquí 116 00:06:21,439 --> 00:06:45,110 díctamela, cont menor o igual que b, casi, pero seguro, vamos a comprobarlo, a ver, tiene sentido, ¿no? 117 00:06:46,129 --> 00:07:00,189 Entra para la vez 0, para la vez 1, para la vez 2, para la vez b, para la vez b más 1 ya no entra, para la vez b más 1 ya no entra, vamos a ejecutarlo, ¿vale? 118 00:07:00,189 --> 00:07:01,430 Entendéis lo que hemos escrito, ¿no? 119 00:07:01,430 --> 00:07:07,050 Y la idea de por qué lo hacemos, estamos contando para saber cuándo tenemos que salir, 120 00:07:07,149 --> 00:07:11,509 que será cuando el opuesto a esto, cuando con ya sea mayor que b, cuando ya se haya salido. 121 00:07:13,410 --> 00:07:14,889 Entonces, vamos a ejecutar esto. 122 00:07:17,379 --> 00:07:20,139 Vamos a probar una operación fácil. 123 00:07:20,800 --> 00:07:23,579 La base es 2 y el exponente es 3. 124 00:07:23,800 --> 00:07:27,180 Nos debería dar 2 elevado a 3, que es 8, ¿no? 125 00:07:27,959 --> 00:07:31,160 Nos debería dar 8 y nos da 16. 126 00:07:31,819 --> 00:07:34,319 parece que lo ha hecho una de más 127 00:07:34,319 --> 00:07:36,519 parece que lo ha hecho una de más 128 00:07:36,519 --> 00:07:38,459 entonces esta prueba nos permite 129 00:07:38,459 --> 00:07:40,560 uy, realmente es una de más 130 00:07:40,560 --> 00:07:41,560 voy a volver a probarlo 131 00:07:41,560 --> 00:07:44,259 porque yo tengo que tratar de aislar bien 132 00:07:44,259 --> 00:07:46,279 mi fallo, caracterizarlo bien 133 00:07:46,279 --> 00:07:47,639 para buscar donde puede venir 134 00:07:47,639 --> 00:07:49,699 voy a hacer con otra prueba 135 00:07:49,699 --> 00:07:52,199 por ejemplo, con 3 136 00:07:52,199 --> 00:07:53,600 elevado a 3 137 00:07:53,600 --> 00:07:55,860 3 elevado a 3 sería 3 por 3, 9 138 00:07:55,860 --> 00:07:57,040 9 por 3, 27 139 00:07:57,040 --> 00:07:58,899 a ver si me sale 27 140 00:07:58,899 --> 00:08:02,199 pues me sale una vez más 141 00:08:02,199 --> 00:08:03,019 27 por 3 142 00:08:03,019 --> 00:08:05,699 con lo cual después de hacer varias pruebas 143 00:08:05,699 --> 00:08:07,139 parece que entra al bucle 144 00:08:07,139 --> 00:08:09,360 una vez más de las que debería 145 00:08:09,360 --> 00:08:10,720 entra una vez más 146 00:08:10,720 --> 00:08:12,899 luego entonces una vez que yo ya 147 00:08:12,899 --> 00:08:14,980 he identificado el problema 148 00:08:14,980 --> 00:08:16,720 y es que lo hace una vez más 149 00:08:16,720 --> 00:08:18,459 porque no vale con que yo vea 150 00:08:18,459 --> 00:08:19,800 uy, no lo hace bien 151 00:08:19,800 --> 00:08:22,720 y ponerme aquí de buenas a primeras 152 00:08:22,720 --> 00:08:23,600 a ver qué pasa, no 153 00:08:23,600 --> 00:08:26,079 tengo que identificar bien exactamente 154 00:08:26,079 --> 00:08:26,939 qué está pasando 155 00:08:27,819 --> 00:08:30,480 Pues después de varias pruebas resulta que lo hace una vez de más. 156 00:08:31,060 --> 00:08:34,179 Entonces me puedo ir a la zona peligrosa, que es esta, 157 00:08:34,279 --> 00:08:36,919 que esta es la que me marca la cantidad de veces que se ejecuta. 158 00:08:38,039 --> 00:08:39,820 Entonces me voy aquí y digo, vamos a pensar. 159 00:08:40,419 --> 00:08:43,539 Me pongo yo cabeza CPU y digo, vamos a ver, 160 00:08:44,100 --> 00:08:47,039 en el caso de prueba que yo le he dado, vamos a ver qué está pasando. 161 00:08:47,700 --> 00:08:52,460 El primer caso de prueba que yo le he dado es A igual a 2 y B igual a 3. 162 00:08:54,059 --> 00:08:56,740 Venga, conti igual a 0, primera vez que entra. 163 00:08:56,940 --> 00:09:04,600 para cont igual a 0, la primera vez que entra me hace 1, porque acum es 1, por a, por 2, 164 00:09:04,820 --> 00:09:07,720 luego para cont igual a 0 es la primera vez que entra en el bucle, 165 00:09:08,360 --> 00:09:14,720 y la primera vez que entra en el bucle el acumulador se queda con a, vale, 166 00:09:14,720 --> 00:09:22,059 y cont se queda con 1, cont se queda con 1, porque se ha incrementado, volvemos, 167 00:09:22,059 --> 00:09:25,980 ¿cont que es 1 es menor o igual que b que es 3? 168 00:09:26,100 --> 00:09:28,539 sí, pues entramos una segunda vez 169 00:09:28,539 --> 00:09:31,539 en esta segunda vez, cont es igual a 1 170 00:09:31,539 --> 00:09:34,039 y la multiplicación que se hace es 171 00:09:34,039 --> 00:09:36,480 lo que tenía en la acumula anterior, que era a 172 00:09:36,480 --> 00:09:40,500 lo que tenía en la acumuladora anterior, que era a 173 00:09:40,500 --> 00:09:42,059 se multiplica por a 174 00:09:42,059 --> 00:09:45,460 luego ahora ya mi acumulador será 175 00:09:45,460 --> 00:09:49,320 el a anterior que ya arrastraba por el nuevo a 176 00:09:49,320 --> 00:09:50,440 a por a, vale 177 00:09:50,440 --> 00:09:53,960 y cont se queda incrementado, se quedará a 2 178 00:09:53,960 --> 00:09:58,639 ¿2 es menor o igual que 3? Sí, pues entra una tercera vez 179 00:09:58,639 --> 00:10:03,120 con cont igual a 2, esta es mi tercera vez, cont igual a 2 180 00:10:03,120 --> 00:10:06,919 ahora, a mi acumulador anterior que tenía 181 00:10:06,919 --> 00:10:11,279 a por a, a mi acumulador anterior que tenía a por a 182 00:10:11,279 --> 00:10:14,940 le multiplico por el nuevo a, ya van 3 183 00:10:14,940 --> 00:10:18,919 a por a por a, y eso al nuevo acumulador 184 00:10:18,919 --> 00:10:39,320 A por A por A, vale, y cont se incrementa, se queda valiendo 3, ¿3 es menor o igual que 3? Sí, pues ahí está el error, está entrando una cuarta vez para cont igual a 3, y se está pasando, porque ahora nos hace A por A, por A, que tenía de antes los 3 A por el nuevo A, 185 00:10:39,320 --> 00:10:41,039 luego el error está 186 00:10:41,039 --> 00:10:43,500 que me ha entrado una vez de más 187 00:10:43,500 --> 00:10:46,580 efectivamente me entra cuando contes igual a b 188 00:10:46,580 --> 00:10:49,860 y yo no quiero que me entre cuando contes igual a b 189 00:10:49,860 --> 00:10:51,779 esa última vez no la quiero 190 00:10:51,779 --> 00:10:55,059 ¿cómo puedo cambiar esta condición entonces? 191 00:10:55,059 --> 00:10:58,139 ¿cómo la transformo para que no me entre en la vez b? 192 00:11:05,330 --> 00:11:06,850 esta sería una manera 193 00:11:06,850 --> 00:11:08,629 cont menor o igual que b menos 1 194 00:11:08,629 --> 00:11:12,529 vale, pero es más fea y más larga 195 00:11:12,529 --> 00:11:14,610 que si ponemos directamente 196 00:11:14,610 --> 00:11:15,710 cont menor que b 197 00:11:15,710 --> 00:11:18,669 que es lo que habitualmente nos vamos a encontrar 198 00:11:18,669 --> 00:11:23,049 uy, vale 199 00:11:23,049 --> 00:11:24,710 si ponemos 200 00:11:24,710 --> 00:11:26,769 cont menor que b, no es lo mismo 201 00:11:26,769 --> 00:11:29,190 porque cont menor que b es 202 00:11:29,190 --> 00:11:30,909 párate en la vez 203 00:11:30,909 --> 00:11:32,929 b menos 1, párate en la b 204 00:11:32,929 --> 00:11:35,149 menos 1, no te pares en la b 205 00:11:35,149 --> 00:11:37,029 sino párate en la b menos 1 206 00:11:37,029 --> 00:11:39,129 entonces acostumbraos 207 00:11:39,129 --> 00:11:41,009 más a esta idea, cuando queréis 208 00:11:41,009 --> 00:11:43,549 llegar a valores entre 0 y b 209 00:11:43,549 --> 00:11:52,450 no pongáis menor o igual que b menos 1, que es más feo, poner menor que b, que es lo mismo, ¿verdad? 210 00:11:52,529 --> 00:12:01,429 No es lo mismo poner menor o igual que b menos 1 que poner menor que b, no es lo mismo, es igual, ¿verdad? 211 00:12:01,750 --> 00:12:08,769 Poner menor o igual que b menos 1 que poner menor que b, es la misma condición, es idéntica, si b es 0, ¿verdad que sí? 212 00:12:08,769 --> 00:12:11,110 entonces 213 00:12:11,110 --> 00:12:13,850 esta condición es más bonita 214 00:12:13,850 --> 00:12:15,409 y más común ponerla así 215 00:12:15,409 --> 00:12:16,409 que ponerla arriba 216 00:12:16,409 --> 00:12:18,090 aunque son la misma 217 00:12:18,090 --> 00:12:20,669 me da igual decir menor o igual que b menos 1 218 00:12:20,669 --> 00:12:21,629 que decir menor que b 219 00:12:21,629 --> 00:12:23,929 con menor o igual que b menos 1 220 00:12:23,929 --> 00:12:25,129 llego hasta b menos 1 221 00:12:25,129 --> 00:12:28,330 con menor que b llego hasta b menos 1 222 00:12:28,330 --> 00:12:30,049 en ambas condiciones 223 00:12:30,049 --> 00:12:31,330 llego hasta b menos 1 224 00:12:31,330 --> 00:12:32,090 son la misma 225 00:12:32,090 --> 00:12:34,289 pero esta de abajo es más bonita 226 00:12:34,289 --> 00:12:40,669 vale pues este era nuestro único problema 227 00:12:40,669 --> 00:12:51,059 de este ejercicio, que este menor o igual es un menor que b, ¿vale?, para que se quede en la b menos 1, 228 00:12:51,840 --> 00:13:02,320 entonces si ahora ejecutamos esto, si ahora ejecutamos esto, pues seguramente ahora ya se lo haga, 229 00:13:02,320 --> 00:13:25,399 base 3, exponente 3, 8, muy bien, base 3, exponente 3, 27, vale, ¿entendido?, bueno, pues resulta que así sin comerlo ni beberlo, 230 00:13:26,299 --> 00:13:31,879 nos hemos encontrado en este ejercicio con una situación que se da muy a menudo, 231 00:13:31,879 --> 00:13:33,659 un bucle 232 00:13:33,659 --> 00:13:35,860 que yo quiero que se ejecute 233 00:13:35,860 --> 00:13:38,120 un número de veces exacto tal cual 234 00:13:38,120 --> 00:13:40,100 que yo ya sé de partida 235 00:13:40,100 --> 00:13:41,460 ¿vale? 236 00:13:41,519 --> 00:13:44,539 en este caso yo quería que esto se ejecutara 237 00:13:44,539 --> 00:13:46,100 B veces 238 00:13:46,100 --> 00:13:50,840 ¿vale? B veces 239 00:13:50,840 --> 00:13:52,539 ya lo sabía de partida 240 00:13:52,539 --> 00:13:55,340 no tengo ni que poner aquí una condición extraña 241 00:13:55,340 --> 00:13:56,519 ni nada 242 00:13:56,519 --> 00:13:59,039 he tenido que inventarme un contador 243 00:13:59,039 --> 00:14:01,200 para poder poner ese hecho 244 00:14:01,200 --> 00:14:02,320 que se ejecutara B veces 245 00:14:02,320 --> 00:14:04,279 como si tenga otro programa 246 00:14:04,279 --> 00:14:06,440 yo tengo 30 alumnos 247 00:14:06,440 --> 00:14:08,860 y les voy a poner la nota 248 00:14:08,860 --> 00:14:10,480 pues yo sé 249 00:14:10,480 --> 00:14:12,059 que el trozo de código 250 00:14:12,059 --> 00:14:14,539 poner nota lo tengo que hacer exactamente 251 00:14:14,539 --> 00:14:15,799 30 veces 252 00:14:15,799 --> 00:14:18,600 vale, hay una situación 253 00:14:18,600 --> 00:14:20,720 de código que se puede dar a menudo 254 00:14:20,720 --> 00:14:22,559 que es, tú tienes un bloque de código 255 00:14:22,559 --> 00:14:24,860 que sabes exactamente 256 00:14:24,860 --> 00:14:26,379 la cantidad de veces 257 00:14:26,379 --> 00:14:27,539 que se tiene que ejecutar 258 00:14:27,539 --> 00:14:29,720 en este caso era B, lo que tenga B 259 00:14:29,720 --> 00:14:32,759 no sé lo que tendrá B, pero es exactamente B veces 260 00:14:32,759 --> 00:14:35,759 bueno, pues cuando tenemos esa situación 261 00:14:35,759 --> 00:14:36,419 tal cual 262 00:14:36,419 --> 00:14:39,179 hay una tercera y última 263 00:14:39,179 --> 00:14:40,500 sintaxis de bucle 264 00:14:40,500 --> 00:14:42,980 que se adapta más, queda más bonita 265 00:14:42,980 --> 00:14:45,240 que es el famoso 266 00:14:45,240 --> 00:14:45,919 bucle for 267 00:14:45,919 --> 00:14:48,200 ¿vale? 268 00:14:48,700 --> 00:14:50,779 entonces la sintaxis de bucle for 269 00:14:50,779 --> 00:14:53,440 se adapta a la situación 270 00:14:53,440 --> 00:14:54,940 de bucle 271 00:14:54,940 --> 00:14:56,720 que se va a repetir exactamente 272 00:14:56,720 --> 00:14:59,159 una cantidad de veces que yo sé de partida 273 00:14:59,159 --> 00:15:00,799 la sé antes de entrar 274 00:15:00,799 --> 00:15:03,019 entonces puedo hacerlo así 275 00:15:03,019 --> 00:15:04,899 con un contador como hemos hecho aquí 276 00:15:04,899 --> 00:15:06,580 empieza valiendo cero, lo incremento 277 00:15:06,580 --> 00:15:08,240 y mientras sea menor que el número de veces 278 00:15:08,240 --> 00:15:09,860 siempre podría hacerlo así 279 00:15:09,860 --> 00:15:12,700 este bucle, sea lo que sea que hay aquí 280 00:15:12,700 --> 00:15:14,759 se va a repetir exactamente 281 00:15:14,759 --> 00:15:16,700 B veces, con esta estructura de contador 282 00:15:16,700 --> 00:15:17,980 ya está, lo tengo 283 00:15:17,980 --> 00:15:21,360 pero esta sintaxis 284 00:15:21,360 --> 00:15:23,080 me permite 285 00:15:23,080 --> 00:15:24,080 hacer esto mismo 286 00:15:24,080 --> 00:15:25,820 sin poner el contador 287 00:15:25,820 --> 00:15:29,000 porque la sintaxis se presta a eso 288 00:15:29,000 --> 00:15:30,200 y vale para eso realmente 289 00:15:30,200 --> 00:15:34,500 vale, pues vamos a ver cómo es la sintaxis del bucle for 290 00:15:34,500 --> 00:15:45,110 entonces, a ver, vale, pues 291 00:15:45,110 --> 00:16:07,740 vale, sintaxis del bucle for 292 00:16:07,740 --> 00:16:14,899 bueno, pues en vez de while, aquí se pone for 293 00:16:14,899 --> 00:16:20,799 vale, for, y entre paréntesis 294 00:16:20,799 --> 00:16:23,700 las cositas que sean, ahora lo ponemos 295 00:16:23,700 --> 00:16:36,340 y aquí el código que se repite, vale, ahora 296 00:16:36,340 --> 00:16:38,620 La pregunta es, ¿qué se pone aquí dentro? 297 00:16:39,679 --> 00:16:41,840 Dentro del while se ponía una condición, ¿verdad? 298 00:16:42,340 --> 00:16:43,220 ¿Aquí qué se pone? 299 00:16:43,279 --> 00:16:49,139 Aquí se ponen hasta tres cosas, separadas por punto y coma. 300 00:16:50,120 --> 00:16:53,820 Hay tres campitos aquí, separados por punto y coma. 301 00:16:55,039 --> 00:16:55,259 ¿Vale? 302 00:16:55,299 --> 00:16:58,019 No tienen por qué estar los tres, ahora veremos lo que significa. 303 00:16:58,879 --> 00:17:01,320 Pero lo que sí que tienen que estar es en los puntos y comas. 304 00:17:01,659 --> 00:17:03,899 Si alguno de ellos no está, ahí se queda plantado el hueco. 305 00:17:04,599 --> 00:17:05,400 Ahí se queda plantado. 306 00:17:06,339 --> 00:17:09,279 ¿Vale? Porque los separadores de punto y coma sí que tienen que estar. 307 00:17:10,099 --> 00:17:17,640 ¿Vale? ¿Qué se pone en cada huequito? Vamos a llamarlos huequito A, huequito B y huequito C. 308 00:17:17,740 --> 00:17:28,920 ¿Qué se pone en cada huequito? Pues a ver, en el huequito A se pone una sentencia, la que a mí me dé la gana, 309 00:17:29,819 --> 00:17:36,480 que es la que se llama sentencia de inicialización, que se va a ejecutar cuando el bucle entre por primera vez. 310 00:17:36,480 --> 00:17:38,660 y solo una vez, esa 311 00:17:38,660 --> 00:17:42,880 la sentencia de inicio 312 00:17:42,880 --> 00:17:44,059 podemos llamarla, vale 313 00:17:44,059 --> 00:17:47,039 sentencia de inicio 314 00:17:47,039 --> 00:17:48,160 vale, esa sentencia 315 00:17:48,160 --> 00:17:50,880 se puede poner la que uno le dé la gana 316 00:17:50,880 --> 00:17:52,619 ahora veremos cuál es su uso habitual 317 00:17:52,619 --> 00:17:55,359 esa sentencia 318 00:17:55,359 --> 00:17:57,140 la que yo ponga aquí, sea la que sea 319 00:17:57,140 --> 00:17:59,359 cuando la máquina virtual llega por aquí 320 00:17:59,359 --> 00:18:00,720 plaz, la ejecuta 321 00:18:00,720 --> 00:18:03,279 y luego ya empieza con el bucle 322 00:18:03,279 --> 00:18:08,220 ahora después de 323 00:18:08,220 --> 00:18:09,440 ver esto 324 00:18:09,440 --> 00:18:13,400 ¿qué se pone en el huequito B? 325 00:18:14,000 --> 00:18:19,380 se pone la condición equivalente, lo mismo que poníamos en el while, 326 00:18:19,920 --> 00:18:22,319 condición que mientras se cumple tú entras. 327 00:18:23,119 --> 00:18:27,359 Pues esa condición, con el mismo sentido que diría en el while, idéntico, 328 00:18:28,380 --> 00:18:30,940 esa condición se mete ahí, en el hueco del medio. 329 00:18:33,170 --> 00:18:35,049 Y eso funciona igual que el while. 330 00:18:35,710 --> 00:18:40,490 Si esta condición se cumple, haces lo que tengas que hacer y vuelves arriba. 331 00:18:41,089 --> 00:18:44,910 Que se sigue cumpliendo, haces lo que tienes que hacer y vuelves arriba. 332 00:18:44,910 --> 00:18:46,670 que ya no se cumple, se acabó 333 00:18:46,670 --> 00:18:49,210 es como si fuera la condición del while 334 00:18:49,210 --> 00:18:52,819 vale, si la primera vez 335 00:18:52,819 --> 00:18:54,160 que llegas ya no se cumple 336 00:18:54,160 --> 00:18:55,460 ya no hay nada que hacer 337 00:18:55,460 --> 00:18:58,140 se habrá ejecutado esta, eso sí 338 00:18:58,140 --> 00:19:00,259 porque esa se ejecuta nada más llegar 339 00:19:00,259 --> 00:19:02,220 una única vez, esta se habrá ejecutado 340 00:19:02,220 --> 00:19:04,539 pero ya lo que hay dentro del bucle 341 00:19:04,539 --> 00:19:06,359 no, porque lo que hay dentro del bucle 342 00:19:06,359 --> 00:19:07,700 se ejecuta solo si B 343 00:19:07,700 --> 00:19:09,160 es cierta 344 00:19:09,160 --> 00:19:11,039 y por último 345 00:19:11,039 --> 00:19:13,900 ¿qué se pone en el hueco C? 346 00:19:14,019 --> 00:19:15,319 si es que uno quiere ponerlo 347 00:19:15,319 --> 00:19:24,700 se pone una sentencia, o incluso varias se podrían poner, que se van a ejecutar una por cada iteración. 348 00:19:25,319 --> 00:19:31,160 Es decir, cuando este bucle esté lanzado, cada vez que entremos se ejecuta lo que hay debajo 349 00:19:31,160 --> 00:19:34,880 y antes de volver arriba se ejecuta C. 350 00:19:38,180 --> 00:19:41,500 Esto se ejecuta por iteración. 351 00:19:41,500 --> 00:19:44,599 no es como la A 352 00:19:44,599 --> 00:19:50,170 que la A se ejecutaba 353 00:19:50,170 --> 00:19:52,650 según llegabas y ya nunca jamás 354 00:19:52,650 --> 00:19:56,069 si tú has entrado en el bucle 355 00:19:56,069 --> 00:19:57,470 cada vez que entres 356 00:19:57,470 --> 00:19:59,089 se hace esto 357 00:19:59,089 --> 00:20:01,690 y luego antes de volver arriba 358 00:20:01,690 --> 00:20:03,089 se hace lo que hayas puesto en C 359 00:20:03,089 --> 00:20:05,569 y se vuelve a evaluar condiciones 360 00:20:05,569 --> 00:20:07,650 es cierta, entras 361 00:20:07,650 --> 00:20:10,109 y se ejecuta C otra vez 362 00:20:10,109 --> 00:20:12,150 es como si C estuviera escrito aquí al final 363 00:20:12,150 --> 00:20:13,769 pero no está escrito aquí 364 00:20:13,769 --> 00:20:14,589 está escrito ahí 365 00:20:14,589 --> 00:20:17,609 que la condición sigue siendo cierta 366 00:20:17,609 --> 00:20:19,490 y vuelves a entrar, se ejecuta esto 367 00:20:19,490 --> 00:20:21,750 y la C también, y se vuelve 368 00:20:21,750 --> 00:20:23,769 arriba, que la condición es cierta 369 00:20:23,769 --> 00:20:24,890 se ejecuta esto 370 00:20:24,890 --> 00:20:27,369 y se ejecuta esta otra vez 371 00:20:27,369 --> 00:20:29,890 y vuelves arriba, que la condición es falsa 372 00:20:29,890 --> 00:20:31,230 ya no entramos más 373 00:20:31,230 --> 00:20:33,190 y se acabó 374 00:20:33,190 --> 00:20:35,690 entonces A se ejecuta 375 00:20:35,690 --> 00:20:36,869 cuando llegas 376 00:20:36,869 --> 00:20:38,789 independientemente de la condición 377 00:20:38,789 --> 00:20:41,549 y una única vez, por eso se llama 378 00:20:41,549 --> 00:20:42,549 la sentencia de inicio 379 00:20:42,549 --> 00:20:47,150 B es la condición del bucle que marca si entras o no entras 380 00:20:47,150 --> 00:20:51,630 y C es una especie de sentencia de epílogo 381 00:20:51,630 --> 00:20:55,910 que se pone aquí y se ejecuta una vez por iteración 382 00:20:55,910 --> 00:20:58,970 ahora la pregunta sería 383 00:20:58,970 --> 00:21:01,809 ¿y qué utilidad tiene esta sintaxis de bucle tan extraña? 384 00:21:02,450 --> 00:21:05,170 pues la utilidad natural para la que siempre se usa 385 00:21:05,170 --> 00:21:08,029 aunque se puede usar poniendo aquí lo que te dé la gana 386 00:21:08,029 --> 00:21:11,470 es justo el ejemplo que hemos visto aquí 387 00:21:11,470 --> 00:21:14,509 cuando tienes un bucle que se ejecute exactamente 388 00:21:14,509 --> 00:21:15,390 n veces 389 00:21:15,390 --> 00:21:18,109 porque pones esto, aquí el contador 390 00:21:18,109 --> 00:21:20,430 que se inicializa y aquí el incremento del contador 391 00:21:20,430 --> 00:21:22,529 y ya lo tienes, no hace falta que lo hagas fuera 392 00:21:22,529 --> 00:21:24,230 ¿vale? pero bueno, paramos ahora 393 00:21:24,230 --> 00:21:25,190 y lo 394 00:21:25,190 --> 00:21:27,450 y lo ponemos después