Ir ao conteúdo
  • Cadastre-se

Portugol iniciante (Algorítimo em Portugol) Visualg - Uma revisãozinha se poderem (:


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Ae glr, eu queria saber se vcs conseguem me ajudar, sou iniciante então por favor, sei que vai estar horrível mas paciência né, se alguém sabe visualg (ou nem precisa ser), e poder me ajudar, eu gostaria de fazer com que meu código entenda que no final, eu gostaria que ele me informasse entre as três variáveis, mas não consegui, porque não sei como fazer para que o código entenda que eu quero que ele primeiro cheque qual das opções o usuário escolheu e depois me informe o resultado das operações da variável correspondente. 

 

Edit: Variáveis são: (s), (me), (mult)

(Conta): Essa variável eu criei com o raciocínio de que no final eu iria colocar "conta", e acabaria se referindo a variável que seria escolhida pelo usuário que se tornaria o resultado da conta, mas acaba que ele retorna como por exemplo a variável (s), simplesmente o nome da variável, ao em vez do resultado obtido da operação, caso o usuário tivesse escolhido a opção "s" que é (SOMA).

Esse é o código:

 

algoritmo "teste"
var
   n1, n2, s, me, mut: inteiro
   nome: caractere
   conta: caractere
inicio
    escreva("Olá, aqui é sua calculadora interativa")
    escreva(", para começarmos, digite seu nome: ", nome)
    leia(nome)
    escreval("")
    escreva("por favor ensira o primeiro valor para poder calcular: ")
    leia(n1)
    escreval("")
    escreva("agora o segundo valor: ")
    leia(n2)
    escreval("")
    escreval("Ok ", nome, ",agora por favor escolha entre essas três opções:")
    escreval(" (S)= SOMA")
    escreval(" (ME)= MENOS")
    escreval(" (MUT)= MULTIPLICAÇÃO")
    escreval("Qual deseja?", conta)
    leia(conta)
    s <- n1 + n2
    me <- n1 - n2
    mut <- n1 * n2
    escreval("")
    escreval("O resultado entre", n1," e ",n2," é igual à:", conta)

fimalgoritmo

 

Pode parecer sem sentido ou sei lá, mas no visualg é assim, não é como em outros programas, que fica tudo separadinho, ou eu estou falando asneira, mas só gostaria que me ajudassem, sou inciante e quero ver se tenho manha, caso não, vou utilizar apenas para hob mesmo.

 

Se alguém tiver a paciência de ler e entender o contexto e souber a solução e poder me conta, ficarei grato, Obrigado para quem leu tudo, e tenha um ótimo dia/tarde/noite

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @ExePlays.

 

Sobre:

12 horas atrás, ExePlays disse:

eu gostaria de fazer com que meu código entenda que no final, eu gostaria que ele me informasse entre as três variáveis, mas não consegui, porque não sei como fazer para que o código entenda que eu quero que ele primeiro cheque qual das opções o usuário escolheu e depois me informe o resultado das operações da variável correspondente. 

 

O que você quer/precisa é utilizar uma estrutura de seleção. No VisualG tem essencialmente 2: [1] o se/entao e; o escolha/caso. Resumidamente funciona assim: quando o computador tenta executar o programa que você criou, ele vai seguindo o fluxo da mesma forma que lemos um texto, ou seja: da esquerda para direita, de cima para baixo. Acompanhe lá... ele vai lá definir o nome do programa, depois vai definir as varáveis com os seus respectivos tipos, e após vai iniciar o programa... vai executando linha a linha.. 

 

Mas acontece que, em determinados casos, é preciso mudar este fluxo natural... para isto que vai servir uma "estrutura de seleção". Quando utiliza por exemplo o se/entao, nele é definido uma expressão lógica que sempre resultará em VERDADEIRO ou FALSO (valor booleano). Assim, quando der VERDADEIRO, o computador vai executar o que vem depois do entao, caso a expressão resulte em FALSO, o programa vai imediatamente pular para a linha após o fimSe correspondente a esse se/entao. Por isso que podemos chamar o se/entao de "estrutura de seleção", pois ele serve para selecionar qual passos o computador deve executar ou não. É isso que você precisa no teu código.

 

Por favor, pesquise sobre as estruturas se/entao e escolha/caso na internet. Veja exemplos de uso. Acesse alguns tópicos de VisualG aqui no Fórum e tente entender as explicações e os códigos!!! Resolvas exercício simples.

 

 

 

Outro ponto é em relação ao teu código. Recomendo fortemente ajustar a nomenclatura das variáveis. Procure sempre utilizar "nomes" mais próximos da funcionalidade da variável. Ex.:

 

Você declarou estas variáveis assim:

 

13 horas atrás, ExePlays disse:

var
   s, me, mut: inteiro

 

E está utilizando assim no corpo do programa:

13 horas atrás, ExePlays disse:

    s <- n1 + n2
    me <- n1 - n2
    mut <- n1 * n2

 

Ou seja:

  • na primeira linha está funcionando para ter o resultado de uma ADIÇÃO, ou seja: está armazenando a SOMA;
  • na segunda linha está funcionando para ter o resultado de uma SUBTRAÇÃO, ou seja: está armazenando a DIFERENÇA (ou RESTO);
  • e por fim, na terceira linha, está funcionando para ter o resultado de uma MULTIPLICAÇÃO, ou seja: está armazenando o PRODUTO.

Logo, faria mais sentido declarar algo assim:

var
   soma, resto, produto: inteiro

Entende?

 

Veja por exemplo a variável conta:

13 horas atrás, ExePlays disse:

var
   conta: caractere

 

Ela está sendo utilizada de duas formas distintas:

 

Aqui:

13 horas atrás, ExePlays disse:

    escreval("Ok ", nome, ",agora por favor escolha entre essas três opções:")
    escreval(" (S)= SOMA")
    escreval(" (ME)= MENOS")
    escreval(" (MUT)= MULTIPLICAÇÃO")
    escreval("Qual deseja?", conta)

 

e aqui:

 

13 horas atrás, ExePlays disse:

escreval("O resultado entre", n1," e ",n2," é igual à:", conta)

 

Veja: no primeiro código, você está utilizando a variável para "ler a opção", ou seja: qual operação quer realizar. Já no segundo está utilizando para "ser o resultado da operação". A opção é uma coisa, o resultado é outra. :)

 

