Ir ao conteúdo
  • Cadastre-se

VisualG Algoritmo para calculo específico


Ir à solução Resolvido por devair1010,

Posts recomendados

Prezados senhores, meus cordiais cumprimento.

 

Sou estudante de Tecnologia em Redes e me foi passado uma atividade para criar um algorítimo específico (no VisualG e Pascalzim. Eu confesso que minha cabeça já está em "parafuso" e ainda não conclui o meu projeto. Peço a ajuda de algum especialista para me ajudar a desenvolver esse algorítimo de um modo simples e objetivo.

Segue abaixo o que ja criei, para que seja implementado corretamente.

 

Ps. O algorítimo consiste em calcular a quantidade mínima de água diária por pessoa, levando em consideração os seguintes parâmetros; 

Crianças e Adultos até 54 anos > 0,35 ml X peso corporal = Total de ml/litros a beber

Idosos* a partir dos 55 anos > 0,30 ml X  peso corporal = Total de ml/litros a beber

Pessoas com complicações renais (independente da idade) > 0,20 ml X peso corporal = Total de ml/litros a beber

 

Assim sendo, necessito desse algorítimo para calcular essa média.

 

Desde já meu muito obrigado.

 

=======================================================

Algoritmo "Quantidade de água por pessoa"
// 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  : 09/10/2019
Var
anoAtual,anodeNascimento,idade,qt1,qt2,qt,media1,peso:real
nome, resp, yes, not :caracter


Inicio

   escreval("QUANTIDADE MÍNIMA DE ÁGUA POR PESSOA")
   escreval("")
   escreva ("Preencha este formulário CORRETAMENTE!")
   escreval("")
   escreval("")
   escreva("SEU NOME:")
     leia(nome)

   escreval(" ")
   escreva("DIGITE SEU ANO DE NASCIMENTO:")
     leia(anodeNascimento)
   
   escreval(" ")
   escreva("DIGITE SEU ANO ATUAL:")
     leia (anoAtual)

   escreval(" ")
   escreva("DIGITE SEU PESO (EM KG.):")
      leia(peso)
      
   escreval(" ")
   escreva("VOCÊ TEM PROBLEMA RENAL (S) OU (N): ")
   leia (resp)

   escreval(" ")
   idade <- (anoAtual - anodeNascimento)
   media1 <- (peso*0.035)
   qt <- (media1)
   qt1 <-(media1/0.200)
   
   se (idade)=> 55
   entao (media1)
    <- (peso*0.030)
   qt <- (media1)
   qt1 <-(media1/0.200)
   fimse

   escreval(" ")
   escreva ("Sr.(a) ",nome, " Sua idade é:",idade, " ANOS. ")
   escreval ("recomenda-se beber diariamente",qt, " litros de água para o correto funcionamento de seu organismo. Isso equivale aproximadamente, ",qt1,"  Copos de 200ml.")
   escreval(" ")

   se (resp)
   escreva ("Sr.(a) ",nome, " Sua idade é:",idade, " anos e tem problemas renais.")
   escreval ("reomenda-se beber diariamente",qt, " litros de água para o correto funcionamento de seu organismo. Isso equivale aproximadamente, ",qt1,"  Copos de 200ml.")
   fimse

Fimalgoritmo

 

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

  • Solução

@Julio Mendes     seu código está bom , e a lógica também , apenas alguns detalhes desnecessário  , como os parenteses onde não precisa , e algumas linhas também sem necessidade , e seu código poderia ser assim  :

Algoritmo "Quantidade de água por pessoa"
Var
  anoAtual,anodeNascimento : real
  idade,qt1,media1,peso    : real
  nome, resp, yes,not,sair : caracter
Inicio
  repita
    escreval("QUANTIDADE MÍNIMA DE ÁGUA POR PESSOA")
    escreval
    escreva ("Preencha este formulário CORRETAMENTE!")
    escreval
    escreval
    escreva("SEU NOME : ")
    leia(nome)
    escreva("DIGITE SEU ANO DE NASCIMENTO : ")
    leia(anodeNascimento)
    escreva("O ANO ATUAL : ")
    leia(anoAtual)
    escreva("DIGITE SEU PESO (EM KG.) : ")
    leia(peso)
    escreva("VOCÊ TEM PROBLEMA RENAL (S) OU (N) : ")
    leia(resp)
    escreval
    idade <- anoAtual - anodeNascimento
    media1 <- peso * 0.35        // 0.350 ml para cada kilo
    se idade > 54 entao
      media1 <- peso * 0.3       // 0.300 ml para cada kilo
    fimse
    se maiusc(resp) = "S" entao
      media1 := peso * 0.2       // 0.200 ml
    fimse
    qt1 <- media1 / 0.2          // copos de 200 ml
    escreval("Sr.(a) ",nome,"  Sua idade é : ",idade ," ANOS.")
    escreval("recomenda-se beber diariamente ",media1," Litros de água")
    escreval("para o correto funcionamento de seu organismo.")
    escreval("Isso equivale aproximadamente a ",qt1," Copos de 200ml.")
    escreval
    escreval("Quer Analisar Outro  S/N ")
    leia(sair)
  ate maiusc(sair) = "N"
  escreval
  escreval
Fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

@devair1010 Sr. Devair, agradeço muito sua colaboração, realmente, estou iniciando agora e aos poucos estou me familiarizado com os códigos, contudo cada vez estou mais fascinando por linguagem  de programação, e agora mais ainda tendo um suporte como o seu. Obrigado!

 

5 horas atrás, devair1010 disse:

@Julio Mendes     seu código está bom , e a lógica também , apenas alguns detalhes desnecessário  , como os parenteses onde não precisa , e algumas linhas também sem necessidade , e seu código poderia ser assim  :


Algoritmo "Quantidade de água por pessoa"
Var
  anoAtual,anodeNascimento : real
  idade,qt1,media1,peso    : real
  nome, resp, yes,not,sair : caracter
Inicio
  repita
    escreval("QUANTIDADE MÍNIMA DE ÁGUA POR PESSOA")
    escreval
    escreva ("Preencha este formulário CORRETAMENTE!")
    escreval
    escreval
    escreva("SEU NOME : ")
    leia(nome)
    escreva("DIGITE SEU ANO DE NASCIMENTO : ")
    leia(anodeNascimento)
    escreva("O ANO ATUAL : ")
    leia(anoAtual)
    escreva("DIGITE SEU PESO (EM KG.) : ")
    leia(peso)
    escreva("VOCÊ TEM PROBLEMA RENAL (S) OU (N) : ")
    leia(resp)
    escreval
    idade <- anoAtual - anodeNascimento
    media1 <- peso * 0.35        // 0.350 ml para cada kilo
    se idade > 54 entao
      media1 <- peso * 0.3       // 0.300 ml para cada kilo
    fimse
    se maiusc(resp) = "S" entao
      media1 := peso * 0.2       // 0.200 ml
    fimse
    qt1 <- media1 / 0.2          // copos de 200 ml
    escreval("Sr.(a) ",nome,"  Sua idade é : ",idade ," ANOS.")
    escreval("recomenda-se beber diariamente ",media1," Litros de água")
    escreval("para o correto funcionamento de seu organismo.")
    escreval("Isso equivale aproximadamente a ",qt1," Copos de 200ml.")
    escreval
    escreval("Quer Analisar Outro  S/N ")
    leia(sair)
  ate maiusc(sair) = "N"
  escreval
  escreval
Fimalgoritmo

 

 

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

  • Membro VIP

Olá.

 

Sobre:

18 horas atrás, Julio Mendes disse:

Eu confesso que minha cabeça já está em "parafuso" e ainda não conclui o meu projeto. Peço a ajuda de algum especialista para me ajudar a desenvolver esse algorítimo de um modo simples e objetivo.

 

@Julio Mendes, alguns pontos:

 

O que é um algoritmo? segundo trecho do Wikipedia:

 

Citação

Em ciência da computação, um algoritmo é uma sequência finita de ações executáveis que visam obter uma solução para um determinado tipo de problema.

 

Então, para resolver um problema, é meio que necessário antes entendê-lo. Certo?

 

Temos o enunciado:

Citação

O algoritmo consiste em calcular a quantidade mínima de água diária por pessoa, levando em consideração os seguintes parâmetros:

  • Crianças e Adultos até 54 anos > 0,35 ml X peso corporal = Total de ml/litros a beber
  • Idosos a partir dos 55 anos > 0,30 ml X  peso corporal = Total de ml/litros a beber
  • Pessoas com complicações renais (independente da idade) > 0,20 ml X peso corporal = Total de ml/litros a beber

 

De cara já tem um detalhe meio estranho no enunciado... o que raios significa ml/litros? observaram isso?

 

 

Tá...vamos seguir e tentar entender... ele meio que quer que a partir de alguns dados de uma pessoa, seja efetuado algum cálculo, e seja retornado o resultado desse cálculo.

 

Dados de entrada

- Idade;

- Peso;

- se tem problema renal

 

Dados de saída:

ml/litros de água

 

 

Para ajudar a entender o problema, vamos simular um caso... pegamos para o primeiro caso:

 

Idade = 60 anos

Peso = 70kg

Prob. Renal = não

 

0,30 * 70 = ml/litros de água

ml/litros de água = 21

 

🤔

21 o quê mesmo? será que o velho vai precisar tomar 21 LITROS de água num único dia?? não né!!! Ou seja: precisa de fato entender o que seria ml/litros???. Não necessariamente... se a fórmula está com essa unidade de medida, vamos usar ela e pronto. (ou discuta com quem passou o enunciado).

 

 

CONSTRUÇÃO DO ALGORITMO NO VISUALG

 

Inicialmente tente fazer pura e simplesmente o que foi pedido no enunciado de forma objetiva. Por exemplo: no enunciado não tem qualquer referencia ao nome da pessoa ou pede para calcular as idades. Simplesmente colete os dados mínimos para atender o que foi pedido. Exemplo de variáveis:

var
   idade :inteiro
   pesoCorporal :real
   compRenal :caractere

 

Ou seja: se o cliente pediu uma "carne, pão e queijo", não devemos entregar um "carne, pão, queijo, presunto, molho especial" etc. Entende? (pelo menos inicialmente)

 

Pronto... a partir daí é só ir seguindo o fluxo. Ex.:

var
   idade :inteiro
   pesoCorporal :real
   compRenal :caractere

inicio
   escreval("QUANTIDADE MÍNIMA DE ÁGUA POR PESSOA")
   escreval("")
   escreva ("IDADE: ")
   leia(idade)
   escreval("")
   escreva ("PESO (EM KG.): ")
   leia(pesoCorporal)
   escreval("")
   escreval("PROBLEMA RENAL (S) OU (N):")
   leia(compRenal)

   
   
fimAlgoritmo

 

Para "testar", no VisualG, dá para verificar os valores das variáveis na própria tela do "compilador":

 

tela01.PNG

 

A princípio a obtenção dos dos está correta. Basta agora calcular o que se pede: a quantidade de ml/litros de água.

 

   se (compRenal = "s") entao
      totalAgua <- 0.20 * pesoCorporal
   senao
      se (idade < 54) entao
         totalAgua <- 0.35 * pesoCorporal
      senao
         totalAgua <- 0.30 * pesoCorporal
      fimSe
   fimSe

obs.: declarar a variável para água.

 

e exibir o resultado:

 

escreval("Quantidade de água para beber: ", totalAgua:1:3, " ml/litros.")

 

No aguardo.

 

 

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

  • Membro VIP

Adendo:

Outra forma de calcular:

   se (compRenal = "s") entao
      fator <- 0.20
   senao
      se (idade < 54) entao
         fator <- 0.35
      senao
         fator <- 0.30
      fimSe
   fimSe
   totalAgua <- fator * pesoCorporal

 

adicionado 27 minutos depois

@Julio Mendes, outro ponto:

 

21 horas atrás, Julio Mendes disse:

uma atividade para criar um algorítimo específico (no VisualG e Pascalzim).

 

Pelo que entendi.. vai precisar também implementar em Pascal... por enquanto não se preocupe com essa parte... será a mais fácil!!! Os "paradigmas" de Pascal e VisualG são muuuuito semelhantes. Basicamente muda que um é em inglês e o outro em português... foque apenas no VisuaG por enquanto. Depois, se precisar, ajudamos também a traduzir para o Pascal (inclusive o próprio VisualG tem um recurso para exportar).

 

 

Sugiro fazer um programa mais simples possível. Poste o código completo que conseguiu montar e vai ajustando até ficar pronto... após, faz uma cópia e começa a implementar algumas melhorias... será um bom treinamento (o aprendizado vai se acumulando para futuros projetos). Na hora de entregar, decide se entrega um ou outro... ou entrega os 2!

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

@Simon Viegas Obrigado Simon pela observação. Realmente eu não expressei adequadamente, na verdade o que eu quis dizer foi o seguinte:

 

O resultado final deve me informar a quantidade em (litros) e em (copos de 200ml) para essa pessoa, dependendo da situação informada.

 

 

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

  • Membro VIP

@Julio Mendes, os parâmetros do enunciado estão bem divergentes do que você descreveu...  é um problema "totalmente" diferente.

 

 

Para simplificar, faça algo assim:

Leia a idade
Se idade maior que 55
   Leia se tem problema renal
Leia peso
Se idade > 55
   Se não tem problema renal
      qtAguaML = 30
   Senao
      qtAguaML = 20
Senao
   qtAguaML = 35
Calcule o minimoPessoaML
Exiba o total mínimo de copos de 200 ml que deve beber
Exiba o mínimo de litros que deve beber

 

No aguardo.

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

@Simon Viegas Segue abaixo... Só precisa ajustar a obrigatoriedade de preenchimento de cada ítem e se possível, converta-o em Pascal por favor! Desde já obrigado.

 

Algoritmo "Quantidade de água por pessoa"
// 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  : 09/10/2019
Var
  idade, qtd, media, peso : real
  nome, resp, sair : caracter
Inicio
  repita
    escreval("QUANTIDADE MÍNIMA DE ÁGUA POR PESSOA")
    escreval ("________________________________________")
    escreval ("Preencha este formulário CORRETAMENTE!")
    escreval
    escreval
    escreva("QUAL O SEU NOME? : ")
    leia(nome)
    escreva("QUAL A SUA IDADE? : ")
    leia(idade)
    escreva("QUAL O SEU PESO? (EM KG.) : ")
    leia(peso)
    escreva("VOCÊ TEM ALGUM TIPO DE PROBLEMA RENAL? (S) OU (N) : ")
    leia(resp)
    escreval
    escreval ("________________________________________")
    idade <- idade
    media <- peso * 0.035       // 0.350 ml multiplicado pelo peso corporal
    se idade > 54 entao
      media <- peso * 0.030     // 0.300 ml multiplicado pelo peso corporal
    fimse
    se maiusc(resp) = "S" entao
      media <- peso * 0.02      // 0.200 ml multiplicado pelo peso corporal
    fimse
    qtd <- media / 0.2          // quantidade de copos de 200 ml por pessoa
    escreval
    escreval("Sr.(a):",nome,", de acordo com sua idade e condições de saúde, recomenda-se berber diariamente ",media," Litros de água para o correto funcionamento de seu organismo. Isso equivale aproximadamente a ",qtd," Copos de 200ml.")
    escreval
    escreval ("________________________________________")
    escreval("QUER analisar OUTRA SITUAÇÃO?  S/N ")
    leia(sair)
  ate maiusc(sair) = "N"
  escreval
  escreval
Fimalgoritmo

 

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

  • Membro VIP

Sobre:

8 horas atrás, Julio Mendes disse:

Só precisa ajustar a obrigatoriedade de preenchimento de cada ítem e se possível, converta-o em Pascal por favor! Desde já obrigado.

 

@Julio Mendes, seu algoritmo NÃO está seguindo o enunciado. O enunciado é como um "contrato"... o programador tem que fazer o que está sendo pedido... o seu código estaria "resolvendo um problema parecido", mas NÃO está resolvendo o problema do enunciado!!! (que é o que importa)

 

Por exemplo, um adulto deve beber 35 ml de água por kg, e não 0.035 ml. Para você ter uma ideia, uma gota tem 0,5 ml, ou seja: 0,035 ml é mais de 14 vez menor que uma gota (?) !!! E a sequência de passos em si também é diferente... Você precisa fazer como o enunciado pede:

 

Então, a fórmula padrão é: "quantidade de ml para a categoria x quantidade de kg do peso", daí o resultado vai sair em ml... bastando assim converter para litros DEPOIS. Ex.:

 

Idade: 40 anos

Peso: 70 kg

Qtd. água por kito: 35 ml (para adulto e criança)

 

Resultado:

35ml * 70 = 2450 ml (dois mil e quatrocentos e cinquenta mililitros)

 

2450 ml = 2,45 litros. (dois litros e quatrocentos e cinquenta mililitros)

 

Resposta final:

Tem que beber 12-13 copos de água por dia

Que é equivalente a 2,450 litros

 

 

Olha o que diz o enunciado:

 

2110478945_Imagem(3).jpg.d4f928e646fd318ba11ab74bad2d2097.jpg

 

Veja que só vai perguntar se tem problema renal se for idoso...  por ai vai.

 

Poderia ser algo como:

 

Em 13/10/2019 às 20:13, Simon Viegas disse:

Leia a idade
Se idade maior que 55
   Leia se tem problema renal
Leia peso
Se idade > 55
   Se não tem problema renal
      qtAguaML = 30
   Senao
      qtAguaML = 20
Senao
   qtAguaML = 35
Calcule o minimoPessoaML
Exiba o total mínimo de copos de 200 ml que deve beber
Exiba o mínimo de litros que deve beber

 

No aguardo.

 

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

@Julio Mendes    sim o visualG não cria executável ,  e o pascal sim , então se você quer colocar o programa pronto em outros computadores mesmo que eles não tenham nenhum compilador instalados , use o pascal mesmo , e não podemos converter o código , pois é contra as regras do fórum ,  mas você pode converte-lo substituindo os comandos ,  por exemplo o escreva seria o mesmo que write no pascal , você pode instalar o pascalzim que é um bom compilador , cole esse código nele e vai substituindo os comando observando a syntaxe da linguagem pascal ,  que tem algumas diferenças , ali no escreva dentro dos parenteses o que vai ser escrito está entre aspas duplas ,  e no pascal é aspas simples .  faça a conversão e poste lá no tópico de pascal , assim podemos ver como está e em que podemos ajudar   .

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

  • Membro VIP
2 horas atrás, Julio Mendes disse:

@Simon Viegas Agradeço sua interpretação do problema, porém meu objetivo foi alcançado. Dessa forma, sou grato por suas considerações. Até o próximo post.

 

@Julio Mendes, não é só uma questão de interpretação... é uma questão de princípios lógicos mesmo... é como o cliente pedir um um "cheeseburger com Pepsi" e você entregar um "eggbuguer com Coca". Será um hambúrguer com refrigerante, mas não foi o que foi pedido!!! Não importa se é melhor ou pior, apenas é que "não é o que ele quer"!

 

Outra analogia: imagine você entrando no elevador e o ascensorista te pergunta para qual andar você vai. Aí você diz "segundo andar, por favor". Faria algum sentido ele dizer "Ok! Marquei o 12º para o senhor. Só descer algumas escadas" ?. Foi isso que você propôs?

 

 

Mas tudo bem. para os próximos exercícios, sugiro que se atente 100% ao enunciado.. como já comentei: ele é como um contrato! tem que seguir as suas cláusulas! (caso queira ir além, faz uma cópia e faz da forma que quiser, mas tenha o que foi pedido separado).

  • Curtir 2
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!