Ir ao conteúdo
  • Cadastre-se

VisualG Calculadora simples em Visualg


Posts recomendados

Olá amigos boa noite!! Estou começando a aprender programação e estou vendo algumas video aulas de logica de programação pelo Youtube. Sei que é cedo mas estou tentando fazer um projeto simples, onde peço para o usuário digitar um numero e em seguida peço para digitar outro numero e depois pergunto para o usuário, o que ele quer fazer, multiplicar, subtrair ou somar, armazeno a resposta em uma variável, ate aqui o algorítimo funciona bem! O problema eh que estou conseguindo resolver o problema apos uma escolha do usuário, porém algorítimo da todas mesmo o usuário escolhendo apenas. Sera que poderiam me ajudar? Estou usando o visualg 3.0. Obrigado!!

 

Algoritmo "semnome"
// Disciplina  :  [Linguagem e Lógica de Programação]
// Professor   : Antonio Carlos Nicolodi
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 04/09/2018
Var
   // Seção de Declarações das variáveis
   x,y : inteiro
   problema : caractere

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   escreval ("Digite um numero.")
   leia (x)
   escreval ("Digite outro numero.")
   leia (y)
   escreval ("o que deseja fazer? Multiplicar, subtrair ou somar?")
   leia (problema)

   caso problema = somar faca
      escreval ("A soma dos numeros digitados é: ",x+y)

   caso problema = multiplicar faca
      escreval ("A multiplicação dos numeros digitados é: ",x*y)

   caso problema = diminuir    faca
      escreval ("A subtração dos numeros digitado é: ",x-y)
Fimalgoritmo

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Boa noite, @IceCube.sp

 

Faz um bom tempo que não mexo com VisualG, mas pelo que olhei na documentação, a estrutura do seu ESCOLHA-CASO está inválida, onde o correto seria inicializar a validação de qual tipo de operação está sendo realizado, com o comando ESCOLHA, onde este diria qual é a variável em questão sendo validado nos CASOS, conforme exemplo abaixo:

 

escolha(variavel)
    caso 1
        escreval("Primeira opção...")
    caso 2
        escreval("Segunda opção...")
    outrocaso
        escreval("Nenhum das opções cadastradas")
fimescolha

Note que o seu algoritmo irá realizar as duas primeiras comparação (caso 1 e caso 2), se a validação não coincidir com nenhuma das duas opções, será executado o outro caso.

 

Mesmo assim, testei o seu código com sua atual comparação de strings (somar, substrair e multiplicar) e ele não as reconhece, por alguma razão. Como não tenho muito mais contato com a ferramenta, espero que alguém possa explicar a razão, pois eu realmente não sei.

 

Uma solução, temporária, é alterar os valores recebidos na variável problema, pelos seus operadores (+-*). Testei dessa forma e funcionou aqui.

 

Qualquer dúvida, é só falar.

 

Bons estudos.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

10 minutos atrás, XenoStory disse:

Boa noite, @IceCube.sp

 

Faz um bom tempo que não mexo com VisualG, mas pelo que olhei na documentação, a estrutura do seu ESCOLHA-CASO está inválida, onde o correto seria inicializar a validação de qual tipo de operação está sendo realizado, com o comando ESCOLHA, onde este diria qual é a variável em questão sendo validado nos CASOS, conforme exemplo abaixo:

 


escolha(variavel)
    caso 1
        escreval("Primeira opção...")
    caso 2
        escreval("Segunda opção...")
    outrocaso
        escreval("Nenhum das opções cadastradas")
fimescolha

Note que o seu algoritmo irá realizar as duas primeiras comparação (caso 1 e caso 2), se a validação não coincidir com nenhuma das duas opções, será executado o outro caso.

 

Mesmo assim, testei o seu código com sua atual comparação de strings (somar, substrair e multiplicar) e ele não as reconhece, por alguma razão. Como não tenho muito mais contato com a ferramenta, espero que alguém possa explicar a razão, pois eu realmente não sei.

 

Uma solução, temporária, é alterar os valores recebidos na variável problema, pelos seus operadores (+-*). Testei dessa forma e funcionou aqui.

 

Qualquer dúvida, é só falar.

 

Bons estudos.

Boa-noite @XenoStory Aqui o código funciona, porém vamos supor que o usuário escolha somar, o código irá efetuar a soma corretamente, porém ele tbem fará a multiplicação e a subtração mesmo o usuário escolhendo apenas somar. Eu quero que após uma escolha do usuário o programa resolva e termine, não que ele continue e execute os demais operações.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@IceCube.sp      seu caso está  errado ,   ele precisa ser usado junto com o escolha  assim  :

Algoritmo "comando caso"
Var
  a,b              : caractere
  num,num2 : inteiro
