第3回 情報の構造を分析しよう レポート課題 氏名:畠山貴衣 学籍番号:C1101709 語学クラス:英語6 コース(系):政策マネジメントコース 1.筆記問題 A. 私の名前をアルファベット表記にすると、 Hatakeyama Kie である。 これをASCIIコードで表すと、 H = 0x48 a = 0x61 t = 0x74 a = 0x61 k = 0x6B e = 0x65 y = 0x79 a = 0x61 m = 0x6D a = 0x61 K = 0x4B i = 0x69 e = 0x65 となる。 B. いまいちえんがないんです いま いちえん が ないんです (今、一円が無いんです) いまいち えん が ないんです (いまいち、縁が無いんです) C. 犬の特徴を hash配列dog としました。 dog の key と value は、それぞれの"種類"と"大きさ、毛の色、耳の形"を取り ました。 その1 : key 「柴犬」に対して valueは 「"中型"、"薄茶"、"立っている"」 その2 : key 「マルチーズ」に対して valueは 「"小型"、"白"、"寝ている"」 その3 : key 「シェルティー」に対して valueは 「"中型"、"ミックス"、"立っ ている"」 その4 : key 「ゴールデンレトリーバー」に対して valueは 「"大型"、"薄茶"、 "寝ている"」 その5 : key 「プードル」に対して valueは 「"小型"、"茶"、"寝ている"」 これ等を hash配列で表すと、 name[柴犬] = "中型,薄茶,立っている" name[マルチーズ] = "小型,白,寝ている" name[シェルティー] = "中型,ミックス,立っている" name[ゴールデンレトリーバー] = "大型,薄茶,寝ている" name[プードル] = "小型,茶,寝ている" また、違う表し方は、 {"柴犬" => "中型,薄茶,立っている", "マルチーズ" => "小型,白,寝ている", "シェルティー" => "中型,ミックス,立っている", "ゴールデンレトリーバー" => "大型,薄茶,寝ている", "プードル" => "小型,茶,寝ている",} となる。 2.プログラム問題 A.設定は、犬の情報を表示するプログラムで、 大きさ、毛の色、体高を順に表示するように組み立てました。 (プログラム) #!/usr/koeki/bin/ruby $KCODE = 'e' #文字コード dog = Hash.new #ハッシュ配列にするため。 dog["柴犬"] = "中型","薄茶","40" dog["マルチーズ"] = "小型","白","25" dog["シェルティー"] = "中型","ミックス","41" dog["ゴールデンレトリーバー"] = "大型","薄茶","61" dog["プードル"] = "小型","茶","28" for name, inf in dog printf("%sは%sで、毛の色は%s、体の高さは%sです。\n",name,inf[0],inf[1],inf[2]) end (変更点) もとにしたのは、この前の課題の hash_for.rb で、valueが3つなので、出力す る際の指示を変更しました。 (実行結果) マルチーズは小型で、毛の色は白で、体の高さは25です。 柴犬は中型で、毛の色は薄茶で、体の高さは40です。 ゴールデンレトリーバーは大型で、毛の色は薄茶で、体の高さは61です。 プードルは小型で、毛の色は茶で、体の高さは28です。 シェルティーは中型で、毛の色はミックスで、体の高さは41です。 (考察) value の3つの情報を表示出来ているので、 正しいと言える。 B. (プログラム) #!/usr/koeki/bin/ruby $KCODE = 'e' #文字コード dog = Hash.new #ハッシュ配列にするため。 dog["柴犬"] = "中型","薄茶","40" dog["マルチーズ"] = "小型","白","25" dog["シェルティー"] = "中型","ミックス","41" dog["ゴールデンレトリーバー"] = "大型","薄茶","61" dog["プードル"] = "小型","茶","28" for name, inf in dog printf("%sは%sで、毛の色は%s、体の高さは%sです。\n",name,inf[0],inf[1],inf[2]) end print("\n") print("体高の低い順に並べ替え\n") dog.keys.sort{|high,low| dog[high][2] <=> dog[low][2]}.each{|name| printf("%sの体高は、%d cmです。\n",name,dog[name][2])} # sort は並べ替えるためのメソッド (変更点) Aのプログラムをもとに、並べ替えのメソッド sort を組み込みました。 (実行結果) pan{HATAKEYAMA Kie}% ./hash_ary_sort.rb [~/Ruby] マルチーズは小型で、毛の色は白、体の高さは25です。 柴犬は中型で、毛の色は薄茶、体の高さは40です。 ゴールデンレトリーバーは大型で、毛の色は薄茶、体の高さは61です。 プードルは小型で、毛の色は茶、体の高さは28です。 シェルティーは中型で、毛の色はミックス、体の高さは41です。 体高の低い順に並べ替え マルチーズの体高は、25 cmです。 プードルの体高は、28 cmです。 柴犬の体高は、40 cmです。 シェルティーの体高は、41 cmです。 ゴールデンレトリーバーの体高は、61 cmです。 (考察) 最後の結果に体高の低い順に並べ替えられていたので、このプログラムは正しい と言える。 3.感想 hashの課題は3回目なので、段々と配列の書方が分かって来て、スムーズに理解 できるようになって来ました。 協同制作者の桜子さんと、どうやったら並び変わるか等、議論しながら制作し ました。 繰り返しの物語 : 金の卵を産むにわとり 貧しいおとこ → 鶏を買う にわとり → 金の卵を産む おとこ → 高く売る お金 → 使う おとこ → お金持ちになる にわとり → 金の卵を産む おとこ → 高く売る お金 → 使う にわとり → 死ぬ おとこ → 貧乏になる これは、 おとこが お金持ちになる → 貧乏になる のと、 卵を産む → 使う との2つの繰り返しが入っている物語だと思いました。 4.参考文献など 筆記問題 http://www.sutv.zaq.ne.jp/shirokuma/naginata.html プログラムA 犬の体高 : http://petpet.goo.ne.jp/pet/goo/zukan/dog.php プログラムB 西村先生 講義ノート : http://roy/~madoka/2011/r2/03/lec/resume.html 感想 童話検索 : http://hukumusume.com/douwa/pc/aesop/index.html 協同制作者 : 伊藤桜子 ----------------------------------- 東北公益文科大学  公益学部 公益学科 2年 畠山貴衣  c110170@f.koeki-u.ac.jp