Material de Apoio IV
Estruturas de controle
Estruturas de controle:
O que são:
São estruturas capazes de controlar o fluxo e o acesso dos dados e aos dados, restringindo trechos do código, protegendo-o ou simplesmente separando-o.
Em Lua, temos à nossa disposição as estruturas de controle if, while, repeat e for. Falaremos hoje das estruturas formadas especificamente com o if.
O comando if:
O comando if, em português "se", restringe o fluxo caso a expressão atribuída a ele seja falsa, ou seja, somente executa caso seja verdade. Lembrando que qualquer resultado diferente de 0, false ou nil, torna a expressão verdadeira.
Sua lógica é bem simples:
if [expressão] then
logo,
se [expressão] então
Outra coisa que deve ser observada, é que a expressão sempre resulta em um valor booleano. Caso seja outra coisa qualquer, gerará um erro no código.
Cada estrutura if que é aberta, tem de ser fechada com o uso da estrutura end. Observe:
if [expressão] then Comandos end
logo,
se [expressão] então Comandos fim
Agora você vira e diz: "Ah isso é muito fácil. Já sou scripter?" e eu te respondo: "Calma lá jovem aventureiro, o buraco é mais escuro." Após ler e entender bem a estrutura acima, podemos passar à estrutura if-else.
Bom, mas o que é esta estrutura? Diferente da estrutura if simples, esta estrutura separa o fluxo de dados em dois caminhos distintos. O primeiro, é executado quando a expressão proposta é verdadeira, e o segundo só é executado quando a expressão não é verdadeira, ou seja, falsa. Podemos entendê-la em português como "se-senão". Como esta estrutura contém o if, ela deve também ser finalizada com o uso do end. Observe abaixo uma analogia:
if [expressão] then Comandos verdadeiros else Comandos falsos end
logo,
se [expressão] então Comandos verdadeiros senão Comandos falsos fim
Nesta estrutura citada acima, os "Comandos verdadeiros" serão executados quando a expressão for verdadeira e os "Comandos falsos", serão executados quando a expressão for falsa. "Que moleza hein!?" Ainda está bem fácil. Vamos esquentar um pouco mais. Agora vamos partir para a estrutura if-elseif, análoga a "se-mas se".
A estrutura formada com if-elseif é largamente utilizada por termos a possibilidade de fazermos várias expressões ao mesmo tempo, cada uma tendo como um retorno um comando específico. Veja sua sintaxe:
if [expressão] then Comandos elseif [expressão 2] then Comandos 2 elseif [expressão 3] then Comandos 3 end
logo,
se [expressão] então Comandos mas se [expressão 2] então Comandos 2 mas se [expressão 3] então Comandos 3 fim
Como podemos perceber, eu fiz múltiplas suposições para que o meu código testasse e, caso alguma seja satisfeita, os comandos a ela relacionados, serão executados.A próxima e penúltima estrutura, é a estrutura if-elseif-else, traduzindo seria "se-mas se-senão".
A estrutura if-elseif-else, apesar do nome, é bem fácil de ser compreendida. Na estrutura anterior, caso nenhuma das expressões resultasse em verdadeiro, nada seria executado. E essa é a diferença. Nesta nova estrutura, caso nenhuma expressão seja atendida, podemos ainda executar alguma coisa. Observe:
if [expressão] then Comandos elseif [expressão 2] then Comandos 2 else Comandos falsos end
logo,
se [expressão] então Comandos mas se [expressão 2] então Comandos 2 senão Comandos falsos fim
Nossa mas que tutorial gigante! Mas ainda não acabou! A última estrutura que veremos hoje é a que chamamos de aninhamento de if. É uma estrutura bem simples e sua função é a mesma que uma peneira. Ela vai refinando os dados e restringindo-os. Observe abaixo um exemplo:
if [expressão] then if [expressão 2] then if [expressão 3] then Comandos end end end
fazendo uma analogia ao português:
se [expressão] então se [expressão 2] então se [expressão 3] então Comandos fim fim fim
Fazendo uma análise mais criteriosa da estrutura, podemos ver que os comandos somente serão executados caso todas as expressões sejam verdadeiras. Todas as estruturas anteriores a esta, podem ser mescladas nesta última. Mas lembre-se de sempre obedecer as regras de finalização (end).
Acho que é só.
flw