第7回 基礎プログラミング I レポート課題 氏名:佐藤 裕康 学籍番号:c1090911 語学クラス:英語1 コース(系):政策マネジメント 1.Aは 0b 11110110を16進数に変換する。 変換するには、右から4桁を区切って計算する すると、0110 と 1111 に区切ることが出来る。 これを右から1、2、4、8を1に当てはまるところに置き換える。 すると、 0110は 2+4で6 1111は 1+2+4+8で15となる。 15は16進数表示でFなので 答えは 0xF6となる。 B. 今度は0d256を16進数に表示する。 10進数を16進数に表示するには、16で割って入ってあまりが出るかどうかで判断 する。 256の場合、 256 / 16 = 16 #余り0 16 / 16 = 1 #余り0 1 / 16 = 0 #余り1 となる。 これをしたから当てはめると100となる これで答えは0x100となる。 2.A 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = "e" battery = Array.new kazu = Array.new i = 0 #数を表しています total = 0 #合計を表しています open("battery.dat", "r") do |batt| while denti = batt.gets if /(\S+)\s+(\d+)/ =~ denti battery[i] = $1 kazu[i] = $2.to_f # print station if battery[i] == "A" # もしバッテリがAなら x = 400 * kazu[i] #400円になる elsif battery[i] == "B"# #もしバッテリがBなら x = 300 * kazu[i] #300円になる else x = 50 * kazu[i] #それ以外なら50円 end total += x i +=1 end end end k = 0 print("電池の種類 :売れた数 \n") while k < battery.length printf("%-10s\t%d\n", battery[k], kazu[k]) k += 1 end tanka = total / 8 #単価(平均を出してます) printf("売上げの合計は %d円です。 \n", total) printf("客単価は %2.1f円です \n", tanka) 元にしたプログラムとの変更点 if == elsif == else == といった形式のプログラムを組みました。 これによってどのような商品がどんな値段なのか表示させるようにしました。 プログラムを実行した画面 以下のとおりです pan{c109091}% ./open_battery.rb [~/Ruby] 電池の種類 :売れた数 A 1 B 2 C 3 A 2 B 2 C 3 A 2 B 5 売上げの合計は 5000円です。 客単価は 625.0円です pan{c109091}% [~/Ruby] となりました。 考察 pan{c109091}% bc -l [~/Ruby] 400 * 1 400 300 * 2+400 1000 50 * 3+1000 1150 400 * 2+1150 1950 300 * 2+1950 2550 50 * 3+2550 2700 400 *2+2700 3500 300 *5+3500 5000 5000 / 8 625.00000000000000000000 プログラム結果と一致しているので、このプログラムは正しいと言える。 参考文献 先輩のレポート http://roy/~madoka/2009/r1/07/rpt/c108172/iimori.desc 共同学習者 池田 博哉 感想 今回の授業は、始めたときはむずかしくて取り掛かるまでが大変だったけど、共 同学習者と学びながら進めることができたので、覚えながら進めることができよ かった。 武事にプログラムが動いたときには感動しました。 特にif 辺りのプログラミングを頑張りました。 スラスラと進むことができたので、次回もこのように頑張りたいと思います。