Inicio
  escreva("Digite Um Número ------ :")
  leia(num)
  escreva("Digite Outro Número --- :")
  leia(num2)
  escreval("Digite Qual Operação - :")
  escreval("multiplicar ---------- :")
  escreval("dividir -------------- :")
  escreval("subtrair ------------- :")
  escreval("somar----------------- :")
  leia(a)
  escolha a
    caso "multiplicar"
      escreval("Resultado Da Multiplicação -> ",num * num2)
    caso "somar"
      escreval("Resultado Da Soma ----------> ",num + num2)
    caso "dividir"
      escreval("Resultado Da Divisão -------> ",num / num2)
    caso "subtrair"
      escreval("Resultado Da Subtração------> ",num - num2)
    outrocaso
      escreval("Só Pode Essas Quatro Oprerações . . .!")
  fimescolha
Fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Complementando... vou tentar resumir os pontos.

 

1#

Sobre:

10 horas atrás, IceCube.sp disse:

          escreval ("o que deseja fazer? Multiplicar, subtrair ou somar?")
          leia (problema)
          
          caso problema = somar faca
          escreval ("A soma dos numeros digitados é: ",x+y)

          caso problema = multiplicar faca
          escreval ("A multiplicação dos numeros digitados é: ",x*y)

          caso problema = diminuir    faca
          escreval ("A subtração dos numeros digitado é: ",x-y)

 

Perceba que na pergunta está utilizando Multiplicar, subtrair e somar, mas nas verificações utilizou diminuir, em vez de subtrair.

 

Outra coisa que aconteceu é que, para comparar textos no Visual (ou seja, conteúdo de uma variável do tipo caractere com um texto em si), usam-se o conteúdo entre " (aspas duplas). Vide o código do @devair1010. Ou seja, se a sintaxe do escolha/caso estivesse correta, seria algo como:

          caso problema = "somar" faca

em vez de:

          caso problema = somar faca

 

obs.: Mas de qualquer forma, como já foi demonstrado pelo colegas, essa sintaxe do caso está incorreta. 

 

 

 

2#

Outra forma de "Estrutura de Seleção" (ou "Desvio Condicional") seria utilizando o se/então. Ex.:

se problema = "multiplicar" ENTÃO
   escreval ("A multiplicação dos numeros digitados é:",x*y)
fimSe
se problema = "subtrair" ENTÃO
   escreval ("A subtração dos numeros digitado é:",x-y)
fimSe
se problema = "somar" ENTÃO
   escreval("A soma dos numeros digitados é:",x+y)
fimSe

 

Mas quando ocorre das condições serem mutuamente excludentes, ou seja, se for uma não será uma outra, utilizam-se o se/então/senão. Pois, se uma condição for verdadeira, não é necessário continuar verificando as próximas (pois se uma for verdadeira, jamais terá outra verdadeira posteriormente). Ai, poderia ficar assim:

se problema = "multiplicar" ENTÃO
   escreval ("A multiplicação dos numeros digitados é:",x*y)
senao
   se problema = "subtrair" ENTÃO
      escreval ("A subtração dos numeros digitado é:",x-y)
   senao
      se problema = "somar" ENTÃO
         escreval("A soma dos numeros digitados é:",x+y)
      fimSe
   fimSe
fimSe

 

 

 

3#

Resumindo:

 

Esse trecho usando escolha/caso:

9 horas atrás, devair1010 disse:

  escolha a
    caso "multiplicar"
      escreval("Resultado Da Multiplicação -> ",num * num2)
    caso "somar"
      escreval("Resultado Da Soma ----------> ",num + num2)
    caso "dividir"
      escreval("Resultado Da Divisão -------> ",num / num2)
    caso "subtrair"
      escreval("Resultado Da Subtração------> ",num - num2)
    outrocaso
      escreval("Só Pode Essas Quatro Oprerações . . .!")
  fimescolha

 

 

É análogo a esse:

se a = "multiplicar" ENTÃO
   escreval("Resultado Da Multiplicação -> ",num * num2)
senao
   se a = "somar" ENTÃO
      escreval("Resultado Da Soma ----------> ",num + num2)
   senao
      se a = "dividir" ENTÃO
         escreval("Resultado Da Divisão -------> ",num / num2)
      fimSe
      senao
         se a = "subtrair" ENTÃO
            escreval("Resultado Da Subtração------> ",num - num2)
         senao
            escreval("Só Pode Essas Quatro Oprerações . . .!")
         fimSe
      fimSe
   fimSe
fimSe

 

Ou seja, o escolha/caso seria uma forma mais elegante de usar um conjunto de se/senão/se....  Entretanto, o escolha/caso tem mais limitações... nem tudo que se faz com se/senão dá para ser feito com escolha/caso

 

Resumindo:

Existe uma ordem de aprendizado... como está iniciando, sugeriria fazer execícios com se/então ou se/então/senão. Só mais pra frente que usa o escolha/caso.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

13 horas atrás, devair1010 disse:

@IceCube.sp      seu caso está  errado ,   ele precisa ser usado junto com o escolha  assim  :


