- IF / ELSE
- IF / ELSIF / ELSE
O comando IF e ELSE
Em nosso tutorial passado, sobre o teste condicional IF, aprendemos que essa instrução permite que determinado trecho do código (dentro do IF), só seja executado mediante um teste, onde uma expressão deve resultar no valor VERDADE.Porém, o código só executa se o teste for verdadeiro.
E se for falso? É aí que entra o comando ELSE.
O escopo dessa estrutura é:
if ( expressão ){ # código caso a expressão # seja verdadeira }else{ # código caso a expressão # seja falsa }
Exemplo de IF e ELSE em Perl
Vamos refazer o exercício:- Você foi contratado para criar um script para uma boate. Nele, você pergunta a idade da pessoa e se ela tiver 18 anos ou mais, avisa que ela pode entrar.
Vamos adicionar um comando else, que é acionado quando a pessoa tem menos de 18 anos, veja como fica:
#!/usr/bin/perl print "Digite sua idade: "; chomp($age=<STDIN>); if($age>=18){ print "Você é de maior, pode entrar\n"; }else{ print "Você é de menor, não pode entrar\n"; }Antes só aparecia uma mensagem para o usuário se ele fosse de maior, pois entrava no IF.
Agora, se ele for de menor, vai cair no ELSE e exibimos outra mensagem.
Veja que passamos a ter maior 'controle' sobre o fluxo de execução de nossos scripts em Perl.
Vamos refazer o outro exercício:
- Você tem que criar um trecho de um código onde você vai pedir uma senha para o usuário, e vai permitir que ele entre no sistema somente se digitar a senha correta, que é rush2112.
#!/usr/bin/perl print "Digite a senha: "; chomp($password=<STDIN>); if($password eq 'rush2112'){ print "Senha correta, entrando no sistema...\n"; }else{ print "Senha incorreta! Invasão cancelada\n"; }Se você errar a senha, o script vai te pegar!
IF e ELSE aninhados
Uma técnica bastante comum em programação é usar teste condicional dentro de outros testes condicionais. Vamos criar um script que recebe dois números e diz qual o maior e o menor, ou se são iguais.Primeiro, testamos se $a é maior $b, se for, ok, cai no primeiro IF e acaba.
Se não for, vai cair no ELSE.
Nesse ELSE, já sabemos que $a não é maior que $b, então ou são iguais ou $b é maior que $a.
Agora, lá dentro do ELSE, vamos usar outra estrutura, um IF perguntando se $b é maior que $a.
Se for, avisa isso e encerra o programa.
Se $b não for maior que $a (e $a já não era maior que $b), então são números iguais, e essa possibilidade cai num ELSE interno ao primeiro ELSE.
Veja como fica o código:
#!/usr/bin/perl print "Primeiro numero: "; chomp($a=<STDIN>); print "Segundo numero : "; chomp($b=<STDIN>); if($a > $b){ print "$a é maior que $b\n"; }else{ if($b > $a){ print "$b é maior que $a\n"; }else{ print "$a é igual a $b\n"; } }O IF pode existir sozinho, como vimos no tutorial passado.
Mas para cada ELSE, existe seu IF.
Colocamos o código bem indentado, ou seja, espaçado de modo a vermos os pares de IF e ELSE.
IF / ELSIF / ELSE
Crie um programa que pede uma nota de 0 até 10 ao usuário.Se for 9 ou mais, diga que ele tirou nota A.
Se for de 8 até 9, diga que tirou nota B.
Se for de 7 até 6, diga que tirou nota C.
Se for de 6 até 7, diga que tirou nota D.
Abaixo de 6 tira nota F.
Primeiro, testamos se a nota é maior ou igual a nove. Se for, damos nota A.
Se não for maior ou igual a 9, é porque é menor que 9, então vamos testar se é maior que 8, se for tirou nota B.
Se não for, é porque tirou abaixo de 8.
Testamos agora se é maior que 7, se for ele tirou nota C.
Se não é maior que 7, é menor. Então testamos se é maior que 6, se for dizemos que tirou nota D.
Por fim, se não cair em nenhum caso acima, cai no ELSE final e dizemos que tirou nota F, pois tirou menos que 6.
Veja como fica o código:
#!/usr/bin/perl print "Sua nota: "; chomp($grade=<STDIN>); if($grade>=9){ print "Nota A, parabéns.\n" }else{ if($grade>=8){ print "Nota B\n"; }else{ if($grade>=7){ print "Nota C\n"; }else{ if($grade>=6){ print "Nota D\n"; }else{ print "Nota F\n"; } } } }Note como ele vai 'quebrando' e indo pra direita.
Num script maior e mais complexo, isso vai ficando horrendamente feio.
Veja que o trecho: else{ if ... acontece mais de uma vez.
Podemos abreviar essas linhas para simplesmente: elsif (expressão)
Vamos ver como nosso código fica usando ELSIF:
#!/usr/bin/perl print "Sua nota: "; chomp($grade=<STDIN>); if($grade>=9){ print "Nota A, parabéns.\n" }elsif($grade>=8){ print "Nota B\n"; }elsif($grade>=7){ print "Nota C\n"; }elsif($grade>=6){ print "Nota D\n"; }else{ print "Nota F\n"; }Bem mais bonito de se ver, entender e organizado, não concorda?
Nenhum comentário:
Postar um comentário