Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro


Alpha Servers
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 a 10 de 11
  1. #1



    Avatar de João Neto
    Data de Ingresso
    Nov 2010
    Localização
    Barzinho de Lorencia
    Idade
    24
    Posts
    1.090
    Agradecido
    46
    Agradeceu
    26
    Peso da Avaliação
    19

    Post [Explicação]+[Código C] Calculadora Basica em Case

    Olá galera IMP,
    Hoje tava olhando um código antigo que fiz no inicio da materia em C da faculdade e resolvi postar para vocês entenderem um pouco sobre o Switch e Case...

    Teoria Basica:

    Switch é uma forma de estrutura seletiva, dentro dos switch há o case (que significa caso). Ou seja, é quase que um if com várias possibilidades, mas com algumas diferenças importantes.

    1ª Diferença: Os cases não aceitam operadores lógicos. Portanto, não é possível fazer uma comparação. Isso limita o case à apenas valores definidos.

    2ª Diferença: O switch executa seu bloco em cascata. Ou seja, se a variável indicar para o primeiro case e dentro do switch tiver 5 cases, o switch executará todos os outros 4 cases a não ser que utilizemos o comando para sair do switch. (No caso referimos ao Break, que é para dar um stop naquele bloco).

    Agora vamos ver como proceder com o switch / case.

    Primeiro o comando SWITCH e entre parênteses a váriavel na qual está guardado o valor que será avaliado pelo case. Então, abre-se o bloco de dados. Dentro do bloco de dados colocamos o comando CASE e logo após um valor terminando a linha com dois pontos (.
    Então, é estruturado os comando que serão executados pelo case.

    Estruturadamente, seria mais ou menos isso:

    SWITCH (variável){
    CASE valor1:
    Dados a serem executados
    BREAK;
    CASE valor2:
    Dados a serem executados
    BREAK;
    }

    Exemplo:
    Neste programa vamos fazer uma simples calculadora que aceita até 2 valores para o calculo de números inteiros.

    Código:
    #include <stdio.h>          
    #include <stdlib.h> 
    
    int main(){  /*Inicializando*/
        
       int op;   /*Declarando variaveis*/
       int t=0,x=0,y=0; /*Declarando variaveis*/
       
       printf("Digite uma opcao:\n 1(Adicao) \n 2(Subtracao) \n 3(Multiplicacao) \n 4(Divisao) \n");   /*Lendo Opção*/
       scanf("%d" ,&op); /*Dando acesso dos valores lidos para a variável*/
       switch (op){ /*Iniciando comando switch*/
              
              case 1: /*Primeira Case do programa (Adição)*/
              printf("Digite primeiro valor para a adicao: \n"); 
              scanf("%d" ,&x);
              
              printf("Digite o outro valor para a adicao: \n");
              scanf("%d" ,&y);
              
              t=x+y;
              printf("Resultado da adicao e: %d \n\n" ,t);
              system ("Pause");
              break; /*parada do caso*/
                    
                    case 2: /*Segunda Case do programa (Subtração)*/ 
                    printf("Digite primeiro valor para subtracao: \n");     
                    scanf("%d" ,&x);
                    
                    printf("Digite o outro valor para a subtracao: \n");
                    scanf("%d" ,&y);
                    
                    t=x-y;
                    printf("Resultado da subtracao e: %d \n\n" ,t);
                    system ("Pause");
                    break; /*parada do caso*/
                          
                          case 3: /*Terceira Case do programa (Multiplicação)*/
                          printf("Digite primeiro valor para multiplicacao: \n");     
                          scanf("%d" ,&x);
                          printf("Digite o outro valor para a multiplicacao: \n");
                          scanf("%d" ,&y);
                          t=x*y;
                          printf("Resultado da multiplicacao e: %d \n\n" ,t);
                          system ("Pause");
                          break; /*parada do caso*/
                                
                                case 4: /*Quarta Case do programa (Divisão)*/
                                while(x==0)
                                {
                                printf("Digite primeiro valor para divisao: \n");     
                                scanf("%d" ,&x);
                                }
                                
                                while(y==0)
                                {
                                printf("Digite o outro valor para a divisao: \n");
                                scanf("%d" ,&y);
                                }
                               
                                if(y>x)
                                {
                                t=y/x;
                                }
                                else
                                {      
                                t=x/y;
                                } 
                               
                                printf("Resultado da divisao e: %d \n\n" ,t);
                                system ("Pause");
                                break; /*parada do caso*/
                                      
                                      default: /*Case de erro se digitar uma opção fora das oferecidas*/
                                      printf("Opcao Invalida! \n");  
                                      system ("Pause");
                        
                        return 0;     /*Fim*/
                        } /*fecha switch*/
              } /*fecha todas as chaves*/
    
    Exercício em linguagem C realizado por [Somente usuários registrados podem vem os links. ](Dorcílio).


    Espero que gostem...

    Atenciosamente,
    João Neto.
    Última edição por João Neto; 27-08-2012 às 11:18 PM.
    Hidden Content
    Um verdadeiro guerreiro sabe que ao perder uma batalha
    está melhorando sua arte de manejar a espada.
    Saberá lutar com mais habilidade
    na próxima vez.

  2. #2

    Avatar de Sunligth
    Data de Ingresso
    Jun 2012
    Localização
    Sao Paulo
    Posts
    155
    Agradecido
    105
    Agradeceu
    73
    Peso da Avaliação
    7

    Padrão

    cade a verificação de não pode existir divisão por 0?

  3. #3

    Avatar de michetti
    Data de Ingresso
    Oct 2011
    Localização
    oi
    Idade
    23
    Posts
    108
    Agradecido
    2
    Agradeceu
    2
    Peso da Avaliação
    8

    Padrão

    Subtitua o CASE 4 por este

    Código:
                                case 4: /*Quarta Case do programa (Divisão)*/
                                printf("Digite primeiro valor para divisao: \n");     
                                scanf("%d" ,&x);
                                if(x==0){
                                printf("Valor invalido\n");
                                system("pause");
                                break;}
                                printf("Digite o outro valor para a divisao: \n");
                                scanf("%d" ,&y);
                                if(y==0){
                                printf("Valor invalido");
                                break;
                                system("pause");}
                                t=x/y;
                                printf("Resultado da divisao e: %d \n\n" ,t);
                                system ("Pause");
                                break; /*parada do caso*/

  4. #4



    Avatar de João Neto
    Data de Ingresso
    Nov 2010
    Localização
    Barzinho de Lorencia
    Idade
    24
    Posts
    1.090
    Agradecido
    46
    Agradeceu
    26
    Peso da Avaliação
    19

    Padrão

    @Sunligth,

    O objetivo não é como fazer uma calculadora e sim dar uma breve explicação de como usar o Switch e Case... Era um código antigo meu...

    @michetti,

    Não é querer criticar mais o código postado ainda não era o que se encaixava melhor....

    Código do tópico editado para melhor compreenção do Case 4 (Divisão).

    Atenciosamente,
    João Neto.
    Hidden Content
    Um verdadeiro guerreiro sabe que ao perder uma batalha
    está melhorando sua arte de manejar a espada.
    Saberá lutar com mais habilidade
    na próxima vez.

  5. #5

    Avatar de michetti
    Data de Ingresso
    Oct 2011
    Localização
    oi
    Idade
    23
    Posts
    108
    Agradecido
    2
    Agradeceu
    2
    Peso da Avaliação
    8

    Padrão

    Sim, mais é uma solução simples, e tem outra coisa também.
    Esta calculadora so resolve resultados quando x é maior que b rs
    Tem que mudar uma coisinhas basicas e tals mais como disse no primeiro post é bom para aprendizado.


    @edit
    Olhando oque você substituiu la, se encaixa perfeitamente ^^
    Última edição por michetti; 27-08-2012 às 07:41 PM.

  6. #6

    Avatar de Kennedy Salvino
    Data de Ingresso
    Feb 2012
    Localização
    Arara - PB
    Posts
    149
    Agradecido
    33
    Agradeceu
    25
    Peso da Avaliação
    7

    Padrão

    Boa João, porém acho mais prático utilizar o C#.

  7. #7



    Avatar de João Neto
    Data de Ingresso
    Nov 2010
    Localização
    Barzinho de Lorencia
    Idade
    24
    Posts
    1.090
    Agradecido
    46
    Agradeceu
    26
    Peso da Avaliação
    19

    Padrão

    @michetti,

    Pronto, acrescentado mais uma condição no case 4 (Divisão) para melhoramento do código....
    Agora tanto faz se X ou Y é maior, a divisão de números inteiros funcionando perfeitamente.

    Atenciosamente,
    João Neto.
    Hidden Content
    Um verdadeiro guerreiro sabe que ao perder uma batalha
    está melhorando sua arte de manejar a espada.
    Saberá lutar com mais habilidade
    na próxima vez.

  8. #8

    Avatar de Pronoob
    Data de Ingresso
    Sep 2009
    Localização
    no pc
    Posts
    194
    Agradecido
    17
    Agradeceu
    8
    Peso da Avaliação
    11

    Padrão

    dessa maneira nao tem como eu dividir um numero menor por um maior, seria melhor colocar a variavel "t" como float para aceitar numeros reais.
    Nada a declarar.

  9. #9



    Avatar de João Neto
    Data de Ingresso
    Nov 2010
    Localização
    Barzinho de Lorencia
    Idade
    24
    Posts
    1.090
    Agradecido
    46
    Agradeceu
    26
    Peso da Avaliação
    19

    Padrão

    @Pronoob,

    Justamente, não coloquei pois à questão era de números inteiros... Porém para funcionar da forma que você citou, realmente teria que usar variável declarada como float.

    Atenciosamente,
    João Neto.
    Hidden Content
    Um verdadeiro guerreiro sabe que ao perder uma batalha
    está melhorando sua arte de manejar a espada.
    Saberá lutar com mais habilidade
    na próxima vez.

  10. #10



    Avatar de João Neto
    Data de Ingresso
    Nov 2010
    Localização
    Barzinho de Lorencia
    Idade
    24
    Posts
    1.090
    Agradecido
    46
    Agradeceu
    26
    Peso da Avaliação
    19

    Padrão

    @Todos,

    Isso vária muto da questão abordada, no caso abordado pelo tópico postado já está de bom tamanho à exemplificação... O que era para ser passado foi feito...
    Mas claro que em certos casos é bom abordar o que o Sup_Anjo disse, como o contrário tambem.

    Atenciosamente,
    João Neto.
    Hidden Content
    Um verdadeiro guerreiro sabe que ao perder uma batalha
    está melhorando sua arte de manejar a espada.
    Saberá lutar com mais habilidade
    na próxima vez.

 

 
Página 1 de 2 12 ÚltimoÚltimo

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Dúvida| Como retirar o Case sensitive no /post
    Por EllyssonMiike no fórum Dúvidas
    Respostas: 3
    Último Post: 15-03-2014, 12:34 AM
  2. |Tutorial| [Explicação]+[Código Java] Switch Case e Default
    Por João Neto no fórum Java
    Respostas: 1
    Último Post: 22-02-2013, 05:14 PM
  3. |Tutorial| [Explicação]+[Código C] PA e PG Utilizando Funções
    Por João Neto no fórum C
    Respostas: 5
    Último Post: 12-10-2012, 03:05 PM
  4. Respostas: 5
    Último Post: 21-04-2012, 02:12 AM
  5. |Tutorial| [Iniciante]Calculadora básica
    Por FusioN no fórum Visual Basic
    Respostas: 0
    Último Post: 18-12-2011, 05:07 PM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •