第 2 回 なになにといえばこれこれ レポート課題 氏名:細田 洋平 学籍番号:c1101773 語学クラス:英語6 コース(系):政策マネジメントコース A. 特産品の名前を hash 配列 special としました。 special の key と value はそれぞれ県名とその特産品にとりました。 その1: key「秋田県」に対して value は「きりたんぽ」 その2: key「山形県」に対して value は「ラフランス」 その3: key「青森県」に対して value は「リンゴ」 その4 key「岩手県」に対して value は「冷麺」 その5: key「宮城県」に対して value は「笹かまぼこ」 これに対応する Hash の表し方は special["秋田県"] = "きりたんぽ" special["山形県"] = "ラフランス" special["青森県"] = "リンゴ" special["岩手県"] = "冷麺" special["宮城県"] = "笹かまぼこ" また、もう一つの表し方は {"秋田県" => "きりたんぽ" "山形県" => "ラフランス" "青森県" => "リンゴ" "岩手県" => "冷麺" "宮城県" => "笹かまぼこ"} B. a.0d 2010 = 0x ?? 0d は10進数、0x は16進数である。以下手順。 (1)変換したい10進数を16で割り、商と余りは分けておく。 (2)でてきた商を更に16で割り、余りは分けておく。 (3) (1)〜(2)を、商が0になるまで繰り返す。 (4)分けておいた余りを逆から順に読む。 10進数 16進数 2010 / 16 = 125 | 余り 10 = a 125 / 16 = 7 | 余り 13 = d 7 / 16 = 0 | 余り 7 = 7 よって、0d 2010 = 0x 7da となる。 b.0d 2010 = 0b ?? 0dは10進数、0bは2進数である。以下手順。 (1)変換したい10進数を2で割り、商と余りは分けておく。 (2)商を更に2で割り、余りは分けておく。 (3) (1)〜(2)を、商が0になるまで繰り返す。 (4)分けておいた余りを逆から順に読む。 2010 / 2 = 1005 | 余り0 1005 / 2 = 502 | 余り1 502 / 2 = 251 | 余り0 251 / 2 = 125 | 余り1 125 / 2 = 62 | 余り1 62 / 2 = 31 | 余り0 31 / 2 = 15 | 余り1 15 / 2 = 7 | 余り1 7 / 2 = 3 | 余り1 3 / 2 = 1 | 余り1 1 / 2 = 0 | 余り1 でた余りを逆から読むと、11111011010 である。 よって、0d 2010 = 0b 11111011010 となる。 更にこの答えを16進数に変換し、aと答えが同じであるか確認する。以下手順。 (1)2進数を末尾から4桁ごとに区切る。 0111 1101 1010 4桁に区切った際、先頭が4桁に満たない場合、左側に0を補う。 (2)それぞれを16進数に変換する。 2進数 16進数 0111 = 7 1101 = d 1010 = a よって、0b 11111011010 = 0x 7da となり、1問目と答えは同じである。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 Cを選択 #!/usr/koeki/bin/ruby $KCODE ='e' # 文字化け防止のため special = Hash.new STDERR.print("県名と特産品を入力して下さい (Ctrl-D で終了\n") while true # このプログラムと入れることで、県名〜特産の流れを繰り返さ せる STDERR.print("県名を入力して下さい:\n") ken = gets if ken == nil # Ctrl-c で繰り返しを抜ける break else ken = ken.chomp # ここで ken の内容を取りこませる end STDERR.print("特産品を入力して下さい:") special[ken] = gets.chomp end STDERR.print("入力終了\n") for special in ken.keys printf("%s %d \n",special,ken) # special の内容を全て表示されるようにする end *もとにしたプログラム 「hash_add.rb」 前回の講義で作成した「hash_add.rb」を使用した。 *変更点 item → special retail → ken ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 実行結果 pan{HOSODA Yohei}% ./hash_register.rb [~/Ruby] 県名と特産品を入力して下さい (Ctrl-D で終了 県名を入力して下さい: 秋田県 特産品を入力して下さい:きりたんぽ 県名を入力して下さい: 山形県 特産品を入力して下さい:ラフランス 県名を入力して下さい: 青森県 特産品を入力して下さい:りんご 県名を入力して下さい: 岩手県 特産品を入力して下さい:冷麺 県名を入力して下さい: 宮城県 特産品を入力して下さい:笹かまぼこ 県名を入力して下さい: 入力終了 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 考察 文もしっかり表示されるし、繰り返しも問題なし、Ctrl-D でもちゃんと終了出 来るので、問題点は無いと思われる。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 感想 今回のプログラムの大筋は、授業で作成したプログラムを参考にしているので、 そういった点ではオリジナリティが無かったように感じる。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://roy/~madoka/2011/r2/02/r2_02_03_theme_02_hash_input.html 西村先生のページ 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_07_theme_06_forprint.html 西村先生のページ