Comando de Controle Switch Case

Operações relacionais e lógicas Operações Aritméticas variáveis Tipos de dados Estruturas Aninhadas algoritmos

Olá pessoal! Nos últimos artigos desta série eu tenho falado sobre os comandos de controle de programa. Hoje é a vez de estudarmos o Switch Case. Vamos lá!

 

O comando Switch/Case é do tipo Seleção/Condição, como o IF: diante de uma condição ele seleciona o que será feito. Este comando é muito utilizado para a construção de menus de opções ao usuário, a sua sintaxe em pseudocódigo (VISUALG) é a seguinte:

Listagem 1: Sintaxe Switch/Case no VisuAlg

 

A palavra chave ESCOLHA é o comando que conhecemos como SWITCH em várias linguagens de programação. Switch em inglês quer dizer (entre outros significados) chave, então, um comando Switch funciona como uma chave de seleção. Caso é uma palavra-chave reservada que em inglês é Case, o qual é selecionado de acordo com o valor da expressão.

 

Cada CASO é um bloco de comandos específico que será executado somente se for selecionado. Então, Switch seleciona um CASO e CASO é a seleção de um bloco de comandos específico. Em alguma situações você pode usar o IF/ELSE ou o SWITCH/CASE para resolver o mesmo problema. Apesar de serem comandos parecidos, funcionam de formas diferentes. Antes de explicar mais detalhes, vamos ver a sintaxe desse comando em algumas linguagens:

 

C

 Listagem 2: Sintaxe Switch/Case Linguagem C

 

JAVA

 Listagem 3: Sintaxe Switch/Case em Linguagem Java

 

C++

 Listagem 4: Sintaxe Switch/Case em Linguagem C++

 

PASCAL

 Listagem 5: Sintaxe Switch/Case em Linguagem Pascal

  

Observamos claramente que todas as implementações do comando apresentadas aqui tem uma sintaxe muito parecida, isto é, a forma de codificar o comando é semelhante. Sempre teremos uma EXPRESSÃO que será avaliada, que pode ser uma única variável que conterá um valor, ou pode ser uma CONDIÇÃO ou, ainda, uma EXPRESSÃO (expressão matemática) e o resultado obtido dessa avaliação de condição ou expressão é que será o valor utilizado em seguida.

 

Valor1, valor2, valor3 e assim por diante, contém um valor especifico constante que será comparado ao resultado da EXPRESSÃO. Normalmente esse valor pode ser um tipo inteiro ou um tipo caractere. Se for um tipo inteiro, então, a EXPRESSÃO também tem de ser um tipo inteiro e, é claro que se for um tipo caractere, a EXPRESSÃO deverá ser um tipo caractere também. Preste atenção nesse detalhe pois, muitas vezes, na hora de sentar e codificar, você pode se confundir e ter dificuldades que serão geradas apenas por um erro de lógica seu.

 

Cada caso com seu respectivo valor é um bloco de comando que executará instruções específicas, algumas vezes parecidas, mas são direcionadas para SITUAÇÕES diferentes. Lembre-se, é uma chave de seleção então o usuário escolherá uma OPÇÃO e o programa será direcionado para essa OPÇÃO (caso). Portanto, só serão executados os comandos do caso selecionado, os outros blocos não serão executados.

 

Mas o que acontece se o usuário digitar um valor que não corresponda a nenhum dos casos? Bem, é pra isso que temos o DEFAULT na maioria das linguagens, ou o ELSE no caso do pascal. DEFAULT é uma palavra-chave reservada que podemos utilizar no Switch/Case para direcionar o programa no caso de ser digitado um valor inválido. Nesse bloco de comando podemos colocar uma mensagem de erro, ou de alerta, aviso para o usuário como, por exemplo: "Você digitou um valor inválido, tente novamente". Temos de ter em mente que essa mensagem que aparecerá para o usuário deve ser o mais clara e objetiva possível, direcionando as ações dele para o que deve ser feito.

 

O comando funciona basicamente da seguinte forma: o valor de ESCOLHA (Switch) é normalmente uma variável que contém um valor que foi digitado pelo usuário anteriormente. Esse valor será comparado a cada um dos casos, até chegar no caso igual a esse valor e, se o valor não existir nos casos, será direcionado para default. Reforço que o programa é executado de forma sequencial, isto é, o programa é executado linha a linha. Se tivermos 10 casos e o usuário digitar a opção 8, ficará assim:

Caso1 = 8? Falso, não executa nada evai pro próximo caso.

Caso2 = 8 ? Falso, não executa nada e vai pro próximo caso, e assim por diante até que:

Caso8 = 8? Verdadeiro, entra no bloco de comandos executa todas as instruções e depois retorna o comando pro programa principal.

 

