Switch em C, e se a opção for inválida?
Dica publicada em C/C++ / Introdução
Switch em C, e se a opção for inválida?
Uma curiosidade de muitos iniciantes em programação é sobre o switch, especificadamente quando se fala em criar menus. Algo como:
O que muitos se perguntam é que se, por exemplo, o usuário do programa digitasse 4, sendo que apenas temos 3 opções. O que iria acontecer é que o programa, como não tem nenhuma rotina para o case 4, ou melhor, o case 4 nem existe e portanto como não há o que fazer, ele iria parar a sua execução, como um getchar(). Vamos usar o default!
Vou mostrar algo bem interessante, neste caso quando digitassem 4 ou qualquer outro número considerado "inválido", nosso programa exibiria uma mensagem dizendo que a opção é inválida e voltaria ao início.
Até mais...
switch (variavel) {
case 1:
//Conteúdo do item 1 do menu
break;
case 2:
//Conteúdo do item 2 do menu
break;
case 3:
//Conteúdo do item 3 do menu
break;
}
case 1:
//Conteúdo do item 1 do menu
break;
case 2:
//Conteúdo do item 2 do menu
break;
case 3:
//Conteúdo do item 3 do menu
break;
}
O que muitos se perguntam é que se, por exemplo, o usuário do programa digitasse 4, sendo que apenas temos 3 opções. O que iria acontecer é que o programa, como não tem nenhuma rotina para o case 4, ou melhor, o case 4 nem existe e portanto como não há o que fazer, ele iria parar a sua execução, como um getchar(). Vamos usar o default!
Vou mostrar algo bem interessante, neste caso quando digitassem 4 ou qualquer outro número considerado "inválido", nosso programa exibiria uma mensagem dizendo que a opção é inválida e voltaria ao início.
#include <stdio.h>
int main()
{
int opcao;
printf("Selecione uma opcao: \n\n[1] Opcao 1 \n[2] Opcao 2 \n >> ");
scanf("%d",&opcao);
switch(opcao) {
case 1:
printf("Voce escolheu a opcao 1 \n\n");
break;
case 2:
printf("Voce escolheu a opcao 2 \n\n");
break;
default :
printf("Opcao invalida! \n\n");
return main();
}
return (0);
}
int main()
{
int opcao;
printf("Selecione uma opcao: \n\n[1] Opcao 1 \n[2] Opcao 2 \n >> ");
scanf("%d",&opcao);
switch(opcao) {
case 1:
printf("Voce escolheu a opcao 1 \n\n");
break;
case 2:
printf("Voce escolheu a opcao 2 \n\n");
break;
default :
printf("Opcao invalida! \n\n");
return main();
}
return (0);
}
Até mais...