Poderia ser algo assim:

var
   soma, diferenca, produto : inteiro
   opcao : caractere
   resultado : inteiro

 

 

Abaixo segue um código para referência inicial:

algoritmo "Calculadora Interativa"
var
   nome : caractere
   n1, n2 : inteiro
   soma, diferenca, produto : inteiro
   opcao: caractere
   resultado : inteiro
inicio
   escreva ("Olá!, aqui é sua calculadora interativa.")
   escreva (" Para começarmos, digite seu nome: ")
   leia(nome)
   escreval("")
   escreva ("Por favor, insira o primeiro valor para poder calcular: ")
   leia(n1)
   escreval("")
   escreva ("Agora o segundo valor: ")
   leia(n2)
   escreval("")
   escreval("OK ", nome, ", agora, por favor, escolha entre estas três opções:")
   escreval(" (A) = ADIÇÃO")
   escreval(" (S) = SUBTRAÇÃO")
   escreval(" (M) = MULTIPLICAÇÃO")
   escreval("Qual deseja?")
   leia(opcao)



fimAlgoritmo

A partir daí, colocaria "estruturas de seleções" (pode ser se/entao) que, para cada opção ("a", "s" ou "m"), vai efetuar o cálculo corresponde a após dar a resposta. Você não precisa fazer exatamente da forma que estou sugerindo, mas apenas entender o contexto da explicação e aplicar da forma que desejar.

 

Qualquer dúvida ou comentário é só postar.

 

No aguardo.

 

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

@Simon Viegas Cara, o que posso dizer sobre esse comentário.

 

Você simplesmente me deu uma aula, muito obrigado mesmo, obrigado por ter dedicado seu tempo para me ajudar, eu vou seguir suas dicas. Depois de ler seu post, me senti até iluminado e inspirado kkkk.

Meu sincero agradecimento à você. Com certeza explica melhor que muitos por ai. Sou iniciante, então tenho muito que aprender, mas minha maior dificuldade e ter pessoas que queiram me ajudar, porque ver vídeo no youtube e procurar coisas que possam resolver o meu problema em específico é difícil. 

 

Abraço e tudo de bom pra você !!

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

@Simon Viegas  Agora consegui fazer com que funcione, sei que poderia ter usado o "ESCOLHA/CASO", mas optei por "SE/ENTAO", apenas para escrever mais e poder me exercitar.

Obrigado muito pela ajuda, agora consegui superar mais um desafio. Que venham MAIS !!

Esse foi o código final, ainda não esta uma belezinha, mas já é um progresso:

algoritmo "calculadora basica"
var
   n1, n2: real
   a, s, m, d: real
   opcao: caractere
   resultado: real
inicio
   escreva ("Aqui é sua calculadora interativa. Para começarmos,")
   escreva (" digite o primeiro valor:")
   leia(n1)
   escreva ("Agora o segundo valor:")
   leia(n2)
   escreval("Agora escolha entre essas quatro operações diferentes:")
   escreval("(a): ADIÇÃO")
   escreval("(s): SUBTRAÇÃO")
   escreval("(m): MULTIPLICAÇÃO")
   escreval("(d): DIVISÃO")
   escreva("Qual você deseja:")
   leia(opcao)
   se opcao= "a" entao
      resultado := n1 + n2
   senao
      se opcao= "s" entao
         resultado := n1 - n2
      senao
         se opcao= "m" entao
            resultado := n1 * n2
         senao
            se opcao= "d" entao
               resultado := n1 / n2
            fimse
         fimse
      fimse
   fimse
   escreva("O resultado da operação é:",resultado)
