Programação C – Switch, case e default

Opa, depois de um bom tempo sem escrever nada de programação C, vamos dar continuidade agora a uma estrutura que é braço direito da Estrutura Condicional If, Switch Case, eu classificaria as duas estruturas (If e Switch) como estruturas de tomadas de decisões, diferenciando que If posso trabalhar com expressões para analise, já switch eu trabalho com constante (int ou char).

Sintaxe para uso do switch:

/**************************************************************/
switch(variavel_da_opcao){
          case 1:
                      //Implemente o codigo aqui.
                      break;
          case 2:
                      //Implemente o codigo aqui.
                      break;
          case 3:
                      //Implemente o codigo aqui.
                      break;
          default:
                      //Implemente o codigo aqui.
/**************************************************************/

Abaixo um pequeno exemplo utilizando a estrutura Switch Case:

Vamos entender o programa acima:

Entra em uma estrutura de repetição infinita while(1), parando apenas quando retornar diferente de 1, com isso economizo declarar uma variável, mas tome cuidado ao usar isso ok? Continuando, ae inseri alguns printfs, e o último sendo um “menu” de opções, e o scanf abaixo aguarda o operador digitar o opção referente, digitando  é armazenada na variável opcao e logo em seguida entra no switch carregando como valor a variável opcao, e analisa os “cases”, prefiro dizer assim, porque CASO você digitou 1 ele irá ao case 1: e executara o código aninhado a este case, CASO seja o 2 entra no case 2: sem nem entrar no 1, e assim sucessivamente, e se você digitar qualquer número diferente de 1, 2 ou 3 irá para o default: e no caso exibira a mensagem de “Opcao Invalida”.

O Switch Case pode ser melhor visualizado na imagem abaixo:

Conseguiu identificar alguma diferença comparado ao If  e else? O mesmo programa sendo escrito utilizando a estrutura condicional If e else, se você digitar 3, ele vai passar pelo primeiro if, if opcao == 1 (“Se opcao == 1“), ele viu que não é 3 vai para o próximo e assim até encontrar o 3 ou então sair do programa, já o switch digitando a opção ele checa os case, não a operação lógica e entra, e o break é opcional, mas com ele, acabando o case ele volta para o while no nosso caso, sem o break, ele continua checando os demais cases.

Em uma estrutura em que tenha opções e menu, acho que o Switch Case se sai melhor que If e else, mas cada caso é um caso, então analise, verifique e implemente o que melhor lhe agradar e funcionar.

Até a próxima!

Share Button

CC BY-NC-SA 4.0 Programação C – Switch, case e default by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

  • #gabi

    nao entendi nada… :/

    • Ana

      q bom,nem eu

  • Nossa, Gabriele me diz o que você não entendeu que tento lhe ajudar, e não precisava comentar com nomes diferentes usando o mesmo e-mail e saindo do mesmo IP a conexão :)

  • Roger

    Ta bem legal a explicação, só eu tenho uma duvida:
    Eu posso usar duas variáveis para condicionar a entrada no case?
    tipo
    switch (a , b)
    {
    case ‘1’ ‘2’: cout<<…
    Sei la a sintaxe certa se é possível!!.

    • angelina lobato

      preciso que vc me ajude a fazer o seguinte problema: “escreva um programa que calcule o volume (V), a pressão(P) ou a temperatura(T) de um gás. A equação é dada por:
      PV=CT C=125J/K
      -Utilizar a estrutura switch…case ou if…else para escolher qual porpriedade calcular (P,V ou T).
      Ultilizar a estrutura do…while para que os valores de entrada (scanf()) de V,P,T sejam limitados em:
      1KPa<P<10KPa
      10m3<V<20m3
      300K<T<500K
      OBS: Caso nenhuma das opções (P,V ou T) seja escolhida, finalizar o programa.

      • Me parece como uma tarefa.
        A logica esta no post e não é complexo a logica para programar, a dificuldade pode estar na matemática.
        Se tiver duvida posso ajudar em relação ao código.

  • angelina lobato

    por favor preciso dessa resposta ainda hoje, antes das 18:00hs. se for possível me ajude.