第 5 回 何度も呼び出そう レポート課題 氏名:大熊麻友 学籍番号:C1100377 語学クラス:英語6 コース(系):政策マネジメント [1] A OOKUMA MAYUを16進数になおすと O 0x4f O 0x4f K 0x4b U 0x55 M 0x4d A 0x41 M 0x4d A 0x41 Y 0x59 U 0x55 計算の仕方ですが、様々な参考ページをみましたが 理解できず計算ができませんでした。 解説を聞いて、再度計算に取り組みたいです。 ------------------------------------------------------------ B def tamagoyaki(egg ,mazeru ,yaku) egg を割る その玉子を mazeru フライパンで yaku sara = sara に yaku で完成したものを盛る end tamagoyaki(3個 ,20秒 ,2分) # 玉子焼きを作るのでので呼び出す print("はい、できあがり!\n") ------------------------------------------------------------ [2] A 1 考えた設定 箱に入っている20個のボールの中から n個のボールを取り出す場合の組合せが 何通りあるのかを求めるプログラム。 2 作成したプログラム #!/usr/koeki/bin/ruby def factorial(a) # メソットの設定 if a == 1 # もし a が 1 だったら 1 else # 違っていたら a * factorial(a-1) # a に factorial(a) を呼びかける end # if に対する end end # def に対する end def kumiawase(b,c) # メソットの設定 factorial(b)/(factorial(c)*factorial(b-c)) # factorial(a) を呼び出し # m! # mCr = -------- の計算 # (r-m)! end # def に対する end STDERR.print("箱の中から番号の付いたボール(20個)を取りだすときの組み合わせを求めます。\n") STDERR.print("何個ボールを取りだしますか?\n") piece = gets.to_i # 入力された文字を整数に変換し変数 piece に代入 ball = 20 # 生徒は 20 人なので 20 を代入 printf("%d 個選んだときの組み合わせは %d 通りです。\n",piece,kumiawase(ball,piece)) 3 参考にしたプログラム 授業で作成した def_factorial.rb のプログラムを参考にした。 変数名を piece と ball と設定し def、print、STDERR.print を付け足した。 4 実行結果 箱の中から番号の付いたボール(20個)を取りだすときの組み合わせを求めます。 何個ボールを取りだしますか? 3 3 個選んだときの組み合わせは 1140 通りです。 箱の中から番号の付いたボール(20個)を取りだすときの組み合わせを求めます。 何個ボールを取りだしますか? 30 ./def_combination.rb:4:in `factorial': stack level too deep (SystemStackError) from ./def_combination.rb:7:in `factorial' from ./def_combination.rb:12:in `kumiawase' from ./def_combination.rb:27 5 考察 実行では0からボールの数よりも多い数まで入力し確かめた。 3個選んだ場合の確かめ計算 式は 20 C 3 =(20*19*18)/(3*2*1) となる pan{OKUMA Mayu}% bc -l (20*19*18)/(3*2*1) 1140.00000000000000000000 これより計算は合っていると言える。 30個選んだ場合は ボールの数よりも多い数が入力されたためエラーがでた。 大きい数が入力された場合をかいていなかったため エラーメッセージが出たようだ。 6 感想 機械的な操作を繰り返すものは洗濯機やエスカレーターが挙げられる。 家電には繰り返しの作業のものが多いように思う。 前回の授業で考察の書き方の指導があったので 今回からはしっかりと確かめ計算などを行い、 正確なプログラムがどうかを調べました。 これにより、これをつけたせばよかったなーと プログラムの反省点がより見えたためよかった。 7 参考文献 基礎プログラミング I 第4回 プログラミングの方法 西村 まどか http://roy/~madoka/2010/r1/04/ 「16 進数のまとめ」 http://roy/~madoka/2010/r1/04/04_13_appendix_03_hexdecimal.html 基礎プログラミング II 第5回 何度も呼び出そう http://roy/~madoka/2010/r2/05/ 「階乗計算」 http://roy/~madoka/2010/r2/05/05_07_theme_05_factorial.html