第9回 基礎プログラミング I レポート課題 氏名:布川大地 学籍番号:c1091230 語学クラス:英語3 コース(系):政策 1、筆記問題 0x13+0x24=0x?? 0xは16進数である。 1)10進数に変換する ここでは16進数を10進数に変換した後に計算したい その様に変換するには位の数に16の累乗をかける。 0x13 1 * 16 ** 1 = 16 3 * 16 ** 0 = 3 0x13 = 0d19 0x24 2 * 16 ** 1 = 32 4 * 16 ** 0 = 4 0x24 = 0d 36 0d19 + 0d36 = 0d55 2)求めた10進数の和を16進数に戻す 10進数から16進数に変換するには商が0になるまで16で割り、その余りの数に 着目する。 55 / 16 = 3 余り 7 3 / 16 = 0 余り 3 16進数と10進数の対応関係は以下のようになっているので、 10進数 16進数 9より前は10進数と同様 10 … A 11 … B 12 … C 13 … D 14 … E 15 … F 16 … 10 0d55 = 0x37となる。つまり、0x13 + 0x24 = 0x37 である。 B、 0x23 + 0x1e = 0x?? 最初に10進数に変換する。 前の問題と同じように16進数を10進数に変換した後に計算していく。 先程の対応表によると16進数におけるeは10進数では14である。 0x23 2 * 16 ** 1 = 32 3 * 16 ** 0 = 3 0x23 = 0d35 0x1e 1 * 16 ** 1 = 16 14 * 16 ** 0 = 14 0x1e = 0d30 0d35 + 0d30 = 0d65 次に、求めた10進数の和を16進数に戻す。 先程と同様に計算する。 65 / 16 = 4 余り 1 4 / 16 = 0 余り 4 0d65 = 0x41となる。つまり、0x23 + 0x37 である。 C、 0xaa - 0x33 = 0x?? 最初に10進数に変換する。 前述と同様に16進数を10進数に変換した後に計算していく。 対応表によると16進数におけるaは10進数では10である。 0xaa 10 * 16 ** 1 = 160 10 * 16 ** 0 = 10 0x23 = 0d170 0x33 3 * 16 ** 1 = 48 3 * 16 ** 0 = 3 0x33 = 0d51 0d170 - 0d51 = 0d119 2)求めた10進数の和を16進数に戻す 先程と同様に計算する。 119 / 16 = 7 余り 7 7 / 16 = 0 余り 7 0d119 = 0x77となる。つまり、0xaa - 0x33 = 0x77 である。 2、プログラム問題 #!/usr/koeki/bin/ruby print("ワールドカップの優勝国を表示します。\n") STDERR.print("何年: ") pattern = STDIN.gets.chomp request = Regexp.new(pattern,true,"e") open("soccer.dat", "r") do |worldcup| while soccer = worldcup.gets if request =~ soccer if /(\S+)\s+(\S+)\s+(\S+)/ =~ soccer print("\t\n") print("検索結果\n") print("\t\n") printf("開催年: %s \n", $1) print("\t\n") printf("優勝国: %s \n", $2) print("\t\n") printf("開催国: %s \n", $3) print("\t\n") end end end end print("どうでしたか? \n") ・実行結果 pan{c109123}% ./soccer.rb [~/public_html/advertise] ワールドカップの優勝国を表示します。 何年: 1930 検索結果 開催年: 1930年 優勝国: ウルグアイ 開催国: ウルグアイ どうでしたか? ・考察 ちゃんと実行出来て良かった。 ・感想 今回は全部いちから自分でつくらなければならないので難しかった。結果はちゃ んとできたので、これからも頑張っていきたいと思いました。 ・参考文献 前回の授業のプログラム 基礎プログラミング I 第9回 Ruby であそぼ / 広告ページの作成 http://roy/~madoka/2010/r1/09/ ・共同学習者 渡辺力、池田博哉、藤井駿