1 00:00:01,109 --> 00:00:03,822 Aquí nos quedamos con nuestro juego de lanzamiento de monedas. 2 00:00:03,822 --> 00:00:06,597 Empezamos generando un número aleatorio entre 0 y 1, 3 00:00:06,597 --> 00:00:08,877 y luego redondeamos ese número al entero más cercano. 4 00:00:08,877 --> 00:00:12,214 Eso nos daba un número que era 0 o 1. 5 00:00:12,214 --> 00:00:18,909 Y luego ilustramos nuestra moneda súper realista con una elipse que era morada o amarilla, dependiendo del número. 6 00:00:18,909 --> 00:00:20,987 Y aquí está el código con el que hicimos eso. 7 00:00:20,987 --> 00:00:25,819 Entonces dijimos si "integer" es igual a 0 rellena de morado, de otra manera, rellena de amarillo. 8 00:00:25,819 --> 00:00:27,917 Y luego dibujamos la moneda aquí abajo. 9 00:00:27,917 --> 00:00:32,455 Pero ahora he decidido que mi moneda tiene en realidad 3 lados. Sí, una moneda de 3 lados. 10 00:00:32,455 --> 00:00:34,190 Así que déjenme agregar el tercer lado. 11 00:00:34,190 --> 00:00:37,109 Voy a empezar por generar un número entre 0 y 2, 12 00:00:37,109 --> 00:00:41,533 así que después de redondear eso, me regresará un entero que será 0, 1 o 2. 13 00:00:41,533 --> 00:00:45,609 Pero si miramos nuestro código de dibujo, sólo estamos contemplando dos casos aquí. 14 00:00:45,609 --> 00:00:48,815 Si el entero es 0, rellenará de morado, de otra manera, rellenará de amarillo. 15 00:00:48,815 --> 00:00:51,885 Pero ahora, "de otra manera" puede significar 1 o 2. 16 00:00:51,885 --> 00:00:54,931 Pero esperen, ¿qué pasa si hago lo mismo que hice antes?, 17 00:00:54,931 --> 00:00:57,403 pero dentro de este bloque "else". Así que sólo voy a decir: 18 00:00:57,403 --> 00:01:04,933 Si "integer" es igual a 1 entonces rellena de amarillo, como estaba antes, 19 00:01:04,933 --> 00:01:11,403 "else" rellenaremos de rojo. Rojo está bien. 20 00:01:11,403 --> 00:01:15,478 Entonces lo que esto significa es que si "integer" es igual a 0 el color será morado, 21 00:01:15,478 --> 00:01:18,984 de otra manera, si es 1, el color será amarillo; 22 00:01:18,984 --> 00:01:24,611 de otra manera, es decir, si no es 0, ni 1, debe ser 2 y rellenaremos de rojo. 23 00:01:24,611 --> 00:01:28,566 Presiono "restart" muchas veces. ¡Funciona! ¡Yu ju! 24 00:01:28,566 --> 00:01:31,536 Entonces si quiero añadir más lados a mi moneda, 25 00:01:31,536 --> 00:01:37,987 Puedo ir aquí arriba y hacer esto de 0 a 3, y luego ir más adentro en el bloque "else" y añadir más "if-else" y así sucesivamente, 26 00:01:37,987 --> 00:01:40,158 hasta que tengamos miles de bloques anidados. 27 00:01:40,158 --> 00:01:44,704 Y sólo entonces me daré cuenta de que este código es desagradable, quiero decir ¡grotesco! 28 00:01:44,704 --> 00:01:48,351 Se supone que un código debe ser fácil de leer y bonito, no lo más feo posible. 29 00:01:48,351 --> 00:01:50,070 Así que esto es lo que vamos a hacer: 30 00:01:50,070 --> 00:01:55,675 Cuando tengas una sentencia "if" simple o una sentencia "if-else" dentro de un bloque "else", 31 00:01:55,675 --> 00:01:58,313 significa que no estamos haciendo nada más fuera de estos bloques, 32 00:01:58,313 --> 00:02:04,486 no estamos eligiendo el color del trazo, no tenemos ninguna sentencia "if", nada. 33 00:02:04,486 --> 00:02:08,444 Todo lo que tenemos es una sentencia "if", y probablemente contenga un bloque "else". 34 00:02:08,444 --> 00:02:13,156 Entonces en realidad podemos combinar esta condición con la línea anterior y decir: 35 00:02:13,156 --> 00:02:17,073 "else if integer is = 1" (de otra manera, si "integer" es igual a 1), y establecer el color amarillo para rellenar. 36 00:02:17,073 --> 00:02:21,939 Y luego este bloque "else" del final, no está anidado en ningún lado, sólo llega al final por sí mismo. 37 00:02:21,939 --> 00:02:27,067 ¡Genial! Entonces lo que esto significa es: si "integer" es igual a 0 rellena de morado, 38 00:02:27,067 --> 00:02:30,235 de otra manera si "integer" es igual a 1, rellena de amarillo, 39 00:02:30,235 --> 00:02:34,484 de otra manera, si estas dos condiciones anteriores fueron falsas entonces rellena de rojo. 40 00:02:34,484 --> 00:02:37,738 Si presiono "Restart" muchas veces, puedes ver que sigue funcionando. 41 00:02:37,738 --> 00:02:41,824 ¡Genial! Y lo interesante de esto es que podemos tener todos los "else-if" que queramos, 42 00:02:41,824 --> 00:02:44,703 lo que me hace fácil añadir más lados en mi moneda. 43 00:02:44,703 --> 00:02:48,009 Hagamos eso ahora. Voy a generar un número entre 0 y 3, 44 00:02:48,009 --> 00:02:56,058 y luego voy a añadir otro bloque "else" que diga: de otra manera si "integer" es igual a 2 45 00:02:56,135 --> 00:02:59,658 rellenaremos de... bueno antes era rojo, podemos dejar el rojo. 46 00:02:59,658 --> 00:03:03,208 Y luego este último bloque "else" será para cuando "integer" sea igual a 3, 47 00:03:03,208 --> 00:03:08,499 rellenaremos de azul. ¡Genial! 48 00:03:08,499 --> 00:03:12,816 Muy bien. Así que para hacer esto, siempre tienes que empezar con una sentencia "if", 49 00:03:12,816 --> 00:03:16,910 y luego puedes tener todos los "else-if" que quieras, 50 00:03:16,910 --> 00:03:18,698 y luego este último es opcional. 51 00:03:18,698 --> 00:03:21,900 En realidad podemos hacerlo sin este último, y es posible que todo esto sea falso, 52 00:03:21,900 --> 00:03:23,722 entonces no se ejecutará ninguno de estos bloques. 53 00:03:23,722 --> 00:03:30,484 Pero por la manera como lo tenemos ahí, entonces se ejecutará exactamente uno de estos bloques. 54 00:03:30,484 --> 00:03:37,017 ¿Está bien? Ahora bien, este es un caso en el que no importa si dices "if else-if else-if else", 55 00:03:37,017 --> 00:03:45,509 o simplemente usar la vieja y simple sentencia "if", como la teníamos en el principio: si "integer" es igual a 3. 56 00:03:45,509 --> 00:03:50,728 Y eso es porque es imposible para "integer" ser igual a 0 y luego ser igual a 1, 2 o 3. 57 00:03:50,728 --> 00:03:54,223 ¡Genia! Así que estas condiciones son mutuamente excluyentes. 58 00:03:54,223 --> 00:03:56,609 De cualquier manera sólo uno de estos bloques se ejecutará. 59 00:03:56,609 --> 00:03:58,278 Pero no siempre tenemos este caso. 60 00:03:58,278 --> 00:04:01,636 ¿Qué pasa si tratamos de hacer un juego como éste pero sin redondear a un entero? 61 00:04:01,636 --> 00:04:04,485 Así que me voy a deshacer de esta parte donde redondeamos, 62 00:04:04,485 --> 00:04:06,640 y de esta otra parte donde lo dibujamos en la pantalla. 63 00:04:06,640 --> 00:04:09,284 Y déjenme hacer nuevas reglas para mi juego. 64 00:04:09,284 --> 00:04:12,637 Entonces estoy generando un número entre 0 y 3, 65 00:04:12,637 --> 00:04:15,315 ponemos más marcas en nuestra recta numérica. 66 00:04:15,315 --> 00:04:23,378 Entonces digamos que si el número cae entre 0 y 1 rellenaremos de morado. 67 00:04:23,378 --> 00:04:26,153 Oh, eso no parece una "p". (purple=morado) Bueno... entienden. Ok. 68 00:04:26,153 --> 00:04:30,504 Y luego si está entre 1 y 2, lo rellenamos de amarillo. 69 00:04:30,504 --> 00:04:35,533 Y si está entre 2 y 3, lo rellenamos de rojo. 70 00:04:35,533 --> 00:04:38,651 ¡Genial! Entonces veamos cómo podemos hacer eso con "if" y con "else-if´s". 71 00:04:38,651 --> 00:04:43,542 Puedo empezar por decir si "number" es menor que 1, 72 00:04:43,542 --> 00:04:51,436 si es menor que 1, y sé que está entre 0 y 3, entonces debe estar en este rango, 73 00:04:51,436 --> 00:04:54,156 entonces selecciono el morado para rellenar. 74 00:04:54,156 --> 00:05:06,702 De otra manera, si "number" es menor que 2, selecciono el amarillo para rellenar... 255... 75 00:05:06,702 --> 00:05:12,523 Y de otra manera, relleno con rojo. 76 00:05:12,523 --> 00:05:15,596 ¡Genial! Y funciona de la manera prevista. 77 00:05:15,596 --> 00:05:19,307 Así que si "number" es menor que 1, entonces otra vez está en este rango. 78 00:05:19,307 --> 00:05:23,603 De otra manera, es mayor o igual que 1, pero también es menor que 2, 79 00:05:23,603 --> 00:05:26,732 eso lo pone en este rango, así que vamos a rellenar de amarillo. 80 00:05:26,732 --> 00:05:31,900 De otra manera, "number" debe ser mayor o igual que 2, así que cae en este rango. 81 00:05:31,900 --> 00:05:36,277 Y aquí hay un caso en el que no podemos decir simplemente que si "number" es menor que 2, 82 00:05:36,277 --> 00:05:39,650 y si "number" es menor que 3, 83 00:05:39,650 --> 00:05:42,932 porque si "number"es menor que 1, entonces es definitivamente menor que 2 84 00:05:42,932 --> 00:05:44,746 y también será menor que 3. 85 00:05:44,746 --> 00:05:46,781 Así que nuestra moneda terminará siendo roja siempre. 86 00:05:46,781 --> 00:05:51,741 Y es por eso que en este caso es realmente útil usar "else-if".