氏名:五十嵐兼一 学籍番号:c1100153 語学クラス:英語2 コース(系):社会福祉コース A. a.仕様書 ◆仕様書◆ ●企画した理由 最近、外食が多くなっているため自分の健康状態が気になり、 健康管理プログラムを作ろうと考えた。 大学生活では一人暮しの人も多く、普段から偏りのある食生活 を送っている人もいると思う。学業を疎かにしないためにも、 健康管理には普段から気を付けてもらいたいものであるため、 是非みなさんにも行ってもらいたい。 ●プログラムの概要 このプログラムは「BMI指数」と「適正体重」、 「基礎代謝量」と「肺活量予測値」を 測定することが出来る。 ●遊び方 1. プログラムをダウンロードし、普段使っているディレクトリに保存 2. cd ディレクトリ名で保存したディレクトリに移動し、ls でプログラムがあ るか確認 3. プログラムがあることを確認したら kterm で chmod +x プログラム名 で プログラムを実行できる状態にする 4. プログラムが実行できる状態になったら ./プログラム名 でプログラムを実 行することができる ●連絡先 このプログラムは 五十嵐兼一 が著作権を保有しています。 このプログラムを取り扱って生じた問題は一切責任を負いませんのでご了承ください. プログラムに対する感想・苦情などはこちらまでお願いします。 c110015@f.koeki-u.ac b.プログラム ●設定 自分の健康状態が気になったので、健康管理プログラムを作ろうと考えた。 ●作成したプログラム #!/usr/koeki/bin/ruby def message1 # メソッドの定義 STDERR.print("性別は? : ") print("[1]男 [2]女\n") end def message2 # メソッドの定義 STDERR.print("測定したい項目を選んで下さい(終了 : end)") end def taizyu(a) # 適正体重 = 身長 * 身長 * 22 (a/100) * (a/100) * 22 # cm を m に直すので、a を 100 で割る end def bmi(a,b) (a / 100) / ((b /100) ** 2) * 100 # BMI = 体重 / (身長)**2 end def taisya1(a,b,c) # 男性: 66+13.7×体重kg+5.0×身長cm−6.8×年齢 66 + 13.7 * a + 5.0 * b - 6.8 * c end def taisya2(d,e,f) # 女性: 665+9.6×体重kg+1.7×身長cm−7.0×年齢 665 + 9.6 * d + 1.7 * e - 7.0 * f end def haikatu1(a,b) # 男性肺活量ml=(27.63−0.112×年齢)×身長cm (27.63 - 0.112 * a) * b end def haikatu2(c,d) # 女性肺活量ml=(21.78−0.101×年齢)×身長cm (21.78 - 0.101 * c) * d end print("◆健康管理プログラム◆\n\n") message2 while true # 繰り返し print("\n[1]BMIと適正体重 [2]基礎代謝 [3]肺活量\n") answer = gets.chomp! # 入力されたものを answer に代入 if answer == "end" print"おつかれさまです!!\n" break # 繰り返しから抜ける end # if に対する end if answer == "1" # answer が 1 の場合 print("「BMIと適正体重」を求めます\n\n") STDERR.print("身長を入力して下さい : ") tall = gets.chomp.to_f # 入力されたものを実数に変換して tall に代入 sleep(1) # 1秒間プログラムを停止 bestweight = taizyu(tall) # 適正体重の定義付け printf("\nあなたの適正体重は [%0.1fKg] です\n\n",bestweight) sleep(1) print("次に「BMI」を求めます\n\n") print(" BMI指数\n") print("+----------+----------+\n") print("| 基準値 | |\n") print("| 18.5未満 | 低体重 |\n") print("| 18.5〜25 | 普通 |\n") print("| 25〜 | 肥満 |\n") print("+----------+----------+\n") STDERR.print("\n現在の体重を入力して下さい : ") weight = gets.chomp.to_f # 入力されたものを実数に変換して weight に代入 sleep(1) # 1秒間プログラムを停止 bestbmi1 = bmi(weight,tall) # BMI の定義付け printf("\nBMI指数 [%0.2f]\n",bestbmi1) if bestbmi1 < 18.5 # bestbmi が 18.5 未満のとき print("「低体重」です。 もっと食べて!!\n\n") elsif bestbmi1 > 18.5 && bestbmi1 < 25 # bestbmi が 18.5 以上 25 未満のとき print("「普通」です。 健康です!! \n\n") elsif bestbmi1 > 25 # bestbmi が 25 以上のとき print("「肥満」です。 メタボ注意!!\n\n") end bestbmi2 = bmi(bestweight,tall) # 適正体重での BMI の定義付け printf("ちなみに、適正体重でのBMI指数は [%0.1f] です\n\n",bestbmi2) message2 elsif answer == "2" # answer が 2 の場合 print("「基礎代謝」を求めます\n\n") message1 # message1 を呼び出す sex = gets.chomp.to_i # 入力された値を整数に変換して sex に代入 STDERR.print("年齢を入力して下さい : ") age = gets.chomp.to_i # 入力された値を整数に変換して age に代入 STDERR.print("身長を入力して下さい : ") tall = gets.chomp.to_f # 入力された値を実数に変換して tall に代入 STDERR.print("体重を入力して下さい : ") weight = gets.chomp.to_f # 入力された値を実数に変換して weight に代入 sleep(1) # 1秒間プログラムを停止 if sex == 1 # sex が 1 の場合 kisotaisya = taisya1(weight,tall,age) # 基礎代謝の定義付け printf("\n基礎代謝量 [%0.1f kcal]\n",kisotaisya) elsif sex == 2 # sex が 2 の場合 kisotaisya = taisya2(weight,tall,age) # 基礎代謝の定義付け printf("\n基礎代謝量 [%0.1f kcal]\n",kisotaisya) else # 性別が判断できなかった場合 print("測定不能です\n") break # プログラム終了 end print("これは、生命維持に必要最小限のエネルギー消費量です。\n\n") message2 # message2 を呼び出す elsif answer == "3" # answer が 3 の場合 print("「肺活量」を求めます (18歳以上を対象にしています)\n\n") message1 # message1 を呼び出す sex = gets.chomp.to_i # 入力された値を整数に変換して sex に代入 STDERR.print("年齢を入力して下さい : ") age = gets.chomp.to_f # 入力された値を実数に変換して age に代入 STDERR.print("身長を入力して下さい : ") tall = gets.chomp.to_f # 入力された値を実数に変換して tall に代入 sleep(1) # 1秒間プログラムを停止 if sex == 1 # 男性の場合 haikaturyou = haikatu1(age,tall) # 肺活量の定義付け printf("\n肺活量予測値 [%0.3f ml]\n",haikaturyou) elsif sex == 2 # 女性の場合 haikaturyou = haikatu2(age,tall) # 肺活量の定義付け printf("\n肺活量予測値 [%0.3f ml]\n",haikaturyou) else print("測定不能です\n\n") # 性別を選択していないとプログラム終了 break end # if に対する end STDERR.print("息を深く吸い込み、一気に吐きだしたときの空気量が肺活量です。\n") STDERR.print("年齢、性別、身長差によって異なり歳をとるに従って低下します。\n\n") message2 # message2 を呼び出す end # if に対する end end # while に対する end ●プログラムの実行結果 pan{c110015}% ./health.rb [~/public_html/advertise2] ◆健康管理プログラム◆ 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 1 「BMIと適正体重」を求めます 身長を入力して下さい : 172 あなたの適正体重は [65.1Kg] です 次に「BMI」を求めます BMI指数 +----------+----------+ | 基準値 | | | 18.5未満 | 低体重 | | 18.5〜25 | 普通 | | 25〜 | 肥満 | +----------+----------+ 現在の体重を入力して下さい : 65 BMI指数 [21.97] 「普通」です。 健康です!! ちなみに、適正体重でのBMI指数は [22.0] です 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 end おつかれさまです!! ---------------------------------------------------------------- ●基礎代謝(男性) pan{c110015}% ./health.rb [~/public_html/advertise2] ◆健康管理プログラム◆ 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 2 「基礎代謝」を求めます 性別は? : [1]男 [2]女 1 年齢を入力して下さい : 19 身長を入力して下さい : 172 体重を入力して下さい : 65 基礎代謝量 [1687.3 kcal] これは、生命維持に必要最小限のエネルギー消費量です。 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 end おつかれさまです!! ---------------------------------------------------------------- ●基礎代謝(女性) pan{IKARASHI Kenichi}% ./health.rb [~/public_html/advertise2] ◆健康管理プログラム◆ 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 2 「基礎代謝」を求めます 性別は? : [1]男 [2]女 2 年齢を入力して下さい : 19 身長を入力して下さい : 153 体重を入力して下さい : 52 基礎代謝量 [1291.3 kcal] これは、生命維持に必要最小限のエネルギー消費量です。 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 end おつかれさまです!! ---------------------------------------------------------------- ●性別の入力ミス pan{c110015}% ./health.rb [~/public_html/advertise2] ◆健康管理プログラム◆ 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 2 「基礎代謝」を求めます 性別は? : [1]男 [2]女 3 年齢を入力して下さい : 19 身長を入力して下さい : 160 体重を入力して下さい : 50 測定不能です ---------------------------------------------------------------- ●肺活量(男性) pan{c110015}% ./health.rb [~/public_html/advertise2] ◆健康管理プログラム◆ 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 3 「肺活量」を求めます (18歳以上を対象にしています) 性別は? : [1]男 [2]女 1 年齢を入力して下さい : 19 身長を入力して下さい : 172 肺活量予測値 [4386.344 ml] 息を深く吸い込み、一気に吐きだしたときの空気量が肺活量です。 年齢、性別、身長差によって異なり歳をとるに従って低下します。 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 end おつかれさまです!! ---------------------------------------------------------------- ●肺活量(女性) pan{c110015}% ./health.rb [~/public_html/advertise2] ◆健康管理プログラム◆ 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 3 「肺活量」を求めます (18歳以上を対象にしています) 性別は? : [1]男 [2]女 2 年齢を入力して下さい : 19 身長を入力して下さい : 153 肺活量予測値 [3038.733 ml] 息を深く吸い込み、一気に吐きだしたときの空気量が肺活量です。 年齢、性別、身長差によって異なり歳をとるに従って低下します。 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 end おつかれさまです!! ---------------------------------------------------------------- ●性別の入力ミス pan{c110015}% ./health.rb [~/public_html/advertise2] ◆健康管理プログラム◆ 測定したい項目を選んで下さい(終了 : end) [1]BMIと適正体重 [2]基礎代謝 [3]肺活量 3 「肺活量」を求めます (18歳以上を対象にしています) 性別は? : [1]男 [2]女 3 年齢を入力して下さい : 19 身長を入力して下さい : 150 測定不能です ---------------------------------------------------------------- ●考察 「BMIと適正体重」の確かめ算 「適正体重」 pan{c110015}% bc -l [~/public_html/advertise2] ( 172 / 100 ) * ( 172 / 100 ) * 22 65.08480000000000000000 quit 四捨五入すると 65.1 になるのでプログラムは正しく動いている。 「BMI」 bc -l で計算することを確かめられなかった。 しかし、参考文献として用いたサイトで計算したところ、 BMI指数 21.9713 肥満度 普通 という結果になり、実行結果と同じ値になったためプログラムは正しいと思う。 ------------------------------------------------------------------------- 「基礎代謝の確かめ算」 (男性) pan{c110015}% bc -l [~/public_html/advertise2] 66 + 13.7 * 65 + 5.0 * 172 - 6.8 * 19 1687.3 quit という結果になり、実行結果の値と同じになるためプログラムは正しいといえる。 (女性) pan{c110015}% bc -l [~/public_html/advertise2] 665 + 9.6 * 52 + 1.7 * 153 - 7.0 * 19 1291.3 quit という結果になり、実行結果の値と同じになるためプログラムは正しいといえる。 ------------------------------------------------------------------------- 「肺活量の確かめ算」 (男性) pan{c110015}% bc -l [~/public_html/advertise2] (27.63 - 0.112 * 19) * 172 4386.344 quit という結果になり、実行結果の値と同じになるためプログラムは正しいといえる。 (女性) pan{c110015}% bc -l [~/public_html/advertise2] (21.78 - 0.101 * 19) * 153 3038.733 quit という結果になり、実行結果の値と同じになるためプログラムは正しいといえる。 ------------------------------------------------------------------------- ●感想 今回は自分にできる最高傑作をつくるというないようだったが、前期と比べる とかなり難しくなっており、メソッド一つ一つを理解するまで時間が掛かった たり、しっかりと理解できていなかったりなど、とても苦労した。プログラム をつくっている間、何度か混乱しそうになったが何とか完成させることができ て良かったと思う。 ●参考文献 西村まどか 基礎プログラミング II 第 4 回 「繰り返しは引っ張りだそう」 http://roy/~madoka/2011/r2/04/ 西村まどか 基礎プログラミング II 第 5 回 「何度も呼び出そう」 http://roy/~madoka/2011/r2/05/ 西村まどか 基礎プログラミング II 第 6 回 「目的に応じて使ってみよう」 http://roy/~madoka/2011/r2/06/ 健康の計算 http://keisan.casio.jp/has10/Menu.cgi?path=01100000.%8C%92%8DN%82%CC%8Cv%8EZ ●参考人 嘉村爽太さん ●プログラム紹介のホームページ http://roy/~c110015/advertise2/