第 10 回 ことおぼえ レポート課題 氏名:五十嵐兼一 学籍番号:c1100153 語学クラス:英語2 コース(系):社会福祉コース 1.筆記問題 A.pstore を使った CGI の使い方について require 'pstore' で pstore を使う宣言をする。 そして、db = PStore.new("./pstore/sales.db") で db に入れられたものを salea.db に書き込んでいる。ここでは、第三者も書き込みが可能になっている。 --------------------------------------------------------------------------- 2.プログラム問題 設定「前回の計算CGIに項目とコメントを追加。健康食材の紹介も追加した。」 ●「CGI最高傑作のページ URL」 http://roy/~c110015/advertise2/rubycgi/r2_cgi_best.html ●作成したプログラム(1) #!/usr/bin/env ruby require 'cgi' # CGI を使う宣言 cgi = CGI.new("html4") # html 文章で CGI を使用 print("Content-type: text/html; charset=EUC-jp\n\n") # 日本語コードを使用 def taizyu(tall) # 適正体重 = 身長 * 身長 * 22 (tall/100) * (tall/100) * 22 # cm を m に直すので、a を 100 で割る end def taisya1(wei1,tall1,age1) # 男性: 66+13.7×体重kg+5.0×身長cm−6.8×年齢 66 + 13.7 * wei1 + 5.0 * tall1 - 6.8 * age1 end def taisya2(wei2,tall2,age2) # 女性: 665+9.6×体重kg+1.7×身長cm−7.0×年齢 665 + 9.6 * wei2 + 1.7 * tall2 - 7.0 * age2 end def haikatu1(age1,tall1) # 男性肺活量ml=(27.63−0.112×年齢)×身長cm (27.63 - 0.112 * age1) * tall1 end def haikatu2(age2,tall2) # 女性肺活量ml=(21.78−0.101×年齢)×身長cm (21.78 - 0.101 * age2) * tall2 end def bmi(wei,tall) # BMI = 体重 / (身長)**2 wei / (tall * tall) * 10000 end e = cgi["erabu"] # Ruby に CGI でもらってきた値を代入 n = cgi["namae"] # Ruby に CGI でもらってきた値を代入 s = cgi["sex"] # Ruby に CGI でもらってきた値を代入 a = cgi["age"] # Ruby に CGI でもらってきた値を代入 t = cgi["tall"] # Ruby に CGI でもらってきた値を代入 w = cgi["weight"] # Ruby に CGI でもらってきた値を代入 a = a.to_i # a を数値に変換 t = t.to_f # t を数値に変換 w = w.to_f # w を数値に変換 # ここからは web で出力 print("") print("") print("結果発表") print("") print("") printf("

測定結果

") print("

--------------------------------------------------

\n") printf("

氏名 : %s さん

",n) # 氏名を表示 printf("

性別 : %s

",s) # 性別を表示 printf("

年齢 : %d 歳

",a) # 年齢を表示 printf("

身長 : %0.1f cm

",t) # 身長を表示 printf("

体重 : %0.1f kg

",w) # 体重を表示 if e == "適正体重" # 適正体重が選択された場合 printf("

結果 : 適正体重は %0.1f [kg] です。

",taizyu(t)) elsif e == "基礎代謝" # 基礎代謝が選択された場合 if s == "男性" # 性別が男性だった場合 printf("

結果 : 基礎代謝量は %0.1f [kcal] です。

",taisya1(w,t,a)) elsif s == "女性" # 性別が女性だった場合 printf("

結果 : 基礎代謝量は %0.1f [kcal] です。

",taisya2(w,t,a)) else print("測定不能です。正しく入力して下さい。") end # s の if に対する end print("

これは生命を維持するために最低限必要なエネルギー量です。

") elsif e == "肺活量" # 肺活量が選択された場合 if s == "男性" # 性別が男性だった場合 printf("

結果 : 肺活量予測値は %0.3f [ml] です。

",haikatu1(a,t)) elsif s == "女性" # 性別が女性だった場合 printf("

結果 : 肺活量予測値は %0.3f [ml] です。

",haikatu2(a,t)) else print("測定不能です。正しく入力して下さい。") end # s の if に対する end elsif e == "BMI指数" printf("

結果 : BMI指数は [%0.2f] です。

",bmi(w,t)) if bmi(w,t) < 18.5 # bestbmi が 18.5 未満のとき print("

「低体重」です。 もっと食べて!!

") elsif bmi(w,t) > 18.5 && bmi(w,t) < 25 # bestbmi が 18.5 以上 25 未満のとき print("

「普通」です。 健康です!!

") elsif bmi(w,t) > 25 # bestbmi が 25 以上のとき print("

