第7回 基礎プログラミング I レポート課題 氏名 : 藤井 駿 学籍番号 : c1091307 語学クラス : 英語3 コース :地域共創 1. 筆記問題 A.0b11110110 = 0x?? まず2進数の 「11110110」 を10進数に変換する。 変換方法は「1111」と「0110」にわける。 すると 0b1111 = 1*8 + 1*4 + 1*2 + 1*1 = 0d15 0b0110 = 0*8 + 1*4 + 1*2 + 0*1 = 0d6 次に10進数から16進数に変換する。 すると 0d15は16進数では「f」に値し、 0d6は16進数では「6」に値する。 よって 0b11110110 = 0xf6 となる。 ----------------- B.0d256 = 0x?? 10進数の「256」を16進数に変換する。 変換方法は10進数「256」を「16」で割っていき、答えが0になるまで計算して いく。 すると 256 / 16 = 16 余り 0 16 / 16 = 1 余り 0 1 / 16 = 0 余り 1 余りを下から並べていくと、16進数に変換できる。 よって 0b256 = 0x100 となる。 ------------- 2. プログラミング問題 ★A問題 ・ 各電池を買った時の売り上げと客単価を求めるプログラムを作成した。 ◎作成したプログラム #!/usr/koeki/bin/ruby varsion = Array.new # タイプ(A〜C)までの候補を選ぶ。 uriage = Array.new # その日の売上の候補を選ぶ。 total = 0 # 総売上を表示。 i = 0 open("battery.dat", "r") do |den| while buy = den.gets if/(\S+)\s+(\d+)/ =~ buy varsion[i] = $1 uriage[i] = $2.to_f if varsion[i] == "A" a = 400 * uriage[i] # Aのタイプの電池の売上合計を表示。 elsif varsion[i] == "B" a = 300 * uriage[i] # Bのタイプの電池の売上合計を表示。 elseif varsion[i] == "C" a = 50 * uriage[i] # Cのタイプの電池の売上合計を表示。 end total += a # 3つのタイプの売上合計を表示。 i += 1 end end end k = 0 print("タイプ 売上数 \n") while k < varsion.length printf("%-10s\t%d\n", varsion[k], uriage[k]) # p varsion , uriage k += 1 end tanka = total /8 # 客単価 (平均) を表示。 printf("その日1日の総売り上げは %d円です。 \n", total) printf("客単価は %2.1f 円です。 \n", tanka ) ◎実行結果 pan{c109130}% ./open_battery.rb battery.dat [~/Ruby] タイプ 売上数 A 1 B 2 C 6 A 7 B 5 C 6 A 4 B 1 その日1日の総売り上げは 7800円です。 客単価は 975.0 円です。 ◎考察 正常にプログラムが作動しているか分からないので bc -l をして確かめる。 pan{c109130}% bc -l [~/Ruby] 400 * 1 400 300 * 2 + 400 1000 50 * 6 + 1000 1300 400 * 7 + 1300 4100 300 * 5 + 4100 5600 50 * 6 + 5600 5900 400 * 4 + 5900 7500 300 * 1 + 7500 7800 7800 / 8 975.00000000000000000000 実際に実行した結果、プログラムと bc -l が一致したのでこれは正常に作動し たといえる。 3.感想 今回のレポート課題は今までよりかなりの時間を費やして完成させた。プログ ラムがなかなか作動しなくて苦労したが、作動したときはとても嬉しい気持ち になった。また友達と分からないところを相談しながら行うことで自分のスキ ルが上るのは当然だが、友達も上ると思うのでこれからもこういったことを積 極的に行っていきたい。 4.共同学習者 ・池田 博哉 → 6月1日(火) & 2日(水) & 3日(木)に学習。 ・花木 剛志 → 6月3日(木) に学習。 ・布川 大地 → 6月3日(木) に学習。 5.参考文献 ・「Ruby プログラミング基礎講座 」広瀬雄二著