Ir ao conteúdo

VisualG Algoritmo para calculo específico


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

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
  • Solução
Postado

@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

 

Postado

@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
  • Membro VIP
Postado

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
  • Membro VIP
Postado

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
Postado

@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
  • Membro VIP
Postado

@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
Postado

Bom, acabei de ajustar meu algorítimo baseando-me no código enviado pelo sr. @devair1010 e com a as orientações srs. @Simon Viegas. Por fim, o objetivo foi alcançado e sendo assim agradeço-os pela força.

 

Até o próximo post.

 

Obrigado.

  • Obrigado 1
Postado

@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
  • Membro VIP
Postado

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
Postado

@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
  • Membro VIP
Postado
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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!