fimalgoritmo

 

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

  • Membro VIP

@ExePlays, só para finalizar:

 

 

1. Falta dar um identada no código. Para auxiliar, pressionar Ctrl+G no VisualG;

2. Outro ponto que você NÃO precisa declarar as opções, apague o trecho abaixo:

 

1 hora atrás, ExePlays disse:

a,s,m,d: real

 

3. Precisa proteger a divisão, ou seja: verifique se o valor de n2 é diferente de 0.

4. Sugiro quebrar a linha lá no início... ex.:

   escreval("Aqui é sua calculadora interativa")
   escreva ("Para começarmos, digite o primeiro valor: ")

 

No aguardo

 

 

Link para o comentário
Compartilhar em outros sites

Implementei as suas dicas, mas tem uma em especifico que ainda não sei resolver, como faço para verificar se a variável n2 é diferente de 0

algoritmo "calculadora basica"
var
   n1,n2: real
   opcao: caractere
   resultado: real
inicio
   escreval("Aqui é sua calculadora interativa.")
   escreva(" Para começarmos, digite o primeiro valor:")
   leia (n1)
   escreva ("Agora o segundo valor:")
   leia (n2)
   escreval("Agora escolha entre essas quatro operações diferentes:")
   escreval("(a): ADIÇÃO")
   escreval("(s): SUBTRAÇÃO")
   escreval("(m): MULTIPLICAÇÃO")
   escreval("(d): DIVISÃO")
   escreva("Qual você deseja:")
   leia (opcao)
   se opcao= "a" entao
      resultado:= n1 + n2
   senao
      se opcao= "s" entao
         resultado:= n1 - n2
      senao
         se opcao= "m" entao
            resultado:= n1 * n2
         senao
            se opcao= "d" entao
               resultado:= n1 / n2
            fimse
         fimse
      fimse
   fimse
   escreva("O resultado da operação é:",resultado)
fimalgoritmo

 

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

  • Membro VIP

A resposta está na pergunta:
 

agora, ExePlays disse:

se a variável n2 é diferente de 0

 

 

Algo como:

se opcao = "d" entao
   se n2 <> 0 entao
      resultado := n1 / n2
   fimse
fimse

ou complementando:

se opcao = "d" entao
   se n2 <> 0 entao
      resultado := n1 / n2
   senao
      escreval("A divisão por zero não é definida")
   fimse
fimse

 

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Simon Viegas disse:

<>

Certo, então quando utilizo essas "setas", estou basicamente falando n2, tem que ser maior que zero, ou numero negativo, certo ?

senao
            se opcao= "d" entao
               resultado:= n1 / n2
               se n2= "0" entao
               resultado: "O divisor não pode ser 0!!"

Eu já estava fazendo desta forma, esta incorreta né ?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução
2 minutos atrás, ExePlays disse:
5 minutos atrás, Simon Viegas disse:

<>

Certo, então quando utilizo essas "setas", estou basicamente falando n2, tem que ser maior que zero, ou numero negativo, certo ?

Não, simplesmente é o sinal de "diferente" no VisualG. É o oposto do operador relacional "=".. veja todos aqui. Em algumas linguagens, usam-se, por exemplo, "!=".

 

 

 

 

3 minutos atrás, ExePlays disse:

senao
   se opcao= "d" entao
      resultado:= n1 / n2
      se n2= "0" entao
         resultado: "Não se pode dividir quando o denominador é zero!!"

Eu já estava fazendo desta forma, esta incorreta né ?

 

Não. A proposta da verificação do valor do n2 é justamente para não deixar o computador efetuar a divisão por 0... pois o computador não sabe fazer isso!!! Logo, a divisão deve ficar dentro da "proteção".

 

Obvervações:

  1. n2 é um inteiro, logo tem que usar um número. Ao usar as aspas, está comparando com um caractere;
  2. resultado é real, não pode atribuir valores do tipo caractere a ele. O que você fez faz sentido, mas não vai funcionar.

Poderia ser assim:

senao
   se opcao = "d" entao
      se n2 = 0 entao
         escreval("Não se pode dividir quando o denominador é zero!!")
      senao
         resultado := n1 / n2

 

Ah! aí vai ter que pensar no que fazer com a resposta final quado colocarem o 0 no denominador... pois ela vai continuar aparecendo... rs. Ou deixa ela lá, ou muda a lógica para apenas aparecer que não pode dividir por 0.

 

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

@Simon Viegas De verdade Simon, obrigado pela paciência de me ensinar, fico grato de verdade, agora com sua aula, creio que esteja tudo esclarecido. Vou começar a fazer uns cursos grátis aqui, ver se tenho evolução, caso eu tenha mais alguma duvida com algo novo que eu eventualmente venha ter, vou recorrer a este fórum de novo, e se você tiver paciência de novo né e poder explicar alguma possível outra dúvida ficarei grato. 

Aprendi muito com você, agradeço de verdade, abraço e tudo de bom pra você e sua família !!

  • Curtir 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!