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]