
Om du brinner för både hälsa och teknik kan det vara både lärorikt och praktiskt att beräkna ditt kroppsmasseindex (BMI) med hjälp av egen programkod. BMI bygger på förhållandet mellan din längd och din vikt, och i vissa sammanhang vägs även ålder och kön in i bedömningen.
Ett förhöjt BMI är inget att ta lätt på. Enligt Weight-control Information Network ökar ett högt BMI risken för bland annat vissa cancerformer, kranskärlssjukdom, gallblåsesjukdom, artros och komplikationer under graviditet. Ett BMI mellan 18,5 och 24,9 betraktas som mest gynnsamt för hälsan, medan 25–29,9 klassas som övervikt och 30 eller högre som fetma.
Grundformeln för BMI är enkel: vikten divideras med längden i kvadrat. Med metriska mått räknar du ut BMI genom att dela vikten i kilogram med längden i meter upphöjt till två. Ett exempel: väger du 70 kg och är 1,75 m lång blir BMI 70 / (1,75 × 1,75) ≈ 22,9, vilket ligger stabilt inom normalintervallet.
Kodexemplet i den här guiden använder amerikanska enheter (pund och tum) men omvandlar automatiskt till kilogram och meter innan själva beräkningen utförs. Observera att koden, trots artikelns ursprungliga rubrik, egentligen är skriven i C# för Windows Forms snarare än i ren C – logiken går dock lätt att överföra till valfritt programspråk, eftersom själva formeln alltid är densamma.
Bestäm vilken plattform du vill köra koden på – Windows eller Linux/Unix – och se till att du har en fungerande utvecklingsmiljö installerad. Behöver du hjälp på vägen finns gratis handledningar på www.arachnoid.com, med separata guider för Windows respektive Unix.
Skapa ditt projekt och kör rad 1 till 59 enligt nedan:
01 using System;
02 using System.Collections.Generic;
03 using System.ComponentModel;
04 using System.Data;
05 using System.Drawing;
06 using System.Linq;
07 using System.Text;
08 using System.Windows.Forms;
09
10 namespace BMIApp
11 {
12 public partial class Form1 : Form
13 {
14 public Form1()
15 {
16 InitializeComponent();
17 }
18
19 private void btnCalculate_Click(object sender, EventArgs e)
20 {
21 double weght = string.IsNullOrEmpty(txtWeight.Text) ? 1 : double.Parse(txtWeight.Text);
22 double height = string.IsNullOrEmpty(txtHeight.Text) ? 1 : double.Parse(txtHeight.Text);
23
24 if (weght == 0)
25 {
26 MessageBox.Show("Results will be inaccurate. Weight is not a valid number.");
27 }
28 if (height == 0)
29 {
30 MessageBox.Show("Results will be inaccurate. Height is not a valid number.");
31 }
32
33 double vmult = cboWeightUnits.SelectedItem.ToString() == "pounds" ? 2.204 : 1;
34 double hmult = cboHeightUnits.SelectedItem.ToString() == "inches" ? 0.0254 : 1;
35
36 double BMI = Math.Round(((weght / vmult) / ((height * hmult) * (height * hmult))) * 10) / 10;
37
38
39 string BMI_description = string.Empty;
40 if (BMI < 16.5)
41 BMI_description = "severely underweight";
42 else if (BMI >= 16.5 && BMI < 18.5)
43 BMI_description = "underweight";
44 else if (BMI >= 18.5 && BMI < 25)
45 BMI_description = "normal";
46 else if (BMI >= 25 && BMI <= 30)
47 BMI_description = "overweight";
48 else if (BMI > 30 && BMI <= 35)
49 BMI_description = "obese";
50 else if (BMI > 35 && BMI <= 40)
51 BMI_description = "clinically obese";
52 else
53 BMI_description = "morbidly obese";
54
55
56 txtResult.Text = string.Format("Your Body Mass Index (BMI) is: {0}. This would be considered {1}.", BMI, BMI_description);
57 }
58 }
59 }
Programmet visar ditt BMI avrundat till en decimal tillsammans med en textbeskrivning av din viktklass. Kategorierna ser ut så här:
Föredrar du att räkna manuellt i metriska enheter använder du formeln BMI = vikt (kg) / längd² (m). Kom dock ihåg att BMI är ett grovt mått – det tar inte hänsyn till muskelmassa, skelettbyggnad eller fettfördelning – så använd det som ett första riktmärke och kontakta vården om du har frågor kring din hälsa.
Hälsa och Sjukdom © https://www.sjukdom.online