第 2 回 なになにといえばこれこれ レポート課題 氏名:菊池綾 学籍番号:c1100644 語学クラス:英語6 コース(系):政策マネジメント 1.筆記問題 A. 月とその誕生石を hash 配列 stone その 1: 「1月」に対して value は「ガーネット」 その 2: 「2月」に対して value は「アメジスト」 その 3: 「3月」に対して value は「アクアマリン」 その 4: 「4月」に対して value は「ダイヤモンド」 その 5: 「5月」に対して value は「エメラルド」 これに対応する Hash の表し方は stone["1月"] = "ガーネット" stone["2月"] = "アメジスト" stone["3月"] = "アクアマリン" stone["4月"] = "ダイヤモンド" stone["5月"] = "エメラルド" また、もう一つの表し方は {"1月" => "ガーネット","2月" => "アメジスト","3月" => "アクアマリン","4 月" => "ダイヤモンド","5月" => "エメラルド"} B. a.0d 2010 = 0x ?? 10進数 2010 を 16進数に変換 16) 2010 10...a ------- 16) 125 13...d ------- 16) 7 7 ------- 0 この計算より、 余りをしたから順に並べたものが解答になる。 0d 2010 = 0x 7da b.0d 2010 = 0b ?? 10進数 2010 を 2進数に変換 2) 2010 0 ------- 2) 1005 1 ------- 2) 502 0 ------- 2) 251 1 ------- 2) 125 1 ------- 2) 62 0 ------- 2) 31 1 ------- 2) 15 1 ------- 2) 7 1 ------- 2) 3 1 ------- 2) 1 1 ------- 0 この計算より、 余りをしたから順に並べると解答になる。 0d 2010 = 0b 11111011010 この結果を16進数変換するとき、2進数を4桁ずつ区切る。 4で割り切れないときは、頭に 0 をつけて考える。 0b 0111 1101 1010 0b 111 = 0x 7 0b 1101 = 0x d 0b 1010 = 0x a よって、0b 111 1101 1010 = 0x 7da A問題の結果と等しいため、この計算は合っている。 2.プログラム問題 i.考えた設定 5月までのデータをもともとhash配列に組み込んでおき、 それ以外の月に関して聞かれた場合は入力させるようにした。 while true で繰り返し入力できるようにし、 入力を終了するときには C-d を入力してもらう。 データを全て表示させるために、each文を使用。 ii.作成したプログラム C.hash_register.rb iv.プログラムを実行した結果画面 ●hash配列にあるものを入力した場合 pan{KIKUCHI Aya}% ./hash_register.rb [~/Ruby] 調べる月(例:1月) : 1月 4月 の誕生石: ダイヤモンド 5月 の誕生石: エメラルド 1月 の誕生石: ガーネット 2月 の誕生石: アメジスト 3月 の誕生石: アクアマリン pan{c110064}% ./hash_register.rb [~/Ruby] 調べる月(例:1月) : 2月 4月 の誕生石: ダイヤモンド 5月 の誕生石: エメラルド 1月 の誕生石: ガーネット 2月 の誕生石: アメジスト 3月 の誕生石: アクアマリン pan{c110064}% ./hash_register.rb [~/Ruby] 調べる月(例:1月) : 3月 4月 の誕生石: ダイヤモンド 5月 の誕生石: エメラルド 1月 の誕生石: ガーネット 2月 の誕生石: アメジスト 3月 の誕生石: アクアマリン pan{c110064}% ./hash_register.rb [~/Ruby] 調べる月(例:1月) : 4月 4月 の誕生石: ダイヤモンド 5月 の誕生石: エメラルド 1月 の誕生石: ガーネット 2月 の誕生石: アメジスト 3月 の誕生石: アクアマリン pan{c110064}% ./hash_register.rb [~/Ruby] 調べる月(例:1月) : 5月 4月 の誕生石: ダイヤモンド 5月 の誕生石: エメラルド 1月 の誕生石: ガーネット 2月 の誕生石: アメジスト 3月 の誕生石: アクアマリン ●hash配列にないものを入力して表示 pan{c110064}% ./hash_register.rb [~/Ruby 調べる月(例:1月) : 6月 6月 は登録されていません 月と誕生石を入力して下さい (Ctrl-D で終了) 月を入力: 6月 誕生石を入力: パール 月を入力: 7月 誕生石を入力: ルビー 月を入力: 8月 誕生石を入力: ペリドット 月を入力: 9月 誕生石を入力: サファイア 月を入力: 10月 誕生石を入力: トパーズ 月を入力: 11月 誕生石を入力: トパーズ 月を入力: 12月 誕生石を入力: ターコイズ 月を入力: 入力終了 4月 の誕生石: ダイヤモンド 5月 の誕生石: エメラルド 12月 の誕生石: ターコイズ 6月 の誕生石: パール 7月 の誕生石: ルビー 10月 の誕生石: トパーズ 8月 の誕生石: ペリドット 11月 の誕生石: トパーズ 9月 の誕生石: サファイア 1月 の誕生石: ガーネット 2月 の誕生石: アメジスト 3月 の誕生石: アクアマリン v.導き出された結果の考察 (ここで計算結果が合っているか調べる) hash の中のデータに含まれているものを入力した場合、 含まれていないものを入力した場合の二通りを実行した。 それぞれ、その後の表示が違うことから、 if文の分岐が正常に動いていることが分かる。 また、C-d で終了できたことから、その部分も正常に動いていることが分かる。 どの結果も、key と value が正しく対になっていることから、 hash 配列が正常に動いていることが分かる。 3.感想 実際に使われていると思うもの ・レジ … 商品をレジに通すとその値段が出る。 ・券売機 … 選んだ商品(切符)の値段を入れると買うことが出来る。 ・ATM … タッチパネルで選んだ操作が出来る。 ・ファミリーマートでいうファミリーポート(名称不明) … タッチパネルで選んだ ものを表示 ・WAON … 支払いでWAONボタンを押すと支払うことが出来る。 ・カードリーダー … ドアを開けるなどするとき、あらかじめ登録したものだけ が開錠できる。 他の日常で使う機械の中にも使われていそうだと思った。 4. ●参考文献 (参照した本、ホームページ)や共同学習者など 西村まどか 基礎プログラミングII 第 2 回 「あるかないか」 http://roy/~madoka/2011/r2/02/r2_02_04_theme_03_existornot.html 「対にないものが呼び出されたとき」 http://roy/~madoka/2011/r2/02/r2_02_05_theme_04_default.html 「対の情報を使って並び換え」 http://roy/~madoka/2011/r2/02/r2_02_08_theme_07_each.html 「覚える順番は違うけれど答えは正しい」 http://roy/~madoka/2011/r2/02/r2_02_10_theme_09_memory.html 神田直弥 基礎プログラミングI 第 9 回 16進数・ASCIIコード http://roy/~naoya/ruby/9.html 誕生石 Wikipedia http://ja.wikipedia.org/wiki/%E8%AA%95%E7%94%9F%E7%9F%B3 ●共同学習者 齊藤陽香 渡辺龍 ------------------------------- 東北公益文科大学 公益学部 公益学科 2年 菊池綾 c110064@f.koeki-u.ac.jp