Algoritmo "comando caso"
Var
  a,b              : caractere
  num,num2 : inteiro
Inicio
  escreva("Digite Um Número ------ :")
  leia(num)
  escreva("Digite Outro Número --- :")
  leia(num2)
  escreval("Digite Qual Operação - :")
  escreval("multiplicar ---------- :")
  escreval("dividir -------------- :")
  escreval("subtrair ------------- :")
  escreval("somar----------------- :")
  leia(a)
  escolha a
    caso "multiplicar"
      escreval("Resultado Da Multiplicação -> ",num * num2)
    caso "somar"
      escreval("Resultado Da Soma ----------> ",num + num2)
    caso "dividir"
      escreval("Resultado Da Divisão -------> ",num / num2)
    caso "subtrair"
      escreval("Resultado Da Subtração------> ",num - num2)
    outrocaso
      escreval("Só Pode Essas Quatro Oprerações . . .!")
  fimescolha
Fimalgoritmo

 

Brother @devair1010  percebi q este código no visualg 3.0 não efetua as operações apos a decisão do usuário, agora se eu colocar no app para android chamado pseudocode ele funciona. Ja o codigo que o @Simon Viegas passou, funcionou perfeitamente. Estranho...

  • Curtir 1
  • Confuso 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
3 horas atrás, IceCube.sp disse:

Brother @devair1010  percebi q este código no visualg 3.0 não efetua as operações apos a decisão do usuário, agora se eu colocar no app para android chamado pseudocode ele funciona. Ja o codigo que o @Simon Viegas passou, funcionou perfeitamente. Estranho...

Testei no Visualg o código e funcionou normal aqui. Tenta explicar melhor o que acontece e se possível posta um print da tela.

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

3 horas atrás, Simon Viegas disse:

Testei no Visualg o código e funcionou normal aqui. Tenta explicar melhor o que acontece e se possível posta um print da tela.

 

No aguardo.

Simon, o seu código funciona normalmente, agora a solução que nosso amigo devair1010 passou não funciona no visualg, funciona apenas no app pseudocode para Android. 

 

Assim i’m que eu chegar em casa postarei um print.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Sobre:

19 horas atrás, IceCube.sp disse:

Descobri o erro amigos, o comando "Caso" não funciona na versão 3.0, apenas nas anteriores!

Agradeço a todos que me ajudaram...

 

Testei aqui na versão 3.0.7.0 e também não funcionou. Mas uma observação: o erro deve está relacionada especificamente esta versão. Testei na versão 3.0.6.5 e funcionou perfeitamente.

 

RESUMINDO:

A versão 3.0.7.0 é nova ("última de revisão 03/08/2018"), ou seja, possivelmente deve está com bugs. Sugiro utilizar a versão 3.0.6.5, até que arrumem.

 

Att,

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
Algoritmo "Calculadora quatro operações"
// Descrição   : Faça uma calculadora com as quatro operações.)
// Autor(a)    : ***************
// Data atual  : 16/07/2021
Var
   problema, a, b, c, d : caractere
   x, y : inteiro

Inicio
   escreval ("Digite um numero.")
   leia (x)
   escreval ("Digite outro numero.")
   leia (y)
   escreval ("**********O que deseja fazer?************")
   escreval ("Para somar tecle: a")
   escreval ("Para subtrair tecle: b")
   escreval ("Para multiplicar tecle: c")
   escreval ("Para dividir tecle: d")

   leia (problema)

   se problema = "c" ENTÃO
      escreval ("A multiplicação dos numeros digitados é:",x*y)
   senao
      se problema = "b" ENTÃO
         escreval ("A subtração dos numeros digitado é:",x-y)
      senao
         se problema = "a" ENTÃO
            escreval("A soma dos numeros digitados é:",x+y)
         senao
            se problema = "d" ENTÃO
               escreval("A divisão dos numeros digitados é:",x/y)
            fimSe
         fimSe
      fimSe
   fimse
Fimalgoritmo

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Rafahewl, sobre:

 

3 horas atrás, Rafahewl disse:
Var
   problema, a, b, c, d : caractere
   x, y : inteiro

 

As variáveis a, b, c e d foram declaradas, mas não foram utilizadas. Basta apagar as declarações, exemplo:

var
   problema: caractere
   x, y: inteiro

 

 

Adendo: se foi algo relacionado as opções lá no menu... perceba que lá são verificadas o "texto" da resposta... e isso não é uma variável... 

 

Tipo:

   se (problema = "c") entao
      escreval("A multiplicação dos numeros digitados é:", x*y)

 

Traduziria em algo como se o conteúdo da variável programa tiver o caractere "c", então faça o que está na linha abaixo".

 

 

Adendo: lembrando que a divisão por 0 (zero) não se dá muito bem com computadores, né? Daí, seria bom colocar uma verificação para não permitir tentar calcular a divisão caso y seja igual a 0. 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...