第2回 基礎プログラミング II レポート課題 氏名:永井 絹人 学籍番号:c109120 語学クラス:英語1 コース(系):政策 //////////////////////////////////////////////////////////////////////////////// 筆記問題 1、A 球技を hash 配列を sport としました。 sport の key は球技名、valueはその球技に使う物にしました。 1:key「バスケ」に対して value は「バッシュ」 2:key「野球」に対して value は「バット」 3:key「テニス」に対して value は「ラケット」 4:key「サッカー」に対して value は「スパイク」 5:key「卓球」に対して value は「ピンポン玉」 これに対する Hash の表し方は以下のようになる。 sport["バスケ"] = "バッシュ" sport["野球"] = "バット" sport["テニス"] = "ラケット" sport["サッカー"] = "スパイク" sport["卓球"] = "ピンポン玉" もう一つは、以下のようになる。 {"バスケ"=>"バッシュ","野球"=>"バット","テニス"=>"ラケット","サッカー "=>"スパイク","卓球"=>"ピンポン玉"} 1、B a. 0d2010 = 0x?? 0dは10進数、0xは16進数を表す。 式は以下の通りとなる 2010 / 16 = 125 余り 10 125 / 16 = 7 余り 13 7 / 16 = 0 余り 7 よって 0d2010 = 0x7DA b. 0d2010 = 0b?? 0dは10進数、0bは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 よって 0d2010 = 0b1111011010 これが0x7DAと同じになるか確かめる。 式は次のようになる。 0111 = 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 4+2+1 = 7 1101 = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 8+4+1 = 13 (D) 1010 = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 8+2 = 10 (A) よって0x7DAとなるから同じである。 2、プログラム問題 Eを選択 a.作成プログラム 球技名を入力すると、それに必要な物が表示されるプログラムを作成 #!/usr/koeki/bin/ruby $KCODE = 'e' sport = Hash.new("未登録") open("hash_data.dat","r") do |ase| while line = ase.gets if/(\S+)\s+(\S+)/ =~ line sport[$1] = $2 end end end STDERR.print("球技に使うものを表示します(終了は f )\n") while true STDERR.print("\n球技を入力:") name = gets.chomp if name == "f" STDERR.print("終了\n\n") break elsif sport.key?(name) == false STDERR.print("%sは%S\n",name,sport[name]) STDERR.print("登録しますか?(するならy、しないなら適当なキーを入力):") touroku = gets.chomp if touroku == "y" STDERR.print("球技を入力:") undou = gets.chomp sport[name] = undou open("hash_data.dat","a") do |dar| dar.printf("%s\t\t\t%s\n",name,undou) end else next end else STDERR.printf("%sに必要なのは%sです\n",name,sport[name]) end end print("(球技)\t\t\t(必要な物)\n") for bol ,mono in sport printf("%-20s\t%-10s\n",bol,mono) end 使われたデータ バスケ バッシュ 野球 バット テニス ラケット サッカー スパイク 卓球 ピンポン玉 バレー バレーボール バドミントン ラケット b、実行結果 球技に使うものを表示します(終了は f ) 球技を入力:バスケ バスケに必要なのはバッシュです 球技を入力:野球 野球に必要なのはバットです 球技を入力:アメフト %sは%S アメフト未登録登録しますか?(するならy、しないなら適当なキーを入力):y 球技を入力:パワー 球技を入力:サッカー サッカーに必要なのはスパイクです 球技を入力:アメフト アメフトに必要なのはパワーです 球技を入力:f 終了 (球技) (必要な物) 野球 バット バスケ バッシュ アメフト パワー テニス ラケット バレー バレーボール サッカー スパイク バドミントン ラケット 卓球 ピンポン玉 実行結果後のデータ バスケ バッシュ 野球 バット テニス ラケット サッカー スパイク 卓球 ピンポン玉 バレー バレーボール バドミントン ラケット アメフト パワー d、考察 登録されてない球技を登録が出来るようにしました。 結果、追加登録ができ、データから読みこめることに成功 よってこのプログラムは正常である。 3、感想 パソコンでの検索にはこのようなプログラムが使われていることと思いました。 作るのは難しいが作った後の実行は簡単だと思いました。 参考文献 なになにといえばこれこれ http://roy/~madoka/2010/r2/02/ 協力者 酒井 信市郎