Ir ao conteúdo

Posts recomendados

Postado

galera, é o seguinte : comecei a programar faz nem uma semana, comecei com o visualg 2.0, tive uma ideia de fazer algo simples com os comandos que já sabia. Então a ideia era : fazer algo que te dissesse se você esta acima ou abaixo do peso, então fiz o programa efetuar uma conta para saber.

O PROBLEMA É o resultado da conta, por exemplo, se a conta de entre 18 a 25 você esta no peso ideal, PORÉM, eu não sei como botar o resultado para ser ENTRE 18 e 25, só sei escolher 18, ou 25.

Tem como me ajudarem ?

paint.png

  • Curtir 3
Postado

Olá!

Se você usar essa tabelinha como exemplo, ela vai ti ajudar a seguir a lógica do seu problema:

Imc.png.b6d52faeda867e8477f1547a41c6d10e.png

 

Para calcular o IMC, basta que usar: imc =peso/altura*altura; Depois você

usa o comando de decisão SE pra analisar o IMC de cada pessoa e mostra seu índice de obesidade! exemplo:

Se (imc <= 18.5) então
    mostre:'IMC é Azul Magro.';
Se senão(imc <= 25) então
   mostre:'IMC Verde Normal';

E por ai vai...

 

Espero ter ajudado.

  • Curtir 1
  • Amei 1
Postado

@renaldinhogaúche     para postar seu código é melhor usar o botão   <>   que está desenhado lá na barra de ferramentas da janela de postar

barap.jpg.eeaf5ebaf00449ccbc218612eb93bef8.jpg

  para facilitar a cópia do código ,  para colocar se o valor está entre um e outro , coloque as duas opções entre parênteses e o operador entre eles ,  e seu código ficaria assim  :

algoritmo "saiba se você está acima do pêso"
var
  nota1,nota2,resultado,resultado2 : real
inicio
  escreva("digite sua altura ")
  leia(nota1)
  escreva("digite seu peso ")
  leia(nota2)
  resultado <- nota1 * 2
  resultado <- nota2 / resultado
  se ( resultado > 15 ) e ( resultado < 25 ) entao
    escreval("você está Ótimo , seu pêso é Ideal !")
  fimse
fimalgoritmo

 

  • Curtir 2
  • Membro VIP
Postado

@LuisOPsum, dica iniciais:

  1. Use nomenclaturas de variáveis sugestíveis;
  2. Sempre deixe seu programa rodável (mesmo que ainda incompleto).

 

Exemplo para o 1:

var
  altura, peso : real
  IMC : real


Exemplo para o 2:

algoritmo "Saiba se você está acima do peso"
var
  altura, peso : real
  IMC : real
inicio
  escreva("Digite tua altura ")
  leia(altura)
  escreva("Digite teu peso ")
  leia(peso)



fimAlgoritmo

Perceba que esse código só vai ler 2 valores e vai finalizar... não vai dar uma resposta... normal! ainda não finalizou.. mas se botar para rodar, vai rodar sem erros... ele está rodável, apenas ainda não está pronto.

 

A ideia é que aos poucos você vai inserindo algo novo no código, mas sempre deixando ele rodável... ou seja: ou você termina de fazer o que começou, ou desfaz... ou, se está tentando fazer e está com erro, deixa o código da forma que está testando.. e assim verificar o que está errado.

 

***

 

Vamos inserir o cálculo do IMC, ex.:

algoritmo "Saiba se você está acima do peso"
var
  altura, peso : real
  IMC : real
inicio
  escreva("Digite tua altura: ")
  leia(altura)
  escreva("Digite teu peso: ")
  leia(peso)
  
  IMC <- altura * 2
  IMC <- peso / IMC

  escreval("Seu IMC é ", IMC:1)
  


fimAlgoritmo

 

Exemplo de resultado:

image.png


Tá! mas como saber se o IMC está certo?

 

Abrir alguns sites online e testei.. Exemplo:
 

image.png

 

Opa! deu 23.94, e não 20,35... tem algo errado aí!!!

 

Vamos revisar a fórmula para calcular o IMC. Achei isso:
image.png

 

Ou seja: a fórmula correta é a "a altura ao quadrado", mas no teu código você fez "a altura vezes 2". Corrigindo fica:

algoritmo "Saiba se você está acima do peso"
var
  altura, peso : real
  IMC : real
