WEBVTT 00:00:01.061 --> 00:00:03.269 Aqui está onde paramos com nosso jogo da moeda. 00:00:03.275 --> 00:00:06.338 Começamos gerando um número aleatório entre 0 e 1, 00:00:06.338 --> 00:00:09.072 e então arredondando o número para o inteiro mais próximo. 00:00:09.072 --> 00:00:12.152 Então isto nos deu um número que era ou 0 ou 1. 00:00:12.152 --> 00:00:15.587 E então nós ilustramos nossa moeda super-realista com esta elipse 00:00:15.587 --> 00:00:18.798 que era ou roxa ou amarela, dependendo de qual número era. 00:00:18.798 --> 00:00:20.802 E aqui está o código onde fizemos isso. 00:00:20.802 --> 00:00:24.519 Dissemos que se o inteiro é igual a 0 defina a cor de preenchimento para roxa, 00:00:24.519 --> 00:00:26.332 caso contrário, defina como amarelo. 00:00:26.332 --> 00:00:27.978 E então desenhamos uma moeda aqui. 00:00:27.978 --> 00:00:30.939 Mas agora eu decidi que na verdade, minha moeda tem três lados. 00:00:30.939 --> 00:00:32.563 Sim, uma moeda de três lados. 00:00:32.563 --> 00:00:34.444 Então vamos adicionar um terceiro lado. 00:00:34.444 --> 00:00:37.349 Começarei fazendo um número de 0 a 2, 00:00:37.349 --> 00:00:41.830 depois que arrendondarmos isso, ele me dará um inteiro que será 0, 1 ou 2. 00:00:41.830 --> 00:00:43.924 Mas se olharmos para o código de desenho, 00:00:43.924 --> 00:00:46.047 estamos contando apenas para dois casos aqui. 00:00:46.047 --> 00:00:49.354 Então se o inteiro é 0, torne-a roxa, caso contrário, torne-a amarela. 00:00:49.354 --> 00:00:52.005 Mas agora, 'caso contrário' pode significar ou 1 ou 2. 00:00:52.005 --> 00:00:54.852 Mas espere, e se eu fizesse a mesma coisa que fizemos antes, 00:00:54.852 --> 00:00:57.381 mas dentro deste bloco else. Então escreverei apenas: 00:00:57.381 --> 00:01:03.666 if integer é igual a 1 então defina a cor de preenchimento para amarela, 00:01:03.666 --> 00:01:05.631 como era antes. 00:01:05.631 --> 00:01:10.897 else, definiremos a cor para vermelha. Vermelho está muito bom. 00:01:10.922 --> 00:01:15.453 O que isso significa é, se integer é igual a 0, defina a cor para roxo. 00:01:15.504 --> 00:01:18.829 caso contrário, se é igual a 1, nós a tornaremos amarela. 00:01:18.966 --> 00:01:24.333 senão, ou seja, se não for 0, não for 1, deve ser 2, tornaremos a cor vermelha. 00:01:24.333 --> 00:01:27.374 Pressiono reiniciar um monte de vezes. Funciona! 00:01:28.554 --> 00:01:31.232 Logo, se quisermos adicionar mais lados à minha moeda, 00:01:31.232 --> 00:01:35.681 eu posso subir aqui, e fazer de 0 até 3, e depois aprofundar o bloco else 00:01:35.681 --> 00:01:37.866 e adicionar mais if-else's e assim por diante, 00:01:37.866 --> 00:01:40.139 até eu ter zilhões de blocos aninhados. 00:01:40.139 --> 00:01:44.672 E apenas depois eu vou perceber que este código está nojento! Quero dizer, grosso! 00:01:44.672 --> 00:01:48.649 O código deve ser fácil de ler e bonito, não tão feio quanto possível. 00:01:48.649 --> 00:01:50.388 Por isso, isto é o que vamos fazer: 00:01:50.388 --> 00:01:53.047 Sempre que você tiver apenas uma declaração if única 00:01:53.047 --> 00:01:55.461 ou uma declaração if-else dentro de um bloco else 00:01:55.461 --> 00:01:58.682 tal que signifique que não faremos nada mais fora destes blocos, 00:01:58.682 --> 00:02:04.969 não estamos definindo a cor do traço, não temos mais declarações if, nada. 00:02:04.969 --> 00:02:06.953 Tudo que temos é essa única declaração if, 00:02:06.953 --> 00:02:08.724 e talvez ela venha com um bloco else. 00:02:08.724 --> 00:02:12.824 Depois, podemos combinar esta condição com a linha anterior e dizer: 00:02:12.824 --> 00:02:17.558 else if integer é igual a 1, defina a cor de preenchimento para amarelo. 00:02:17.558 --> 00:02:20.436 e este último bloco else não está aninhado em lugar algum, 00:02:20.436 --> 00:02:22.385 apenas vem bem no final por si só. 00:02:22.385 --> 00:02:23.151 Ótimo! 00:02:23.151 --> 00:02:27.557 Agora isso significa que, se integer é igual a 0, defina a cor para roxo, 00:02:27.557 --> 00:02:30.059 caso contrário se integer é igual a 1, defina a cor para amarelo, 00:02:30.099 --> 00:02:34.130 caso contrário, ou seja, se ambas forem falsas, então defina-a para vermelho. 00:02:34.130 --> 00:02:37.611 Pressiono reiniciar um monte de vezes e você pode ver que ainda funciona 00:02:37.611 --> 00:02:41.769 Ótimo! E a coisa legal disso é que podemos ter quantos else-if 's quisermos, 00:02:41.769 --> 00:02:44.963 o que torna muito fácil para mim adicionar mais lados à minha moeda. 00:02:44.963 --> 00:02:48.602 Então vamos fazer isso agora. Farei um número entre 0 e 3, 00:02:48.602 --> 00:02:56.169 e então apenas adicionarei um bloco else a mais: else if integer é igual a 2. 00:02:56.219 --> 00:02:58.259 Definiremos a cor de preenchimento para... 00:02:58.259 --> 00:03:00.685 bem, estava vermelha antes então vamos mantê-la. 00:03:00.685 --> 00:03:04.262 Depois, este último bloco else será para quando um integer for igual a 3, 00:03:04.262 --> 00:03:08.071 ele o tornará azul. Ótimo! 00:03:08.571 --> 00:03:09.551 Tudo certo. Então... 00:03:09.551 --> 00:03:13.084 para que façamos isso, você sempre terá que começar com uma declaração if , 00:03:13.084 --> 00:03:16.440 e depois você pode ter quantos else-if 's quiser, 00:03:16.440 --> 00:03:18.284 e então este último cara é opcional. 00:03:18.284 --> 00:03:21.889 Na verdade, podemos fazer sem ele, e é possível que todos estes sejam falso, 00:03:21.889 --> 00:03:23.782 então nenhum destes blocos é executado. 00:03:23.782 --> 00:03:25.733 Porém, contanto que tenhamos aquilo lá, 00:03:25.733 --> 00:03:29.969 então exatamente um destes blocos será executado. 00:03:29.969 --> 00:03:36.285 Legal? Agora este é o caso onde você diz: if else-if else-if else, 00:03:36.290 --> 00:03:41.522 ou apenas usa as boas e velhas declarações if como tínhamos no início, 00:03:41.522 --> 00:03:45.760 então se o integer é igual a 3. 00:03:45.760 --> 00:03:51.287 E isso é porque nunca é possível para integer ser igual a 0, e também 1, 2 ou 3. 00:03:51.287 --> 00:03:53.929 Ótimo. Então essas condições são mutuamente exclusivas. 00:03:53.929 --> 00:03:56.915 Sempre, apenas um destes blocos irá executar de qualquer forma. 00:03:56.915 --> 00:03:58.431 Mas esse não é sempre o caso. 00:03:58.431 --> 00:04:01.639 E se tentarmos criar um jogo como este sem arrendondar um inteiro? 00:04:01.639 --> 00:04:04.062 Vou me livrar desta parte onde nós o arredondamos, 00:04:04.062 --> 00:04:06.919 e a outra parte onde nós desenhamos a tela. 00:04:06.919 --> 00:04:09.296 E vamos criar algumas regras novas para o meu jogo. 00:04:09.296 --> 00:04:12.934 Então ainda estou gerando um número entre 0 e 3, 00:04:12.934 --> 00:04:16.633 ponha mais alguma marca de escala na linha de número. 00:04:16.633 --> 00:04:22.525 Vamos dizer que se o número cair entre 0 e 1 nós o tornaremos roxo. 00:04:22.525 --> 00:04:26.680 Oh, isso não parece mesmo com um 'p'. Você entendeu. 00:04:26.680 --> 00:04:31.057 E se cair entre 1 e 2, podemos fazê-lo amarelo. 00:04:31.057 --> 00:04:34.501 E se cair entre 2 e 3, nós o tornaremos vermelho. 00:04:34.501 --> 00:04:39.337 Ótimo. Vamos ver como podemos fazer isso com if e else-if 's 00:04:39.337 --> 00:04:43.469 Eu posso começar dizendo se um número é menor que 1, 00:04:43.469 --> 00:04:48.224 então se é menor que 1, e eu sei que é entre 0 e 3, 00:04:48.224 --> 00:04:50.860 então deve estar neste intervalo, 00:04:50.860 --> 00:04:55.204 depois, eu definirei a cor de preenchimento para ser roxa. 00:04:55.204 --> 00:05:01.803 Senão, se o número é menor que 2, posso definir a cor de preenchimento 00:05:01.803 --> 00:05:05.312 para ser amarelo... 255... 00:05:06.652 --> 00:05:12.582 E caso contrário, definirei o preenchimento para ser vermelho. 00:05:12.582 --> 00:05:16.181 Ótimo. Funciona exatamente como pretendido. 00:05:16.181 --> 00:05:19.810 Se um número for menor que 1, então novamente, está neste intervalo. 00:05:19.810 --> 00:05:23.544 Caso contrário, ser for mair que ou igual a 1, mas for menor que 2, 00:05:23.544 --> 00:05:26.763 tal que o ponha neste intervalo, iremos definir a cor para amarelo. 00:05:26.763 --> 00:05:31.622 Senão, ele será maior ou igual a 2, então cairá naquele intervalo. 00:05:31.622 --> 00:05:36.173 E aqui está um caso que não poderíamos dizer if number < 2, 00:05:36.173 --> 00:05:39.141 e if number < 3, 00:05:39.141 --> 00:05:42.755 porque se number é menor que 1, então será definitivamente menor que 2, 00:05:42.755 --> 00:05:44.374 e também será menor que 3. 00:05:44.374 --> 00:05:46.800 Então nossa moeda sempre irá terminar em vermelho, 00:05:46.800 --> 00:05:49.967 e é por isso que neste caso, é realmente útil termos else-if. 00:05:49.967 --> 00:05:53.000 [Legendado por: Carlos A. N. C. R.] [Revisado por: Fernando dos Reis]