-
Aqui está onde paramos com
nosso jogo da moeda.
-
Começamos gerando um número
aleatório entre 0 e 1,
-
e então arredondando o número
para o inteiro mais próximo.
-
Então isto nos deu um número
que era ou 0 ou 1.
-
E então nós ilustramos nossa moeda
super-realista com esta elipse
-
que era ou roxa ou amarela,
dependendo de qual número era.
-
E aqui está o código onde fizemos isso.
-
Dissemos que se o inteiro é igual a 0
defina a cor de preenchimento para roxa,
-
caso contrário, defina como amarelo.
-
E então desenhamos uma moeda aqui.
-
Mas agora eu decidi que na verdade,
minha moeda tem três lados.
-
Sim, uma moeda de três lados.
-
Então vamos adicionar um terceiro lado.
-
Começarei fazendo um número de 0 a 2,
-
depois que arrendondarmos isso,
ele me dará um inteiro que será 0, 1 ou 2.
-
Mas se olharmos para
o código de desenho,
-
estamos contando apenas
para dois casos aqui.
-
Então se o inteiro é 0, torne-a roxa,
caso contrário, torne-a amarela.
-
Mas agora, 'caso contrário' pode
significar ou 1 ou 2.
-
Mas espere, e se eu fizesse a
mesma coisa que fizemos antes,
-
mas dentro deste bloco else.
Então escreverei apenas:
-
if integer é igual a 1 então defina a
cor de preenchimento para amarela,
-
como era antes.
-
else, definiremos a cor para
vermelha. Vermelho está muito bom.
-
O que isso significa é, se integer é
igual a 0, defina a cor para roxo.
-
caso contrário, se é igual a 1,
nós a tornaremos amarela.
-
senão, ou seja, se não for 0, não for 1,
deve ser 2, tornaremos a cor vermelha.
-
Pressiono reiniciar um monte de vezes.
Funciona!
-
Logo, se quisermos adicionar
mais lados à minha moeda,
-
eu posso subir aqui, e fazer de 0 até 3,
e depois aprofundar o bloco else
-
e adicionar mais if-else's
e assim por diante,
-
até eu ter zilhões de blocos aninhados.
-
E apenas depois eu vou perceber que este
código está nojento! Quero dizer, grosso!
-
O código deve ser fácil de ler e bonito,
não tão feio quanto possível.
-
Por isso, isto é o que vamos fazer:
-
Sempre que você tiver apenas
uma declaração if única
-
ou uma declaração if-else
dentro de um bloco else
-
tal que signifique que não faremos
nada mais fora destes blocos,
-
não estamos definindo a cor do traço,
não temos mais declarações if, nada.
-
Tudo que temos é essa
única declaração if,
-
e talvez ela venha com
um bloco else.
-
Depois, podemos combinar esta condição
com a linha anterior e dizer:
-
else if integer é igual a 1, defina a
cor de preenchimento para amarelo.
-
e este último bloco else não está
aninhado em lugar algum,
-
apenas vem bem no final por si só.
-
Ótimo!
-
Agora isso significa que, se integer
é igual a 0, defina a cor para roxo,
-
caso contrário se integer é igual a 1,
defina a cor para amarelo,
-
caso contrário, ou seja, se ambas forem
falsas, então defina-a para vermelho.
-
Pressiono reiniciar um monte de vezes
e você pode ver que ainda funciona
-
Ótimo! E a coisa legal disso é que podemos
ter quantos else-if 's quisermos,
-
o que torna muito fácil para mim
adicionar mais lados à minha moeda.
-
Então vamos fazer isso agora.
Farei um número entre 0 e 3,
-
e então apenas adicionarei um bloco else
a mais: else if integer é igual a 2.
-
Definiremos a cor de preenchimento para...
-
bem, estava vermelha antes
então vamos mantê-la.
-
Depois, este último bloco else será
para quando um integer for igual a 3,
-
ele o tornará azul. Ótimo!
-
Tudo certo. Então...
-
para que façamos isso, você sempre terá
que começar com uma declaração if ,
-
e depois você pode ter
quantos else-if 's quiser,
-
e então este último cara é opcional.
-
Na verdade, podemos fazer sem ele,
e é possível que todos estes sejam falso,
-
então nenhum destes blocos é executado.
-
Porém, contanto que tenhamos aquilo lá,
-
então exatamente um destes
blocos será executado.
-
Legal? Agora este é o caso onde você diz:
if else-if else-if else,
-
ou apenas usa as boas e velhas declarações
if como tínhamos no início,
-
então se o integer é igual a 3.
-
E isso é porque nunca é possível para
integer ser igual a 0, e também 1, 2 ou 3.
-
Ótimo. Então essas condições
são mutuamente exclusivas.
-
Sempre, apenas um destes blocos
irá executar de qualquer forma.
-
Mas esse não é sempre o caso.
-
E se tentarmos criar um jogo como
este sem arrendondar um inteiro?
-
Vou me livrar desta parte
onde nós o arredondamos,
-
e a outra parte onde
nós desenhamos a tela.
-
E vamos criar algumas regras
novas para o meu jogo.
-
Então ainda estou gerando um
número entre 0 e 3,
-
ponha mais alguma marca
de escala na linha de número.
-
Vamos dizer que se o número cair
entre 0 e 1 nós o tornaremos roxo.
-
Oh, isso não parece mesmo com
um 'p'. Você entendeu.
-
E se cair entre 1 e 2,
podemos fazê-lo amarelo.
-
E se cair entre 2 e 3, nós
o tornaremos vermelho.
-
Ótimo. Vamos ver como podemos
fazer isso com if e else-if 's
-
Eu posso começar dizendo se
um número é menor que 1,
-
então se é menor que 1,
e eu sei que é entre 0 e 3,
-
então deve estar neste intervalo,
-
depois, eu definirei a cor de
preenchimento para ser roxa.
-
Senão, se o número é menor que 2,
posso definir a cor de preenchimento
-
para ser amarelo... 255...
-
E caso contrário, definirei o
preenchimento para ser vermelho.
-
Ótimo. Funciona exatamente
como pretendido.
-
Se um número for menor que 1,
então novamente, está neste intervalo.
-
Caso contrário, ser for mair que
ou igual a 1, mas for menor que 2,
-
tal que o ponha neste intervalo,
iremos definir a cor para amarelo.
-
Senão, ele será maior ou igual a 2,
então cairá naquele intervalo.
-
E aqui está um caso que não poderíamos
dizer if number < 2,
-
e if number < 3,
-
porque se number é menor que 1,
então será definitivamente menor que 2,
-
e também será menor que 3.
-
Então nossa moeda sempre
irá terminar em vermelho,
-
e é por isso que neste caso,
é realmente útil termos else-if.
-
[Legendado por: Carlos A. N. C. R.]
[Revisado por: Fernando dos Reis]