PR

 本連載では、趣味や仕事に役立つプログラムを作りながら、プログラミングの便利さを体験していきます。プログラミングというと難しい印象がありますが、日本語プログラミング言語「なでしこ」を使って、見た目にも読みやすく、分かりやすいプログラムを作っていきます。

 さて、お正月休みが明けました。皆さんも、ゆっくりお休みすることができたでしょうか。私は、相変わらず忙しいながらも、実家に帰って、懐かしい友人と語ったり、健康ランドで蕎麦を食べたりと、とてもリラックスすることができました。

 年末から、忘年会、お正月、新年会と、楽しく食べたり飲んだりする行事が続きました。そうなると気になるのが体重です。そこで、今回は、身長と体重から、肥満度(BMI)を算出し、日々体重を記録するプログラムを作ってみたいと思います。体重を意識することで運動に励み、今年も一年健康に過ごせればと思います。

 では、さっそく完成したプログラムを見てみましょう。

ダイエットに役立つプログラム

【使い方】

 このプログラムは、毎日体重を記録するプログラムです。お風呂に入る前などに体重を計っておいて、寝る前にプログラムを実行して体重を記録しましょう。

 まず、以下のプログラムをコピーしてなでしこエディタに貼り付け、「ファイル」-「保存」で、名前を付け、保存してください。すると「ファイル名.nako」というファイルができます。

 ファイルをダブルクリックし、エディタの三角ボタンを押して、プログラムを実行すると、体重を尋ねられます。体重を入力すると、「体重.csv」(先にプログラムを保存したフォルダに作成されます)というファイルへ体重を記録します。1日に1回だけしか記録できないようになっています。

 記録が終わると、入力した体重に基づいて、BMIによる体重評価を表示します。実際に使用する際はBMIを算出する人の身長を記入してください。プログラムの6行目にある「身長=155」という部分の155を正しい身長に書き換えます。

 ※体重は、CSVファイル形式で保存されるので、Excelで開いて修正したり、グラフを作ったりすることができます。

 ※出力結果には体重も表示されます。気になる方は周りに人がいないことを確認してプログラムを実行してください(笑)。

図1 実行したところ

【プログラムソース1】

※ ----------------------------
※ 体重記録プログラム
※ ----------------------------
# --- 各種設定
データファイル = 「体重.csv」
身長 = 155
データ = 空。
# --- (*1)今日の体重を尋ねる処理
データファイルが存在するか?
もし、そうならば
  データにデータファイルを開く。
データの0から今日を表ピックアップ
もし、それが空ならば
  「本日の体重は?」と尋ねて、体重に代入。
  もし、体重が0ならば、終わり。
  データ = データ&「{今日},{体重}」&改行。#---(*1a)
  データをデータファイルへ保存。
違えば
  体重 = それ[0,1]
# --- (*2)BMI計算処理
BMI = 体重 × 10000 ÷ (身長 × 身長)
標準体重 = 22 × (身長 × 身長) ÷ 10000
肥満度 = INT(体重 ÷ 標準体重 × 100)
もし、(18.5 > BMI)ならば、評価は「細い」
もし、(18.5 <= BMI)かつ(BMI < 25)ならば、評価は「標準」
もし、(25 <= BMI)かつ(BMI < 30)ならば、評価は「肥満」もし、(BMI > 30)ならば、評価は「超肥満」
# --- (*3)結果の表示処理
文字サイズ = 28
BMIを2で小数点切り上げてBMIに代入。
「--- 診断結果 ---
あなたの身長 = {身長}cm
あなたの体重 = {体重}kg
あなたのBMI = {BMI} ({評価})
標準体重 = {標準体重}kg
肥満度 = {肥満度}%
」を表示。

BMIの計算

 今回のプログラムでは、肥満度を測定するのに、BMI計算を行っています。これは、身長と体重から算出できる簡単な肥満度チェックです。(※この計算結果はあくまでも目安であって、実際には性別や生活習慣によってあてにならないこともあります。)

 BMIの計算式は以下のようになります。体重はkg、身長はcmで指定します。

 BMI = 体重 × 10000 ÷ (身長 × 身長)

 各値によって以下のような評価が行われます。

 ・18.5未満なら、やせている
 ・18.5~25なら、標準
 ・25~30なら、肥満
 ・30超なら、かなりの肥満

 そして、BMIの値が22の時、最も標準的な値となります。ですので、BMIが22と仮定すると、最も標準的な標準体重を算出できます。

