Teoria

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 i f - e l s e .

O comando if

O i f é o principal comando de seleção. Em bom português i f significa “se”! Basicamente, o comando i f executa um pedaço de código se uma determinada condição for verdadeira.

Pra usar o comando i f   temos que usar a seguinte estrutura:

Simples assim! Usamos o comando i f , 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 t r u e (verdadeiro) ou f a l s e (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 i f e estabelecemos a condição de que o valor da média deve ser maior ou igual a 7 m e d i a > = 7 .

No Exemplo 1 o usuário inseriu o valor 7 , logo a condição é verdadeira e a mensagem “Aluno aprovado” é exibida. No Exemplo 2 o usuário inseriu o valor 5 , portanto a condição é falsa, e por isso a mensagem não é exibida.

Depois que passar pelo comando i f o programa continua seu fluxo normal e atinge a linha 16 que exibe a mensagem “Obrigado por usar o programa”.

Sacou? O comando i f 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 e l s e , ele executa um bloco de código sempre que as condições anteriores não forem atendidas! Traduzindo, e l s e significa “caso contrário”.

Pra utilizar o e l s e basta colocá-lo logo após fechar as chaves do comando anterior.

Note que o comando e l s e   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 7 :

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 i f - e l s e onde uma mensagem será exibida se o valor da média for maior ou igual a 7 m e d i a > = 7 , e caso contrário uma mensagem diferente será exibida.

No Exemplo 1 o usuário inseriu o valor 7 , 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 5 , portanto a condição é falsa, dessa forma o comando e l s e é ativado e a mensagem “Aluno reprovado” é exibida. Depois o programa continua seu fluxo normal e atinge a linha 20.

Sacou? O comando e l s e só é ativado quando o comando i f não é ativado.

O i f - e l s e é 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 e l s e   i f é usando quando queremos adicionar múltiplas condições no nosso código. Olha só como ele é usado:

O e l s e   i f só pode ser utilizado depois de um comando i f . Além disso você pode usá-lo quantas vezes quiser! Se você tiver 10 condições pra testar, por exemplo, use o comando i f no início, e use o comando e l s e   i f 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 i f - e l s e .

No Exemplo 1 o usuário inseriu o valor 8 , logo a condição do i f é 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 5 , tornando a condição do i f falsa, porém a condição do e l s e   i f é verdadeira, dessa forma a mensagem “Aluno de recuperacao” é exibida. O comando e l s e é ignorado, e o programa pula para a linha 24.

Já no Exemplo 3 o usuário inseriu o valor   3 , tornando as duas condições falsas, dessa forma o comando e l s e é 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 i f - e l s e aninhados queremos dizer que vamos colocar uma estrutura i f - e l s e dentro das chaves de outra estrutura i f - e l s e .

Pra clarear, vamos voltar ao nosso exemplo da universidade. Como já dissemos, média maior ou igual 7 é aprovado. Média maior ou igual a 4 resulta em recuperação. E média menor que 4 é 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 6 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 r e c u p e r a c a o pra guardar a nota da recuperação do aluno.

Em seguida a gente ampliou o conteúdo dentro do e l s e   i f . 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 i f - e l s e aninhado, que responde que o aluno foi aprovado se tiver tirado 6 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 i f s teria o mesmo efeito que usar i f seguido de e l s e   i f . Olhe os dois códigos abaixo.

Notou a diferença? Quando usamos duas expressões i f tudo que importa é se a condição é verdadeira ou falsa. Logo, se as duas condições são atendidas, os dois i f ’s serão executados.

Já quando temos um i f seguido de um e l s e   i f , 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 i f ’s o programa vai executar todos os blocos com condição verdadeira. Quando usamos um i f seguido de vários e l s e   i f ’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.

O comando if

O comando else

O comando else if

Estruturas de decisão aninhadas.

Evitando erros comuns