C# Essentials: Variáveis e Boas Práticas em Programação
Calculadora de IMC em C#: Guia Completo para Iniciantes
Imagine poder digitar sua altura e seu peso no console e, em segundos, descobrir em qual faixa de saúde você se encontra! A calculadora de IMC (Índice de Massa Corporal) é uma das formas mais populares de relacionar peso e altura. Ela mostra se estamos abaixo, dentro ou acima do peso ideal. Neste desafio, vamos criar📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. nossa própria calculadora de IMC em C# usando o console. Vamos lá?
Calcular o Índice de Massa Corporal (IMC) é um exercício clássico para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! iniciantes em programação. Neste desafio, você vai aplicar variáveis
🧠 Variáveis em C#: Onde os Dados Ganham Vida (e Nome!)Descubra como as variáveis em C# funcionam, com exemplos do mundo real, boas práticas de nomeação e dicas para otimizar seu código., operações matemáticas e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. estruturas condicionais
🤔 Estruturas Condicionais: Tomando Decisões com if, else e switchAprenda a dominar as estruturas condicionais em C# com exemplos e dicas práticas. Seu guia para decisões de código eficientes e organizadas. para criar
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. uma ferramenta prática. Vamos além da sintaxe básica: você entenderá como validar dados e organizar lógica de negócios simples.
Por que IMC?
- Combina matemática básica com tomada de decisão
- Útil para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! exercitar entrada/saída de dados
- Base para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! sistemas de saúde reais
Índice🔗
- Objetivo do Desafio
- O que é IMC?
- Requisitos para o Projeto
🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes.
- Passo a Passo
- Código de Exemplo
🚀 Scale Out com Redis: Atenda Milhões de Conexões!Integre o Redis com SignalR no .NET e distribua mensagens entre servidores, alcançando escalabilidade e alta performance em tempo real.
- Configurando o projeto no Visual Studio
🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!Prepare seu ambiente de desenvolvimento com o Visual Studio em uma aventura C#. Este tutorial prático ensina a instalar, configurar e personalizar sua IDE.
- Coletando dados do usuário
- Implementando a fórmula do IMC
- Classificando o resultado
- Tratando erros
🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!Aprenda a criar um sistema de login robusto em C#, com tratamento de erros adequado, validação e segurança para evitar vulnerabilidades. de entrada
- Versão final com aprimoramentos
- Conclusão
Objetivo do Desafio🔗
A ideia é simples: escrever um programa de console em C# capaz de:
1. Perguntar ao usuário o seu peso (em kg).
2. Perguntar ao usuário a sua altura (em metros).
3. Calcular o IMC a partir desses valores🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara..
4. Exibir o IMC calculado e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. uma breve mensagem sobre a faixa em que o usuário se encontra (ex.: abaixo do peso, peso normal, sobrepeso, etc.).
O objetivo não é só mostrar o resultado, mas compreender a lógica por trás do cálculo e como interpretar o valor🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança. retornado.
O que é IMC?🔗
IMC significa Índice de Massa Corporal. É uma fórmula simples:
IMC = peso / (altura * altura)
Embora o IMC não seja um indicador perfeito, pois não considera fatores como massa muscular ou distribuição de gordura, ele ainda é amplamente usado como referência em avaliações iniciais de saúde.
Em termos de classificação para adultos, geralmente temos algo assim (valores🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. de exemplo):
Intervalo de IMC | Classificação |
---|---|
Menos de 18,5 | Abaixo do peso |
Entre 18,5 e 24,9 | Peso normal |
Entre 25,0 e 29,9 | Sobrepeso |
Entre 30,0 e 39,9 | Obesidade |
40,0 ou mais | Obesidade grave |
Requisitos para o Projeto🔗
- Conhecimento básico de variáveis
🧠 Variáveis em C#: Onde os Dados Ganham Vida (e Nome!)Descubra como as variáveis em C# funcionam, com exemplos do mundo real, boas práticas de nomeação e dicas para otimizar seu código. (para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! armazenar peso, altura e IMC).
- Entendimento de tipos numéricos
🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados. (float ou double) para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! lidar com casas decimais.
- Uso de operações aritméticas.
- Uso de condicionais simples (opcional, caso queira classificar o IMC).
- Pró-atividade para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! testar diferentes valores
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. (para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! garantir que o resultado seja coerente!).
Passo a Passo🔗
1. Pedir entrada do peso: Você pode usar Console.ReadLine()
e armazenar o valor em uma variável🧠 Variáveis em C#: Onde os Dados Ganham Vida (e Nome!)Descubra como as variáveis em C# funcionam, com exemplos do mundo real, boas práticas de nomeação e dicas para otimizar seu código. (ex.:
peso
).
2. Pedir entrada da altura: Mesma coisa, mas📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. lembre-se de receber como double ou float.
3. Converter as entradas de texto para um tipo numérico🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados. (por exemplo,
Convert.ToDouble
ou double.Parse
).
4. Calcular o IMC: Aplicar a fórmula IMC = peso / (altura altura)
.
5. Exibir o resultado no console: use Console.WriteLine
.
6. (Opcional) Classificar o IMC: Use estruturas condicionais🤔 Estruturas Condicionais: Tomando Decisões com if, else e switchAprenda a dominar as estruturas condicionais em C# com exemplos e dicas práticas. Seu guia para decisões de código eficientes e organizadas. para informar se o IMC está abaixo, dentro ou acima do ideal.
Código de Exemplo🔗
using System;
namespace CalculadoraIMC
{
class Program
{
static void Main(string[] args)
{
// Passo 1: Pedir peso
Console.Write("Digite seu peso (em kg): ");
string pesoEntrada = Console.ReadLine();
// Passo 2: Pedir altura
Console.Write("Digite sua altura (em metros): ");
string alturaEntrada = Console.ReadLine();
// Passo 3: Converter os dados de entrada para double
double peso = double.Parse(pesoEntrada);
double altura = double.Parse(alturaEntrada);
// Passo 4: Calcular o IMC
double imc = peso / (altura * altura);
// Passo 5: Exibir o resultado
Console.WriteLine($"Seu IMC é: {imc:F2}");
// Passo 6: Classificar o IMC (Opcional)
// Exemplos de classificação (valores podem variar conforme referência)
if (imc < 18.5)
{
Console.WriteLine("Abaixo do peso.");
}
else if (imc < 25)
{
Console.WriteLine("Peso normal.");
}
else if (imc < 30)
{
Console.WriteLine("Sobrepeso.");
}
else if (imc < 40)
{
Console.WriteLine("Obesidade.");
}
else
{
Console.WriteLine("Obesidade grave.");
}
}
}
}
O que está acontecendo aqui?
Console.Write("...")
: mostra mensagens na tela sem pular para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! a próxima linha.
Console.ReadLine()
: captura o valor🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança. que o usuário digitou.
double.Parse()
: converte o texto📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!Aprenda a dominar os segredos das strings em C# com técnicas de manipulação, concatenação, interpolação e boas práticas, impulsionando sua performance. digitado em um número decimal (double). Se o valor não for um número válido, seu programa pode dar erro (ex.: se alguém digitar “abc”).
Console.WriteLine()
: mostra mensagens pulando para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! a linha seguinte.
imc:F2
formata o IMC para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! 2 casas decimais, deixando a saída mais amigável.
Configurando o projeto no Visual Studio🔗
1. Crie novo projeto🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes. Console App (.NET Core)
2. Nomeie como CalculadoraIMC
3. Verifique a estrutura básica:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Calculadora de IMC");
}
}
Coletando dados do usuário🔗
static void Main()
{
Console.Write("Digite seu peso em kg: ");
double peso = Convert.ToDouble(Console.ReadLine());
Console.Write("Digite sua altura em metros: ");
double altura = Convert.ToDouble(Console.ReadLine());
// Continua...
}
Atenção: Convert.ToDouble
pode lançar erros se o usuário digitar valores🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. não numéricos. Mais adiante trataremos isso.
Implementando a fórmula do IMC🔗
static double CalcularIMC(double peso, double altura)
{
return peso / Math.Pow(altura, 2);
}
// No Main:
double imc = CalcularIMC(peso, altura);
Console.WriteLine($"Seu IMC é: {imc:F2}");
Dica: Math.Pow
é mais preciso e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. legível que
altura altura
Classificando o resultado🔗
static string ClassificarIMC(double imc)
{
if (imc < 18.5)
return "Magreza";
else if (imc < 25)
return "Normal";
else if (imc < 30)
return "Sobrepeso";
else
return "Obesidade";
}
// No Main:
string classificacao = ClassificarIMC(imc);
Console.WriteLine($"Classificação: {classificacao}");
Tratando erros de entrada🔗
Implemente validação robusta:
static double LerDouble(string mensagem)
{
while (true)
{
Console.Write(mensagem);
if (double.TryParse(Console.ReadLine(), out double valor) && valor > 0)
return valor;
Console.WriteLine("Valor inválido! Digite um número positivo.");
}
}
// No Main:
double peso = LerDouble("Digite seu peso em kg: ");
double altura = LerDouble("Digite sua altura em metros: ");
Por que isso é importante?
- Evita crashes por inputs inválidos
- Garante que o programa só avance com dados válidos
- Melhora a experiência
🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!Aprenda a otimizar seu perfil LinkedIn com dicas essenciais para devs .NET. Conquiste oportunidades e destaque suas habilidades! do usuário
Versão final com aprimoramentos🔗
using System;
class Program
{
static void Main()
{
Console.WriteLine("=== Calculadora de IMC ===");
double peso = LerDouble("Peso (kg): ");
double altura = LerDouble("Altura (m): ");
double imc = CalcularIMC(peso, altura);
string classificacao = ClassificarIMC(imc);
Console.WriteLine($"\nIMC: {imc:F1}");
Console.WriteLine($"Classificação: {classificacao}");
ExibirLegenda();
}
static double LerDouble(string mensagem)
{
while (true)
{
Console.Write(mensagem);
if (double.TryParse(Console.ReadLine(), out double valor) && valor > 0)
return valor;
Console.WriteLine("Valor inválido! Use números positivos com . como separador decimal.");
}
}
static double CalcularIMC(double peso, double altura) => peso / (altura * altura);
static string ClassificarIMC(double imc)
{
return imc switch
{
< 18.5 => "Magreza",
< 25 => "Normal",
< 30 => "Sobrepeso",
_ => "Obesidade"
};
}
static void ExibirLegenda()
{
Console.WriteLine("\nLegenda (OMS):");
Console.WriteLine("Magreza: < 18.5");
Console.WriteLine("Normal: 18.5 - 24.9");
Console.WriteLine("Sobrepeso: 25 - 29.9");
Console.WriteLine("Obesidade: ≥ 30");
}
}
Features avançadas que você pode adicionar📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos.:
- Histórico de cálculos
- Gráfico de progresso
- Cálculo de peso ideal
- Exportação para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! CSV
Conclusão🔗
Criar📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. uma calculadora de IMC é um ótimo exercício para praticar leitura de dados do usuário, conversão de tipos e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. operações aritméticas em C#. Ela une programação com um conceito do mundo real, ajudando você a fixar tanto a lógica de código quanto a importância de validar dados.
Você criou uma aplicação completa com:
- Validação de entrada
- Separação de responsabilidades em métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência.
- Formatação profissional de saída
- Tratamento básico de erros
🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!Aprenda a criar um sistema de login robusto em C#, com tratamento de erros adequado, validação e segurança para evitar vulnerabilidades.
Próximo passo: Modifique o programa para calcular o IMC para várias pessoas ou integre com um sistema de armazenamento simples (arquivos texto📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!Aprenda a dominar os segredos das strings em C# com técnicas de manipulação, concatenação, interpolação e boas práticas, impulsionando sua performance.).
Que tal transformar isso em uma classe🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara.
CalculadoraIMC
com métodos estáticos para reutilização em outros projetos🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!Aprenda a otimizar seu perfil LinkedIn com dicas essenciais para devs .NET. Conquiste oportunidades e destaque suas habilidades!? 🚀
Experimente testar com valores🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. diferentes de altura e peso e compare o que seu programa retorna com a tabela de referência de IMC. Isso permite que você verifique se está tudo funcionando corretamente e ainda aprimore seu aprendizado.
Boa prática e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. bons estudos!
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- .NET Documentation: learn.microsoft.com/pt-br/dotnet/
- C# Language Specification: learn.microsoft.com/pt-br/dotnet/csharp/language-reference/language-specification/
- FreeCodeCamp: C# Tutorials: www.freecodecamp.org/
- Microsoft Learn: C# e .NET: learn.microsoft.com/pt-br/dotnet/csharp/
- Pluralsight: C# Learning Path: www.pluralsight.com/