「肥満」です。 メタボ注意!!

") end bestbmi2 = bmi(taizyu(t),t) printf("

ちなみに、適正体重 %0.1f [kg] でのBMI指数は [%0.2f] です。

",taizyu(t),bestbmi2) print("

BMI指数は22で、最も病気になりにくいようです。

肥満度が高くなると、高血圧や糖尿病などの生活習慣病を発症する確率が高くなるので注意!!

") end # e の if に対する end print("

--------------------------------------------------

\n") # ここから2つ目の CGI print("
") print("") print("

") print("
") print("") print("") --------------------------------------------------------------------------- ●実行結果 <適正体重> 結果発表

測定結果

--------------------------------------------------

氏名 : ken さん

性別 : 男性

年齢 : 19 歳

身長 : 172.0 cm

体重 : 65.0 kg

結果 : 適正体重は 65.1 [kg] です。

--------------------------------------------------

●確かめ算 pan{c110015}% bc -l [~/public_html/advertise2] ( 172 / 100 ) * ( 172 / 100 ) * 22 65.08480000000000000000 quit プログラムでは四捨五入されて 65.1kg となっている。 --------------------------------------------------------------------------- <基礎代謝 : 男性> 結果発表

測定結果

------------------------------

氏名 : ken さん

性別 : 男性

年齢 : 19 歳

身長 : 172.0 cm

体重 : 65.0 kg

結果 : 基礎代謝量は 1687.3 [kcal] です。

------------------------------

●確かめ算 pan{c110015}% bc -l [~/public_html/advertise2] 66 + 13.7 * 65 + 5.0 * 172 - 6.8 * 19 1687.3 quit --------------------------------------------------------------------------- <基礎代謝 : 女性> 結果発表

測定結果

------------------------------

氏名 : ほいこ さん

性別 : 女性

年齢 : 19 歳

身長 : 153.0 cm

体重 : 53.0 kg

結果 : 基礎代謝量は 1300.9 [kcal] です。

------------------------------

●確かめ算 pan{c110015}% bc -l [~/public_html/advertise2/rubycgi] 665 + 9.6 * 53 + 1.7 * 153 - 7.0 * 19 1300.9 quit --------------------------------------------------------------------------- <肺活量 : 男性> 結果発表

測定結果

------------------------------

氏名 : ken さん

性別 : 男性

年齢 : 19 歳

身長 : 172.0 cm

体重 : 65.0 kg

結果 : 肺活量予測値は 4386.344 [ml] です。

------------------------------

●確かめ算 pan{c110015}% bc -l [~/public_html/advertise2] (27.63 - 0.112 * 19) * 172 4386.344 quit --------------------------------------------------------------------------- <肺活量 : 女性> 結果発表

測定結果

------------------------------

氏名 : ほいこ さん

性別 : 女性

年齢 : 19 歳

身長 : 153.0 cm

体重 : 53.0 kg

結果 : 肺活量予測値は 3038.733 [ml] です。

------------------------------

●確かめ算 pan{c110015}% bc -l [~/public_html/advertise2] (21.78 - 0.101 * 19) * 153 3038.733 quit --------------------------------------------------------------------------- 結果発表

測定結果

--------------------------------------------------

氏名 : ken さん

性別 : 男性

年齢 : 19 歳

身長 : 172.0 cm

体重 : 65.0 kg

結果 : BMI指数は [21.97] です。

「普通」です。 健康です!!

ちなみに、適正体重 65.1 [kg] でのBMI指数は [22.00] です。

BMI指数は22で、最も病気になりにくいようです。

肥満度が高くなると、高血圧や糖尿病などの生活習慣病を発症する確率が高 くなるので注意!!

--------------------------------------------------

●確かめ算 pan{c110015}% bc -l [~/public_html/advertise2/rubycgi] 65 / (172 * 172) * 10000 21.97133585722011890000 quit --------------------------------------------------------------------------- ●考察 CGI での計算結果と bc -l で行った計算結果が合っているので、このプログラ ムは正しく動いている。 --------------------------------------------------------------------------- ●作成したプログラム(2) #!/usr/bin/env ruby require 'cgi' # CGI を使う宣言 cgi = CGI.new("html4") # html 文章で CGI を使用 print("Content-type: text/html; charset=EUC-jp\n\n") m = cgi["menu"] # Ruby に CGI でもらってきた値を代入 # ここから web で出力 print("\n") print("\n") print("健康食材\n") print("\n") print("\n") printf("

「%s」が含まれる健康食材

\n",m) # cgi の値を表示 if m == "たんぱく質" # m がたんぱく質のばあい print("

