1
00:00:01,061 --> 00:00:03,269
Aqui está onde paramos com
nosso jogo da moeda.
2
00:00:03,275 --> 00:00:06,338
Começamos gerando um número
aleatório entre 0 e 1,
3
00:00:06,338 --> 00:00:09,072
e então arredondando o número
para o inteiro mais próximo.
4
00:00:09,072 --> 00:00:12,152
Então isto nos deu um número
que era ou 0 ou 1.
5
00:00:12,152 --> 00:00:15,587
E então nós ilustramos nossa moeda
super-realista com esta elipse
6
00:00:15,587 --> 00:00:18,798
que era ou roxa ou amarela,
dependendo de qual número era.
7
00:00:18,798 --> 00:00:20,802
E aqui está o código onde fizemos isso.
8
00:00:20,802 --> 00:00:24,519
Dissemos que se o inteiro é igual a 0
defina a cor de preenchimento para roxa,
9
00:00:24,519 --> 00:00:26,332
caso contrário, defina como amarelo.
10
00:00:26,332 --> 00:00:27,978
E então desenhamos uma moeda aqui.
11
00:00:27,978 --> 00:00:30,939
Mas agora eu decidi que na verdade,
minha moeda tem três lados.
12
00:00:30,939 --> 00:00:32,563
Sim, uma moeda de três lados.
13
00:00:32,563 --> 00:00:34,444
Então vamos adicionar um terceiro lado.
14
00:00:34,444 --> 00:00:37,349
Começarei fazendo um número de 0 a 2,
15
00:00:37,349 --> 00:00:41,830
depois que arrendondarmos isso,
ele me dará um inteiro que será 0, 1 ou 2.
16
00:00:41,830 --> 00:00:43,924
Mas se olharmos para
o código de desenho,
17
00:00:43,924 --> 00:00:46,047
estamos contando apenas
para dois casos aqui.
18
00:00:46,047 --> 00:00:49,354
Então se o inteiro é 0, torne-a roxa,
caso contrário, torne-a amarela.
19
00:00:49,354 --> 00:00:52,005
Mas agora, 'caso contrário' pode
significar ou 1 ou 2.
20
00:00:52,005 --> 00:00:54,852
Mas espere, e se eu fizesse a
mesma coisa que fizemos antes,
21
00:00:54,852 --> 00:00:57,381
mas dentro deste bloco else.
Então escreverei apenas:
22
00:00:57,381 --> 00:01:03,666
if integer é igual a 1 então defina a
cor de preenchimento para amarela,
23
00:01:03,666 --> 00:01:05,631
como era antes.
24
00:01:05,631 --> 00:01:10,897
else, definiremos a cor para
vermelha. Vermelho está muito bom.
25
00:01:10,922 --> 00:01:15,453
O que isso significa é, se integer é
igual a 0, defina a cor para roxo.
26
00:01:15,504 --> 00:01:18,829
caso contrário, se é igual a 1,
nós a tornaremos amarela.
27
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.
28
00:01:24,333 --> 00:01:27,374
Pressiono reiniciar um monte de vezes.
Funciona!
29
00:01:28,554 --> 00:01:31,232
Logo, se quisermos adicionar
mais lados à minha moeda,
30
00:01:31,232 --> 00:01:35,681
eu posso subir aqui, e fazer de 0 até 3,
e depois aprofundar o bloco else
31
00:01:35,681 --> 00:01:37,866
e adicionar mais if-else's
e assim por diante,
32
00:01:37,866 --> 00:01:40,139
até eu ter zilhões de blocos aninhados.
33
00:01:40,139 --> 00:01:44,672
E apenas depois eu vou perceber que este
código está nojento! Quero dizer, grosso!
34
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.
35
00:01:48,649 --> 00:01:50,388
Por isso, isto é o que vamos fazer:
36
00:01:50,388 --> 00:01:53,047
Sempre que você tiver apenas
uma declaração if única
37
00:01:53,047 --> 00:01:55,461
ou uma declaração if-else
dentro de um bloco else
38
00:01:55,461 --> 00:01:58,682
tal que signifique que não faremos
nada mais fora destes blocos,
39
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.
40
00:02:04,969 --> 00:02:06,953
Tudo que temos é essa
única declaração if,
41
00:02:06,953 --> 00:02:08,724
e talvez ela venha com
um bloco else.
42
00:02:08,724 --> 00:02:12,824
Depois, podemos combinar esta condição
com a linha anterior e dizer:
43
00:02:12,824 --> 00:02:17,558
else if integer é igual a 1, defina a
cor de preenchimento para amarelo.
44
00:02:17,558 --> 00:02:20,436
e este último bloco else não está
aninhado em lugar algum,
45
00:02:20,436 --> 00:02:22,385
apenas vem bem no final por si só.
46
00:02:22,385 --> 00:02:23,151
Ótimo!
47
00:02:23,151 --> 00:02:27,557
Agora isso significa que, se integer
é igual a 0, defina a cor para roxo,
48
00:02:27,557 --> 00:02:30,059
caso contrário se integer é igual a 1,
defina a cor para amarelo,
49
00:02:30,099 --> 00:02:34,130
caso contrário, ou seja, se ambas forem
falsas, então defina-a para vermelho.
50
00:02:34,130 --> 00:02:37,611
Pressiono reiniciar um monte de vezes
e você pode ver que ainda funciona
51
00:02:37,611 --> 00:02:41,769
Ótimo! E a coisa legal disso é que podemos
ter quantos else-if 's quisermos,
52
00:02:41,769 --> 00:02:44,963
o que torna muito fácil para mim
adicionar mais lados à minha moeda.
53
00:02:44,963 --> 00:02:48,602
Então vamos fazer isso agora.
Farei um número entre 0 e 3,
54
00:02:48,602 --> 00:02:56,169
e então apenas adicionarei um bloco else
a mais: else if integer é igual a 2.
55
00:02:56,219 --> 00:02:58,259
Definiremos a cor de preenchimento para...
56
00:02:58,259 --> 00:03:00,685
bem, estava vermelha antes
então vamos mantê-la.
57
00:03:00,685 --> 00:03:04,262
Depois, este último bloco else será
para quando um integer for igual a 3,
58
00:03:04,262 --> 00:03:08,071
ele o tornará azul. Ótimo!
59
00:03:08,571 --> 00:03:09,551
Tudo certo. Então...
60
00:03:09,551 --> 00:03:13,084
para que façamos isso, você sempre terá
que começar com uma declaração if ,
61
00:03:13,084 --> 00:03:16,440
e depois você pode ter
quantos else-if 's quiser,
62
00:03:16,440 --> 00:03:18,284
e então este último cara é opcional.
63
00:03:18,284 --> 00:03:21,889
Na verdade, podemos fazer sem ele,
e é possível que todos estes sejam falso,
64
00:03:21,889 --> 00:03:23,782
então nenhum destes blocos é executado.
65
00:03:23,782 --> 00:03:25,733
Porém, contanto que tenhamos aquilo lá,
66
00:03:25,733 --> 00:03:29,969
então exatamente um destes
blocos será executado.
67
00:03:29,969 --> 00:03:36,285
Legal? Agora este é o caso onde você diz:
if else-if else-if else,
68
00:03:36,290 --> 00:03:41,522
ou apenas usa as boas e velhas declarações
if como tínhamos no início,
69
00:03:41,522 --> 00:03:45,760
então se o integer é igual a 3.
70
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.
71
00:03:51,287 --> 00:03:53,929
Ótimo. Então essas condições
são mutuamente exclusivas.
72
00:03:53,929 --> 00:03:56,915
Sempre, apenas um destes blocos
irá executar de qualquer forma.
73
00:03:56,915 --> 00:03:58,431
Mas esse não é sempre o caso.
74
00:03:58,431 --> 00:04:01,639
E se tentarmos criar um jogo como
este sem arrendondar um inteiro?
75
00:04:01,639 --> 00:04:04,062
Vou me livrar desta parte
onde nós o arredondamos,
76
00:04:04,062 --> 00:04:06,919
e a outra parte onde
nós desenhamos a tela.
77
00:04:06,919 --> 00:04:09,296
E vamos criar algumas regras
novas para o meu jogo.
78
00:04:09,296 --> 00:04:12,934
Então ainda estou gerando um
número entre 0 e 3,
79
00:04:12,934 --> 00:04:16,633
ponha mais alguma marca
de escala na linha de número.
80
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.
81
00:04:22,525 --> 00:04:26,680
Oh, isso não parece mesmo com
um 'p'. Você entendeu.
82
00:04:26,680 --> 00:04:31,057
E se cair entre 1 e 2,
podemos fazê-lo amarelo.
83
00:04:31,057 --> 00:04:34,501
E se cair entre 2 e 3, nós
o tornaremos vermelho.
84
00:04:34,501 --> 00:04:39,337
Ótimo. Vamos ver como podemos
fazer isso com if e else-if 's
85
00:04:39,337 --> 00:04:43,469
Eu posso começar dizendo se
um número é menor que 1,
86
00:04:43,469 --> 00:04:48,224
então se é menor que 1,
e eu sei que é entre 0 e 3,
87
00:04:48,224 --> 00:04:50,860
então deve estar neste intervalo,
88
00:04:50,860 --> 00:04:55,204
depois, eu definirei a cor de
preenchimento para ser roxa.
89
00:04:55,204 --> 00:05:01,803
Senão, se o número é menor que 2,
posso definir a cor de preenchimento
90
00:05:01,803 --> 00:05:05,312
para ser amarelo... 255...
91
00:05:06,652 --> 00:05:12,582
E caso contrário, definirei o
preenchimento para ser vermelho.
92
00:05:12,582 --> 00:05:16,181
Ótimo. Funciona exatamente
como pretendido.
93
00:05:16,181 --> 00:05:19,810
Se um número for menor que 1,
então novamente, está neste intervalo.
94
00:05:19,810 --> 00:05:23,544
Caso contrário, ser for mair que
ou igual a 1, mas for menor que 2,
95
00:05:23,544 --> 00:05:26,763
tal que o ponha neste intervalo,
iremos definir a cor para amarelo.
96
00:05:26,763 --> 00:05:31,622
Senão, ele será maior ou igual a 2,
então cairá naquele intervalo.
97
00:05:31,622 --> 00:05:36,173
E aqui está um caso que não poderíamos
dizer if number < 2,
98
00:05:36,173 --> 00:05:39,141
e if number < 3,
99
00:05:39,141 --> 00:05:42,755
porque se number é menor que 1,
então será definitivamente menor que 2,
100
00:05:42,755 --> 00:05:44,374
e também será menor que 3.
101
00:05:44,374 --> 00:05:46,800
Então nossa moeda sempre
irá terminar em vermelho,
102
00:05:46,800 --> 00:05:49,967
e é por isso que neste caso,
é realmente útil termos else-if.
103
00:05:49,967 --> 00:05:53,000
[Legendado por: Carlos A. N. C. R.]
[Revisado por: Fernando dos Reis]