はじめに
Node.jsにおいてコンソール(ターミナル)から値を入力するサンプルを掲載します。
例題として、基礎代謝量の計算例を示します。
1日の必要なカロリーを計算して、ダイエットにお役立てください。
前提
- OS : Windows7以上
- PoweShellのターミナルで実行
- VSCodeでコード編集
- node.js環境構築済み
基礎代謝量とは
生命を維持するために必要なエネルギー量を基礎代謝量(BMR)といいます。
ハリス・ベネディクト方程式(改良版)を使って基礎代謝量を計算します。
男性: 13.397×体重kg+4.799×身長cm−5.677×年齢+88.362
女性: 9.247×体重kg+3.098×身長cm−4.33×年齢+447.593
bmr.js
/**
* 基礎代謝量(BMR)計算
* @param {int} sex - 性別 男=0 女=1
* @param {float} weight - 体重
* @param {float} hight - 身長
* @param {int} age - 年齢
*/
const bmr = (sex,weight,hight,age) => {
if (sex == 0 ) {
var kcal = 13.397 * weight + 4.799 * hight - 5.677 * age + 88.362;
} else {
var kcal = 9.247 * weight + 3.098 * hight - 4.33 * age + 447.593;
}
return kcal;
}
/**
* コンソール出力メッセージ
* @param {int} index - メッセージインデックス
*/
const outmsg = (index) => {
var msg = '';
switch (index) {
case 0:
msg = "性別"
break;
case 1:
msg = "体重 Kg"
break;
case 2:
msg = "身長 cm"
break;
case 3:
msg = "年齢"
break;
default:
msg = "???"
break;
}
return msg;
}
var count = 0; // メッセージカウンター
var msg = ''; // メッセージ
var buf = []; // 一時バッファ
var standard_input = process.stdin;
standard_input.setEncoding('utf-8');
console.log("性別 男性:0 女性:1");
standard_input.on('data', function (data) {
var msg = outmsg(count);
console.log(msg + " = "+ data);
buf.push(data);
count++;
if (count == 4 ) {
console.log("基礎代謝量 Kcal = " + bmr(buf[0],buf[1],buf[2],buf[3]));
process.exit();
}
var msg = outmsg(count);
console.log(msg);
});
説明
- 関数 bmr 性別,体重,身長,年齢を引数として、基礎代謝量を返却します。
- 関数 outmsg インデックスを引数として、対応するメッセージを返却します。
- 標準入力はprocess.stdinでハンドルします。ハンドルはstamdard_inputで定義。
- 標準入力のonイベントで入力をトラップします。
- onイベントで入力した結果のdataをカウント順にバッファリングします。
- カウンタが4になったら、bmr関数へバッファリングした値を引数として呼びだします。
- bmr関数の返却値、つまり基礎代謝量を出力します。
実行方法
node bmr.js
実行結果
性別 男性:0 女性:1
0
性別 = 0
体重 Kg
69
体重 Kg = 69
身長 cm
168
身長 cm = 168
年齢
36
年齢 = 36
基礎代謝量 Kcal = 1614.615
まとめ
htmlの画面を作るまでもない、単純入力をコンソールから入力する場合、
process.stdinはonイベントでprocess.exitするまでコンソールからの入力を取得できます。
このやりかたをマスターすれば、色々応用できます。
ネットで検索すると、コンソール入力の色々な方法を見いだせます。
今回のやり方も参考にしてください。