第 2 回 なになにといえばこれこれ レポート課題 再提出 変更点 プログラムの説明を、できるだけ多くいれた。考察も書き加えた。 どんな設定でプログラムを、作成したかを記した。 1.A.各県の県庁所在地を hash 配列名 kenchou とした。 key には、県の名前 value には県庁所在地を入れた。 key は北海道 value には札幌市 key は宮城県 value には仙台市 key は栃木県 value には宇都宮市 key は群馬県 value には前橋市 key は山梨県 value には甲府市 これを hash で表すと kenchou["北海道"] = "札幌市" kenchou["宮城県"] = "仙台市" kenchou["栃木県"] = "宇都宮市" kenchou["群馬県"] = "前橋市" kenchou["山梨県"] = "甲府市" もう一つの表し方は {"北海道" => "札幌市","宮城県" => "仙台市","栃木県" => "宇都宮市", "群馬県" => "前橋市","山梨県" => "甲府市"} B, 0d は10進数を表す。0x は16進数を表す。0b は2進数を表す。 a,0d 2010 = 0x ?? まず、10進数を16進数に直すには、16で割り出た答えを下から読み上げる。 2010 / 16 = 125 …余り 10 125 / 16 = 7 …余り 13 7 / 16 = 0 …余り 7 7 13 10 となる。 この数字を16進数表を参考に変換すると、 7 = 7 13 = d 10 = a となる。 よって、0d 2010 = 0x 7da となる。 b、0d 2010 = 0b ?? 10進数を2進数に直すには、2で割り答えを下から読む。 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 となる。 2.プログラム作成 A、 考えた設定 事前に登録してある対のデータを表示させるプログラム。 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' #文字コードの設定。 kenchou = Hash.new # 新しく Hash を作る kenchou = { "北海道" => "札幌市", "宮城県" => "仙台市", "栃木県" => "宇都宮市", "群馬県" => "前橋市", "山梨県" => "甲府市" } # Hash の中身 for ken, in kenchou.keys # for キー名、値 in Hash配列名.keys printf("%s の県庁所在地は %s です。\n",ken,kenchou[ken]) # 行う操作 end # for 終わり もとのプログラムからの変更点 Hash の中を県庁所在地に変えた。 実行結果 pan{MAMIYA Takumi}% ./hash_for.rb [~/program] 群馬県 の県庁所在地は 前橋市 です。 栃木県 の県庁所在地は 宇都宮市 です。 山梨県 の県庁所在地は 甲府市 です。 宮城県 の県庁所在地は 仙台市 です。 北海道 の県庁所在地は 札幌市 です。 考察 事前に登録してある対のデータと、同じ表示が出てきたので このプログラムは正しいといえる。 B、考えた設定 ユーザーが知りたい情報を、選択し表示させるプログラム。 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 日本語コードで入力 kenchou = Hash.new # Hash 配列を kenchou とする。 kenchou["札幌市"] = "北海道" kenchou["仙台市"] = "宮城県" kenchou["宇都宮市"] = "栃木県" kenchou["前橋市"] = "群馬県" kenchou["甲府市"] = "山梨県" print("県庁所在地を入力して下さい。どこの都道府県か表示されます。\n") print("\n") print("札幌市、仙台市、宇都宮市、前橋市、甲府市の中で選んで下さい。\n") STDERR.print("県庁所在地を打ち込んで下さい。: ") # STDERR.print文 todouhuken = gets.chomp # 都道府県を読みこませる。 if kenchou.key?(todouhuken) == true # 文字列 key があるかを調べ、無ければ false という値を返す printf("\n %s が県庁所在地の都道府県は %s です。\n",todouhuken,kenchou[todouhuken]) else # そうでなければ print("\n そこまで調べていません\n") end # else 終わり 実行結果 pan{c110183}% ./hash_choice.rb [~/program] 県庁所在地を入力して下さい。どこの都道府県か表示されます。 札幌市、仙台市、宇都宮市、前橋市、甲府市の中で選んで下さい。 県庁所在地を打ち込んで下さい。: 札幌市 札幌市 が県庁所在地の都道府県は 北海道 です。 pan{c110183}% ./hash_choice.rb [~/program] 県庁所在地を入力して下さい。どこの都道府県か表示されます。 札幌市、仙台市、宇都宮市、前橋市、甲府市の中で選んで下さい。 県庁所在地を打ち込んで下さい。: 仙台市 仙台市 が県庁所在地の都道府県は 宮城県 です。 pan{c110183}% ./hash_choice.rb [~/program] 県庁所在地を入力して下さい。どこの都道府県か表示されます。 札幌市、仙台市、宇都宮市、前橋市、甲府市の中で選んで下さい。 県庁所在地を打ち込んで下さい。: 那覇市 そこまで調べていません 考察 作成したプログラム通りに表示され、県庁所在地を打ち込むとその県庁所在 地にあった都道府県が表示される。さらにデータ以外の県庁所在地を入力し たところ、そこまで調べていません と表示されたのでこのプログラムは正 しい。 3、感想 やっとプログラムを一人でも作る事が出来てきたので、このまま上達してい きたい。このプログラムは、伝票管理・在庫管理などに使えてとても便利だ と思う。 4、参考文献 基礎プログラミング II 2010年度 第2回 なになにといえばこれこれ 講評 http://roy/~madoka/2010/r2/02/rpt/crt.html 5, 添付