A Figura 1 apresenta o Fluxograma para Switch/Case:

  

 

Vamos codificar uma calculadora que permite ao usuário escolher a operação matemática que ele deseja.

 

 Listagem 6: Pseudocódigo para a Calculadora

  

Vamos analisar o pseudocódigo:

 

Linha 3 e 4: são declaradas as variáveis que utilizaremos no programa. X e Y são as variáveis responsáveis por armazenar os valores dos números (operandos). OP é o valor da opção que o usuário selecionará.

 

Linha 14: LIMPATELA é um comando utilizado para limpar a tela do CONSOLE no momento em que o programa está sendo executado.

 

Linhas de 16 a 19: Nestas linhas apenas escrevemos na tela do console mensagens que apresentam as opções ao usuário. São mensagens claras e objetivas.

 

Linhas de 21 a 23: Nestas linhas pedimos ao usuário que escolha a opção que ele deseja e fazemos a LEITURA do valor digitado pelo usuário. OP armazena esse valor para que ele seja usado em seguida, na comparação do caso até encontrar o caso desejado.

 

Linhas 25 a 27: Este é o CASO 1. Aqui é executada a operação de SOMA. Observe que todos os comandos aqui são utilizados pra isso, para calcular a SOMA e apresentar ao usuário o resultado da soma.

 

Linhas 29 a 31: Aqui estão os comandos correspondentes ao CASO 2, que é a SUBTRAÇÃO, bem parecido com o CASO1.

 

Linhas 33 a 35: Aqui estão os comandos correspondentes ao CASO 3, que é a MULTIPLICAÇÃO, bem parecido com o CASO1.

 

Linhas 37 a 43: Aqui estão os comandos correspondentes ao CASO 4, que é a DIVISÃO. Aqui foi feito o tratamento da divisão por zero, nunca podemos nos esquecer disso quando formos usar a DIVISÃO. Se o divisor for zero, não existe divisão por zero e isso gera um erro! Então, quando o divisor for zero, enviamos uma mensagem pro usuário alertando-o sobre isso. Caso contrário, a divisão ocorre normalmente.

 

Linha 45: FIMESCOLHA é o comando para finalizar o ESCOLHA/CASO.

 

Vamos agora fazer o teste de mesa deste algoritmo. Observe a Tabela 1:

  

Tabela 1: Teste de Mesa

iteraçãoxyopcaso1caso2caso3caso4
11021

1 = 1

V

Executa

Não executaNão executaNão executa
21022

2 = 1

F

Não Executa

2 = 2

V

Executa

Não ExecutaNão Executa
31023

3 = 1

F

Não Executa

3 = 2

F

Não Executa

3 = 3

V

Executa

Não Executa
41024

4 = 1

F

Não Executa

4 = 2

F

Não Executa

4 = 3

F

Não Executa

4 = 4

V

Executa

 

Neste teste de mesa eu simulei quatro iterações da execução do programa. Em todas elas eu digitei o mesmo valor para X e Y, portanto, os valores resultantes para as operações matemáticas não se alteram, a única coisa que varia é a OPÇÃO selecionada. Na primeira iteração seleciono a opção 1 (valor 1 - caso 1). Assim que digito o valor 1, esse valor é comparado com o caso1, portanto, 1 = 1? Sim, verdadeiro, então, execute este bloco de comandos. Assim, é feita a adição e os outros casos são PULADOS, não são executados e o controle volta para o programa principal ao FIMESCOLHA.

 

Na segunda iteração eu selecionei a opção 2. Esse valor será comparado com o caso1, 2 = 1 é F, então pula esse bloco de comandos e vai para o próximo Caso. No caso 2, 2 = 2 é V, então entra e executa este bloco. Os outros blocos são pulados já que o Caso2 foi executado.

 

Na terceira iteração selecionei a opção 3. 3 = 1 é F, pula o bloco de comando e vai para o próximo. 3 = 2 é F, pula e vai para o próximo. 3 = 3 é V, entra no bloco, executa e retorna para o programa principal.

 

Na quarta e última iteração selecionei a opção 4. 4 = 1 é F, pula este bloco e vai para o próximo. 4 = 2 é F, pula e vai para o próximo. 4 = 3 é F, pula e vai para o próximo. 4 = 4 é V, entra neste bloco, executa e retorna ao programa principal.

 

E assim terminamos nosso teste de mesa com o código apresentado na Listagem 6. Agora vamos ver como fica esse mesmo código implementado em outras linguagens?

 

C

Listagem 7

 

Java

Listagem 8

 

C++

 Listagem 9

 

Pascal

Listagem 10

 

Como vocês podem notar a implementação do VisuAlg é um pouco diferente das implementações das linguagens de programação, entretanto todas seguem o mesmo padrão de funcionamento.

 

 

