1 00:00:10,859 --> 00:00:29,600 Estos dos señores, Bob y Jacopini, decidieron un día ponerse a estudiar el tema de la resolución de problemas. 2 00:00:29,600 --> 00:00:56,280 Y decidieron, o definieron, mejor dicho, que cualquier problema se puede resolver usando tres estructuras básicas. 3 00:00:56,280 --> 00:01:14,370 La secuencia, selección y repetición. 4 00:01:16,730 --> 00:01:26,510 Estos señores definieron que cualquier problema complejo se puede resolver siempre a través de estas tres estructuras. 5 00:01:26,510 --> 00:02:01,859 La secuencia de acciones, evidentemente hay una secuencia de acciones, la selección, que son decisiones, que es cuando un camino se divide en varios, y la repetición, que son bucles, bucles o ciclos también se llaman, ¿vale? 6 00:02:01,859 --> 00:02:06,420 entonces tenemos 7 00:02:06,420 --> 00:02:08,979 que cualquier problema se puede resolver 8 00:02:08,979 --> 00:02:11,219 a través de tres estructuras básicas 9 00:02:11,219 --> 00:02:13,639 la secuencia de versiones 10 00:02:13,639 --> 00:02:16,740 la selección 11 00:02:16,740 --> 00:02:17,860 a través de 12 00:02:17,860 --> 00:02:20,860 una condición que o se cumple o no se cumple 13 00:02:20,860 --> 00:02:23,080 y entonces decidimos por donde ir 14 00:02:23,080 --> 00:02:25,500 y la repetición 15 00:02:25,500 --> 00:02:27,139 todo esto está dentro del contexto 16 00:02:27,139 --> 00:02:29,919 de lo que es un algoritmo 17 00:02:29,919 --> 00:02:42,199 ¿Alguien recuerda lo que era un algoritmo, la definición? Un algoritmo es una secuencia ordenada de pasos o de acciones, ¿vale? La palabra que usamos en la primera evaluación era una secuencia ordenada de pasos. 18 00:02:42,719 --> 00:02:51,479 Pues es una secuencia ordenada de pasos que resuelve un problema. Yo tengo un problema, establezco unos pasos que yo tengo que ejecutar para poder resolver mi problema, ¿de acuerdo? 19 00:02:51,479 --> 00:03:04,979 Bueno, pues para resolverlo a través de esa secuencia de ordenador de pasos, esta gente, Boni Giacopini, dijo que podíamos utilizar esas tres estructuras básicas y con esas tres éramos autosuficientes, podíamos resolver cualquier problema. 20 00:03:05,860 --> 00:03:11,400 Entonces, en nuestro diagrama de flujo, la secuencia la establecíamos, voy a ponerlo 21 00:03:11,400 --> 00:03:12,740 por este lado, tengo más hueco, ¿vale? 22 00:03:14,000 --> 00:03:16,139 Con varias estructuras. 23 00:03:16,259 --> 00:03:20,599 Primero, definíamos las flechas que me daban el orden. 24 00:03:22,319 --> 00:03:27,939 Es decir, como es una secuencia ordenada de pasos, empezábamos por arriba, por donde 25 00:03:27,939 --> 00:03:32,520 empezaba el algoritmo, en la S, y a partir de ahí seguíamos las flechas, ¿vale? 26 00:03:33,120 --> 00:03:38,460 La flecha me indica el orden, con lo cual, como es esa secuencia ordenada, pues esto es el orden. 27 00:03:38,699 --> 00:03:41,759 Y luego teníamos dos cajitas para las acciones. 28 00:03:42,879 --> 00:03:51,659 Una que es la de acción pura, que vamos a llamar en informática procesos, ¿vale? 29 00:03:51,659 --> 00:04:01,050 Y otra que era la de una acción que tenía que ver con el exterior, lo que llamábamos interacción, 30 00:04:01,050 --> 00:04:17,509 que es entrada-salida, que es la forma resumida de poner entradas y salidas, ¿vale? Es una 31 00:04:17,509 --> 00:04:23,709 secuencia, por lo tanto yo ya con esas estructuras voy definiendo mi secuencia de acciones, como 32 00:04:23,709 --> 00:04:28,829 es una secuencia ordenada de pasos, cada paso lo meteré en una caja cuadrada o en una caja 33 00:04:28,829 --> 00:04:31,470 con forma de 34 00:04:32,009 --> 00:04:37,829 romboide si yo hago cosas por mí mismo sin interactuar con mi entorno por 35 00:04:37,829 --> 00:04:41,910 ejemplo multiplico dos números o me muevo de un sitio a otro vale si hago 36 00:04:41,910 --> 00:04:47,709 cosas que no intervengo con nadie entonces si lo meto en tres ángulos pero si yo hago algo en lo 37 00:04:47,709 --> 00:04:52,670 que entrego algo al entorno o recojo algo del entorno por ejemplo pregunto algo que 38 00:04:52,670 --> 00:04:59,589 necesito una respuesta, pues lo pongo en esto. O, yo qué sé, activo unas luces, pues entonces 39 00:04:59,589 --> 00:05:05,029 estoy interactuando, ¿vale? O recojo algo, lo que sea, por ejemplo, aquí. Esas son las 40 00:05:05,029 --> 00:05:15,250 cajas que yo tengo para eso. Después, siguiente, la selección. La selección o difusión, 41 00:05:15,250 --> 00:05:18,810 hay dos, pero nosotros hemos estudiado 42 00:05:18,810 --> 00:05:20,870 solo uno, que lo voy a poner aquí 43 00:05:20,870 --> 00:05:22,569 que es 44 00:05:22,569 --> 00:05:24,930 el rombo 45 00:05:24,930 --> 00:05:28,230 el rombo tiene una entrada 46 00:05:28,230 --> 00:05:30,649 que puede estar por cualquiera de sus esquinas 47 00:05:30,649 --> 00:05:32,750 y dos salidas que pueden estar 48 00:05:32,750 --> 00:05:34,790 por cualquiera de sus esquinas, no necesariamente 49 00:05:34,790 --> 00:05:35,990 tienen que ser las laterales 50 00:05:35,990 --> 00:05:38,370 por estructura lógica 51 00:05:38,370 --> 00:05:40,509 el orden suele ser de arriba a abajo 52 00:05:40,509 --> 00:05:41,870 por lo cual suele entrar por arriba 53 00:05:41,870 --> 00:05:44,389 y luego sale por los dos laterales 54 00:05:44,389 --> 00:05:56,110 Entonces, en función de la pregunta que yo hago aquí dentro, la condición que yo establezco, esto sale con la respuesta sí o con la respuesta no a esa pregunta por uno de los dos caminos. 55 00:05:56,350 --> 00:06:08,430 Y lo que hago es una selección en función de una condición. Por ejemplo, este número es mayor de 10, si es que sí, voy para allá y si es que no, voy para el otro lado. 56 00:06:08,430 --> 00:06:15,509 Y el camino que antes era único, el orden, la secuencia que era única, solo había un camino por el que avanzar, ahora se divide en dos. 57 00:06:15,949 --> 00:06:19,589 ¿En función de qué? De una decisión que yo meto a mi dentro. 58 00:06:20,189 --> 00:06:27,029 Las acciones se escriben dentro, evidentemente, aquí pones la acción que sea, ¿vale? 59 00:06:27,910 --> 00:06:28,990 Aquí pones la acción. 60 00:06:30,529 --> 00:06:36,410 Cuando vas haciendo el diagrama de flujo, dentro del rectángulo le dices en qué consiste ese paso, ¿vale? 61 00:06:36,410 --> 00:06:53,350 Y aquí la interacción, ¿vale? Es decir, cuando yo voy haciendo el diagrama de flujo, dentro de cada uno de los rectángulos o dentro de cada una de las figuras geométricas, voy metiendo la información correspondiente a ese rectángulo, ¿vale? 62 00:06:53,350 --> 00:07:11,069 Entonces, cuando yo llego a un rectángulo, ejecuto lo que está dentro y sigo la flecha. Si llego a un rombo, me cuestiono la pregunta que hay adentro y en función de la respuesta, que sea sí o no, pues voy a salir por un lado o por el otro y ya solamente puedo ir por una de las dos ramas, no puedo ir por las dos a la vez, ¿vale? 63 00:07:11,069 --> 00:07:16,350 Un ordenador no sabe contestar no lo sé o quizá tal vez 64 00:07:16,350 --> 00:07:19,189 ¿Vale? O sí o no, solo sabe de unos y ceros 65 00:07:19,189 --> 00:07:21,089 El 0,5 para él no existe 66 00:07:21,089 --> 00:07:22,949 Y por último 67 00:07:22,949 --> 00:07:26,069 Tenemos la repetición 68 00:07:26,069 --> 00:07:30,160 Y ahora es cuando viene la gracia, ¿vale? 69 00:07:30,300 --> 00:07:32,180 La repetición la voy a hacer en pantalla aparte 70 00:07:32,180 --> 00:07:33,360 Con lo cual voy a borrar 71 00:07:33,360 --> 00:07:36,439 Si habéis copiado esto, terminar de copiarlo 72 00:07:36,439 --> 00:07:39,500 Porque la repetición, los bucles y los ciclos 73 00:07:39,500 --> 00:07:42,000 Hay tres tipos de bucle 74 00:07:42,000 --> 00:07:46,060 y los quiero estudiar un poquito detalladamente cada uno, ¿vale? 75 00:07:46,699 --> 00:07:49,040 Pero de momento habéis visto que en un diagrama de flujo 76 00:07:49,040 --> 00:07:54,220 yo os agradeceré las acciones, las interacciones y el orden, 77 00:07:54,480 --> 00:07:56,500 que es lo que esta gente dijo que era la secuencia, 78 00:07:56,639 --> 00:07:57,800 la secuencialidad de cosas. 79 00:07:58,660 --> 00:08:01,259 La selección a través de la pregunta. 80 00:08:02,079 --> 00:08:03,980 Y ahora vamos a ver cómo construimos los bucles, ¿vale? 81 00:08:05,279 --> 00:08:06,060 ¿Lo tenéis ya? 82 00:08:06,519 --> 00:08:06,720 Sí. 83 00:08:07,300 --> 00:08:07,620 ¿Seguro? 84 00:08:08,379 --> 00:08:08,579 Sí. 85 00:08:08,579 --> 00:08:11,819 Bueno, me centro en la parte de repetición. 86 00:08:12,000 --> 00:08:52,870 Hay tres tipos de bucles, el primero es un bucle for, el segundo es un bucle igual y el tercero un bucle amplio. 87 00:08:53,710 --> 00:09:01,710 lo pongo en inglés para que lo vayáis entendiendo. Muchas veces, muchos programas, muchos lenguajes 88 00:09:01,710 --> 00:09:07,710 de programación usan palabras inglesas. Ahora no traduzco, ¿vale? Pero es importante que 89 00:09:07,710 --> 00:09:13,330 vayáis creando un glosario mental, un glosario es una lista de palabras. No quiero que habléis 90 00:09:13,330 --> 00:09:18,889 inglés como un bilingüe. Solo quiero que palabras concretas sepáis qué significan. 91 00:09:18,889 --> 00:09:26,889 Por ejemplo, si yo os digo que quiero que hagáis copy-paste, copiar y pegar, eso es una palabra, ¿vale? 92 00:09:26,909 --> 00:09:28,870 Que no hace falta hablar inglés para entenderla. 93 00:09:28,929 --> 00:09:34,429 Pues eso es lo que vamos a hacer en informática, vamos a aprender palabras sueltas, pero tenemos que saber qué significa cada una, ¿vale? 94 00:09:35,389 --> 00:09:42,330 Entonces, bucle for es el bucle que se traduce como par, ¿vale? 95 00:09:42,330 --> 00:09:51,720 de bucle para. El bucle while es el bucle mientras y el bucle anti es el bucle hasta. 96 00:09:56,710 --> 00:10:11,009 Son tres tipos de bucle. En el primero, el bucle para, conocemos el número de veces 97 00:10:11,009 --> 00:10:21,139 que se repite. Por ejemplo, si queremos repetir ocho veces algo, pues utilizaríamos un bucle 98 00:10:21,139 --> 00:10:26,720 para, porque conocemos el número de veces que vamos a repetir las acciones. Un bucle 99 00:10:26,720 --> 00:10:32,019 se trata de coger un trozo de mi organigrama, un trozo de mi diagrama de flujo, que tiene 100 00:10:32,019 --> 00:10:38,779 una secuencia de varias acciones, y esas repetirlas un número de veces. O sea, quedarme ahí 101 00:10:38,779 --> 00:10:42,919 en un bucle, en vez de seguir avanzando de forma lineal vertical, lo que voy a hacer 102 00:10:42,919 --> 00:10:46,879 es en un punto volver arriba, y volver arriba, y volver arriba, y quedarme ahí en ese ciclo 103 00:10:46,879 --> 00:10:53,080 durante un número de veces. El bucle para, me, conocemos el número de vueltas. Pero 104 00:10:53,080 --> 00:10:55,840 hay veces que no lo conocemos. Por ejemplo, si yo tengo que bajar la planta de abajo, 105 00:10:55,980 --> 00:11:01,580 yo con la escalera, ¿cuántos escalones tengo que bajar? No lo sabemos. Entonces, ¿qué 106 00:11:01,580 --> 00:11:07,360 podemos hacer? Podemos hacer un bucle en el que no sabemos cuántas veces vamos a repetirlo, 107 00:11:07,360 --> 00:11:12,759 sino que lo dejamos en función de una condición. Por ejemplo, yo te digo, mientras que tengas 108 00:11:12,759 --> 00:11:19,559 escalones por delante, baja uno. Un escalón. Entonces tú coges y llegas al borde de la 109 00:11:19,559 --> 00:11:25,000 escalera y dices, ¿tengo escalones por delante? Sí, un montón. Pues baja uno. Y vuelvo a 110 00:11:25,000 --> 00:11:32,929 repetir. Vuelvo para arriba. ¿Tienes escalones por delante? Sí. Pues baja uno. ¿Tienes 111 00:11:32,929 --> 00:11:36,710 escalones por delante? Sí. ¿Tienes escalones por delante? ¿Hasta cuándo voy a repetir 112 00:11:36,710 --> 00:11:40,730 eso? Hasta que llegue abajo y digo, ¿tengo escalones por delante? No. Y entonces hago 113 00:11:40,730 --> 00:11:47,509 del bucle. ¿Vale? Si os dais cuenta, va a haber una condición que me haga salir del 114 00:11:47,509 --> 00:11:54,049 bucle. El bucle para, conocemos el número de veces que se repite. Pero bucle while y 115 00:11:54,049 --> 00:11:59,809 bucle until dependen de una condición. Fijaros, yo os he dicho, mientras que haya escalones, 116 00:12:00,169 --> 00:12:05,950 baja un escalón. ¿Cuándo evalúo la condición? ¿Cuándo compruebo si hay escalones? ¿Antes 117 00:12:05,950 --> 00:12:14,990 de ejecutar el bajar o después? Antes. Bueno, pues entonces, while, el bucle mientras, comprueba 118 00:12:14,990 --> 00:12:34,320 la condición antes de ejecutar las órdenes que tenga dentro del bucle. Comprueba la condición 119 00:12:34,320 --> 00:12:39,100 antes. ¿Por qué? Porque estamos en un mientras. Mientras que haya escalones, baja. Claro, 120 00:12:39,100 --> 00:12:45,700 pero si no hay escalones, si yo ahora me digo, mira, mientras que hay escalones, baja, digo, vale, pero no hay, entonces no baja. 121 00:12:46,840 --> 00:13:00,409 Por lo tanto, la segunda conclusión es que puede no ejecutarse nunca, ¿ok? 122 00:13:00,750 --> 00:13:11,070 Puede no ejecutarse nunca porque como evaluamos lo primero, la condición, si de entrada la condición no se cumple, no ejecuto nunca el bufet, directamente salgo y continúo, ¿vale? 123 00:13:11,370 --> 00:13:14,029 ¿Qué forma tiene esto? 124 00:13:15,029 --> 00:13:18,450 En un diagrama de flujo, vengo de aquí, vengo de donde venga, 125 00:13:18,929 --> 00:13:22,269 vengo con mi organigrama desde arriba, 126 00:13:23,330 --> 00:13:26,330 y evaluamos lo primero con una condición. 127 00:13:29,240 --> 00:13:29,460 ¿Vale? 128 00:13:31,200 --> 00:13:31,759 Dejadlo. 129 00:13:32,240 --> 00:13:41,340 Hemos dicho, si se cumple, mientras que sí que se cumpla, 130 00:13:42,179 --> 00:13:51,039 ejecuto las acciones y vuelvo arriba. 131 00:13:51,860 --> 00:13:58,840 Y cuando no, continúo con mi flujo hacia abajo, ¿lo veis? 132 00:13:59,820 --> 00:14:05,580 Es decir, en este bucle, yo vengo desde arriba, vengo desde mi organigrama, por aquí, 133 00:14:05,580 --> 00:14:10,759 y llego a un punto en el que yo digo, hay escalones, por ejemplo, en este punto, ¿vale? 134 00:14:11,600 --> 00:14:17,360 Si hay escalones, bajo un escalón y vuelvo arriba, ¿veis? Esto es lo que tú decías. 135 00:14:17,360 --> 00:14:20,240 un bucle es una flecha hacia arriba 136 00:14:20,240 --> 00:14:21,240 en vez de seguir hacia abajo 137 00:14:21,240 --> 00:14:23,080 de repente tengo una que vuelve para arriba 138 00:14:23,080 --> 00:14:24,480 ¿por qué? porque recupero 139 00:14:24,480 --> 00:14:25,960 cuando yo paso por aquí 140 00:14:25,960 --> 00:14:29,860 como la flecha está entrando 141 00:14:29,860 --> 00:14:31,500 no puedo salir por ahí 142 00:14:31,500 --> 00:14:33,360 cuando yo vengo 143 00:14:33,360 --> 00:14:34,580 voy siempre hacia abajo 144 00:14:34,580 --> 00:14:36,139 no puedo coger esta salida 145 00:14:36,139 --> 00:14:38,940 porque no es una salida, solamente es la flecha para adentro 146 00:14:38,940 --> 00:14:40,679 por lo cual la flecha es la que da 147 00:14:40,679 --> 00:14:41,940 si os acordáis la secuencia 148 00:14:41,940 --> 00:14:45,220 por lo tanto esta flecha me impide 149 00:14:45,220 --> 00:14:46,259 que yo coja esa salida 150 00:14:46,259 --> 00:14:51,320 pero siempre voy a caer. Comprobamos que se cumple la condición, me meto en el bucle, 151 00:14:51,720 --> 00:14:57,399 se cumple, sí, se cumple, sí, se cumple, sí, me quedo aquí en este ciclo, pim, pam, pim, pam, 152 00:14:57,580 --> 00:15:02,379 ¿hasta cuándo? Hasta que responda. Cuando se deja de cumplir la condición del bucle mientras, 153 00:15:02,779 --> 00:15:08,100 sigo. Y ya continúo con mi trayecto, en mi diagrama del plujo, y hemos hecho un bucle, 154 00:15:08,100 --> 00:15:17,720 un ciclo, una repetición de una estudiación. ¿Y qué va a ocurrir con el ámbito? Si yo te digo, 155 00:15:17,720 --> 00:15:29,340 fijaos que antes he dicho, mientras haya escalones, baja. Ahora te digo, baja hasta que deje de haber 156 00:15:29,340 --> 00:15:39,500 escalones. Es lo mismo, pero fijaos que he cambiado el orden. ¿Qué te he dicho? Baja. Y luego, 157 00:15:39,500 --> 00:15:41,580 ¿Cuándo estoy comprobando la condición? 158 00:15:42,899 --> 00:15:44,340 ¿Antes o después de ejecutar? 159 00:15:45,399 --> 00:15:46,679 Después de ejecutar 160 00:15:46,679 --> 00:15:49,919 Aquí hemos hecho lo primero la comprobación 161 00:15:49,919 --> 00:15:50,659 Ahora no 162 00:15:50,659 --> 00:15:53,620 En el anti se comprueba 163 00:15:53,620 --> 00:15:58,080 Después 164 00:15:58,080 --> 00:16:00,379 De 165 00:16:00,379 --> 00:16:08,570 Después de ejecutar 166 00:16:08,570 --> 00:16:13,690 Es decir, primero ejecutamos 167 00:16:13,690 --> 00:16:15,570 Y luego comprobamos 168 00:16:15,570 --> 00:16:17,889 Ya te digo, si yo te digo baja 169 00:16:17,889 --> 00:16:20,070 Hasta que deje de haber escalones 170 00:16:20,070 --> 00:16:26,409 yo lo primero que voy a hacer es esto. Baja y luego. ¿Hay escalones? Entonces, lo segundo 171 00:16:26,409 --> 00:16:45,759 es que se comprueba después de ejecutar y siempre se ejecuta al menos una vez. Al menos 172 00:16:45,759 --> 00:16:51,379 una vez se ejecuta. Con lo cual, las órdenes aquí podrían no ejecutarse nunca. Pero 173 00:16:51,379 --> 00:16:59,840 igual al menos se ejecuta una vez y luego si me salgo del núcleo y hay otra 174 00:16:59,840 --> 00:17:06,079 condición y es que en este caso cómo va a ser el ejemplo los fijados primero 175 00:17:06,079 --> 00:17:28,069 ejecutó mis dos acciones y ahora pregunto y la pregunta es hasta que 176 00:17:28,069 --> 00:17:31,910 deje de haber escalones con lo cual si se cumple la condición ahora que es lo 177 00:17:31,910 --> 00:17:42,670 ¿qué hago? Salir del bucle. Fijaros que en esta, la respuesta afirmativa me mantenía 178 00:17:42,670 --> 00:17:49,789 dentro del bucle y como era mientras que se cumpliera la condición, pues mientras que 179 00:17:49,789 --> 00:17:54,109 se cumpla la condición es que si se cumple la condición estoy dentro del bucle. Aquí 180 00:17:54,109 --> 00:17:59,390 es hasta que se cumpla la condición, por lo tanto cuando la condición se cumple, ¿qué 181 00:17:59,390 --> 00:18:05,490 me salgo del bucle. Aquí estoy en el bucle mientras no se cumple la condición. ¿Vale? 182 00:18:05,950 --> 00:18:12,440 Se parecen pero no son iguales. Y en informática tenemos... Ya veremos. Porque hay veces que 183 00:18:12,440 --> 00:18:19,200 es obligatorio ejecutar pasaportes al menos una vez y hay veces que no. ¿Ok? Bien, ¿y 184 00:18:19,200 --> 00:18:24,700 cómo haríamos un bucle para? ¿Cómo haríamos que el bucle se repita un número de veces? 185 00:18:25,380 --> 00:18:30,039 Para saber si lo he hecho 20 veces y llevo 17 o 18, ¿qué necesito? Necesito un contador 186 00:18:30,039 --> 00:18:35,059 de vueltas para luego poder preguntar, ¿has llegado o no has llegado al límite? Necesito 187 00:18:35,059 --> 00:18:41,640 un contador de vueltas, entonces vamos a construir un contador, ¿vale? En informática, sabiendo 188 00:18:41,640 --> 00:18:45,819 que es una variable, algo que puede cambiar, pero que puede cambiar de valor, fijaros, 189 00:18:45,960 --> 00:18:53,180 una variable yo siempre la represento como una caja, una caja vacía, una caja que le 190 00:18:53,180 --> 00:18:56,720 pongo una etiqueta para identificar, de acuerdo que cuando vamos al trastero ponemos las cajas 191 00:18:56,720 --> 00:19:00,460 si le ponemos una etiqueta para saber qué hay dentro, yo a estas cajas les pongo un nombre. 192 00:19:00,960 --> 00:19:06,319 A esta le voy a poner un nombre que se llama N, N de número, de número de vueltas, ¿vale? 193 00:19:06,380 --> 00:19:11,839 Por no poner ahí un montón, puedo ponerle una cadena de texto si quiero, pero le voy a poner una sola letra, N. 194 00:19:12,680 --> 00:19:18,819 Y a esta caja yo le llamo N, ¿vale? Y dentro de esa caja, a lo largo de la ejecución del programa, 195 00:19:19,200 --> 00:19:24,759 yo puedo ir almacenando valores. Meto un valor y luego puedo mirar qué valor hay dentro de la caja 196 00:19:24,759 --> 00:19:29,000 para recordarlo, ¿vale? Cuando quiero acordarme de un número, el ordenador no se acuerda 197 00:19:29,000 --> 00:19:35,359 de nada, es totalmente estúpido. Si él hace un 2 más 2, sabe que son 4, pero como haga 198 00:19:35,359 --> 00:19:39,220 otra cosa ya se lo ha olvidado. Ese 4 lo tiene que anotar, lo tiene que apuntar, lo tiene 199 00:19:39,220 --> 00:19:43,339 que guardar en algún sitio. Bueno, pues el sitio donde lo guarda son las variables, ¿vale? 200 00:19:44,019 --> 00:19:47,559 Entonces yo voy a definir una variable que se llama n. Fijaos cómo voy a construir un 201 00:19:47,559 --> 00:19:57,039 bucle. Primero, viene mi flujo del programa y voy a inicializar la variable a 0, porque 202 00:19:57,039 --> 00:20:04,000 ¿cuántas vueltas he dado antes de entrar? 0, ¿no? Por lo tanto, al decir que n es igual 203 00:20:04,000 --> 00:20:13,839 a 0, ¿qué es lo que estoy haciendo? Almacenar dentro de esta caja un 0, ¿vale? 0. Esto 204 00:20:13,839 --> 00:20:24,779 es una variable, variable, y las variables hay que definirlas antes de empezar el programa 205 00:20:24,779 --> 00:20:29,460 le tengo que decir, oye, voy a utilizar una variable que se llama n, y yo tengo que saber 206 00:20:29,460 --> 00:20:33,119 qué significa, que es lo que almaceno ahí, porque si no es un caos, si yo tengo un montón 207 00:20:33,119 --> 00:20:41,299 de cajas, voy metiendo ahí aleatoriamente, entonces tengo que saber, yo como programador, 208 00:20:41,299 --> 00:20:52,089 n es el número de vueltas de mi contador de vueltas en el buzo, y ahora digo, n es 209 00:20:52,089 --> 00:21:02,549 N es igual al límite, al límite que me esté planteando, el límite puede ser 12, 15, el límite de vueltas, ¿vale? 210 00:21:02,549 --> 00:21:07,549 Si hay 20 vueltas, pues 20. N es igual, voy a ponerle un ejemplo, ¿vale? Para 20 vueltas. 211 00:21:08,869 --> 00:21:16,910 N es igual a 20, N es igual a 20, y ahora le digo, no. 212 00:21:16,910 --> 00:21:34,519 Pues entonces, ¿vale? 213 00:21:34,920 --> 00:21:36,799 Entonces ejecuto las acciones 214 00:21:36,799 --> 00:21:39,019 Pero claro, antes de volver a cerrar el núcleo 215 00:21:39,019 --> 00:21:40,819 ¿Qué tengo que hacer con el contador? 216 00:21:40,980 --> 00:21:44,549 El contador, cuando lo he ejecutado una vez 217 00:21:44,549 --> 00:21:47,190 Tengo que incrementar mi contador en 1 218 00:21:47,190 --> 00:21:49,410 Entonces, ¿qué voy a hacer? 219 00:21:49,490 --> 00:21:50,750 Pues mira, dentro de la caja N 220 00:21:50,750 --> 00:21:53,829 Le voy a poner el valor que hay adentro de N más 1 221 00:21:53,829 --> 00:21:57,700 Esta es la forma de programar un contador 222 00:21:57,700 --> 00:21:59,740 Entonces dentro de la misma caja 223 00:21:59,740 --> 00:22:01,299 Voy a meter 224 00:22:01,299 --> 00:22:02,460 ¿Qué voy a meter? 225 00:22:02,920 --> 00:22:04,299 Pues el contenido más 1 226 00:22:04,299 --> 00:22:27,900 Por lo tanto, cuando pasa por aquí, ¿qué hace? ¿Vale 0? Pues dentro de la caja que voy a meter ahora. 0 más 1, 1. Porque ya he dado una vuelta. Y pregunto, ¿n igual a 20? No. Ejecuto e incremento. Ahora vale 2. ¿Entendéis cómo funciona el contador? 227 00:22:27,900 --> 00:22:30,339 y entonces con el contador 228 00:22:30,339 --> 00:22:32,359 yo voy dando vueltas, voy dando vueltas, voy dando vueltas 229 00:22:32,359 --> 00:22:33,359 y llevo vueltas en el texto 230 00:22:33,359 --> 00:22:35,539 n igual a n más 1, valía 19 231 00:22:35,539 --> 00:22:37,079 incremento, vale 20 232 00:22:37,079 --> 00:22:38,980 ¿n igual a 20? Sí 233 00:22:38,980 --> 00:22:42,160 y ya continúo con mi programa por donde sea 234 00:22:42,160 --> 00:22:43,240 ¿qué he hecho? 235 00:22:43,740 --> 00:22:45,420 ejecutar el bucle 236 00:22:45,420 --> 00:22:47,400 un número concreto de veces 237 00:22:47,400 --> 00:22:49,869 ¿vale? 238 00:22:50,450 --> 00:22:52,230 entonces estas son las tres estructuras 239 00:22:52,230 --> 00:22:53,789 las tres estructuras 240 00:22:53,789 --> 00:22:56,170 para los bucles 241 00:22:56,170 --> 00:22:59,309 para las repeticiones 242 00:22:59,309 --> 00:23:05,369 Con Giacopini dijeron que podíamos utilizar repeticiones, pero no definieron qué tipo de repeticiones. 243 00:23:06,029 --> 00:23:09,230 Entonces, vosotros ya habéis utilizado esto, aunque no lo creáis. 244 00:23:09,349 --> 00:23:18,289 Cuando habéis programado en Scratch, habéis hecho un bloque que decía, repite siete veces y un montón de bloques de ejecución de algo, ¿no? 245 00:23:18,789 --> 00:23:20,309 Pues eso lo pusiste por... 246 00:23:21,349 --> 00:23:27,789 Al decirle tú en un bloque, repite siete veces, él internamente ya actualiza un contador, va contando el número de vueltas, 247 00:23:27,789 --> 00:23:29,230 Pero la forma de hacerlo es esta 248 00:23:29,230 --> 00:23:30,549 Con un contador 249 00:23:30,549 --> 00:23:34,970 O a lo mejor le habéis dicho 250 00:23:34,970 --> 00:23:38,369 Mueve la bolita de fuego 251 00:23:38,369 --> 00:23:39,990 Hasta que llegue al borde 252 00:23:39,990 --> 00:23:41,529 ¿No? 253 00:23:42,269 --> 00:23:44,069 O le habéis puesto un bloque 254 00:23:44,069 --> 00:23:45,710 Repite hasta 255 00:23:45,710 --> 00:23:47,690 No sé cómo son los bloques de Scratch 256 00:23:47,690 --> 00:23:48,690 Ahora mismo no lo recuerdo 257 00:23:48,690 --> 00:23:50,170 Pero hay una repetición 258 00:23:50,170 --> 00:23:52,069 Y tú le puedes poner una condición de finalización 259 00:23:52,069 --> 00:23:52,730 Desde un pie 260 00:23:52,730 --> 00:23:55,609 Entonces esto ya lo habéis utilizado vosotros en Scratch 261 00:23:55,609 --> 00:23:56,809 Cuando habéis creado los juegos 262 00:23:56,809 --> 00:23:59,829 Lo bueno del programa con bloques es que todo esto tú no te enteras 263 00:23:59,829 --> 00:24:01,569 Pero lo malo es que no sabes qué estás haciendo 264 00:24:01,569 --> 00:24:03,289 Entonces ahora 265 00:24:03,289 --> 00:24:05,710 Es el momento ya de pasar al siguiente punto 266 00:24:05,710 --> 00:24:07,210 De programación, que es saber 267 00:24:07,210 --> 00:24:09,670 Cómo se construye cada una de estas cosas 268 00:24:09,670 --> 00:24:11,869 ¿Vale? Y también aquí podéis ver 269 00:24:11,869 --> 00:24:13,549 La potencia 270 00:24:13,549 --> 00:24:15,750 O la facilidad 271 00:24:15,750 --> 00:24:17,650 Con la que se pueden entender estructuras 272 00:24:17,650 --> 00:24:21,559 Relativamente complicadas con los diagramas de flujo 273 00:24:21,559 --> 00:24:23,759 ¿Vale? En programación esto es necesario 274 00:24:23,759 --> 00:24:24,900 Saber eso 275 00:24:24,900 --> 00:24:26,859 Saber utilizar los diagramas de flujo 276 00:24:26,859 --> 00:24:29,140 Saber que esto es una condición que sale con sí o con no 277 00:24:29,140 --> 00:24:30,859 La pregunta que yo hago 278 00:24:30,859 --> 00:24:32,240 la pongo yo, ¿vale? 279 00:24:32,319 --> 00:24:34,279 pero las estructuras es necesarias 280 00:24:34,279 --> 00:24:36,539 ¿vale? entonces 281 00:24:36,539 --> 00:24:38,579 yo les digo, el Yagopini 282 00:24:38,579 --> 00:24:40,539 definieron esas tres estructuras 283 00:24:40,539 --> 00:24:41,220 la secuencia 284 00:24:41,220 --> 00:24:43,799 definieron la 285 00:24:43,799 --> 00:24:47,119 decisión o la difundación 286 00:24:47,119 --> 00:24:47,720 ¿vale? 287 00:24:48,359 --> 00:24:49,819 y los repeticiones 288 00:24:49,819 --> 00:24:52,680 entonces, con esas tres cosas nosotros podemos 289 00:24:52,680 --> 00:24:53,740 resolver cualquier problema 290 00:24:53,740 --> 00:24:56,599 yo quiero, tengo un problema de que no tengo tiza 291 00:24:56,599 --> 00:24:58,799 quiero ir a por tiza 292 00:24:58,799 --> 00:25:08,880 Pues mira, avanzas a la puerta. Cuando llegas allí, ¿está abierta la puerta? Si es que sí, cruza la puerta. Y si es que no, la abres y la cruzas. 293 00:25:09,720 --> 00:25:17,259 Después, avanzas al borde de la escalera. Luego hay una repetición. Mientras hay escalones, bajas escalones. Baja un escalón. Titi, titi, titi, titi, bajo hasta abajo. 294 00:25:18,099 --> 00:25:28,059 ¿Vale? Luego, ¿está Elena? Sí. Pídele una tiza. No. Espera. ¿Está Elena? Espera 10 segundos. Vuelves a comprobar. ¿Está Elena? No. Pues sigo esperando. 295 00:25:28,799 --> 00:25:33,240 Cuando ya llega Elena, ¿está Elena? Sí, pide una tiza, ¿vale? 296 00:25:33,299 --> 00:25:35,660 Que eche un bucle hasta que haya llegado Elena. 297 00:25:36,579 --> 00:25:41,339 Te espera, un bucle que no le ha hecho nada, simplemente estaba esperando que sucediera algo, que Elena llegara. 298 00:25:41,900 --> 00:25:42,640 Ya le he pedido una tiza. 299 00:25:43,339 --> 00:25:46,200 Date media vuelta, que es una obra de tándem. 300 00:25:47,619 --> 00:25:48,700 Avanzas a la escalera. 301 00:25:49,079 --> 00:25:51,220 Mientras haya escalones, sube un escalón. 302 00:25:51,400 --> 00:25:52,819 Ti-ti-ti-ti-ti-ti, hasta aquí. 303 00:25:53,660 --> 00:25:54,460 Avanzas a la puerta. 304 00:25:54,779 --> 00:25:58,319 Está la puerta abierta porque a lo mejor algún cabrón se te la ha cerrado mientras que yo he bajado. 305 00:25:58,799 --> 00:26:02,619 y entonces me estrello, si no, no compruebo, entonces digo, ¿está la puerta abierta? 306 00:26:02,960 --> 00:26:08,259 ¡No! Que la han cerrado, pues abre la y cruza, y si no, cruza, y luego ven hasta aquí, 307 00:26:08,359 --> 00:26:13,160 y ya está, tengo mi pieza. Entonces, con remeticiones, bucles y decisiones, yo puedo 308 00:26:13,160 --> 00:26:18,220 resolver cualquier problema, ¿lo ves? Esa es la idea, ¿vale? Igual Jacopini definieron 309 00:26:18,220 --> 00:26:22,500 que esas tres estructuras eran las únicas que nosotros necesitábamos para resolver 310 00:26:22,500 --> 00:26:31,200 los problemas. Si sois capaces de desgranar un problema en pasos que se ajusten a esta 311 00:26:31,200 --> 00:26:36,220 estructura de Bonjaco-Pini, seréis buenos programadores. Estaréis pensando como programadores. 312 00:26:36,660 --> 00:26:42,160 ¿Vale? Si no sois capaces de llegar a ese punto, entonces seréis malos programadores.