Site icon Embarcados – Sua fonte de informações sobre Sistemas Embarcados

Comando de Controle Switch Case

PSEUDOCODIGO bubble sort switch case

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

Sintaxe Switch Case em Linguagem C++

 Listagem 4: Sintaxe Switch Case em Linguagem C++

Sintaxe Switch Case em Linguagem 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:

Figura: 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 – Switch Case

  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:

PREÇO

CATEGORIA

PERCENTUAL DE AUMENTO

< = 25

1

5%

2

8%

3

10%

> 25

1

12%

2

15%

3

18%

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

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:

Calcule e mostre:

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

Confira mais textos da série Introdução a Algoritmos no Embarcados.

Outros artigos da série

<< Comando de Controle WhileComando de Controle For >>