第3回 基礎プログラミング II レポート課題 氏名:大島 藍 学籍番号:C1090331 語学クラス:中国語 コース(系):福祉コース 1、筆記問題 A、 oosima ai を 16 進法表示で表すと ASCII コードより o = 0x6f o = 0x6f s = 0x73 i = 0x69 m = 0x6d a = 0x61 a = 0x61 i = 0x69 になるなで、0x6f、0x6f、0x73、0x69、0x6d、0x61、0x61、0x69 と表すことができる。 2進数 10進数 16進数 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 10 A 1011 11 B 1100 12 C 1101 13 D 1110 14 E 1111 15 F これを10進数に表すとこの上の表を使っていく。 0x6f = 0x6 15 = 111 pan{c109033}% bc -l [~] 6*16^1+15*16^0 111 0x6f = 0x6 15 = 111 pan{c109033}% bc -l [~] 6*16^1+15*16^0 111 0x73 = 0x7 3 = 115 7*16^1+3*16^0 115 0x69 = 0x6 9 = 105 6*16^1+9*16^0 105 0x6d = 0x6 13 = 109 6*16^1+13*16^0 109 0x61 = 0x6 1 = 97 6*16^1+1*16^0 97 0x61 = 0x6 1 = 97 6*16^1+1*16^0 97 0x69 = 0x6 9 = 105 6*16^1+9*16^0 105 B、 "このようなかていがある" (4例) このような かてい が ある (家庭がある) このような かてい が ある (課程がある) こなような かてい が ある (過程がある) このような かてい が ある (仮定がある) C、 key は おでん value には "大根","こんにゃく","ちくわ" key は なべ value には "肉","白菜","ニラ" key は スープ value には "人参","たまねぎ","ウィンナー" key は 果物 value には "ぶどう","りんご","みかん" key は 芋煮 value には "芋","ねぎ","ごぼう" これを Hash で表すと reji["おでん"] = "大根","こんにゃく","ちくわ" reji["なべ"] = "肉","白菜","ニラ" reji["スープ"] = "人参","たまねぎ","ウィンナー" reji["果物"] = "ぶどう","りんご","みかん" reji["芋煮"] = "芋","ねぎ","ごぼう" もう1つの表し方は… {"おでん" => "大根","こんにゃく","ちくわ","なべ" => "肉","白菜","ニラ"," スープ" => "人参","たまねぎ","ウィンナー","果物" => "ぶどう","りんご"," みかん","芋煮" => "芋","ねぎ","ごぼう"} 2、プログラム問題 A、 1、考えた設定 それぞれの材料が表示されるようにした。 2、作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 文字コードの設定。この場合は EUC コードで漢字 reji = Hash.new # Hash.new で新しく Hash を作る reji = { "おでん" => ["大根","こんにゃく","ちくわ"], # Hash の対を設定する "なべ" => ["肉","白菜","ニラ"], "スープ" => ["人参","たまねぎ","たまご"], "果物" => ["ぶどう","りんご","みかん"], "芋煮" => ["芋","ねぎ","ごぼう"] } for tabemono in reji.keys # すべての Hash の対を表示させる # for tabemono(値) in reji.keys(ハッシュ配列) printf("%s の材料は %s %s %s\n",tabemono, reji[tabemono][0], reji[tabemono][1], reji[tabemono][2]) # 表示させたい文章をカッコとダブルコーテーションで囲み、1つ目の %s # には tabemono が入り 2つ目の %s には reji[tabemono] が入る end # for に対する end 3、もとにしたプログラムからの変更点 value に2つ付け足した。 4、実行画面 pan{c109033}% ./hash_ary_print.rb [~/Ruby] 芋煮 の材料は 芋 ねぎ ごぼう おでん の材料は 大根 こんにゃく ちくわ スープ の材料は 人参 たまねぎ ウィンナー なべ の材料は 肉 白菜 ニラ 果物 の材料は ぶどう りんご みかん 5、考察 芋煮といれると、芋、ねぎ、ごぼうという材料が出てくる。からこのプログラム は正しかったといえる。 B、 1、考えた設定 Hash の中に入っている材料をあいうえお順に並びかえる。 2、作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 文字コードの設定。この場合は EUC コードで漢字 reji = Hash.new # Hash.new で新しく Hash を作る reji = { "おでん" => ["大根","こんにゃく","ちくわ"], # Hash の対を設定する "なべ" => ["肉","白菜","にら"], "スープ" => ["人参","たまねぎ","たまご"], "果物" => ["ぶどう","りんご","みかん"], "芋煮" => ["芋","ねぎ","ごぼう"] } reji.keys.sort{|daikon, negi| reji[daikon][2] <=> reji[negi][2] }.each{|nira| printf("材料のあいうえお順: %s %s\n",nira, reji[nira][2]) } 3、もとにしたプログラムからの変更点 sort を使った。 4、実行画面 pan{c109033}% ./hash_ary_sort.rb [~/Ruby] 材料のあいうえお順: 芋煮 ごぼう 材料のあいうえお順: スープ たまご 材料のあいうえお順: おでん ちくわ 材料のあいうえお順: なべ にら 材料のあいうえお順: 果物 みかん 5、考察 プログラム内容とは違って、あいうえお順に出る。 "おでん" => ["大根","こんにゃく","ちくわ"], "なべ" => ["肉","白菜","にら"], "スープ" => ["人参","たまねぎ","たまご"], "果物" => ["ぶどう","りんご","みかん"], "芋煮" => ["芋","ねぎ","ごぼう"] というプログラムでも、あいうえお順に設定すると… 材料のあいうえお順: 芋煮 ごぼう 材料のあいうえお順: スープ たまご 材料のあいうえお順: おでん ちくわ 材料のあいうえお順: なべ にら 材料のあいうえお順: 果物 みかん このようになるので、このプログラムはあいうえお順に並びかえされている。 3、感想 昔話の「大きなかぶ」について かぶの種を畑に蒔く→大きくなって収穫しようとしたけど大きくて抜けない おばあさんを呼んだ→でも抜けない 孫娘を呼んだ→それでも抜けない 犬を呼んだ→それでも抜けない 猫を呼んだ→それでも抜けない ネズミをよんだ→成功した 繰り返している部分は、●●を呼んだ→抜けない の部分である。 ・参考文献 西村 まどか http://roy/~madoka/2010/r1/05/05_01_theme_01_asciicode.html 基礎プログラミング I 第 5 回 「配列の構造」ASCII コード表 西村 まどか http://roy/~madoka/2010/r2/02/02_08_theme_07_each.html 基礎プログラミング II 第 2 回 「なになにといえばこれこれ」対の情報を使っ て並び換え ・共同学習者 横山 広樹 / 青木 千紗