A intenção aqui é mostrar que quando possuímos várias decisões, podemos utilizar um comando especial, chamado de switch.
Esse comando avalia uma variável e toma uma decisão de acordo com seu valor.
Um exemplo vale mais que mil palavras. Suponha que você deve construir uma pequena calculadora de quatro operações básicas. É natural que sua calculadora tenha uma variável para armazenar qual operação ela deverá fazer. Avaliando essa variável ('+', '-', '*', '/') você procederá com a operação.
Você poderá fazer da seguinte forma:
001: #include <stdio.h>
002: #include <stdlib.h>
003:
004: int main(int argc, char *argv[])
005: {
006: char op;
007: int v1, v2;
008:
009: printf("Digite a operacao: ");
010: fflush(stdin);scanf("%c", &op);
011: printf("Digite o primeiro valor: ");
012: fflush(stdin);scanf("%d", &v1);
013: printf("Digite o segundo valor: ");
014: fflush(stdin);scanf("%d", &v2);
015: if(op == '+')
016: {
017: printf("Soma: %d\n", v1 + v2);
018: }
019: else if(op == '-')
020: {
021: printf("Subtracao: %d\n", v1 - v2);
022: }
023: else if(op == '*')
024: {
025: printf("Multiplicacao: %d\n", v1 * v2);
026: }
027: else if(op == '/')
028: {
029: if (v2 != 0)
030: {
031: printf("Divisao: %d\n", v1 / v2);
032: }
033: else
034: {
035: printf("Denominador igual a zero.\n");
036: }
037: }
038: else
039: {
040: printf("Operacao invalida\n.");
041: }
042: system("PAUSE");
043: return 0;
044: }
Que festival de else ifs! O código não fica muito elegante. Com a estrutura switch a coisa muda de figura.
001: #include <stdio.h>
002: #include <stdlib.h>
003:
004: int main(int argc, char * argv[])
005: {
006: char op;
007: int v1, v2;
008:
009: printf("Digite a operacao: ");
010: fflush(stdin);scanf("%c", &op);
011: printf("Digite o primeiro valor: ");
012: fflush(stdin);scanf("%d", &v1);
013: printf("Digite o segundo valor: ");
014: fflush(stdin);scanf("%d", &v2);
015:
016: switch(op)
017: {
018: case '+': printf("Soma: %d\n", v1 + v2);
019: break;
020: case '-': printf("Subtracao: %d\n", v1 - v2);
021: break;
022: case '*': printf("Multiplicacao: %d\n", v1 * v2);
023: break;
024: case '/': if(v2 != 0)
025: {
026: printf("Divisao: %d\n", v1 + v2);
027: }
028: else
029: {
030: printf("Denominador igual a zero.\n");
031: }
032: break;
033: default:
034: printf("Operacao invalida!\n");
035:
036: }
037: system("PAUSE");
038: return 0;
039: }
Note que existe um caso (case) para cada valor de op. Note também que cada bloco de comandos inicia com um case constante: e termina com um break. Se o valor avaliado não existe na lista de opções, será executado o bloco de comandos padrão, chamado de default.
Muitos alunos me questionam se o default é necessário. A resposta é "Se o seu problema exigir um tratamento padrão, use o default, caso contrário não é necessário".
É importante saber que o switch funciona somente com variáveis do tipo inteiro, lembre-se que o char é um deles.
Aproveite essa estrutura para melhorar seus códigos.
2 comentários:
Professor,
Parabéns pelo blog. Espero que continue atualizando, para que eu possa tê-lo como base de pesquisas.
Obrigado pelo conhecimento transmitido.
At,
Obrigado,
Não pretendo abandonar o blog. Espero atualizar com mais freqüência agora.
Sds
Anderson
Postar um comentário