第 9 回 Ruby であそぼ / 広告ページの作成 レポート課題 氏名:高田美咲 学籍番号:C1110909 語学クラス:英語1 コース:政策マネジメントコース 1.筆記問題 A. この答えを求めるには、同じ位ごとに計算する。 この進数は16進数のため、16で1つ繰り上がる。 そして、a、b、c、d、e、fについては a = 10 b = 11 c = 12 d = 13 e = 14 f = 15 に変換して考える。 < a.0x32 + 0x24 > 3 2 +) 2 4 ---------- 5 6 0x32 + 0x24 = 0x56 となる。 < b.0x15 + 0x2d > 1 5 +) 2 13 d = 13に変換 --------- 3 18 18 / 16 = 1 余り 2 で1繰り上がり、2はそのままの位に残る。 --------- 4 2 0x15 + 0x2d = 0x42 となる。 < c.0xed - 0x12 > 14 13 e = 14 d = 13に変換 -) 1 2 ---------- 13 11 13 = d 11 = bに変換 ---------- d b 0xed - 0x12 = 0xdb となる。 B. 1から31までの整数を7で割る。この計算でどのような規則性があるか調べる。 1 / 7 = 0 余り 1 2 / 7 = 0 余り 2 ← 3 / 7 = 0 余り 3 4 / 7 = 0 余り 4 5 / 7 = 0 余り 5 6 / 7 = 0 余り 6 7 / 7 = 1 余り 0 ---------------------- 8 / 7 = 1 余り 1 9 / 7 = 1 余り 2 ← 10 / 7 = 1 余り 3 ここまでの計算でわかることがある。 それは1〜7、8〜14のように7ずつに区切ることで余りは区切りごとに上から1、2、 3、4、5、6、0の順になる。それが31まで繰り返されることになる。 このことから、余りが2になる整数は7ずつの区切りの2番目にくることがわかる。 ここからは、7の区切りで考える。 1〜 7 2番目にくる数は 2 8〜14 2番目にくる数は 9 15〜21 2番目にくる数は 16 22〜28 2番目にくる数は 23 29〜31 2番目にくる数は 30 よって、7で割るとあまりが2になる数は 2、9、16、23、30 となる。 2.プログラム問題 A. < 考えた設定 > ファーストフードについての検索プログラムを作成する。 ファーストフードの栄養について現状を知ってもらうため、数値を公開する項目 を多めにデータとして用意する。 < 使用データ > 左から商品名、店舗名、数値の部分はカロリー、タンパク質、脂質、 炭水化物、食塩相当量の順である。 マックポーク マクドナルド 402 14.2 23.3 34.3 1.9 チキンクリスプ マクドナルド 385 12.4 19.8 39.4 2.0 ハンバーガー マクドナルド 275 12.3 10.6 32.4 1.5 チーズバーガー マクドナルド 323 15.2 14.3 33.4 2.1 フィレオフィッシュ マクドナルド 356 13.7 14.5 42.4 1.7 えびフィレオ マクドナルド 388 12.1 15.8 49.4 2.3 てりやきマックバーガー マクドナルド 509 14.5 32.3 40.0 2.4 ベーコンレタスバーガー マクドナルド 419 16.9 24.1 33.7 2.1 ダブルチーズバーガー マクドナルド 481 25.8 26.6 34.4 3.1 ビックマック マクドナルド 556 25.5 30.2 45.5 2.8 クォーターパウンダーチーズ マクドナルド 556 30.0 31.2 38.6 3.1 ダブルクォーターパウンダーチーズ マクドナルド 825 49.2 52.5 38.7 3.7 ジューシーチキンフィレオ マクドナルド 454 18.4 21.9 45.9 2.6 スパイシーWモスチーズバーガー モスバーガー 574 26.7 33.3 41.6 3.5 スパイシーWモスバーガー モスバーガー 523 23.6 29.2 41.3 3.1 Wハンバーガー モスバーガー 402 19.7 19.9 35.7 2.2 スパイシーモスチーズバーガー モスバーガー 431 17.9 23.6 36.5 2.6 スパイシーモスバーガー モスバーガー 380 14.8 19.5 36.2 2.2 Wチーズバーガー モスバーガー 453 22.8 24.0 36.0 2.6 Wモスバーガー モスバーガー 521 23.6 29.1 40.9 2.8 Wサウザン野菜バーガー モスバーガー 501 22.2 28.8 38.0 2.4 海老カツバーガー モスバーガー 392 12.9 18.9 42.8 1.7 チーズバーガー モスバーガー 327 15.4 15.3 31.4 1.8 Wテリヤキバーガー モスバーガー 585 23.1 32.8 49.1 3.7 ハンバーガー モスバーガー 276 12.3 11.2 31.1 1.4 Wモスチーズバーガー モスバーガー 572 26.7 33.2 41.2 3.2 フィッシュバーガー モスバーガー 445 16.3 26.1 35.6 1.8 ロースカツバーガー モスバーガー 369 15.5 13.6 46.4 2.6 テリヤキチキンバーガー モスバーガー 342 18.2 14.6 34.2 2.4 モスチーズバーガー モスバーガー 429 17.9 23.5 36.1 2.3 モスバーガー モスバーガー 378 14.8 19.4 35.8 1.9 テリヤキバーガー モスバーガー 423 14.2 23.3 38.9 2.4 サウザン野菜バーガー モスバーガー 367 13.8 19.4 34.1 1.7 ホットドッグ モスバーガー 275 9.5 14.7 26.1 1.6 チリドッグ モスバーガー 288 10.6 15.4 26.7 1.7 スパイシーチリドッグ モスバーガー 289 10.6 15.5 26.8 2.0 ハンバーグサンドチーズ モスバーガー 424 19.8 23.4 33.0 2.5 ハンバーグサンドトマト&レタス モスバーガー 423 17.4 22.4 38.0 2.5 モスライスバーガーカルビ焼き肉 モスバーガー 338 9.4 13.0 46.0 1.0 モスライスバーガーきんぴら モスバーガー 243 4.6 2.7 50.2 1.3 モスライスバーガー海鮮かきあげ モスバーガー 351 8.3 11.6 53.4 1.3 チーズ&チーズダブルバーガー ロッテリア 424 25.5 20.5 43.2 2.8 チーズ&チーズバーガー ロッテリア 358 15.1 18.8 31.6 2.4 絶品チーズバーガー ロッテリア 540 17.9 40.1 27.0 1.7 絶品ベーコンチーズバーガー ロッテリア 580 20.6 43.1 27.5 2.1 チーズバーガー ロッテリア 317 13.4 15.9 29.8 2.0 ハンバーガー ロッテリア 274 10.6 12.3 29.6 1.7 絶妙BLTバーガー ロッテリア 575 16.0 43.5 30.1 2.0 絶妙ハンバーガー ロッテリア 517 16.1 37.6 29.0 1.5 絶品エビバーガー ロッテリア 479 11.5 30.0 39.6 2.3 エビバーガー ロッテリア 504 11.2 32.5 40.3 2.4 半熟タマてりバーガー ロッテリア 417 12.9 23.9 36.6 2.3 てりやきバーガー ロッテリア 377 9.2 23.1 32.1 1.8 しょうゆマヨタツタチキンバーガー ロッテリア 518 15.7 32.9 38.2 1.8 ベジダブルバーガーチキン ロッテリア 224 12.0 7.8 25.4 5.0 ベジダブルバーガーチキン&トマト ロッテリア 228 12.2 7.8 26.4 5.0 チキンフィレサンド ケンタッキー 403 24.3 19.5 31.6 2.7 和風チキンカツサンド ケンタッキー 483 18.5 25.9 44.5 2.4 オリジナルツイスター ケンタッキー 344 12.8 18.4 31.2 2.0 レッドホットチキンサンド ケンタッキー 407 16.1 21.3 36.4 2.4 < 作成プログラム > #!/usr/koeki/bin/ruby #coding: euc-jp print("マクドナルド、モスバーガー、ロッテリア、ケンタッキーの一部商品を検索できます。\n\n") print("検索対象は各店舗のバーガーメニューです。\n\n") print("メニュー名や店舗名などを入力して検索して下さい。\n\n") name = Array.new # Arrayで配列 tenpo = Array.new cal = Array.new tan = Array.new sibo = Array.new tansui = Array.new sio = Array.new print("\n") STDERR.print("検索 :") # STDERRでエラー時、メッセージ表示 food = STDIN.gets.chomp # STDINで標準入力 re = Regexp.new(food,true) # Regexp で文字列を正規表現に変換 print("\n") i = 0 # i 初期値 open("first_food.dat","r") do |fooood| #ファイル指定 r=読み込みモード while first_food = fooood.gets #while文で繰り返し if re =~ first_food #if文でもし~ならば if /(\S+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ first_food name[i] = $1 #if文 正規表現 tenpo[i] = $2 # $1、$2で読み込みファイルの何行目かを指定 cal[i] = $3.to_i #to_iで整数値 tan[i] = $4 sibo[i] = $5 tansui[i] = $6 sio[i] = $7 i += 1 end # if文 end end # if文 end end # while文 end end # open do end total = 0 # total 初期値 ii = 1 #ii 初期値 num = 0 #num 初期値 while num < cal.length #length 配列の長さ total += cal[num] # calの値を足す printf("[メニュー%s] %sの「%s」は、%d kcal です。\n\n",ii,tenpo[num],name[num],cal[num]) num += 1 ii += 1 end print("\n") while true # 繰り返し設定 print("次から選択して下さい。\n") print("1:もっと詳しい内容をみる \n") print("2:終了する \n") STDERR.print("どれを選択する?? :") suzi = gets.chomp.to_i print("\n\n") if suzi == 1 # もし入力が1ならば STDERR.print("詳しく知りたいメニューの番号を入力して下さい。:") j = gets.chomp.to_i print("\n") printf(" %sの %s は、\n",tenpo[j-1],name[j-1]) printf("カロリー: %d kcal\t たんぱく質 : %s g\t 脂質 : %s g\n",cal[j-1],tan[j-1],sibo[j-1]) printf("炭水化物 : %s g\t 食塩相当量 : %s g\n\n",tansui[j-1],sio[j-1]) elsif suzi == 2 #もし入力が1でなく2ならば print("これで終了します。\n") break # 繰り返しをやめる end #if文 end end #while文 end < 実行結果1 > 検索後、詳細を表示せず終了する場合の結果である。 pan{c111090}% ./first_food.rb [~/public_html/adv] マクドナルド、モスバーガー、ロッテリア、ケンタッキーの一部商品を検索できます。 検索対象は各店舗のバーガーメニューです。 メニュー名や店舗名などを入力して検索して下さい。 検索 :ハンバーガー [メニュー1] マクドナルドの「ハンバーガー」は、275 kcal です。 [メニュー2] モスバーガーの「Wハンバーガー」は、402 kcal です。 [メニュー3] モスバーガーの「ハンバーガー」は、276 kcal です。 [メニュー4] ロッテリアの「ハンバーガー」は、274 kcal です。 [メニュー5] ロッテリアの「絶妙ハンバーガー」は、517 kcal です。 次から選択して下さい。 1:もっと詳しい内容をみる 2:終了する どれを選択する?? :2 これで終了します。 < 実行結果2 > 詳細を表示させる場合の結果である。 pan{c111090}% ./first_food.rb [~/public_html/adv] マクドナルド、モスバーガー、ロッテリア、ケンタッキーの一部商品を検索できます。 検索対象は各店舗のバーガーメニューです。 メニュー名や店舗名などを入力して検索して下さい。 検索 :ハンバーガー [メニュー1] マクドナルドの「ハンバーガー」は、275 kcal です。 [メニュー2] モスバーガーの「Wハンバーガー」は、402 kcal です。 [メニュー3] モスバーガーの「ハンバーガー」は、276 kcal です。 [メニュー4] ロッテリアの「ハンバーガー」は、274 kcal です。 [メニュー5] ロッテリアの「絶妙ハンバーガー」は、517 kcal です。 次から選択して下さい。 1:もっと詳しい内容をみる 2:終了する どれを選択する?? :1 詳しく知りたいメニューの番号を入力して下さい。:2 モスバーガーの Wハンバーガー は、 カロリー: 402 kcal たんぱく質 : 19.7 g 脂質 : 19.9 g 炭水化物 : 35.7 g 食塩相当量 : 2.2 g 次から選択して下さい。 1:もっと詳しい内容をみる 2:終了する どれを選択する?? :1 詳しく知りたいメニューの番号を入力して下さい。:4 ロッテリアの ハンバーガー は、 カロリー: 274 kcal たんぱく質 : 10.6 g 脂質 : 12.3 g 炭水化物 : 29.6 g 食塩相当量 : 1.7 g 次から選択して下さい。 1:もっと詳しい内容をみる 2:終了する どれを選択する?? :2 これで終了します。 < 考察 > このプログラムはfirst_food.datのデータをfirst_food.rbに取り込み正しく機 能するプログラムである。 実行結果1は検索、終了の動作、共に正しく機能した。 実行結果2は検索後、詳細内容が表示された。 これは、使用者が終了を選択するまで詳細内容表示の動作が実行され 続けなければならない。 結果、繰り返し表示できている。 そのためこのプログラムは正しく機能している。 < 参考資料 > 西村まどか 基礎プログラミング I 第 7 回 正規表現とRuby言語でのプログラミング 「駅名だけを切り出そう」 http://roy/~madoka/2012/r1/07/r1_07_09_theme_07_parenthesis.html 「選択する部分を作るには」 http://roy/~madoka/2012/r1/07/r1_07_13_theme_10_selection.html 「券売機のしくみ」 http://roy/~madoka/2012/r1/07/r1_07_14_theme_11_vendingmachine.html 日本マクドナルド公式ウェブサイト レギュラーメニュー http://www.mcdonalds.co.jp/menu/regular/index.html モスバーガー公式ホームページ メニュー http://www.mos.co.jp/menu/index.html ロッテリア公式ウェブサイト サービスメニュー http://lotteria.jp/servicemenu/burgermenu.html ケンタッキーフライドチキン公式サイト 商品情報 http://www.kfc.co.jp/menu/index.html ------------------------------------------------------------------------------ B. ホームページにプログラム問題Aを公開する。 < トップページについて > ファーストフード検索を今回のトップページに設定した。そして、そのページか ら企画書、取り扱い説明書、プログラム、使用データの項目でリンクをつけた。 ページは全体的に同系色でそろえることで見やすくなるよう意識して作成した。 リンクは私のメインホームページにもつながる設定にして、メインホームページ からファーストフード検索プログラムにもアクセスを可能にしている。 < ファーストフード検索ページソース > adv/index.html
普段あなたが食べているファーストフードは...
どのような栄養素でしょうか?
検索して確かめてみよう!!
♪企画書♪
♪取り扱い説明書♪
♪プログラム♪
♪使用データ♪