1 00:00:01,050 --> 00:00:05,349 Bueno, ahora vamos a explicar el concepto de bucle. 2 00:00:05,910 --> 00:00:12,349 Un bucle no es más que una parte de código que se va a repetir todas las veces que nosotros queramos. 3 00:00:14,490 --> 00:00:19,429 Ese número de veces que se va a repetir va a depender de una condición. 4 00:00:19,649 --> 00:00:26,649 De una condición muy parecida a como lo hacíamos con condicionales, a como lo hacíamos con la sentencia sino. 5 00:00:26,649 --> 00:00:33,369 ¿Vale? Entonces, simplemente tenemos que saber qué es lo que queremos repetir y cuántas veces lo queremos repetir. 6 00:00:33,530 --> 00:00:38,170 Y en función de eso, pues vamos diseñando nuestro código, ¿vale? 7 00:00:39,270 --> 00:00:47,689 Yo ya me he creado un archivo que lo he llamado bucle1, ¿vale? Porque es un archivo de ejemplo, digamos, ¿vale? 8 00:00:47,689 --> 00:01:00,869 Y, bueno, lo que os voy a enseñar va a ser un poquito, pues, cómo hacer un bucle, ¿vale? 9 00:01:00,909 --> 00:01:04,730 Cómo hacer este primer intento de bucle, ¿vale? 10 00:01:05,269 --> 00:01:08,659 Dame un segundito... 11 00:01:08,659 --> 00:01:12,239 Vale. 12 00:01:13,719 --> 00:01:15,180 Vale, perfecto. 13 00:01:16,799 --> 00:01:19,799 Ok, vale, pues entonces, lo primero que vamos a hacer es un ejemplo muy sencillo. 14 00:01:19,799 --> 00:01:26,480 Es simplemente hacer un bucle que lo que haga sea modificar una variable e imprimirla por pantalla, ¿vale? 15 00:01:26,840 --> 00:01:32,260 Entonces yo inicialmente me voy a definir esa variable, que va a ser contador, ¿vale? 16 00:01:32,879 --> 00:01:34,799 Y le voy a dar el valor 0. 17 00:01:35,739 --> 00:01:37,019 Pongo contador igual a 0. 18 00:01:37,560 --> 00:01:43,840 Y ahora para hacer bucle nosotros tenemos tres formas con PSI, ¿vale? 19 00:01:43,840 --> 00:01:46,840 Nos vamos a centrar primero en las dos primeras, que son... 20 00:01:46,840 --> 00:01:58,819 Lo veis aquí, mientras y repetir, ¿vale? Hacen exactamente lo mismo, simplemente varía el lugar donde hace la comprobación, ¿vale? 21 00:01:59,060 --> 00:02:09,139 Y lo podéis ver un poquito en los dibujitos que aparecen, ¿vale? Si os fijáis, aquí en el sí entonces, la comprobación la pinta como si fuera un rombo, ¿vale? 22 00:02:09,139 --> 00:02:13,960 Es decir, primero hace la comprobación y en función de eso hace una cosa u hace otra. 23 00:02:14,699 --> 00:02:24,319 En el caso de mientras, primero hace la comprobación y si se cumple, ejecuta y otra vez vuelve a la comparación. 24 00:02:24,500 --> 00:02:25,759 Y así todo el rato, ¿vale? 25 00:02:26,960 --> 00:02:31,400 En el caso de repetir, primero ejecuta y luego hace la comprobación, ¿vale? 26 00:02:31,759 --> 00:02:36,680 Vamos a hacer los dos casos para que veáis que al final hacen exactamente lo mismo. 27 00:02:36,680 --> 00:03:00,159 Entonces le vamos a dar a mientras, ¿vale? Y aquí veis, aparece mientras expresión lógica hacer y justo debajo secuencia de acción, ¿vale? Pues vamos a modificar esta expresión lógica y mi expresión lógica va a ser mientras que contador sea menor que, pues, un límite, ¿vale? 28 00:03:00,159 --> 00:03:17,400 ¿Qué pasa? Que yo esa variable límite no la he definido todavía, así que la voy a definir aquí y voy a poner límite igual, por ejemplo, a 10. ¿Vale? Y ahora simplemente en la secuencia de acciones voy a poner que escriba por pantalla la variable contador. 29 00:03:17,400 --> 00:03:36,460 Pues ponemos escribir la variable contador, ¿vale? Espacio y ahora pongo una coma y pongo contador. ¿Ok? Y voy a ejecutar ese código para que veáis qué es lo que pasa. 30 00:03:36,460 --> 00:04:02,310 Vale, le voy a dar, y fijaros lo que pasa. Está todo el rato imprimiendo por pantalla la variable contador vale 0, la variable contador vale 0, ¿vale? Todo el rato lo está imprimiendo, sin parar. 31 00:04:02,310 --> 00:04:09,349 ¿Esto por qué? Pues porque yo no estoy modificando la variable contador, en ningún sitio la modifico 32 00:04:09,349 --> 00:04:16,110 Como no la modifico, pues nunca va a ser esa variable mayor que el límite, ¿vale? 33 00:04:16,490 --> 00:04:23,670 Entonces, voy a parar esa ejecución, ¿eh? ¿Dónde está? Aquí 34 00:04:23,670 --> 00:04:33,899 La paramos, y simplemente lo que hacemos es que una vez que haya impreso el valor de contador 35 00:04:33,899 --> 00:04:57,259 Pues ponemos contador es igual a contador más 1, ¿vale? Voy a poner un comentario. Incrementamos el valor de contador. Entonces fijaros, simplemente va a hacer lo que valía contador antes, le suma 1 y lo vuelve a guardar en contador, ¿vale? 36 00:04:57,259 --> 00:05:17,860 Entonces, si yo ejecuto ahora, ¿veis lo que pasa? ¿Vale? Ahora empieza en 0, luego 1, 2, 3, así consecutivamente, ¿vale? Hasta que llega a 9. ¿Por qué no ejecuta el 10? Pues nos vamos a nuestro código para verlo. 37 00:05:17,860 --> 00:05:40,600 Si os fijáis, voy a hacer un poco de zoom, ahí, ¿vale? Si os fijáis, nuestra condición es mientras contador sea menor que límite, menor, ¿vale? Es decir, en el momento en el que contador sea igual que límite, ya no ejecuta lo que hay dentro, ¿vale? 38 00:05:40,600 --> 00:05:56,980 Si yo ahora aquí pusiera, por ejemplo, contador igual, menor o igual, ¿vale? ¿Qué límite? Si le doy a ejecutar, pues fijaros que ahora sí me incluye el número 10, ¿vale? Ahora sí, ¿ok? 39 00:05:56,980 --> 00:06:09,740 ¿Vale? Yo podría, como decía antes, hacer esta misma secuencia, pero utilizando el método repetir, ¿vale? 40 00:06:10,100 --> 00:06:21,120 Entonces, vamos a hacer una cosa, me voy a definir una segunda variable, contador, que va a ser contador b, lo inicializo a 0, ¿vale? 41 00:06:21,120 --> 00:06:41,639 Voy a dejar límite la misma variable y ahora simplemente le doy a repetir, ¿vale? Entonces, fijaros, ahora la sintaxis, la forma de escribirlo cambia completamente. Ahora, en primer lugar, ejecutamos una acción y al final la comprueba, ¿vale? 42 00:06:41,639 --> 00:06:49,600 Entonces, vamos a hacer lo mismo, por lo tanto me voy a copiar el código este que tenemos aquí, tal y como está, ¿vale? 43 00:06:50,620 --> 00:06:55,620 Simplemente que ahora ya no tengo una variable contador, sino que la variable es contador b, ¿vale? 44 00:06:55,959 --> 00:06:59,579 Y lo mismo aquí, contador y contador b, eso. 45 00:07:00,220 --> 00:07:07,100 Y ahora la expresión lógica pues será la misma que antes, mientras contador sea menor o igual que límite. 46 00:07:07,100 --> 00:07:34,250 Y ejecuto. Bueno, voy a poner aquí un mensaje para que veáis la diferencia, ¿vale? Voy a poner aquí escribir, utilizando repetir, y me copio esto, me lo voy a poner aquí, utilizando mientras. 47 00:07:34,250 --> 00:07:56,250 Y fijaros, ejecuto y fijaros que el utilizando mientras está funcionando perfectamente, pero cuando nos vamos a utilizando repetir no funciona, solo se muestra el cero. 48 00:07:56,250 --> 00:08:11,610 ¿Esto por qué? Pues si nos vamos al código, podéis ver que en el mientras que no hemos puesto nuestra variable contador, se me ha olvidado, ¿vale? 49 00:08:11,730 --> 00:08:19,569 Entonces, si yo lo pongo ahora, contador b, ahora sí que funciona, ¿vale? 50 00:08:19,569 --> 00:08:32,690 Entonces podéis ver aquí cómo sale utilizando repetir y nos hace la misma cuenta, ¿vale? Y funciona exactamente igual de bien o de mal, ¿vale? De bien. 51 00:08:34,090 --> 00:08:44,389 Vale, vamos a hacer ahora una cosita y es que para que veáis también cómo funciona esto de los bucles, lo vamos a ver en el diagrama de flujo, ¿vale? 52 00:08:44,389 --> 00:08:51,350 Entonces, voy a comentar toda esta parte de código, porque como los dos hacen lo mismo, para que no veamos mucho código. 53 00:08:51,950 --> 00:08:56,129 Entonces, le voy a editar, comentar, ¿vale? 54 00:08:57,529 --> 00:09:00,149 No sé si esto lo estaréis viendo, pero bueno. 55 00:09:01,250 --> 00:09:08,929 Ok, y ahora le vamos a dar al ejecutar paso a paso, no, a dibujar diagrama de flux. 56 00:09:08,929 --> 00:09:48,399 Vale, y lo que se abre... Dejadme un segundito... A ver si... Ahora, ¿vale? Esto es lo que se abre. Voy a hacerlo un poquito más pequeño, así... Vale, entonces ahí lo podéis ver. 57 00:09:48,399 --> 00:09:53,399 Y vamos a ver si puedo hacer una ejecución paso a paso para que lo veáis conmigo. 58 00:09:54,580 --> 00:09:57,139 Le damos aquí para ejecutar paso a paso, ¿vale? 59 00:10:04,539 --> 00:10:13,340 Vale, se está ejecutando, pero quiero que se pare, párate un poquito, pausar, detener. 60 00:10:13,679 --> 00:10:17,879 Vale, ya se ha detenido y le vamos a dar al primer paso. 61 00:10:19,720 --> 00:10:23,500 Vale, pues un segundito que voy a también hacer. 62 00:10:25,220 --> 00:10:35,929 aquí está 63 00:10:35,929 --> 00:10:44,929 vale, entonces 64 00:10:44,929 --> 00:10:47,090 entiendo que estáis viendo 65 00:10:47,090 --> 00:10:49,549 también aquí la ventana de ejecución 66 00:10:49,549 --> 00:10:50,429 voy a quitar 67 00:10:50,429 --> 00:10:51,990 mi careto 68 00:10:51,990 --> 00:10:54,809 ahí, vale 69 00:10:54,809 --> 00:10:56,250 entonces, ya estáis viendo 70 00:10:56,250 --> 00:10:58,309 todo más o menos 71 00:10:58,309 --> 00:11:00,990 ok, pues ahora 72 00:11:00,990 --> 00:11:02,970 vamos a ir ejecutando paso a paso 73 00:11:02,970 --> 00:11:04,970 para que veáis que es lo que está pasando 74 00:11:04,970 --> 00:11:07,049 entonces fijaros 75 00:11:07,049 --> 00:11:08,490 le voy a dar avanzar un paso 76 00:11:08,490 --> 00:11:27,409 Lo primero que ha hecho es poner un cero en contador. Si nos vamos aquí a la lista de variables y hacemos doble botón derecho en contador, vemos que todavía no se ha ejecutado, pero se ejecutará en breve. 77 00:11:27,409 --> 00:11:42,409 Entonces le damos a avanzar un paso y ya tenemos ese cero en contador. Ahora tenemos un cero en límite, ¿vale? Y lo primero que vamos a hacer es escribir, que lo tendréis que ver aquí, ¿vale? 78 00:11:42,409 --> 00:11:51,870 Entonces, le damos a ese botón de escribir y ya veis que aparece utilizando mientras. 79 00:11:52,629 --> 00:11:59,009 Y ahora empieza el bucle. Como decía, lo primero que hace ahora es comprobar si contador es menor que límite, ¿vale? 80 00:11:59,230 --> 00:12:03,809 ¿Qué pasa? Que contador inicialmente vale 0 y límite vale 10, por lo tanto se va a cumplir. 81 00:12:03,809 --> 00:12:17,610 Si le damos, entra dentro, ¿vale? Y lo que hace es que imprime. Imprime, el contador vale 0 y ahora le suma 1 a contador y vuelve a subir. 82 00:12:18,210 --> 00:12:24,529 Y se va a la condición, ¿vale? Se va a la condición. Como veis, la v de verdadero va hacia abajo. 83 00:12:24,529 --> 00:12:33,110 Como la condición es verdadera, baja y lo que hace es que escribe otra vez el valor del contador, ¿vale? 84 00:12:33,269 --> 00:12:36,330 Y en este caso veis, la variable contador vale 1. 85 00:12:36,769 --> 00:12:39,629 Le aumenta 1 y vuelve otra vez al condicional. 86 00:12:41,110 --> 00:12:45,809 Como sigue siendo verdadera, va ejecutando y va ejecutando consecutivamente, ¿vale? 87 00:12:46,250 --> 00:12:53,830 Conforme yo le voy dando, contador vale 7, contador vale 9 y ahora contador vale 10. 88 00:12:53,830 --> 00:13:00,230 Y en la línea en la que estoy parado, cuando ahora le sume 1, contador va a valer 11. 89 00:13:00,690 --> 00:13:11,090 Como vale 11, contador ya no es menor o igual que el límite, y por lo tanto, al ser falso, se iría por el camino del fin. 90 00:13:11,950 --> 00:13:14,090 Es decir, iría al fin del algoritmo. 91 00:13:15,250 --> 00:13:15,429 ¿Vale? 92 00:13:16,009 --> 00:13:19,289 Lo ejecuta y final del programa. 93 00:13:20,549 --> 00:13:21,090 ¿Vale? 94 00:13:21,090 --> 00:13:44,759 Bueno, yo creo que queda medianamente claro este proceso de operación de los bucles, ¿vale? 95 00:13:45,080 --> 00:13:52,580 Y ya está. Siempre podréis utilizar o el repetir o el mientras indiferentemente, el que os sea más cómodo, ¿vale? 96 00:13:54,580 --> 00:13:59,779 Solo un matiz para que veáis la diferencia entre uno y otro, ¿vale? 97 00:13:59,779 --> 00:14:25,919 Vamos a imaginarnos, voy a descomentar todo este código, ¿vale? Editar, descomentar, eso, ¿vale? Bueno, PSIN sustituye esto muchas veces por el igual, ¿vale? La flechita, pero da lo mismo, ¿vale? Da igual que esté escrita la flecha, que esté escrito en igual, no os rayéis con eso. 98 00:14:25,919 --> 00:14:40,679 Vale, vamos a imaginarnos que el límite, mejor dicho, vamos a imaginarnos que contador en vez de empezar en 0 empieza en 10, ¿vale? 99 00:14:40,960 --> 00:14:47,649 En los dos casos, ¿vale? O mejor dicho, empieza en 11, ¿vale? 100 00:14:48,269 --> 00:14:57,590 Entonces, si contador en ambos casos empezara en 11, no debería de entrar en ningún bucle, no debería de imprimirse esta línea ni esta, ¿vale? 101 00:14:57,590 --> 00:15:19,950 ¿Pero qué pasa si ejecuto? Vamos a verlo. Vamos a verlo porque es bastante interesante lo que pasa. Si ejecuto, lo que se ve es esto. 102 00:15:19,950 --> 00:15:39,210 Ay, perdona, voy a volver a ejecutarlo, ¿vale? Ejecuto otra vez. Ahí lo tenéis, ¿vale? Fijaros, imprime el primer mensaje de escribir utilizando mientras, ¿vale? 103 00:15:39,210 --> 00:15:57,429 Que eso es, digamos, lo normal, ¿vale? Que escriba imprimir utilizando mientras, ¿vale? Y a continuación, como no se cumple la condición, no entra aquí y no lo imprime, ¿vale? 104 00:15:57,429 --> 00:16:02,009 ¿Por qué? Porque como hacemos la comprobación al principio, no ejecuta lo que hay adentro. 105 00:16:02,190 --> 00:16:09,450 Sin embargo, en repetir, no solo imprime esto, sino que también imprime esta línea una vez. 106 00:16:09,870 --> 00:16:14,809 ¿Por qué la imprime? Pues la imprime porque la condición se hace al final. 107 00:16:15,570 --> 00:16:24,730 Como la condición se hace al final, pues entonces sí que me imprime una vez, aunque yo en realidad no quisiera, me la imprime una vez. 108 00:16:24,730 --> 00:16:29,730 ¿Vale? Para que veáis esa diferencia entre el mientras y el repetir. 109 00:16:30,330 --> 00:16:37,269 ¿Ok? Bueno, pues espero que haya quedado claro y nos vemos en el siguiente.