0:00:01.109,0:00:03.822 Aquí nos quedamos con nuestro juego de lanzamiento de monedas. 0:00:03.822,0:00:06.597 Empezamos generando un número aleatorio entre 0 y 1, 0:00:06.597,0:00:08.877 y luego redondeamos ese número al entero más cercano. 0:00:08.877,0:00:12.214 Eso nos daba un número que era 0 o 1. 0:00:12.214,0:00:18.909 Y luego ilustramos nuestra moneda súper realista con una elipse que era morada o amarilla, dependiendo del número. 0:00:18.909,0:00:20.987 Y aquí está el código con el que hicimos eso. 0:00:20.987,0:00:25.819 Entonces dijimos si "integer" es igual a 0 rellena de morado, de otra manera, rellena de amarillo. 0:00:25.819,0:00:27.917 Y luego dibujamos la moneda aquí abajo. 0:00:27.917,0:00:32.455 Pero ahora he decidido que mi moneda tiene en realidad 3 lados. Sí, una moneda de 3 lados. 0:00:32.455,0:00:34.190 Así que déjenme agregar el tercer lado. 0:00:34.190,0:00:37.109 Voy a empezar por generar un número entre 0 y 2, 0:00:37.109,0:00:41.533 así que después de redondear eso, me regresará un entero que será 0, 1 o 2. 0:00:41.533,0:00:45.609 Pero si miramos nuestro código de dibujo, sólo estamos contemplando dos casos aquí. 0:00:45.609,0:00:48.815 Si el entero es 0, rellenará de morado, de otra manera, rellenará de amarillo. 0:00:48.815,0:00:51.885 Pero ahora, "de otra manera" puede significar 1 o 2. 0:00:51.885,0:00:54.931 Pero esperen, ¿qué pasa si hago lo mismo que hice antes?, 0:00:54.931,0:00:57.403 pero dentro de este bloque "else". Así que sólo voy a decir: 0:00:57.403,0:01:04.933 Si "integer" es igual a 1 entonces rellena de amarillo, como estaba antes, 0:01:04.933,0:01:11.403 "else" rellenaremos de rojo. Rojo está bien. 0:01:11.403,0:01:15.478 Entonces lo que esto significa es que si "integer" es igual a 0 el color será morado, 0:01:15.478,0:01:18.984 de otra manera, si es 1, el color será amarillo; 0:01:18.984,0:01:24.611 de otra manera, es decir, si no es 0, ni 1, debe ser 2 y rellenaremos de rojo. 0:01:24.611,0:01:28.566 Presiono "restart" muchas veces. ¡Funciona! ¡Yu ju! 0:01:28.566,0:01:31.536 Entonces si quiero añadir más lados a mi moneda, 0:01:31.536,0: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, 0:01:37.987,0:01:40.158 hasta que tengamos miles de bloques anidados. 0:01:40.158,0:01:44.704 Y sólo entonces me daré cuenta de que este código es desagradable, quiero decir ¡grotesco! 0:01:44.704,0:01:48.351 Se supone que un código debe ser fácil de leer y bonito, no lo más feo posible. 0:01:48.351,0:01:50.070 Así que esto es lo que vamos a hacer: 0:01:50.070,0:01:55.675 Cuando tengas una sentencia "if" simple o una sentencia "if-else" dentro de un bloque "else", 0:01:55.675,0:01:58.313 significa que no estamos haciendo nada más fuera de estos bloques, 0:01:58.313,0:02:04.486 no estamos eligiendo el color del trazo, no tenemos ninguna sentencia "if", nada. 0:02:04.486,0:02:08.444 Todo lo que tenemos es una sentencia "if", y probablemente contenga un bloque "else". 0:02:08.444,0:02:13.156 Entonces en realidad podemos combinar esta condición con la línea anterior y decir: 0:02:13.156,0:02:17.073 "else if integer is = 1" (de otra manera, si "integer" es igual a 1), y establecer el color amarillo para rellenar. 0:02:17.073,0: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. 0:02:21.939,0:02:27.067 ¡Genial! Entonces lo que esto significa es: si "integer" es igual a 0 rellena de morado, 0:02:27.067,0:02:30.235 de otra manera si "integer" es igual a 1, rellena de amarillo, 0:02:30.235,0:02:34.484 de otra manera, si estas dos condiciones anteriores fueron falsas entonces rellena de rojo. 0:02:34.484,0:02:37.738 Si presiono "Restart" muchas veces, puedes ver que sigue funcionando. 0:02:37.738,0:02:41.824 ¡Genial! Y lo interesante de esto es que podemos tener todos los "else-if" que queramos, 0:02:41.824,0:02:44.703 lo que me hace fácil añadir más lados en mi moneda. 0:02:44.703,0:02:48.009 Hagamos eso ahora. Voy a generar un número entre 0 y 3, 0:02:48.009,0:02:56.058 y luego voy a añadir otro bloque "else" que diga: de otra manera si "integer" es igual a 2 0:02:56.135,0:02:59.658 rellenaremos de... bueno antes era rojo, podemos dejar el rojo. 0:02:59.658,0:03:03.208 Y luego este último bloque "else" será para cuando "integer" sea igual a 3, 0:03:03.208,0:03:08.499 rellenaremos de azul. ¡Genial! 0:03:08.499,0:03:12.816 Muy bien. Así que para hacer esto, siempre tienes que empezar con una sentencia "if", 0:03:12.816,0:03:16.910 y luego puedes tener todos los "else-if" que quieras, 0:03:16.910,0:03:18.698 y luego este último es opcional. 0:03:18.698,0:03:21.900 En realidad podemos hacerlo sin este último, y es posible que todo esto sea falso, 0:03:21.900,0:03:23.722 entonces no se ejecutará ninguno de estos bloques. 0:03:23.722,0:03:30.484 Pero por la manera como lo tenemos ahí, entonces se ejecutará exactamente uno de estos bloques. 0:03:30.484,0:03:37.017 ¿Está bien? Ahora bien, este es un caso en el que no importa si dices "if else-if else-if else", 0:03:37.017,0: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. 0:03:45.509,0:03:50.728 Y eso es porque es imposible para "integer" ser igual a 0 y luego ser igual a 1, 2 o 3. 0:03:50.728,0:03:54.223 ¡Genia! Así que estas condiciones son mutuamente excluyentes. 0:03:54.223,0:03:56.609 De cualquier manera sólo uno de estos bloques se ejecutará. 0:03:56.609,0:03:58.278 Pero no siempre tenemos este caso. 0:03:58.278,0:04:01.636 ¿Qué pasa si tratamos de hacer un juego como éste pero sin redondear a un entero? 0:04:01.636,0:04:04.485 Así que me voy a deshacer de esta parte donde redondeamos, 0:04:04.485,0:04:06.640 y de esta otra parte donde lo dibujamos en la pantalla. 0:04:06.640,0:04:09.284 Y déjenme hacer nuevas reglas para mi juego. 0:04:09.284,0:04:12.637 Entonces estoy generando un número entre 0 y 3, 0:04:12.637,0:04:15.315 ponemos más marcas en nuestra recta numérica. 0:04:15.315,0:04:23.378 Entonces digamos que si el número cae entre 0 y 1 rellenaremos de morado. 0:04:23.378,0:04:26.153 Oh, eso no parece una "p". (purple=morado) Bueno... entienden. Ok. 0:04:26.153,0:04:30.504 Y luego si está entre 1 y 2, lo rellenamos de amarillo. 0:04:30.504,0:04:35.533 Y si está entre 2 y 3, lo rellenamos de rojo. 0:04:35.533,0:04:38.651 ¡Genial! Entonces veamos cómo podemos hacer eso con "if" y con "else-if´s". 0:04:38.651,0:04:43.542 Puedo empezar por decir si "number" es menor que 1, 0:04:43.542,0:04:51.436 si es menor que 1, y sé que está entre 0 y 3, entonces debe estar en este rango, 0:04:51.436,0:04:54.156 entonces selecciono el morado para rellenar. 0:04:54.156,0:05:06.702 De otra manera, si "number" es menor que 2, selecciono el amarillo para rellenar... 255... 0:05:06.702,0:05:12.523 Y de otra manera, relleno con rojo. 0:05:12.523,0:05:15.596 ¡Genial! Y funciona de la manera prevista. 0:05:15.596,0:05:19.307 Así que si "number" es menor que 1, entonces otra vez está en este rango. 0:05:19.307,0:05:23.603 De otra manera, es mayor o igual que 1, pero también es menor que 2, 0:05:23.603,0:05:26.732 eso lo pone en este rango, así que vamos a rellenar de amarillo. 0:05:26.732,0:05:31.900 De otra manera, "number" debe ser mayor o igual que 2, así que cae en este rango. 0:05:31.900,0:05:36.277 Y aquí hay un caso en el que no podemos decir simplemente que si "number" es menor que 2, 0:05:36.277,0:05:39.650 y si "number" es menor que 3, 0:05:39.650,0:05:42.932 porque si "number"es menor que 1, entonces es definitivamente menor que 2 0:05:42.932,0:05:44.746 y también será menor que 3. 0:05:44.746,0:05:46.781 Así que nuestra moneda terminará siendo roja siempre. 0:05:46.781,0:05:51.741 Y es por eso que en este caso es realmente útil usar "else-if".