Conclusão

 

Espero que esse artigo seja muito útil a todos vocês. Eu quis mostrar um exemplo bem simples e prático, inclusive em outras linguagens, para que vocês possam usar este artigo como fonte de consulta sempre que precisarem. Se houver dúvidas, por favor, deixem nos comentários.

 

 

Exercícios

 

  1. Faça um programa que receba o preço, a categoria (1 – limpeza; 2 – alimentação; ou 3 – vestuário) e a situação (R – produtos que necessitam de refrigeração; e N – produtos que não necessitam de refrigeração). Calcule e mostre:
  • O valor do aumento, usando as regras que se seguem.

PREÇO

CATEGORIA

PERCENTUAL DE AUMENTO

< = 25

1

5%

2

8%

3

10%

> 25

1

12%

2

15%

3

18%

 

  • O valor do imposto, usando as regras a seguir.

O produto que preencher pelo menos um dos seguintes requisitos pagará imposto equivalente a 5% do preço; caso contrário, pagará 8%. Os requisitos são:

Categoria: 2

Situação: R

  • O novo preço, ou seja, o preço mais aumento menos imposto.
  • A classificação, usando as regras a seguir.

NOVO PREÇO

CLASSIFICAÇÃO

< = R$50,00

Barato

Entre R$50,00 e R$120,00

Normal

> = R$120,00

Caro

 

 

  1. Faça um programa que receba:
  • O código do produto comprado; e
  • A quantidade comprada do produto.

Calcule e mostre:

  • O preço unitário do produto comprado, seguindo a Tabela 1;
  • O preço total da nota;
  • O valor do desconto, seguindo a Tabela 2 e aplicado sobre o preço total da nota; e
  • O preço final da nota depois do desconto.

TABELA 1

TABELA 2

CÓDIGO

PREÇO

PREÇO TOTAL DA NOTA

% DE DESCONTO

1 a 10

R$10,00

Até R$250,00

5%

11 a 20

R$15,00

Entre R$250,00 e R$500,00

10%

21 a 30

R$20,00

Acima de R$50,00

15%

31 a 40

R$30,00

 

 

 

 

  1. Faça um programa que receba o preço de um produto e seu código de origem e mostre sua procedência. A procedência obedece à tabela a seguir.

CÓDIGO DE ORIGEM

PROCEDÊNCIA

1

Sul

2

Norte

3

Leste

4

Oeste

5 ou 6

Nordeste

7 ou 8 ou 9

Sudeste

10 a 20

Centro-Oeste

21 a 30

Nordeste

 

 

  1. Faça um programa que receba dois números e execute as operações listadas a seguir, de acordo com a escolha do usuário.

ESCOLHA DO USUÁRIO

OPERAÇÃO

1

Média entre os números digitados

2

Diferença do maior pelo menor

3

Produto entre os números digitados

4

Divisão do primeiro pelo segundo

  

Outros artigos da série

<< Comando de Controle WhileComando de Controle For >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Elaine Cecília Gatto
Bacharel em Engenharia de Computação. Mestre em Ciência da Computação. Doutoranda em Ciência da Computação. Co-fundarora e Líder das #GarotasCPBr. Pesquisadora Convidada no Grupo de Pesquisa: "Artes em Tecnologias Emergentes" do Programa de Pós Graduação em Design na UNESP Campus Bauru. Cantora, Docente no Magistério Superior, Geek, Nerd, Otaku e Gamer. Apaixonada por Michael Jackson, Macross, Rocky Balboa, Séries, Filmes, Cervejas e Vinhos. Mais informações sobre mim você encontra em: http://lattes.cnpq.br/8559022477811603.

6
Deixe um comentário

avatar
 
3 Comment threads
3 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
SouzaElaine Cecília GattoMateus Oliveira Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Souza
Visitante
Souza

Dei aquele copia e cola, pois esses fontes são muito interessantes. E comparar um como o outro faz muito bem para o aprendizado.

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

exato!

Souza
Visitante
Souza

Muito bom. Estou só dando uma olhada pelo celular. Amanhã vou dar uma caprichada.

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

=)

Mateus Oliveira
Visitante
Mateus Oliveira

Bom artigo! So acho que faltou frisaro uso do "break" vejo que muitos alunos meus esquecem e o erro passa despercebido... inckuindo tanbem o break no caso default como uma boa pratica e nao faltar quando ele nao estiver como ultima opcao. Eu por exemplo costumo coloca-lo antes.

Pra fechar podemos tambem colocar dois ou mais case's seguidos para denotar a mesma acao para vaioscasos desejados!

Isso ae! Parabens pela escrita... espero em breve poder comecar a contribuir tambem!

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

Muito Obrigada Mateus!!!!