Estruturas de seleção: if-else
Produzido por Gustavo BarbosaTeoria
E aí pessoal, aqui é o Juan do Responde Aí, e hoje vamos começar as estruturas de controle em C++
Tomando decisões.
Na vida, estamos cercados por momentos de tomada de decisão
Em programação não é diferente.
Imagine que eu diga pra você fazer um programa para controlar um carro autônomo, você vai precisar informar que: “Se o sinal estiver vermelho, o carro deve parar. Se estiver amarelo, o carro deve desacelerar. Se estiver verde, deve seguir em frente”
Ou imagine o sistema de uma faculdade que diz: “Se a média do aluno é maior que 7, então ele está aprovado. Se a média é menor que 7, então está reprovado”.
Esses são exemplos de tomadas de decisão, que ocorrem quando o resultado do nosso código deve se adaptar às entradas do usuário ou variações do mundo real.
A forma mais comum de executar tomadas de decisão é usando estruturas de seleção. Hoje vamos estudar a estrutura .
O comando if
O é o principal comando de seleção. Em bom português significa “se”! Basicamente, o comando executa um pedaço de código se uma determinada condição for verdadeira.
Pra usar o comando temos que usar a seguinte estrutura:
Simples assim! Usamos o comando , entre parêntesis escrevemos a condição que deve ser testada, e entre as chaves escrevemos o código que será executado.
A condição pode ser qualquer expressão booleana cujo o resultado final seja (verdadeiro) ou (falso)
Então vamos ver um exemplo. Vamos fazer um código que exibe uma mensagem pro usuário caso a média dele seja maior ou igual a 7.
Nas linhas 08 e 09 a gente recebe o valor da média do usuário.
Nas linhas 11 a 14 aplicamos o comando e estabelecemos a condição de que o valor da média deve ser maior ou igual a 7 .
No Exemplo 1 o usuário inseriu o valor , logo a condição é verdadeira e a mensagem “Aluno aprovado” é exibida. No Exemplo 2 o usuário inseriu o valor , portanto a condição é falsa, e por isso a mensagem não é exibida.
Depois que passar pelo comando o programa continua seu fluxo normal e atinge a linha 16 que exibe a mensagem “Obrigado por usar o programa”.
Sacou? O comando só afeta o código que fica entre as chaves da estrutura!
O comando else
No caso do exemplo anterior, quando a condição é falsa o programa ignora o código entre as chaves e simplesmente continua a execução normal.
Mas e se a gente quiser inserir a mensagem “Aluno reprovado” sempre que a condição não for atendida? Pra isso existe o comando , ele executa um bloco de código sempre que as condições anteriores não forem atendidas! Traduzindo, significa “caso contrário”.
Pra utilizar o basta colocá-lo logo após fechar as chaves do comando anterior.
Note que o comando não precisa de parêntesis, precisa só do par de chaves, já que a condição dele sempre é que as condições anteriores não sejam atendidas.
Vamos voltar pro exemplo anterior. Vamos imprimir uma mensagem de “Aluno reprovado” quando a nota for menor que :
Nas linhas 08 e 09 a gente recebe o valor da média do usuário.
Nas linhas 11 a 18 construímos a estrutura onde uma mensagem será exibida se o valor da média for maior ou igual a 7 , e caso contrário uma mensagem diferente será exibida.
No Exemplo 1 o usuário inseriu o valor , logo a condição é verdadeira e a mensagem “Aluno aprovado” é exibida, o comando else é ignorado e o programa pula direto pra linha 20.
No Exemplo 2 o usuário inseriu o valor , portanto a condição é falsa, dessa forma o comando é ativado e a mensagem “Aluno reprovado” é exibida. Depois o programa continua seu fluxo normal e atinge a linha 20.
Sacou? O comando só é ativado quando o comando não é ativado.
O é a estrutura de seleção mais comum em qualquer linguagem de programação, eles estão por toda parte!
O comando else if
O comando é usando quando queremos adicionar múltiplas condições no nosso código. Olha só como ele é usado:
O só pode ser utilizado depois de um comando . Além disso você pode usá-lo quantas vezes quiser! Se você tiver 10 condições pra testar, por exemplo, use o comando no início, e use o comando nove vezes seguidas.
Vamos voltar pro exemplo. Imagine que na universidade um aluno é aprovado com média 7, mas se ficar com media maior ou igual a 4 ele tem direito a fazer a recuperação. E se ficar com media menor que 4 será reprovado:
Nas linhas 08 e 09 a gente recebe o valor da média do usuário. Nas linhas 11 a 22 construímos uma estrutura .
No Exemplo 1 o usuário inseriu o valor , logo a condição do é verdadeira e a mensagem “Aluno aprovado” é exibida. Os demais comandos da estrutura são ignorados e o programa pula direto pra linha 24.
No Exemplo 2 o usuário inseriu o valor , tornando a condição do falsa, porém a condição do é verdadeira, dessa forma a mensagem “Aluno de recuperacao” é exibida. O comando é ignorado, e o programa pula para a linha 24.
Já no Exemplo 3 o usuário inseriu o valor, tornando as duas condições falsas, dessa forma o comando é ativado e a mensagem “Aluno reprovado” é exibida. Depois o programa continua seu fluxo normal e atinge a linha 24.
Estruturas de decisão aninhadas.
No vocabulário de programação, aninhar significa “colocar uma coisa dentro da outra”. Quando a gente fala de aninhados queremos dizer que vamos colocar uma estrutura dentro das chaves de outra estrutura .
Pra clarear, vamos voltar ao nosso exemplo da universidade. Como já dissemos, média maior ou igual é aprovado. Média maior ou igual a resulta em recuperação. E média menor que é reprovado direto. Vamos agora fazer o seguinte: pros alunos que estiverem de recuperação vamos perguntar qual foi a nota da prova de recuperação. Se essa nota for maior que o aluno é aprovado, caso contrário ele será reprovado.
Eita... esse código ficou grandinho. Mas não se preocupe que ele não morde.
É basicamente o mesmo código de antes, mas com algumas modificações. Primeiro, a gente adicionou uma variável pra guardar a nota da recuperação do aluno.
Em seguida a gente ampliou o conteúdo dentro do . Além de imprimir a frase “Aluno de recuperação”, agora também vamos receber o valor da nota de recuperação nas linhas 18 e 19. E pra completar adicionamos um aninhado, que responde que o aluno foi aprovado se tiver tirado ou mais na recuperação, e diz que foi reprovado caso contrário, linhas 21 a 28.
Estruturas aninhadas são muito uteis, e você vai usar bastante enquanto estiver programando. Mas use com atenção, para não deixar seu código confuso e evitar erros.
Evitando erros comuns
Um erro muito comum entre iniciantes é achar que usar dois s teria o mesmo efeito que usar seguido de . Olhe os dois códigos abaixo.
Notou a diferença? Quando usamos duas expressões tudo que importa é se a condição é verdadeira ou falsa. Logo, se as duas condições são atendidas, os dois ’s serão executados.
Já quando temos um seguido de um , se o primeiro comando for verdadeiro o segundo não será executado.
As duas formas estão corretas, mas são usadas com objetivos diferentes! Pra evitar erros a dica é você pensar: “como meu código deve reagir se eu tiver mais de uma condição verdadeira?”.
Quando você usa múltiplos ’s o programa vai executar todos os blocos com condição verdadeira. Quando usamos um seguido de vários ’s o programa só vai executar o primeiro código com condição verdadeira.
E por hoje é isso pessoal. Vamos fazer uns exercícios de fixação.