inicio
  escreva("Digite tua altura: ")
  leia(altura)
  escreva("Digite teu peso: ")
  leia(peso)
  
  IMC <- altura * altura
  IMC <- peso / IMC

  escreval("Seu IMC é ", IMC:1:2)
  


fimAlgoritmo

 

Resultado:

image.png

 

Deu certo... 

 

Agora posso inserir mais uma coisa nova: a classificação de acordo com o valor do IMC.

 

Mas antes prosseguir, vale revisar a fórmula. Veja:

  IMC <- altura * altura
  IMC <- peso / IMC

Não faz muito sentido o IMC ser "altura ao quadrado" e logo depois ser o "peso dividido pelo IMC"... tá estranho, não? Algo mais correto poderia ser assim:

  alturaAoQuadrado <- altura * altura
  IMC <- peso / alturaAoQuadrado

Percebe como fica tudo mais auto-explicativo e coerente com que está sendo proposto?

Como é uma conta simples, poderia ser feito diretamente... ex.:

  IMC <- peso / (altura * altura)

Não tem problema... vai dar na mesma... o que precisa ser evitado é "reaproveitar uma variável" para uma função diferente do que ela foi declarada... 

 

 

Por fim... basta inserir as "estruturas de seleção" para classificar o indivíduo de acordo com o valor do IMC. Essa parte:

 

6 horas atrás, renaldinhogaúche disse:

O PROBLEMA É o resultado da conta, por exemplo, se a conta de entre 18 a 25 você esta no peso ideal, PORÉM, eu não sei como botar o resultado para ser ENTRE 18 e 25, só sei escolher 18, ou 25.

 

 

algoritmo "Saiba se você está acima do peso"
var
   altura, peso, alturaAoQuadrado : real
   IMC : real
inicio
   escreva("Digite tua altura: ")
   leia(altura)
   escreva("Digite teu peso: ")
   leia(peso)

   alturaAoQuadrado <- altura * altura
   IMC <- peso / (altura * altura)

   escreval("Seu IMC é ", IMC:1:2)
   
   se (IMC < 18.5) entao
      escreval("MAGREZA")
   fimSe

   se ((IMC >= 18.5) e (IMC < 35)) entao
      escreval("NORMAL")
   fimSe





fimAlgoritmo

Por aí vai..

 

Então, essa parte da seleção entra alguns pontos:

  1. a estrutura de seleção em si, ou seja: usar o se/entao. Também pode ser conhecido como "Desvio condicional".
  2. na expressão da condição no se, que a parte que está com dúvida, entra os Operadores Relacionais e Operadores Lógicos.


Perceba ali no segundo se/entao que um tem tem o "=" e no outro não... 18.5 está incluso na faixa... já 35 não, só valores menores que ele. Seria melhor utilizar "<35" que "<=34.99"... Com esse último também iria "funcionar", mas não iria ficar tão preciso... vai que rola um 34.992? Ele não é nem menor igual a 34.99, nem é maior ou igual que 35... o cara iria ficar sem classificação!!!

 


Daí seria só efetuar pequenos ajustes para o teu gosto e terminar de inserir as outras classificações possíveis...

 

ADENDO: faz mais sentido utilizar se/entao/senao, mas se ainda não estudou senao, ignore e use apenas se simples mesmo.

 

  • Curtir 1
  • Obrigado 1
  • Amei 1
  • Membro VIP
Postado

@renaldinhogaúche, por favor, termine a implementação e depois poste o código final aqui para analisarmos e também poder servir de base para um eventual novo visitante.

 

Se tiver dúvidas em alguma parte, é só falar.

 

Adendo 1: lembrando que tecnicamente deverá utilizar uma estrutura se/entao/senao ou escolha/caso., em vez de um monte de se/entao separados.

Adendo 2: separados que me refiro acima não é o "espaçamento entre os se/entao", mas que, ao NÃO utilizar o senao, o programa vai se comportar como se fossem instruções independentes umas das outras (todas as condições vão ser verificadas independentes dos valores), ou seja: esse espaçamento que dei no código foi para enfatizar isso... (o separamento entre as linhas é apenas estético para o VisualG). Ao utilizar um senao (corretamente), quando uma condição foi verdadeira, o programa vai pular para o fim, ou seja: não faz as outras verificações (já que se estiver numa classificação, não tem como ser outra ao mesmo tempo).

 

  • Curtir 1

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!