Calcular IMC (Índice de Massa Corporal) usando C#

watch_later 29 de mar de 2011
Hoje iremos criar um programa simples para calcular o índice de massa corporea (IMC).
não é nada muito sofisticado , iremos usar uma classe (IMC.cs) e vamos fazer o projeto
em windows forms e ASP.NET , assim usaremos um dos conceitos básicos da Orientação à Objetos.

1º Passo

Crie um Solução em Branco

Vá em File > New > Project = atalho (Ctrl+shift+N)

vá em Other Project Types > Visual Studio Solutions > Blank Solution (como na Imagem)




escolha o nome (a minha vai chamar calcularIMC)
e escolha a location (Local onde vai armazenar o projeto)
e dê OK

Abra o Solution Explorer
selecione o CalcularIMC e clique com o botão direito
vá em add > new project



selecione Visual C# > Web > asp.net web application como na imagem...



em crie uma nova pasta dentro do Projeto ASP.NET chamada Imc



e dentro dela crie uma classe chamada (IMC.cs)



nessa classe que deve ser publica vamos criar dois metódos apenas

vamos ao código

primeiro metódo

public decimal calcularIndice(decimal peso, decimal altura)
        {
            return peso / (altura * altura);
        }

Esse metódo calcularIndice é usado para obter o resultado do IMC

ele recebe como parametro a altura e a massa da pessoa e faz o calculo IMC

que é Peso / Altura²

e retorna um decimal com o resultado

Vamos ao segundo metódo

public string resposta(Decimal valorImc)
        {
            if (valorImc < 18.5m)
            {
                return "Você está abaixo do peso ideal";
            }
            if (valorImc >= 18.5m && valorImc <= 24.9m)
            {
                return "Parabéns — você está em seu peso normal!";
            }
            if (valorImc >= 25.0m && valorImc <= 29.9m)
            {
                return "Você está acima de seu peso (sobrepeso)";
            }
            if (valorImc >= 30.0m && valorImc <= 34.9m)
            {
                return "Obesidade grau I";
            }
            if (valorImc >= 35.0m && valorImc <= 39.9m)
            {
                return "Obesidade grau II";
            }
            if (valorImc >= 40.0m)
            {
                return "Obesidade grau III";
            }

            return string.Empty;
        }

O metódo resposta é usado para saber o dentro de qual indice a pessoa se encontra ele recebe o valor do retorno do metodo calcularIndice como parametro e valida se
em qual grupo se encontra a pessoa em questão...

Agora iremos criar um documento ASPX que irá usar essa classe para validar um IMC
de uma pessoa...

sua pagina .aspx deverá conter o seguinte código


<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApp._Default" %>

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
    <div class="line">
        <ul>
            <li>Peso</li>
            <li>
                <asp:TextBox ID="txtPeso" runat="server" /></li>
        </ul>
    </div>

    <div class="gap"></div>

    <div class="line">
        <ul>
            <li>Altura</li>
            <li>
                <asp:TextBox ID="txtAltura" runat="server" /></li>
        </ul>
    </div>

    <div class="gap"></div>

    <div class="line">
        <ul>
            <li>
                <asp:Button ID="btnEnviar" runat="server" Text="Enviar" OnClick="btnEnviar_Click" /></li>
        </ul>
    </div>

    <div class="gap"></div>

    <div class="line">
        <ul>
            <li>
                <asp:Label ID="lblValorImc" runat="server"/></li>
            <li>
                <asp:Label ID="lblResultado" runat="server"/></li>
        </ul>
    </div>

</asp:Content

Observe que a <div class="gap"></div>
serve apenas para deixar a página com uma estética melhor.

e o code behind da sua pagina deve conter o seguinte código para chamar os metódos

da classe IMC.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebApp.Imc;

namespace WebApp
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            var calcularIMC = new IMC();

            decimal peso, altura;

            if (!String.IsNullOrEmpty(txtAltura.Text) && !String.IsNullOrEmpty(txtPeso.Text))
            {
                peso = Convert.ToDecimal(txtPeso.Text);
                altura = Convert.ToDecimal(txtAltura.Text);

                lblValorImc.Text = calcularIMC.calcularIndice(peso, altura).ToString();
                lblResultado.Text = calcularIMC.resposta(Convert.ToDecimal(lblValorImc.Text));

            }

        }
    }
}

Bom as validações ficam por sua conta...é isso espero que ajude em algo...

Bons estudos e
até a próxima