第2回 基礎プログラミングII レポート課題 氏名:荘司まゆ 学籍番号:c1051093 語学クラス:英語3 コース(系):社会 A. 1. 果物の特徴をhash 配列 kudamonoとしました。 kudamonoのkeyとvalueはそれぞれ果物名とその特徴にとりました。 その1:key[りんご]に対してvalueは[アカ] その2:key[みかん]に対して[オレンジ] その3:key[ぶどう]に対して[ムラサキ] その4:key[キウイ]に対して[キミドリ] その5:key[グレープフルーツ]に対して[キイロ] これに対応するHashの表し方は kudamono["りんご"] = "アカ" kudamono["みかん"] = "オレンジ" kudamono["ぶどう"] = "ムラサキ" kudamono["キウイ"] = "キミドリ" kudamono["グレープフルーツ"] = "キイロ" もう1つの表し方は ["りんご" => "アカ","みかん" => "オレンジ","ぶどう" => "ムラサキ","キウ イ" => "キミドリ","グレープフルーツ "=> "キイロ"] B. a. 0d 2010を0xに変換させる。 0dであることからこの式は10進数であることがわかる。 2010を0x、つまり16進数に変換させるには、以下のようになる。 16 )2010 10 a 16 ) 125 13 d 7 割り算の余りを下から上に読むので、 よって答えは、0d 7daである。 また、7daを10進数に変換させてみる。 16**2 16**1 16**0 7 d a dの桁は10進数で13、aの桁は10を表すので以下のような計算になる。 256*7 + 16*13 + 10 = 2010 よって、0d 2010 = 0x7daであることが証明された。 b. 0d 2010を0bに変換させる。 0dであることからこの式は10進数であることがわかる。 2010を0b、つまり2進数に変換させるには、以下のようになる。 2) 2010 2) 1005 1 2) 502 1 2) 251 0 2) 125 1 2) 62 1 2) 31 0 2) 15 1 2) 7 1 2) 3 1 2) 1 1 となる。下から上に読むので、答えは、0b 11111011011となる。 また、0bを16進数に変換させる。 0b 11111011011を4桁ごとに区切ると、111,1101,1011となる。 これらを10進数に変換させると、2010となるので、 0d 2010 = 0b11111011011であることが証明された。 2. この問題から1つ選択するということなので、A.を選択する。 a.プログラム本体 #!/usr/koeki/bin/ruby $KCODE = 'e' #文字コードに変換させる fruets = Hash.new(0) #hashの新規 fruets = { "りんご" => 120, "みかん" => 80, "ぶどう" => 150, "キウイ" => 50, "グレープフルーツ" => 130 } print("りんご、みかん、ぶどう、キウイ、グレープフルーツ、のどの値段を知りたいですか?\n") what = gets.chomp! cost = fruets[what] printf("%s は1個 %d円です\n",what,cost) if cost == nil printf("%s は売ってないんで\n",what) end b.実行結果 pan{c105109}% ./hash_for.rb [~/Ruby] りんご、みかん、ぶどう、キウイ、グレープフルーツ、のどの値段を知りたいですか? みかん みかん は1個 80円です pan{c105109}% ./hash_for.rb [~/Ruby] りんご、みかん、ぶどう、キウイ、グレープフルーツ、のどの値段を知りたいですか? りんご りんご は1個 120円です pan{c105109}% ./hash_for.rb [~/Ruby] りんご、みかん、ぶどう、キウイ、グレープフルーツ、のどの値段を知りたいですか? ぶどう ぶどう は1個 150円です pan{c105109}% ./hash_for.rb [~/Ruby] りんご、みかん、ぶどう、キウイ、グレープフルーツ、のどの値段を知りたいですか? キウイ キウイ は1個 50円です pan{c105109}% ./hash_for.rb [~/Ruby] りんご、みかん、ぶどう、キウイ、グレープフルーツ、のどの値段を知りたいですか? グレープフルーツ グレープフルーツ は1個 130円です pan{c105109} また、プログラム本体にある以外の果物でも実行してみる。 pan{c105109}% ./hash_for.rb [~/Ruby] りんご、みかん、ぶどう、キウイ、グレープフルーツ、のどの値段を知りたいですか? なし なし は1個 0円です なし は売ってないんで pan{c105109}% [~/Ruby] c.もとにしたプログラムからの変更点 hashを1つにまとめ、if cost == 0を if cost == nilとした。 d.結果の考察 思ったとおりの実行結果となった。 e.参考文献 Ruby プログラミング基礎講座 p.160 上記と同じ pp.101~106 いずれも、著 広瀬雄二 g.感想 思ったとおりのプログラムと実行結果でとても嬉しい。nilになっているところ は、nilにしないとそれ以下の文章が動かなかった。 また、これからも1つずつ丁寧にやっていきたい。