第 5 回 何度も呼び出そう レポート課題 氏名:佐藤 汰紀 学籍番号:C1101046 語学クラス:英語2 コース(系):環境サイエンスコース 筆記問題 A、第3回の課題の答えを使用する。 佐藤 汰紀をASCIIコードで表すと、 s = 0x73 a = 0x61 t = 0x74 o = 0x6f t = 0x74 a = 0x61 i = 0x69 k = 0x6b i = 0x69 となり、これをまず足して10進数で表す。 0x73 = 16*7 + 1*3 = 112 + 3 = 115 0x61 = 16*6 + 1*1 = 96 + 1 = 97 0x74 = 16*7 + 1*4 = 112 + 4 = 116 0x6f = 16*6 + 1*15= 96 + 15= 111 0x61 = 16*6 + 1*1 = 96 + 1 = 97 0x74 = 16*7 + 1*4 = 112 + 4 = 116 0x69 = 16*6 + 1*9 = 96 + 9 = 105 0x6b = 16*6 + 1*11= 96 + 11= 107 0x69 = 16*6 + 1*9 = 96 + 9 = 105 となり、これを足すと、 115 + 97 + 116 + 111 + 97 + 116 + 105 + 107 + 105 =969 となった。 次にこれを16進数にするために16で割る。 16) 969 ----- 16) 60 9 ----- 16) 3 c ----- 0 3 結果0x3c9となった。 3c9をもう一度10進数に直して結果を確かめてみる。 3c9 = 256*3 + 16*12 + 1*9 =969 0d969 = 0x3c9 16進数では0x3c9、10進数では969となり、計算の結果この答えは正しいと言える。 B、 お風呂に入る前の行動をプログラム風にした。 def ohuro(shampoo ,bodysoap ,oyudenagasu) 頭に shampoo をつけて洗う 体に bodysoap をつけて洗う 最後に oyudenagasu end ohuro(2回 ,1回 ,40秒) # 洗うために呼び出す print("風呂にはいります。\n") プログラム問題 A、 #!/usr/koeki/bin/ruby def factorial(a) if a == 1 #a = 1の場合、 return 1 #1を返す。 else #もしそれ以外の場合 a * factorial(a -1)#ー1をする。 end end def kumiawase(x,y) if x == y return 1 elsif x < y print("計算できません!\n") exit else factorial(x)/factorial(y)/factorial(x-y) end end print("うんまい棒の数と種類を入力してね。\n") sleep 1 print("※本数が種類より多くなるようににゅうりょくしてね。\n" ) sleep 1 STDERR.print("うんまい棒何本?:") unnmai = gets.chomp.to_i STDERR.print("何種類ある?:") variation = gets.chomp.to_i printf("うんまい棒%d個で%d種類の場合は%dの組み合わせがある。\n",unnmai ,variation,kumiawase(unnmai,variation)) 実行結果 pan{SATO Taiki}% ./def_combination.rb [~/Ruby] うんまい棒の数と種類を入力してね。 ※本数が種類より多くなるようににゅうりょくしてね。 うんまい棒何本?:7 何種類ある?:2 うんまい棒7個で2種類の場合は21の組み合わせがある。 pan{c110104}% ./def_combination.rb [~/Ruby] うんまい棒の数と種類を入力してね。 ※本数が種類より多くなるようににゅうりょくしてね。 うんまい棒何本?:2 何種類ある?:7 計算できません! 考察 def factorialを使用して物の個数と種類によって何通りかを調べるプログラムを 作った。 もしも、数が種類より少なかった場合は計算できないので、必ず数の方が多くな るようにしなければならない。 数の方が少ない場合はどの様なプログラムに組み換えればいいのか知りたい。 感想 機械的な操作を繰り返すものとして、ぜんまい式のロボットや自動ドアなどが挙 げられる。 今回はプログラムの確認がうまくできなかった。また、A問題の数より種類の方 が多い場合の計算式が分からず、やむをえず入力できないようにしてしまった。 筆記問題は前期の復習だったためスムーズに解けた。 参考文献 基礎プログラミング II 第 5 回 「何度も呼び出そう」 http://roy/~madoka/2011/r2/05/ 神田直弥 基礎プログラミングI 第9回 16進数・ASCIIコード http://roy/~naoya/ruby/9.html