第 2 回 なになにといえばこれこれ レポート課題 氏名: 夏井 知恵子 学籍番号: c1101655 語学クラス: 英語クラス6 コース:政策マネジメント 1.筆記問題 A.それぞれの花が何科なのかHash配列 flowerとしました。 i)Hashの表し方の1つ目 #!/usr/koeki/bin/ruby $KCODE ='e' flower = Hash.new # flower["アジサイ"] = "アジサイ科" flower["ガーベラ"] = "キク科" flower["ユリ"] = "ユリ科" flower["キキョウ"] = "キキョウ科" flower["ハイビスカス"] = "アオイ科" #p flower ii)Hashの表し方の2つ目 #!/usr/koeki/bin/ruby $KCODE = 'e' flower = Hash.new flower = { "アジサイ" => "アジサイ科", "ガーべラ" => "キク科", "ユリ" => "ユリ科", "キキョウ" => "キキョウ科", "ハイビスカス" => "アオイ科", } p flower B.進数変換 a.Od 2010を 16進数に変換 16)2010 …10 ------- 16) 125 …13 ------- 7 7 13 10 || || || 7 d a 答え Ox7da b.0d 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 | ------ 答えOb11111011010 更に16進数に変換するために4桁に区切る 0111/1101/1010 || || || 7 b a 答え Ox7ba よって1問目と2問目は同じ答えとなる 2.プログラム問題 i) 考えた設定 Hash配列を使って、予め、keyとvalueをプログラム内に入力し、ユーザーが入 力したkeyに対応するvalueを取り出せるようにした。ユーザーがkey以外のもの を入力した場合は"存在しません"と表示されるように設定した。 ii) 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' #漢字コードをEUCに指定 flower = Hash.new #Hash配列をflowerと設定 flower["アジサイ"] = "アジサイ科" flower["ガーベラ"] = "キク科" flower["ユリ"] = "ユリ科" flower["キキョウ"] = "キキョウ科" flower["ハイビスカス"] = "アオイ科" #p flower STDERR.print("調べたい花:\n") #花の名前の入力を促す hana = gets.chomp! #調べたい花の名前を入力 family = flower[hana] #hanaをkeyとするvalueを調べ、familyに代入する if flower.key?(hana) == false #文字列keyがあるか調べる printf("%sは存在しません\n",hana) #keyが存在しない場合に表示される else printf("%sは%sです。\n",hana,family)#keyが存在する場合に表示される end iii) もとにしたプログラムからの変更点 今回のプログラム作成にあたり、授業内で作成したhash_item.rbを参考にしま した。 変更点としては、まず、Hash配列のkeyとvalueの内容を変更し、調べられる対 の内容を変えた。変更した点の2点目は hana = gets.chomp! でキーボードから の入力により、使う人が調べたい対を調べられるようにした点である。仮にこの 時にflowerに含まれていないものが入力された場合、if flower.key?(hana) == false というプログラムのもと、 printf("%sは存在しません\n",hana)という表示 がされる。変更点の3点目は、hana = gets.chomp!の次にcolor = flower[hana] という変数を置いた点である。この変数により、flowerというHash変数において、 hanaをkeyとするvalueを調べ、familyに代入するようにした。 以上が変更した点である。 iv) プログラムを実行した結果画面 pan{c110165}% ./hash_choice.rb [~/Ruby] 調べたい花: アジサイ アジサイはアジサイ科です。 pan{c110165}% ./hash_choice.rb [~/Ruby] 調べたい花: ガーベラ ガーベラはキク科です。 pan{c110165}% ./hash_choice.rb [~/Ruby] 調べたい花: ユリ ユリはユリ科です。 pan{c110165}% ./hash_choice.rb [~/Ruby] 調べたい花: キキョウ キキョウはキキョウ科です。 pan{c110165}% ./hash_choice.rb [~/Ruby] 調べたい花: ハイビスカス ハイビスカスはアオイ科です。 pan{c110165}% ./hash_choice.rb [~/Ruby] 調べたい花: ヒマワリ ヒマワリは存在しません v) 考察 プログラム内に存在する花(アジサイ、ガーベラ、ユリ、キキョウ、ハイビスカ ス)を入力した場合にはそれと対になるvalueが表示され、存在しない花の場合に は"存在しません"という表示がされたので、このプログラムは正しいといえる。 vi)感想 今回Hash配列を使ったプログラムを作成した。はじめにHash配列の中にkeyと valueを設定し、次にkeyの対となるvalueを調べられるように変数を設定した。 また、入力された変数が存在するかしないか if flower.key?(hana) == falseを使 い、調べられるようにした。そして、Hashは配列とは違い、任意の値をとること が出来るものであるということがわかった。 Hashが実際に使われていると思われるものは美容室の顧客の来店の履歴。 vii) 参考文献 (参照した本、ホームページ)や共同学習者など webサイト:http://roy.e.koeki-u.ac.jp/~naoya/rubyII/3.html 作者: 神田直弥 題名:基礎プログラミングII第3回 webサイト:http://roy/~madoka/2011/r2/02/r2_02_05_theme_04_default.html 作者:西村まどか 題名:基礎プログラミング II 第 2 回 (なになにといえばこれこれ) 「対にないものが呼び出されたときlec