1 00:00:00,370 --> 00:00:04,750 Hola, muy buenas. En este videotutorial hablaremos sobre los bucles. 2 00:00:05,309 --> 00:00:08,630 En Scratch teníamos una serie de alternativas. 3 00:00:09,089 --> 00:00:12,169 Una de ellas era este bloque de código. 4 00:00:12,689 --> 00:00:16,870 Repetir hasta que se cumpla la condición que pongamos en esta zona. 5 00:00:17,469 --> 00:00:22,670 Y se repetiría todas las acciones que pongamos dentro de este bloque. 6 00:00:23,649 --> 00:00:26,329 En Java tenemos distintas posibilidades. 7 00:00:26,969 --> 00:00:28,809 Una de ellas es el bucle while. 8 00:00:28,809 --> 00:00:33,090 donde utilizaremos la palabra reservada while 9 00:00:33,090 --> 00:00:35,969 entre paréntesis la condición 10 00:00:35,969 --> 00:00:40,170 y entre llaves pondremos el código que queremos que se repita 11 00:00:40,170 --> 00:00:42,189 siempre y cuando se cumple la condición 12 00:00:42,189 --> 00:00:44,570 aquí tenemos un ejemplo 13 00:00:44,570 --> 00:00:47,049 en este caso esta sería la condición 14 00:00:47,049 --> 00:00:51,109 aquí la tenemos puesta entre paréntesis 15 00:00:51,109 --> 00:00:54,250 y entre llaves las instrucciones 16 00:00:54,250 --> 00:00:57,310 que se ejecutarían en el bucle 17 00:00:57,310 --> 00:00:59,229 Que se corresponden con estas dos de aquí 18 00:00:59,229 --> 00:01:03,570 Aquí hemos tenido que cambiar el signo del menor por uno mayor 19 00:01:03,570 --> 00:01:07,150 Porque aquí es repetir hasta que se cumpla esta condición 20 00:01:07,150 --> 00:01:09,010 Mientras que no se cumpla, se hace 21 00:01:09,010 --> 00:01:11,430 Mientras que aquí es justo al revés 22 00:01:11,430 --> 00:01:16,109 Si se cumple esta condición, se hace lo de dentro 23 00:01:16,109 --> 00:01:16,930 Si no, no 24 00:01:16,930 --> 00:01:21,109 Pero bueno, salvo estos detalles, vemos que es totalmente equivalente 25 00:01:21,109 --> 00:01:26,010 Veamos el potencial de los bucles con un ejemplo 26 00:01:26,010 --> 00:01:31,230 Imaginemos que tenemos un código como el que vemos aquí 27 00:01:31,230 --> 00:01:37,310 Si lo ejecutamos tenemos un círculo en pantalla 28 00:01:37,310 --> 00:01:41,209 Si yo quiero poner otro círculo más 29 00:01:41,209 --> 00:01:43,950 Me puedo copiar la instrucción 30 00:01:43,950 --> 00:01:48,989 Y modificar los parámetros 31 00:01:48,989 --> 00:01:54,790 Vamos a sumarle el doble del diámetro 32 00:01:54,790 --> 00:01:56,989 Para que lo separemos en la coordenada X 33 00:01:56,989 --> 00:02:03,730 Si quiero poner otro más, procederíamos a hacer algo similar 34 00:02:03,730 --> 00:02:07,849 Aquí le añadiríamos en vez de otros 40 para separarlo 35 00:02:07,849 --> 00:02:12,550 Podemos poner el número directamente, aquí podríamos haber puesto 60 y aquí 100 36 00:02:12,550 --> 00:02:17,310 Cualquiera de las alternativas es correcta 37 00:02:17,310 --> 00:02:21,490 Bueno, si queremos poner 10, nos copiaríamos 10 líneas 38 00:02:21,490 --> 00:02:25,789 El problema de hacer esto es que es muy repetitivo 39 00:02:25,789 --> 00:02:31,229 Aparecerían muchas líneas de código en el programa 40 00:02:31,229 --> 00:02:32,770 Es poco escalable 41 00:02:32,770 --> 00:02:33,650 ¿Qué quiere decir esto? 42 00:02:33,789 --> 00:02:36,090 Que si yo tengo que hacer 100 bolas 43 00:02:36,090 --> 00:02:42,069 Paso de tener 10 líneas de código a tener 100 líneas de código 44 00:02:42,069 --> 00:02:43,770 Esto no es práctico 45 00:02:43,770 --> 00:02:48,069 Para hacer este tipo de cosas recurrimos a los bucles 46 00:02:48,069 --> 00:02:51,330 Vamos a intentar hacer esto con un bucle 47 00:02:51,330 --> 00:02:56,509 Aquí tenemos un ejemplo hecho con el bucle while 48 00:02:56,509 --> 00:03:02,490 Nos hemos creado una variable de tipo entero a la que he llamado i 49 00:03:02,490 --> 00:03:10,509 Y lo que hago es que utilizo el bucle while, fijaros la palabra reservada 50 00:03:10,509 --> 00:03:15,349 Entre ellas pongo la condición de que la i sea menor que 10 51 00:03:15,349 --> 00:03:21,729 Dibujo el círculo en la posición adecuada 52 00:03:21,729 --> 00:03:25,250 e incremento el valor de la variable 53 00:03:25,250 --> 00:03:28,810 de tal manera que empezaríamos por 0 54 00:03:28,810 --> 00:03:32,330 como 0 es menor que 10 dibujaría un círculo 55 00:03:32,330 --> 00:03:36,389 a continuación aquí se sumaría 1 a esa variable 56 00:03:36,389 --> 00:03:38,509 pasaría a valer 1 57 00:03:38,509 --> 00:03:41,229 como 1 es menor que 10 se dibujaría otro círculo 58 00:03:41,229 --> 00:03:44,650 aquí en esta instrucción en la línea 9 59 00:03:44,650 --> 00:03:48,449 pasaría a valer 2 porque se incrementa en 1 la variable y 60 00:03:48,449 --> 00:03:50,349 2 es menor que 10 61 00:03:50,349 --> 00:03:54,330 Volvería a ejecutarse el círculo, se dibujaría otro círculo 62 00:03:54,330 --> 00:03:55,909 Aquí se volvería a incrementar 63 00:03:55,909 --> 00:03:59,430 Así hasta que la variable i valga 10 64 00:03:59,430 --> 00:04:01,490 Como 10 no es menor que 10 65 00:04:01,490 --> 00:04:04,289 Saldríamos del bucle, se terminaría 66 00:04:04,289 --> 00:04:06,650 Y como no tenemos más instrucciones, acabaría mi programa 67 00:04:06,650 --> 00:04:09,969 Vamos a ver como efectivamente 68 00:04:09,969 --> 00:04:13,229 Aquí hemos dibujado unos cuantos círculos 69 00:04:13,229 --> 00:04:16,769 Que yo no quiero dibujar 10, que quiero dibujar 5 70 00:04:16,769 --> 00:04:19,649 Tan solo tendríamos que cambiar este número de aquí 71 00:04:19,649 --> 00:04:26,709 a lo mejor os llama un poco la atención 72 00:04:26,709 --> 00:04:28,529 esta coordenada en X 73 00:04:28,529 --> 00:04:33,310 lo que yo hago es utilizar esta variable 74 00:04:33,310 --> 00:04:36,829 que me va indicando el número de veces que paso por el bucle 75 00:04:36,829 --> 00:04:39,790 para multiplicarla por un desplazamiento 76 00:04:39,790 --> 00:04:41,970 bueno, al principio pongo 20 77 00:04:41,970 --> 00:04:44,850 para que se me quede bien en la figura 78 00:04:44,850 --> 00:04:50,810 vemos que se me queda perfecto 79 00:04:50,810 --> 00:04:51,730 si nos fijamos 80 00:04:51,730 --> 00:04:56,370 Wild se parece mucho a la instrucción if 81 00:04:56,370 --> 00:05:02,329 Lo único que hacemos es cambiar la palabra reservada if por wild 82 00:05:02,329 --> 00:05:05,209 Pero su función es prácticamente similar 83 00:05:05,209 --> 00:05:11,129 Con la diferencia de que el if se ejecutaría solo una vez lo que hay entre llaves y se cumple la condición 84 00:05:11,129 --> 00:05:16,410 Mientras que en wild se va a estar ejecutando todo el rato lo que hay entre llaves 85 00:05:16,410 --> 00:05:18,569 Mientras que se cumpla la condición 86 00:05:18,569 --> 00:05:22,189 Pero la estructura es prácticamente la misma 87 00:05:22,189 --> 00:05:27,680 Otra alternativa en Java son los bucles for 88 00:05:27,680 --> 00:05:32,060 Los for se parecen mucho al while 89 00:05:32,060 --> 00:05:34,519 Cambiamos la palabra reservada, obviamente 90 00:05:34,519 --> 00:05:37,560 Pero entre paréntesis vamos a tener tres secciones 91 00:05:37,560 --> 00:05:43,120 Si nos fijamos bien, cada una de esas tres secciones está separada por punto y coma 92 00:05:43,120 --> 00:05:49,019 En la primera sección, que en este caso pone int i igual a 0 93 00:05:49,019 --> 00:05:56,339 Esa es una instrucción que se va a ejecutar al principio del bucle y solo una vez 94 00:05:56,339 --> 00:05:59,459 Va a ser lo primero que se haga en este bucle 95 00:05:59,459 --> 00:06:03,459 En el segundo tenemos la condición que se ha de cumplir 96 00:06:03,459 --> 00:06:08,139 Para que se ejecute el código que metamos encerrado entre estas llaves 97 00:06:08,139 --> 00:06:17,500 Y en la última sección sería el último paso que se ejecuta si se cumple la condición 98 00:06:17,500 --> 00:06:47,470 Vamos a verlo mejor con un ejemplo. Fijaros, antes pinté las bolas con el bucle while. Si utilizo este bucle nos creamos una variable local de tipo entero a la que es llamado y y dentro del bucle la última instrucción es sumar 1 a la variable y. 99 00:06:47,470 --> 00:06:52,829 Bueno, para evitar escribir esta línea de código 100 00:06:52,829 --> 00:06:55,670 Y esta de aquí, se utiliza el bucle for 101 00:06:55,670 --> 00:06:57,709 Que cambia el while por el for 102 00:06:57,709 --> 00:07:00,310 Esta instrucción de aquí 103 00:07:00,310 --> 00:07:05,009 La pongo dentro de los paréntesis 104 00:07:05,009 --> 00:07:07,149 Es lo primero que se va a ejecutar 105 00:07:07,149 --> 00:07:09,370 Y esta de aquí 106 00:07:09,370 --> 00:07:13,750 La pongo después de esta 107 00:07:13,750 --> 00:07:15,589 Quito ese punto y coma que no lo necesito 108 00:07:15,589 --> 00:07:16,750 Y ya lo tendría 109 00:07:16,750 --> 00:07:21,709 Este código es totalmente equivalente a lo que hicimos antes 110 00:07:21,709 --> 00:07:24,610 Pero nos hemos ahorrado alguna línea de código 111 00:07:24,610 --> 00:07:27,430 Probamos a ver lo que hace bucle for 112 00:07:27,430 --> 00:07:30,430 Lo mismo que hacíamos anteriormente con el while 113 00:07:30,430 --> 00:07:34,129 Solamente nos hemos ahorrado un par de líneas de código 114 00:07:34,129 --> 00:07:41,629 De igual manera yo puedo aumentar fácilmente el número de círculos que quiero dibujar 115 00:07:41,629 --> 00:07:48,310 Bueno, pues estos van a ser los dos bucles más importantes 116 00:07:48,310 --> 00:07:51,129 que vamos a utilizar en Java 117 00:07:51,129 --> 00:07:55,129 y hasta aquí el vídeo de los bucles