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