第 5 回 何度も呼び出そう レポート課題 氏名:羽田圭介 学籍番号:c1101690 語学クラス:英語2 コース(系):地域共創 1. A hada keisuke をASCIIコード表を参考に16進数になおすと、 h = 0x68 a = 0x61 d = 0x64 a = 0x60 k = 0x6b e = 0x65 i = 0x69 s = 0x73 u = 0x75 k = 0x6b e = 0x65 となる。 b =11 0x68 = 6*16^1+8*16^0 = 104 0x61 = 6*16^1+1*16^0 = 97 0x64 = 6*16^1+4*16^0 = 100 0x61 = 6*16^1+1*16^0 = 97 0x6 11 = 6*16^1+11*16^0 = 107 0x65 = 6*16^1+5*16^0 = 101 0x69 = 6*16^1+9*16^0 = 105 0x73 = 7*16^1+3*16^0 = 115 0x75 = 7*16^1+5*16^0 = 117 0x6 11 = 6*16^1+11*16^0 = 107 0x65 = 6*16^1+5*16^0 = 101 104 + 97 + 100 + 97 + 107 + 101 + 105 + 115 + 117 + 107 +101 =1151 1151を16進数にするため 16 で割る 16)1151 ---- 16) 71 9 ---- 16) 4 4 ---- 0 4 下から読んで 449 となる。よって 16 進数で表すと 0x449 になる。 全部足すと 10進数は 1151 になり、16進数は 0x449 になった。 0d1151 = 0x449 計算した結果が同じになったので、計算はあっていることが確認出来る。 B お茶をいれる行動をプログラム風にしてみる。 def coffee(mame, oyu, milk, satou) mame を挽く oyu を沸かす milk を入れる suger を入れる coffee = mame に oyu を入れる。 coffee = coffee に milk を入れる。 coffee = coffee に satou を入れる。 end coffee(200 g, 300 cc, 100 cc, 10 g) print("珈琲を飲みましょう!\n") 2. プログラム本体 #!/usr/koeki/bin/ruby def factorial(s) # メソットの設定 if s == 1 # もし s が 1 だったら 1 else # 違っていたら s * factorial(s-1) # a に factorial(s) メソットを呼び、掛ける end # if の end end # def の end def kumiawase(f,w) # メソットの設定 factorial(f)/factorial(f-w) # factorial(s) を呼び出し # m! # mCr = -------- の計算をする # (r-m)! end # def の end STDERR.print("生徒会長の組み合わせを求めます。\n") STDERR.print("10人の生徒の中から生徒会長を決めることになりました。何人生徒会長を選びますか?\n") kaityou = gets.to_i # 入力された文字列を整数に変え変数 kaityou の中に # 代入する seito = 10 # 生徒数は 10 人なので 10 を代入 printf("%d 人選んだときの組み合わせは %d 通りです。\n",kaityou,kumiawase(seito,kaityou)) 実行結果 pan{c110169}% ./def_combination.rb [~/Ruby] 生徒会長の組み合わせを求めます。 10人の生徒の中から生徒会長を決めることになりました。何人生徒会長を選びますか? 1 1 人選んだときの組み合わせは 10 通りです。 考察 生徒会長を一人の場合で実行した。 確かめ算は次の通りである。 pan{c110169}% bc -l [~/Ruby] 10-1 9 (10*9*8*7*6*5*4*3*2*1)/(9*8*7*6*5*4*3*2*1) 10.00000000000000000000 となる。よってプログラムは正しいといえる。 3.感想 エスカレーターが挙げられると思う。 今回の課題は理解するのにとても時間がかかった。 しっかり復習して理解を深められるようにしたい。 4.参考文献 基礎プログラミング II 第5回 何度も呼び出そう 「16 進数のまとめ」