標準体重 = 22 × (身長 × 身長) ÷ 10000

 標準体重が出ると、これと、実際の体重の比から、肥満度のパーセントを得ることもできます。ここで使っているINTとは括弧内の数字を切り捨てて整数にする関数です。たとえばINT(108.6817)は108ということになります。INTと()を削除してもプログラムは動きますので、肥満度の小数点以下部分も気になる人は試してみてください。

 肥満度(%) = INT(体重 ÷ 標準体重 × 100)

 プログラムの(*2)を見てください。これらの計算式は、なでしこのプログラムでは、ほぼそのままを記述することができます。

「もし」構文

 それから、BMIの値を計算した後、その値によって、評価として表示するコメントを変更しています。これを実現するにはどうしたら良いでしょうか。

 プログラミングでは、条件によってプログラムの動きを変更したい場面が多く、なでしこでは「もし(条件)ならば…違えば…」という構文によって、条件分岐を記述できます。

【もし構文の使い方】
====================
 もし(条件式)ならば
   ※条件式が正しかった場合の処理
 違えば
   ※条件が正しくなかった場合の処理
====================

 「もし」構文と言ってしまうと難しく感じるかもしれませんが、普段の生活の中でも、「もし、雨が降ったなら、出かけるのはやめる。」などと「もし」を使っています。この例では、「雨が降ったなら」の部分が条件式になり、「出かけるのはやめる」の部分が、条件式が正しかった場合の処理となります。

 さて、BMIの判定に戻りますが、BMIが18.5未満なら「細い」と表示するプログラムは以下のように書くことができます。

【プログラムソース2】

BMI=15
もし、(BMI < 18.5)ならば
  「細い」と表示。

 なお、上のプログラムのように、「もし」構文は「違えば」以下は省略が可能です。

CSVファイルについて

 次に、CSV(カンマ区切りデータ)ファイルについて紹介します。

 このプログラムでは、入力した体重をCSVファイルへ追加保存していきます。一日に何度も入力しなくても良いように、一度入力したら、二回目以降の実行では、一回目の入力結果を利用してBMIを計算します。

 CSVファイルは、Excelなどの表計算ソフトで読み書きすることができる汎用的な形式です。年賀状シーズンに利用する宛名印刷ソフトなどでも、CSVファイル形式を介して、データのインポートやエクスポートができるようになっていることが多いようです。

 では、CSVファイルとは、どんなファイルなのでしょうか。試しにExcelで作った適当なCSVファイルをメモ帳で開いてみましょう。すると、以下のように、データの列がカンマ「,」で区切られたただのテキストファイルであることが分かります。

*Excelで以下のように入力し、CSV形式で保存してみます。

| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 0 |

*これをメモ帳で開くと、以下のようになっていました。

図2 カンマで区切られたデータ

 つまり、Excelの列(縦)をカンマ「,」で区切り、行(横)が一行ずつ並んでいる(改行で区切られている)ことになります。

 冒頭のプログラムの(*1a)で、データに『「{今日},{体重}」&改行』と追加していますが、これは、CSVデータに一行分追加したということです。

まとめ

 今回は、BMIのような計算式を実際のプログラムでどう使えるのか、そして、「もし」構文を使って条件を分岐すること、最後に、CSVファイル形式について紹介しました。

 今回紹介したプログラムの中では、「今日の体重を尋ねる処理」で使ったもう1つの機能「CSVファイルの読み出し、書き込み」も、応用の方法をマスターすれば仕事上も便利に使えそうです。やや変則的になりますが、次回はこのあたりをもう少し詳しく解説しようと思います。

 あとは、今回作ったプログラムを使って、年末年始で肥えた体をなんとかできれば言うことありませんね。では、また次回!