Estruturas de seleção: switch-case
Teoria
E aí pessoal, aqui é o Juan do Responde Aí, e hoje vamos estudar mais sobre estruturas de seleção.
Nós já vimos que podemos fazer o código seguir rumos diferentes de acordo com certas condições utilizando a estrutura . Hoje vamos ver uma alternativa chamada .
A estrutura switch case
Situações condicionais podem aparecer de muitas formas nos nossos códigos. Dependendo da forma que ela aparecer utilizar a estrutura pode ser trabalhoso ou deixar os códigos longos e difíceis de ler.
É aí que entra em cena o astro de hoje: . Essa estrutura de seleção é escrita de uma maneira diferente, e por isso pode ser mais prática em alguns casos. Saca só:
Quando o entra em ação, o C++ calcula o resultado da entre parêntesis. Depois ele olha cada um dos e se o for igual ao resultado da expressão, o código é executado. No caso de não haver nenhuma correspondência, então o é executado. O termo indica o final de um caso.
Pra ficar mais claro, vamos ver um exemplo:
Primeiro pedimos pro usuário inserir uma letra, e guardamos a letra na variável .
O começa na linha 13, e nesse exemplo a avaliada é simplesmente o valor da variável .
Logo em seguida o compilador vai testar cada um dos Se o usuário tiver digitado , o da linha 15 vai ser executado.
Se o usuário digitar o da linha 18 será executado. E se o usuário pressionar qualquer outra coisa, o na linha 21 entra em ação.
Regras
Pra evitar erros na hora de construir seus códigos, vale dar uma olhada nessas regras básicas da estrutura :
- O resultado da tem que ser do tipo inteiro (), caractere () ou booleano (). Resultados de outro tipo resultam em erros.
- Você não pode ter dois com o mesmo valor, pois isso cria uma instrução ambígua.
- Você pode usar quantos quiser!
- O marca o final de cada caso. Não esqueça dele!
- O é opcional e vêm sempre no final da estrutura.
If ou switch... eis a questão:
De maneira geral, tudo que dá pra fazer com dá pra fazer com e vice versa. Porém, nem sempre é prático...
Na maioria das vezes, a estrutura é mais vantajosa, e por isso é muito mais comum.
A gente costuma usar o quando temos uma expressão simples, mas que os resultados possam ser muito variados. Por isso, o principal uso do é pra criar menu de opção em programas e aplicativos.
Uma dica que pode ajudar é pensar no como uma estrutura para decisões mais complexas, e pensar no como um painel cheio de botões.
E é isso! Pra entender melhor, o ideal é fazer uns exercícios de fixação.
Regras
If ou switch... eis a questão:
Exercícios Resolvidos
Exercício Resolvido #1
Elaboração Própria
Observe o código abaixo.
O que acontece se o usuário digitar ? E se o usuário digitar ?
Passo 1
E aí pessoal, essa é uma questão de analisar códigos! Então vamos lá por partes.
Na linha 6 é declarada uma variável inteira. Na linha 9, é impressa na tela uma mensagem perguntando ao usuário o valor dessa variável. E na linha 10, esse valor é atribuído à variável.
Na linha começa uma estrutura , com a afirmação à direita do comando . Com esse comando, a expressão é avaliada e ela pode ser verdadeira () ou falsa ().
Quando o resultado da expressão é a condição da linha 15 é atendida, então e a mensagem “O numero eh positivo” é exibida.
Quando o resultado da expressão é a condição da linha 18 é atendida, então e a mensagem “O numero eh negativo” é exibida.
Então agora vamos ver o que acontece no caso dos números 12 e -3, como o enunciado perguntou?
Passo 2
Se o usuário tiver inserido o valor , então temos o caso em que a variável é maior do que zero. Portanto a expressão é resolvida dessa forma:
Quando o resultado da expressão é a condição da linha 15 é atendida, então e a mensagem “O numero eh positivo” é exibida.
Passo 3
Mas se o usuário tiver inserido o valor , temos o caso em que a variável é menor do que zero. Portanto a expressão fica:
Dessa forma, o código dentro do primeiro é ignorado. Em seguida o código pula pra linha 18 aqui a condição é atendida, e a mensagem “O numero eh negativo” é exibida.
Resposta
Se o usuário tiver inserido o valor a mensagem “O numero eh positivo” é exibida.
Se o usuário tiver inserido o valor a mensagem “O numero eh negativo” é exibida.
Exercício Resolvido #2
Elaboração Própria
Um estudante escreveu um código que recebe um número entre 1 e 7, e dá como resposta o dia da semana equivalente: 1 é domingo, 2 é segunda, e assim por diante até chegar em 7 que é sábado.
Porém, o código que ele escreveu tem um erro:
- O que acontece se rodar o código com este erro? Por que isso ocorre?
- Encontre o erro e reescreva o código corrigido
Passo 1
E aí pessoal!
A questão pede pra gente rodar o código. Então vamos lá!
O programa vai pedir pra gente digitar um número, eu vou digitar o número :
Olha só que estranho, ao invés de responder com “Segunda”, o programa mostra todas as os dias da semana seguinte também.
Passo 2
Vamos voltar pro programa e entender o motivo.
Primeiro, nas linhas 08 a 10 o programa pede pra gente inserir um número. No nosso caso, eu inseri o número 2.
Então, o programa avança para a linha 13, onde o recebe o valor que digitamos
Seguindo em frente, o programa testa a condição da linha 15, e não é correspondente
Ele pula então pra próxima condição, na linha 18. Esse é igual ao valor digitado, então o programa entra na linha 19 e imprime a mensagem “Segunda”
E é a partir daqui que os problemas começam. Não existe nenhuma mensagem de finalização do comando! Então, o programa continua entrando nas expressões seguintes.
Em outras palavras, está faltando o comando
Passo 3
Agora que já temos o problema diagnosticado, vamos corrigi-lo. Tudo que precisamos fazer é adicionar o comando ao final de cada
E pra deixar o programa mais elegante, vamos adicionar um comando , pro caso do usuário inserir um valor que não seja de a , será impressa uma mensagem de “Valor invalido”
E prontinho! Questão feita!
Resposta
Exercício Resolvido #3
UFOP – BCC201 – Departamento de Computação
Codifique um programa que faça a leitura de dois números reais. A seguir o programa lê um caractere, que deve ser ,, ou , e realiza a operação indicada pelo caractere sobre os valores lidos. O programa deve imprimir o resultado da operação realizada sobre eles, como mostra o exemplo a seguir:
Exemplo de saída: “”
Passo 1
Bora lá pessoal!
A questão pediu pra gente fazer uma calculadora que trabalha com dois números. Então, vamos começar declarando duas variáveis e do tipo . Vamos declarar também uma outra variável para guardar o resultado chamada .
Em seguida vamos precisar receber um caractere que representa a operação matemática. Então vamos declarar mais uma variável do tipo chamada
Passo 2
Agora vamos pedir os valores pro usuário. Usando o vamos enviar uma mensagem pedindo cada valor, e com vamos ler os valores.
Passo 3
Pra efetuar a seleção de operação podemos usar o comando para conferir o valor de uma variável e selecionar a operação correta.
Primeiro, vamos pedir pro usuário inserir um dos caracteres correspondentes ser ,, ou :
E agora vamos usar a função para conferir o valor da variável
Tudo certo! Agora vamos criar os casos. O primeiro ocorre quando a variável tem o valor . A gente executa a soma e guarda o resultado na variável , depois utiliza o para imprimir a operação. E finalizamos o caso utilizando o
Depois repetimos o mesmo processo pras demais operações:
E pra finalizar a questão, vamos usar o comando pro caso de o usuário inserir um caractere inválido ele receber uma mensagem de aviso:
Resposta
Exercício Resolvido #4
PUCRS – Slide de Aula
Faça um programa que leia um número entre 0 e 10, e escreva este número por extenso.
Passo 1
Vamos lá pessoal.
A questão não tem segredo. Vamos receber um número do usuário e em seguida vamos usar uma estrutura para escrever o número por extenso na tela.
Pra começar, vamos declarar a variável inteira , que vai guardar o valor do número que receberemos do usuário
Passo 2
Em seguida, vamos usar o para pedir pro usuário inserir um número de 0 a 10, e com o guardamos o valor na variável
Passo 3
Agora vamos usar o para avaliar o valor contido na variável, e em seguida vamos usar o para rodar o código adequado.
Por exemplo, se o valor contido for zero então vamos escrever o texto “zero” na tela:
Outro exemplo, se o valor contido em for , então escrevemos o “Um”:
E repetimos esse processo pros outros números até o 10:
E pra deixar nossa solução mais legal, vamos adicionar o , assim, se o usuário digitar um valor que não seja um número entre 0 e 10, ele recebe uma mensagem de aviso
E o programa está pronto!
Resposta
Exercício Resolvido #5
Adaptado de PUCRS – Programação para Engenharia I – Slide de Aula
O cardápio de uma lancheria é o seguinte:
Implemente um programa que mostre o cardápio pro usuário, em seguida leia o código do item pedido, a quantidade e calcule o valor a ser pago por aquele lanche. Considere que a cada execução somente será calculado um item.
Passo 1
E aí galera. Essa questão é um pouco grande. Mas não se assusta, que é tranquilo.
A questão pede pra gente criar um menu pro usuário escolher itens. Sempre que a gente precisar criar um menu a estrutura é uma boa escolha. Vamos usar o pra permitir que o usuário escolha um item do cardápio. E em cada vamos calcular o quanto ele gastou.
Mas primeiro de tudo, vamos pensar apenas nas entradas e saídas do programa. Vamos receber dois valores do usuário:
- A variável inteira , que representa o código de cada produto
- A quantidade que o cliente comprou , que também é um número inteiro
A saída é o valor a ser pago, então vamos criar a variável do tipo
Passo 2
Vamos desenhar o cardápio na tela pro usuário poder vê-lo.
Usando a função diversas vezes seguidas, podemos criar um cardápio visual pro usuário. E usando o caractere especial podemos deixar os dados tabulados. Saca só
O resultado é parecido com isso:
Olha que bonito. Quando a gente usa a tabulação fica igual uma tabelinha mesmo.
Passo 3
Agora que o usuário pode ler o cardápio, vamos pedir pra ele escolher o pedido! Usando o e o podemos pedir e armazenar as informações do usuário.
Passo 4
Agora vamos nos divertir com o
Primeiramente, vamos usar o comando para avaliar o conteúdo da variável . Dependendo do valor dessa variável, vamos ou não entrar em cada .
O primeiro que vamos construir é quando o valor inserido é . Daí só vamos entrar nesse , se o valor for 100.
Dentro do , vamos calcular o valor gasto pelo cliente, na linha 32. Na linha 33 vamos imprimir a quantidade e o nome do pedido. Na linha 34 vamos imprimir o valor gasto. E na linha 35 vamos finalizar o com o comando
Passo 5
Agora vamos repetir o processo descrito no passo 4 para todos os outros produtos, tomando o cuidado de calcular o valor usando o preço de cada item.
E pra fechar a questão com chave de ouro, vamos adicionar um pra caso o cliente insira um valor fora do cardápio. Se não houver nenhuma correspondência com os anteriores, o programa entra no e o usuário vai receber uma mensagem de aviso dizendo que esse item não faz parte do cardápio.
E prontinho!
Resposta
Exercício Resolvido #6
Adaptado de Lógica de Programação - Prof. Andrea Garcia
Leia o código de um determinado produto e mostre sua classificação. Utilize a seguinte tabela como referência:
Passo 1
Beleza pessoal. Vamos fazer mais um exercício da hora!
A questão ta pedindo para gente desenvolver um sistema onde selecionamos uma opção e recebemos de volta uma mensagem na tela. Uma estrutura vai cair bem que nem uma luva aqui.
Mas antes vamos começar o cabeçalho do programa
Só vamos precisar receber um único valor inteiro do usuário, o código. Então vamos declarar uma variável para conter esse valor:
Passo 2
Agora vamos receber o código do usuário. Basta usar os comandos e para solicitar o valor e inseri-lo na variável.
Passo 3
Show! Vamos desenvolver a estrutura de seleção.
A estrutura começa avaliando o valor contido na variável e abrimos as chaves.
Caso o valor da variável seja , então é selecionada o primeiro código onde imprimimos uma mensagem informando que se trata de um “alimento não perecível”.
Caso o valor contido na variável seja , então vamos usar o para imprimir que se trata de um “alimento perecível”:
E fazemos o mesmo para os casos em que a variável é ou onde devem ser impressos “vestuário”, “higiene pessoal” e “Limpeza e utensílios domésticos”, respectivamente.
A única surpresa é quando um valor imprevisto for inserido na variável. Neste caso vamos preparar um comando que informa que o valor inserido é inválido
E pronto! Com isso terminamos a questão.
Resposta
Exercício Resolvido #7
Responde Aí – Linguagem C – Comandos Condicionais: Switch
Faça um programa que calcule o “peso ideal” de um usuário de acordo com um caractere identificador de gênero biológico (“M” para Masculino ou “F” para Feminino) inserindo pelo usuário.
Peso ideal masculino:
Peso ideal feminino:
Passo 1
Vamos lá, pessoal
Nessa questão vamos precisamos selecionar o tipo de gênero pra efetuar o cálculo. Então uma boa ideia é usar a estrutura de seleção .
Mas antes, vamos escrever o cabeçalho do código:
E agora vamos pensar sobre as entradas e saídas do programa. Vamos precisar receber do usuário duas variáveis: um caractere que representa o gênero, e um número real que representa a altura:
E o resultado é o peso ideal do usuário, que terá de ser armazenado numa variável:
No código fica assim:
Passo 2
Usando os comandos e vamos receber o gênero e a altura do usuário
Passo 3
O passo seguinte é desenvolver a estrutura de seleção.
Primeiro de tudo, iniciamos o nosso informando que o valor a ser analisado está contido na variável .
Caso o gênero inserido seja o masculino, então devemos utilizar a formula
Caso o gênero inserido seja o feminino, então devemos utilizar a outra formula
E caso um valor não previsto seja inserido, então vamos enviar uma mensagem de valor inválido.
Passo 4
Pra finalizar a questão, vamos imprimir o valor de peso ideal que calculamos. Pra isso é só imprimir com o
Resposta
e
Exercício Resolvido #8
Adaptado de UFOP – Professores Túlio Toffolo e Puca Penna – BCC201 Introdução a Programação – Lista de Exercícios 2
Faça um programa que o dia, o mês e o ano em formato numérico e escreva a data por extenso, conforme exemplo:
O programa deve imprimir uma mensagem se o mês for inválido.
Utilize o comando na implementação.
Passo 1
Vamos lá pessoal. Essa questão vai ser um pouquinho grande, mas relaxa que vai ser fácil.
O que vamos precisar fazer aqui é receber três valores inteiros do usuário, que armazenem o valor do dia, mês e ano. E em seguida vamos utilizar uma estrutura condicional para selecionar o nome do mês. Então, como são 12 meses, vamos precisar de pelo menos 12 (uma pra cada mês) e mais um pro caso de ser inserido um valor que não corresponda a nenhum mês.
Então vamos começar escrevendo o cabeçalho do código:
E em seguida vamos iniciar a e declarar as três variáveis inteiras necessárias:
Passo 2
Em seguida vamos precisar receber os valores do dia, mês e ano.
Pra isso vamos utilizar o para solicitar o valor, e o para armazenar o valor inserido na variável adequada. Vamos fazer isso três vezes, pois precisamos receber três valores.
Passo 3
Belezinha. Agora vamos dar atenção à parte principal da questão, a estrutura
Vamos iniciar o informando que a variável a ser testada é a variável . Ou seja, é o valor contido dentro da variável mês que vai decidir o que deve ser executado.
Ok, vamos agora definir os casos. Quando o valor de for igual a , o mês correspondente será janeiro. Então vamos exibir uma mensagem que imprima a variável , escreva o mês “Janeiro” e imprima o conteúdo da variável :
Mas caso o valor de seja , então este deve ser o mês de fevereiro. Então vamos exibir a mesma mensagem, porém com “fevereiro”:
Já quando o valor de for igual a , então o mês é março. Mais uma vez, vamos exibir uma mensagem que contém o valor da variável , escreva o mês “Marco” e imprima o valor da variável ano:
Sacou? A gente vai repetir a mesma mensagem para todos os 12 casos, mudando apenas o valor do e o nome do mês. Então prepara esse e que vai ser útil agora.
Pronto, criamos um para cada um dos meses do ano. Porém, precisamos nos preparar pro caso de ser inserido um valor incompatível. Então criamos uma
E prontinho! O programa está concluído.