第7回 基礎プログラミング I レポート課題 氏名:宮川史例 学籍番号:C1071948 語学クラス:英語1 コース(系):社会系 1.筆記問題A. 2進数0b11110110を2進数にするときには、まず2進数の数値11110110をふたつの くくりに分けて、1111と0110にする。次にそれぞれの数値を4等分して、以下の ように数式を当てはめて計算していく。 1*2^3 1*2^2 1*2^1 1*2^0 8 4 2 1 計算の確認 1*2^3 8 1*2^2 4 1*2^1 2 1*2^0 1 8+4+2+1 15 合計した数値は15だが、15は2しんすうの場合fになる。 0*2^3 1*2^2 1*2^1 0*2^0 0 4 2 0 計算の確認 0*2^3 0 1*2^2 4 1*2^1 2 1*2^0 1 0+4+2+0 6 そして、両方のの数値を再度つなぎ合わせると、f6となる。 よって、0b11110110 = 0xf6 B.筆記問題 10進数256を2進数表示に直す。それには16で256を余りが出るまで割っていく。 256/16=16 16/16=1 1/16=0...1 計算の確認 256/16 16.00000000000000000000 16/16 1.00000000000000000000 1/16 .06250000000000000000 そして余りの数値を最後の方から順につなぎあわせていくと、100になる。 よって、0d256 = 0x100 2.プログラム問題A. 種類別に乾電池の売上げをまとめたデータファイル #タイプ #パック数売上げ A 1 B 2 C 3 A 1 B 2 C 3 A 1 B 2 C 3 A 1 B 2 C 3 A 1 B 2 C 3 その日の売上げと客単価をを計算するためのプログラム #!/usr/koeki/bin/ruby $KCODE = "e" denti = Array.new data = Array.new i = 0 total = 0 open("battery.dat","r") do |denki| while valt = denki.gets if/(\S+)\s+(\d+)/ =~ valt denti[i] = $1 data[i] = $2.to_i if denti[i] == "A" en = 400*data[i] elsif denti[i] == "B" en = 300*data[i] else en = 50*data[i] end total += en i += 1 end end end k = 0 print("1日の売上げ:\n") while k < denti.length printf("%-10s\t%d\n",denti[k],data[k]) k += 1 end kyaku = total/15 printf("客単価:%4.1f円\n",kyaku) printf("売上げ:%d円\n",total) 実行結果 pan{c107194}% ./open_battery.rb [~/Ruby] 1日の売上げ: A 1 B 2 C 3 A 1 B 2 C 3 A 1 B 2 C 3 A 1 B 2 C 3 A 1 B 2 C 3 客単価:383.0円 売上げ:5750円 pan{c107194}% [~/Ruby] 合計の確認 400*1 400*1 400 300*2 600 50*3 150 400*1 400 300*2 600 50*3 150 400*1 400 300*2 600 50*3 150 400*1 400 300*2 600 50*3 150 400*1 400 300*2 600 50*3 150 400+600+150+400+600+150+400+600+150+400+600+150+400+600+150 5750 考察 最初に乾電池の種類別の売り方とその定価、次にその個別の売上げの数値を表 示したデータを作成した。そのあとに売上げと単価を計算できるようにするプロ グラムを作成、実行結果も整ったものが表示された。確認のための確かめ算も正 確だったので、全体的にそつのないものが出来た。 感想 いちおう滞りのない流れになるようなプログラムを、結果として作成することが 出来たし、その上、実行結果も特にさしたる問題もなく運んだので、納得してい る。ただ、そうなるまでの間にすこしばかり試行錯誤した。プログラミングの部 分で、うっかりしたミスを見落してしまって実行結果がちょっと変な形になって しまい、何がまずいのかを見つけるのに時間がかかった。ために、次回からの課 題として、その部分をもう少し手早く処理できるようにしたい。 参考文献 西村先制のページ 基礎プログラミング I 第7回 正規表現と Ruby 言語でのプログラミング 「券売機のしくみ」 http://roy/~madoka/2010/r1/07/07_13_theme_11_vendingmachine.html 協力してくれたTA 工藤智也