- A DECLARAÇÃO switch
Na declaração switch, a variável é sucessivamente testada contra uma lista de inteiros ou constantes caractere. Quando uma associação é encontrada, o conjunto de comandos associado com a constante é executado. As constantes não precisam sequer estar em qualquer ordem especial. A forma geral da declaração switch é:
switch (variável){
case constante1:
commandos;
break;
case constante2:
commandos;
break;
.
.
.
default
commandos;
}
A declaração default é executada se nenhuma correspondência for encontrada. O default é opcional e, se ele não estiver presente, nenhuma ação será realizada se todas as correspondências falharem. Quando uma correspondência é encontrada, os comandos associados a case são executados até que o break seja encontrado ou até que se encontre o final do switch.
Exemplo:
#include <stdio.h>
main()
{
int opcao; int valor;
printf ("Converter: \n"); printf ("1: decimal para hexadecimal\n"); printf ("2: hexadecimal para decimal\n"); printf ("\nInforme sua opção: "); scanf ("%d", &opcao);
switch (opcao)
{ case 1:
printf ("\nInforme o valor em decimal: "); scanf ("%d", &valor); printf ("%d em hexadecimal e: %x", valor, valor);
break; case 2:
printf ("\nInforme o valor em hexadecimal: "); scanf ("%x", &valor); printf ("%x em decimal e: %d", valor, valor);
break;
default:
printf ("\nOpção inválida. Tente outra vez.")
}
}
Ainda que as declarações break sejam geralmente necessárias dentro de um switch,sintaticamente são opcionais. Elas são usadas para terminar a sequência de comandos associada a cada constante. Entretanto, se a declaração break é omitida, a execução continuará pela próxima declaração case até que um break ou o final do switch seja encontrado.
- DECLARAÇÕES switch ANINHADAS
É possível ter um switch como parte da sequência de declaração de um switch externo. Mesmo que as constantes case do switch interno e externo contenham valores comuns, nenhum conflito surgirá. Por exemplo, o seguinte fragmento de código é perfeitamente aceitável.
Exemplo:
#include <stdio.h> #include <ctype.h>
void main()
{
char regiao, vendedor;
printf ("As regiões são: Leste, Oeste e Norte\n"); printf ("Informe a primeira letra da região: ");
regiao = getche();
regiao = toupper(regiao); //converte para maiúsculas
printf ("\n");
switch (regiao)
{
case 'L':
printf ("Vendedores são: Rafael, João e Maria \n"); printf ("Informe a primeira letra do vendedor: ");
vendedor = toupper(getche());
printf ("\n");
switch (vendedor)
{
case 'R':
printf ("Vendas: R$%d\n", 10000);
break;
case 'J':
printf ("Vendas: R$%d\n", 12000);
break;
case 'M':
printf ("Vendas: R$%d\n", 14000);
} break;
case 'O':
printf ("Vendedores são: Ronaldo, Lisa e Hilton\n"); printf ("Informe a primeira letra do vendedor: ");
vendedor = toupper(getche());
printf ("\n");
switch (vendedor)
{
case 'R':
printf ("Vendas: R$%d\n", 10000);
break;
case 'L':
printf ("Vendas: R$%d\n", 9500);
break;
case 'H':
printf ("Vendas: R$%d\n", 13000);
}
break;
case 'N':
printf ("Vendedores são: Tomás, João e Raquel\n"); printf ("Informe a primeira letra do vendedor: ");
vendedor = toupper(getche());
printf ("\n");
switch (vendedor)
{
case 'R':
printf ("Vendas: R$%d\n", 5000);
break;
case 'J':
printf ("Vendas: R$%d\n", 9000);
break;
case 'T':
printf ("Vendas: R$%d\n", 14000);
}
break;
}
}
Este programa solicita ao usuário a região e a letra inicial do nome do vendedor e, então, mostra o demonstrativo de vendas do mesmo. Switchs aninhados são requeridos uma vez que muitos vendedores têm a mesma letra inicial. Note que uma nova função, toupper( ), é introduzida. Ela retorna a letra maiúscula correspondente do seu argumento caractere. Ela é usada neste programa para permitir que o usuário insira informações tanto em letra maiúscula como em letra minúscula. A função complementar de toupper( ) é tolower( ), que converte caracteres maiúsculos em minúsculos. Ambas as funções estão contidas na biblioteca ctype.h.
Para dar continuidade aos posts sobre linguagem C, escolha um dos links abaixo:
- A História da Linguagem C
- Linguagem C - Operadores
- Linguagem C - printf(), scanf() e scanset.
- Linguagem C - If, else, if-else-if
- Linguagem C - switch
- Linguagem C - Laço For
- Linguagem C - Laço de Repetição WHILE
- Linguagem C - Vetores
- Linguagem C - Strings
“Mas vale ser cego dos olhos, do que do coração.”(Provérbio libanês)
Me ajudem por favor com essa programa em linguagem c.
ResponderExcluirUm vendedor quer um programa que lhe ajuda calcular o montante que cliente deve pagar na compra de 6 maçãs com desconto de 10% por cada maçã e na compra de mais de 6 ate 12 sera descontado 20% por cada maçã e mais do que 12 sera descontado 30% em toda compra.