第5回 基礎プログラミング II レポート課題 氏名:宮川史礼 学籍番号:C107194 語学クラス:英語1 コース(系):社会系 1.筆記問題 A. 自分の名前みやがわふみのりを16進法表示で表す ASCIIコード表と照らし合わせると以下のようになる M = 0x4d i = 0x69 y = 0x79 a = 0x61 g = 0x67 a = 0x61 w = 0x77 a = 0x61 F = 0x46 u = 0x75 m = 0x6d i = 0x69 n = 0x6e o = 0x6f r = 0x72 i = 0x69 16進数の合計 4d + 69 = b6 b6 + 79 = 12f 12f + 61 = 190 190 + 67 = 1f7 1f7 + 61 = 258 258 + 77 = 2cf 2cf + 61 = 330 330 + 46 = 376 376 + 75 = 3eb 3eb + 6d = 458 458 + 69 = 4c1 4c1 + 6e = 52f 52f + 6f = 59e 59e + 72 = 610 610 + 69 = 679 16進数を10進数に変える M = 0x4d 4 * 16^1 + 13 * 16^0 = 77 i = 0x69 6 * 16^1 + 9 * 16^0 = 105 y = 0x79 7 * 16^1 + 9 * 16^0 = 121 a = 0x61 6 * 16^1 + 1 * 16^0 = 97 g = 0x67 6 * 16^1 + 7 * 16^0 = 103 a = 0x61 6 * 16^1 + 1 * 16^0 = 97 w = 0x77 7 * 16^1 + 7 * 16^0 = 119 a = 0x61 6 * 16^1 + 1 * 16^0 = 97 F = 0x46 4 * 16^1 + 6 * 16^0 = 70 u = 0x75 7 * 16^1 + 5 * 16^0 = 117 m = 0x6d 6 * 16^1 + 13 * 16^0 = 109 i = 0x69 6 * 16^1 + 9 * 16^0 = 105 n = 0x6e 6 * 16^1 + 14 * 16^0 = 110 o = 0x6f 6 * 16^1 + 15 * 16^0 = 111 r = 0x72 7 * 16^1 + 2 * 16^0 = 114 i = 0x69 6 * 16^1 + 9 * 16^0 = 105 最後にこれらの解全てを合計する 77+105+121+97+103+97+119+97+70+117+109+105+110+111+114+105=1657 確認の計算 pan{c107194}% bc -l [~] 77+105+121+97+103+97+119+97+70+117+109+105+110+111+114+105 1657 quit 1657 / 16 = 103...9 103 / 16 = 6...7 6 / 16 = 0...6 そして余りをしてから順に並べていくと679で16進数の合計と一致する。 つまり、Ox679=Od1657となる。 B. 毎朝の歯みがきの習慣をプログラム風に書き直します def migaku(koppu, burasi, hamigakiko) kopuuを取りだす burasiを持つ haburasi = burasi に hamigakikoをつける end # 返すものは haburasi : migaku(1個, 1本, 1回分) # 歯を磨くので呼び出す print("歯を磨き終わった\n") 2.プログラム問題 A.本体 #!/usr/koeki/bin/ruby def factorial(x) if x == 1 1 else x * factorial(x-1) end end def combination(y,z) if y == z 1 elsif z == 0 0 else factorial(y)/( factorial(z) * factorial(y-z) ) end end print("掃除当番を決めたい\n") print("クラスの人数は何人ですか\n") ninzuu = gets.chomp.to_i print("その中から何人選びますか\n") choice = gets.chomp.to_i if ninzuu= 10 nebiki=100 else nebiki=0 end (600-nebiki) * x end def drink(y) 150 * y end def total(a,b) ekiben(a) + drink(b) end STDERR.print("駅弁の個数は?:") ekiben_k = gets.chomp.to_i STDERR.print("ドリンクの本数は?:") drink_k = gets.chomp.to_i printf("\n駅弁は%d個、ドリンクは%d本買いました。\n",ekiben_k,drink_k) printf("合計:%d円\n",total(ekiben_k,drink_k)) 実行結果 pan{c107194}% ./two_methods.rb [~/Ruby] 駅弁の個数は?:5 ドリンクの本数は?:5 駅弁は5個、ドリンクは5本買いました。 合計:3750円 pan{c107194}% ./two_methods.rb [~/Ruby] 駅弁の個数は?:11 ドリンクの本数は?:8 駅弁は11個、ドリンクは8本買いました。 合計:6700円 確かめ算 pan{c107194}% bc -l [~/Ruby] 600*5+150*5 3750 600*11+150*8 7800 7800-11*100 6700 quit 3.感想 ジェームズ・ジョイスの『フィネガンズ・ウェイク(Fin + Again)』。 一説では、この作品は半永久的(というか永久に)に読み続けていくというのが、 最も正しい読み方だとする意図が込められているというのを聞いたことがあります。 作品の冒頭が"riverrun"と小文字で始められ、話の最後の部分には終止符を伴わず、 定冠詞"The"が置かれて、これが冒頭"riverrun"に戻り、続いていくというループ の形をとっているところから根拠を得ているようです。 いちおう、機械的な動作ということは、あるいは半永久的な繋がりを保たせられる 可能性があると思い、あえて苦しいと言われるのは承知で、これを挙げてみました (正直、自分でもこじつけがましいと思います)。それにしても、これをしっかり完 訳させた成城大学の柳瀬尚紀先生には、つくづく恐れ入ったとしか言えません(ユリ シーズの方は確か、未だ完結させていなかったようですが……)。 4.参考文献 基礎プログラミング II 第5回 何度も呼び出そう 「階乗計算」 http://roy/~madoka/2010/r2/05/05_07_theme_05_factorial.html 協力してくれたTA 工藤智也