第7回 基礎プログラミング I レポート課題 氏名:斎藤 拓也 学籍番号:c1090704 語学クラス:英語1 コース(系):地域共創コース --------------------------------------------------- 1. 筆記問題 A. 0b 11110110 = 0x?? 解答 まず2進数を4つで1つに分けていく。そうすると、1111 と 0110 に分ける ことができる。それを下の表に当てはめると 2 進 数 10 進 数 16 進 数 0 0 0 1 1 1 10 2 2 11 3 3 100 4 4 101 5 5 110 6 6 111 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 10000 16 10 「1111」はfになり、「110」は6になる。 よって 「0xf6」 になる。 B. 0d 256 = 0x?? 256を16で割って、でた余りと最後の計算のはで答えをだす。 256 / 16 = 16 余りは0 16 / 16 = 1 余りは0 よって 「0x100」となる。 ------------------------------------------------------------- 2. A.プログラムは添付します。 プログラムの解説 battery = Array.new はbatteryという配列を作った。 kazu = Arraty.new はkazuという配列を作った。 open("battery.dat", "r") do |line| はbattery.datのデータを読み込むため に使った。 while open = line.gets はデータを読み込み終わるまで続けさせる。 if/(\w)\s+(\d+)/ = ~ open は正規表現の条件を \wは英数字を読み取らせた \s+ は空白を読みとらせた。 \d+は数字を読み取らせた。数字が2つあるもの もあるので、+を使った。 battery[i] = $1 は後方参照 配列batteryに代入 kazu[i] = $2.to_f は後方参照 配列kazuに実数変換したものを代入 if battery[i] == "A" は配列batteryがAのとき。 total += 400 * kazu[i] はtotalに400×箇数を加算代入 elsif battery[i] == "B" はbatteryがBのとき total += 300 * kazu[i] はトータルに300×箇数を加算代入 else はその他なので何も書かなかった。 total += 50 * kazu[i] はトータルに50×箇数を加算代入 printf("売り上げは%d円です。\n", total) は売上げをトータルを表示するよ うにした。 tanka = total / i は単価をトータル÷iにした。 printf("客単価は%0.1f円です\n", tanka) は客単価をtankaで表示させる。 プログラム内容 まず最初は、「battery.dat」の電池のタイプの種類と数を「Array.new」で配 列にする。 次に、今回の講義で習った「open」を使っていちいちデータのプログラムを打 たないようにした。 こんどは「while」を使ってデータを何回も取りこむようにした。 ifで計算を3つ作ることにした。 そのときに正規表現の\w,\s,\dを使った。 最後に「printf」を使って結果を出るようにした。 プログラムの結果 pan{c109070}% ./open_battery.rb[~/Ruby ] 売り上げは14550円です。 客単価は1616.7円です プログラムの考察 pan{c109070}% bc -l[~/Ruby ] 5 * 400 + 12 * 300 + 8 * 50 + 8 * 400 + 3 * 300 + 7 * 50 + 9 * 400 + 1 * 300 + 4 * 50 14550 新しく使ったメソット open このメソットは、プログラムの計算の時にデータのプログラムを打た なくてよくする。便利なメソットです。 ----------------------------------------------------------------------- 3.今回一番頑張ったのは、「open」です。 初めて使うメソットだったので使い方が分からなかったので、苦戦しました。 しかし、今回のプログラムを作るのに、使って理解することができました。 ----------------------------------------------------------------------- 参考文献 (7) 05/31の授業内容:正規表現 http://roy/~naoya/ruby/7.html 「データを読み込むようにするには」 http://roy/~madoka/2010/r1/07/07_09_theme_08_fileread.html 共同学習者 山科 雄介