[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.70,0:00:07.26,Default,,0000,0000,0000,,Hablemos de ciclos. Aquí tengo un ciclo "while" con unas pocas líneas de código, puedo escribir este mensaje hasta el fondo de la pantalla. Dialogue: 0,0:00:07.26,0:00:10.34,Default,,0000,0000,0000,,Si cambio el mensaje como lo hago aquí, ya sabes, para mejorarlo, Dialogue: 0,0:00:10.34,0:00:11.93,Default,,0000,0000,0000,,todo esto cambia. Dialogue: 0,0:00:11.93,0:00:15.83,Default,,0000,0000,0000,,Así que ¿cómo funciona esto? Bueno, podemos revisar este código en un momento. Dialogue: 0,0:00:15.83,0:00:19.42,Default,,0000,0000,0000,,Pero primero vamos a regresarnos un poco y pensar cómo escribiríamos este programa Dialogue: 0,0:00:19.42,0:00:22.47,Default,,0000,0000,0000,,usando sólo lo que sabemos hasta ahora sin utilizar los ciclos. Dialogue: 0,0:00:22.47,0:00:26.75,Default,,0000,0000,0000,,Así que para hacer eso, en realidad vamos a escribir mucho texto una y otra vez ¿cierto? Dialogue: 0,0:00:26.75,0:00:32.59,Default,,0000,0000,0000,,Vamos a decir, "text(message..." y voy ponerlo en primer lugar, y ahora sólo es cuestión de repetir esto Dialogue: 0,0:00:32.59,0:00:36.34,Default,,0000,0000,0000,,suficientes veces hasta que lleguemos hasta abajo. Dialogue: 0,0:00:36.34,0:00:38.95,Default,,0000,0000,0000,,Y eso nos va a costar mucho trabajo, ¿cierto? Dialogue: 0,0:00:38.95,0:00:42.75,Default,,0000,0000,0000,,Porque la parte de abajo está muy lejos. Y esto se vuelve peor si tú Dialogue: 0,0:00:42.75,0:00:46.76,Default,,0000,0000,0000,,me señalas que esta posición no debe ser 70, en realidad debe estar más cerca Dialogue: 0,0:00:46.76,0:00:50.71,Default,,0000,0000,0000,,debe ser 60. Y ahora esto afecta a este porque también debe ser más pequeño Dialogue: 0,0:00:50.71,0:00:55.04,Default,,0000,0000,0000,,y también afecta todos los demás textos que tengamos. Dialogue: 0,0:00:55.04,0:00:58.26,Default,,0000,0000,0000,,Y de hecho, esto nos va a tomar más tiempo hasta llegar abajo. Dialogue: 0,0:00:58.26,0:01:02.18,Default,,0000,0000,0000,,Así que es realmente una pena, pero afortunadamente tenemos ciclos que nos ayudan. Dialogue: 0,0:01:02.18,0:01:06.21,Default,,0000,0000,0000,,A partir de ahora, cada vez que veas un código repetitivo como éste, tu primer pensamiento debe ser: Dialogue: 0,0:01:06.21,0:01:10.09,Default,,0000,0000,0000,,¿Podría usar un ciclo? Un ciclo nos permitirá repetir esta porción de código una y otra y Dialogue: 0,0:01:10.09,0:01:13.67,Default,,0000,0000,0000,,otra vez, haciendo sólo pequeños cambios cada vez. Dialogue: 0,0:01:13.67,0:01:17.87,Default,,0000,0000,0000,,Así que aquí tenemos la manera de reescribir este código con un ciclo. Para iniciar necesitamos escribir: "while", Dialogue: 0,0:01:17.87,0:01:22.09,Default,,0000,0000,0000,,los paréntesis, y las llaves. Vamos a usar este mensaje, pero... Dialogue: 0,0:01:22.09,0:01:26.30,Default,,0000,0000,0000,,esto es porque no hemos terminado todavía. No te preocupes, se irá cuando terminemos. Dialogue: 0,0:01:26.30,0:01:30.81,Default,,0000,0000,0000,,Así que cada vez que escribas un ciclo necesitas responder tres preguntas clave. Dialogue: 0,0:01:30.82,0:01:32.94,Default,,0000,0000,0000,,Y aquí están... Dialogue: 0,0:01:32.94,0:01:37.37,Default,,0000,0000,0000,,Entonces la primera pregunta es: \N¿Qué es lo que quiero repetir? Dialogue: 0,0:01:37.37,0:01:41.47,Default,,0000,0000,0000,,Y lo que sea que quiera repetir debe ir entre las llaves. Dialogue: 0,0:01:41.47,0:01:46.20,Default,,0000,0000,0000,,Así que en este caso queremos repetir la función "text", entonces vamos a ponerla aquí. Dialogue: 0,0:01:46.20,0:01:49.57,Default,,0000,0000,0000,,Pero es un poco absurdo ¿no? Porque vamos a repetir simplemente Dialogue: 0,0:01:49.57,0:01:54.20,Default,,0000,0000,0000,,la misma llamada a la función "text" una y otra vez, lo cual no tienen ninguna razón, necesitamos que algo cambie. Dialogue: 0,0:01:54.20,0:01:57.71,Default,,0000,0000,0000,,Esto nos lleva a la segunda pregunta:\N¿Qué es lo que quiero cambiar cada vez? Dialogue: 0,0:01:57.71,0:02:01.42,Default,,0000,0000,0000,,Entonces lo que queremos cambiar es la posición de "y", ¿cierto? Queremos que sea 60 y luego queremos Dialogue: 0,0:02:01.42,0:02:05.50,Default,,0000,0000,0000,,que sea 80. Así que haremos una variable para eso. Dialogue: 0,0:02:05.50,0:02:09.48,Default,,0000,0000,0000,,La llamaremos "y" porque es la posición de "y". Así que vamos a declarar la variable Dialogue: 0,0:02:09.48,0:02:13.38,Default,,0000,0000,0000,,aquí arriba. Y la voy a inicializar en 40. Y ahora finalmente, lo que necesitamos hacer es Dialogue: 0,0:02:13.38,0:02:17.20,Default,,0000,0000,0000,,cambiar "y". Podemos hacer eso aquí abajo, y decimos "y" es igual a "y" más 20, Dialogue: 0,0:02:17.20,0:02:21.09,Default,,0000,0000,0000,,y "y" será más grande cada vez. Y de hecho, podemos usar Dialogue: 0,0:02:21.09,0:02:24.74,Default,,0000,0000,0000,,aquí nuestras lecciones sobre cómo escribir incrementos. Continuamos Dialogue: 0,0:02:24.74,0:02:29.09,Default,,0000,0000,0000,,y usamos un atajo para el incremento. Esto es fantástico, ahora Dialogue: 0,0:02:29.09,0:02:32.70,Default,,0000,0000,0000,,necesitamos hacer la tercera pregunta: ¿Hasta cuándo debemos repetir esto? Dialogue: 0,0:02:32.70,0:02:36.53,Default,,0000,0000,0000,,Bueno, queremos hacer esto una y otra y otra vez, pero en realidad no queremos que sea para siempre, ¿cierto? Dialogue: 0,0:02:36.53,0:02:41.25,Default,,0000,0000,0000,,Si lo hacemos para siempre, en primer lugar es tener que esperar mucho tiempo, y en segundo lugar esto podría bloquear tu navegador. Dialogue: 0,0:02:41.25,0:02:44.47,Default,,0000,0000,0000,,Pero afortunadamente no es así. En realidad sólo Dialogue: 0,0:02:44.47,0:02:48.37,Default,,0000,0000,0000,,lo queremos hacer hasta llegar a la parte inferior de la pantalla, ¿cierto? Lo que significa que lo queremos hacer Dialogue: 0,0:02:48.37,0:02:52.47,Default,,0000,0000,0000,,siempre y cuando "y" sea menor que 400. Entonces ponemos eso aquí, y Dialogue: 0,0:02:52.47,0:02:56.43,Default,,0000,0000,0000,,¡Terminamos! tenemos este mensaje escrito hasta abajo de la pantalla. Dialogue: 0,0:02:56.43,0:02:59.92,Default,,0000,0000,0000,,Y puedes ver que esta forma de hacerlo es más simple que nuestro intento anterior, que Dialogue: 0,0:02:59.92,0:03:04.18,Default,,0000,0000,0000,,nos tomó casi lo mismo escribirlo, pero no teníamos ni la cuarta parte terminada. Dialogue: 0,0:03:04.18,0:03:08.09,Default,,0000,0000,0000,,Así que nos podemos deshacer de eso, y aquí tenemos nuestro programa. Dialogue: 0,0:03:08.09,0:03:11.71,Default,,0000,0000,0000,,Ahora vamos a tratar de entender mejor qué es lo que está pasando. Para hacerlo, voy a Dialogue: 0,0:03:11.71,0:03:15.63,Default,,0000,0000,0000,,imprimir cada vez. Voy a decir "y is now" ("y" es ahora) y aquí abajo Dialogue: 0,0:03:15.63,0:03:19.41,Default,,0000,0000,0000,,voy a poner "y" en la parte final del mensaje para que podamos verlo. Dialogue: 0,0:03:19.41,0:03:23.34,Default,,0000,0000,0000,,Entonces en este momento el valor está cambiando en 20 cada vez, y podemos cambiar Dialogue: 0,0:03:23.34,0:03:27.26,Default,,0000,0000,0000,,esto solamente cambiando esta variable aquí. Pueden hacer que cambie, en 50 Dialogue: 0,0:03:27.26,0:03:31.43,Default,,0000,0000,0000,,cada vez. Y ahora está cambiando 50 cada vez. Del mismo modo, Dialogue: 0,0:03:31.43,0:03:35.58,Default,,0000,0000,0000,,puedes continuar y jugar con estos otros valores y cambiarlos. Dialogue: 0,0:03:35.58,0:03:39.20,Default,,0000,0000,0000,,Y puedes ver cómo afecta eso, ya sabes, cuándo el programa debe terminar. Dialogue: 0,0:03:39.20,0:03:44.01,Default,,0000,0000,0000,,Así que para entender esto, puedes pensar en esto como una especie Dialogue: 0,0:03:44.01,0:03:47.34,Default,,0000,0000,0000,,de sentencia "if". Aquí tenemos nuestra expresión booleana Dialogue: 0,0:03:47.34,0:03:52.01,Default,,0000,0000,0000,,justo como lo aprendimos. Y luego, hacemos que esto sea el cuerpo de la sentencia Dialogue: 0,0:03:52.01,0:03:55.47,Default,,0000,0000,0000,,sólo si la expresión booleana es verdadera, de otra manera saltamos al final. Dialogue: 0,0:03:55.47,0:03:59.09,Default,,0000,0000,0000,,Pero lo que es interesante es que en el ciclo "while" tenemos en realidad Dialogue: 0,0:03:59.09,0:04:03.86,Default,,0000,0000,0000,,una cosa secreta el final que dice "regresa al principio del ciclo". Dialogue: 0,0:04:03.86,0:04:07.20,Default,,0000,0000,0000,,Y lo que esta instrucción secreta significa es que Dialogue: 0,0:04:07.20,0:04:11.07,Default,,0000,0000,0000,,en lugar de seguir adelante, como cuando usamos la sentencia "if", Dialogue: 0,0:04:11.07,0:04:15.03,Default,,0000,0000,0000,,cada vez que se ejecuta el cuerpo del ciclo regresamos al principio y revisamos Dialogue: 0,0:04:15.03,0:04:19.20,Default,,0000,0000,0000,,si la condición sigue siendo verdadera. Y si es verdadera seguimos adelante para repetir Dialogue: 0,0:04:19.20,0:04:23.24,Default,,0000,0000,0000,,el ciclo una vez más. Y cómo ya te habrás imaginado, la segunda vez que repetimos, vamos a hacer la misma cosa... Dialogue: 0,0:04:23.24,0:04:27.09,Default,,0000,0000,0000,,vamos a comprobar, ya sabes, vamos a ir al inicio y revisar ¿"y" sigue siendo menor que Dialogue: 0,0:04:27.09,0:04:31.56,Default,,0000,0000,0000,,279? Y si es así, repetiremos una vez más y seguiremos revisando. Dialogue: 0,0:04:31.56,0:04:34.59,Default,,0000,0000,0000,,Y si no lo es, regresamos al inicio aquí, y finalmente, Dialogue: 0,0:04:34.59,0:04:38.48,Default,,0000,0000,0000,,salimos del ciclo y seguimos adelante con nuestro programa. Dialogue: 0,0:04:38.48,0:04:42.70,Default,,0000,0000,0000,,Grandioso, hay muchas maneras interesantes de usar los ciclos, y vamos a aprender sobre eso pronto, pero Dialogue: 0,0:04:42.70,0:04:45.91,Default,,0000,0000,0000,,por ahora, tuvimos un comienzo excelente.