肉類、魚介類、卵、牛乳・乳製品、大豆・大豆製品が該当します。

タンパク質は、動物性タンパク質と植物性タンパク質に分けられます。

") elsif m == "脂質" # m が脂質の場合 print("

青魚(イワシ・サバ・サンマ等)やマグロ、オリーブ油。

悪玉コレステロールを減らす作用がある植物性や魚類の脂質を積極的に摂りましょう。

") elsif m == "炭水化物" # m が炭水化物の場合 print("

ご飯やパン・麺類などの穀類、イモ類、果物、砂糖類。

砂糖は吸収が早く摂り過ぎは糖尿病や低血糖症の危険性を高めます。

食事としては吸収が緩やかな穀類・イモ類での摂取を心がけましょう。

") elsif m == "食物繊維" # m が食物繊維の場合 print("

ゴボウ、さつまいも、こんにゃく、きのこ類、大豆等に特に多く含まれます。

また、キチン・キトサンは、カニやエビの殻に含まれる唯一動物性の食物繊維です。

") elsif m == "コラーゲン" # m がコラーゲンの場合 print("

コラーゲンが多く含まれる食品は、魚介類や肉類です。

特に、動物の骨や皮に多く含まれていて、牛すじ、鶏の手羽やガラ、豚足・スペアリブなどに多く、魚介類ではふかひれ・えびやかれいに多いです。

") end # if に対する end print("

戻る

") print("\n") print("\n") --------------------------------------------------------------------------- ●実行結果 <たんぱく質> 健康食材

「たんぱく質」が含まれる健康食材

肉類、魚介類、卵、牛乳・乳製品、大豆・大豆製品が該当します。

タンパク質は、動物性タンパク質と植物性タンパク質に分けられます。

戻 る

--------------------------------------------------------------------------- <脂質> 健康食材

「脂質」が含まれる健康食材

青魚(イワシ・サバ・サンマ等)やマグロ、オリーブ油。

悪玉コレステロールを減らす作用がある植物性や魚類の脂質を積極的に摂り ましょう。

戻 る

--------------------------------------------------------------------------- <炭水化物> 健康食材

「炭水化物」が含まれる健康食材

ご飯やパン・麺類などの穀類、イモ類、果物、砂糖類。

砂糖は吸収が早く摂り過ぎは糖尿病や低血糖症の危険性を高めます。

食事としては吸収が緩やかな穀類・イモ類での摂取を心がけましょう。

戻 る

--------------------------------------------------------------------------- <食物繊維> 健康食材

「食物繊維」が含まれる健康食材

ゴボウ、さつまいも、こんにゃく、きのこ類、大豆等に特に多く含まれます。

また、キチン・キトサンは、カニやエビの殻に含まれる唯一動物性の食物繊 維です。

戻 る

--------------------------------------------------------------------------- <コラーゲン> 健康食材

「コラーゲン」が含まれる健康食材

コラーゲンが多く含まれる食品は、魚介類や肉類です。

特に、動物の骨や皮に多く含まれていて、牛すじ、鶏の手羽やガラ、豚足・ スペアリブなどに多く、魚介類ではふかひれ・えびやかれいに多いです。

戻 る

--------------------------------------------------------------------------- ●考察 プログラムに入力されているデータと項目の内容が一致しているので、このプ ログラムは正しい。 --------------------------------------------------------------------------- 3.感想 小林愛実さんのスクリプトに興味を持った。授業アンケートではラジオボタン やドロップダウンメニューだけでなく、自由に書き込める欄もあり、本物そっ くりに作られていた。時間割も sip で登録しているような雰囲気で凄いと思っ た。 今回の課題では、前回の計算 CGI を使用して、計算した結果を書き込んで次 に測定する際に前回の結果というような感じで表示したかったが、open をい れる場所や使い方を理解していなかったため実現できなかった。結果、前回の 作品に計算項目と CGI を追加して、測定結果と健康食材を表示するように作 成した。今回は悩んだ結果が思考停止した。 --------------------------------------------------------------------------- 4.参考文献 著 : 西村まどか 基礎プログラミング II 第 10 回 「ことおぼえ」 ( http://roy/~madoka/2011/r2/10/ ) 健康の計算 (http://keisan.casio.jp/has10/Menu.cgi?path=01100000%2e%8c%92%8dN%82%cc%8cv%8eZ) クイックリファレンス ( http://www.htmq.com/index.htm ) 栄耀管理と管理栄養士のおすすめレシピ ( http://www.bob-an.com/recipe/healthy/eiyo/ ) --------------------------------------------------------------------------- ●共同学習者 宮原 絵美里 見川 英駿 菊地 瑞紀