第5回 基礎プログラミング II レポート課題 氏名:小関文紀 学籍番号:c1090638 語学クラス:中国語 1 コース(系):地域共創コース 1A わたしの名前は小関文紀なので、これをアルファベットになおすとKoseki Fuminoriになる。このアルファベットをASCIIコード表に当てはめて考える。 K=0x4b o=0x6f s=0x73 e=0x65 k=0x6b i=0x69 F=0x46 u=0x75 m=0x6d i=0x69 n=0x6e o=0x6f r=0x72 i=0x69 結果は上のようになった。 これを10進数に直して行く。 K 0x4b → 4 * 16の1乗 + 11 * 16の0乗 = 75 o 0x6f → 6 * 16の1乗 + 15 * 16の0乗 = 111 s 0x73 → 7 * 16の1乗 + 3 * 16の0乗 = 115 e 0x65 → 6 * 16の1乗 + 5 * 16の0乗 = 101 k 0x6b → 6 * 16の1乗 + 11 * 16の0乗 = 107 i 0x69 → 6 * 16の1乗 + 9 * 16の0乗 = 105 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 75+111+115+101+107+105+70+117+109+105+110+111+114+105=1455 bc -lで確かめると以下のようになった。 pan{c109063}% bc -l [~] 75+111+115+101+107+105+70+117+109+105+110+111+114+105 1455 よって正しいことが分かる。 次に16進数になおす。 1455 / 16 = 90 余り 15 90 / 16 = 5 余り 10 5 / 16 = 0 余り 5 計算の結果、0x5afとなるので 0x5af = 0d1455 となる。 1B 授業中に行なう行程をプログラム風にした。 def food(men, naruto, menma,) men を茹でる naruto を冷蔵庫から出す menma を冷蔵庫から出す ramen = men に naruto をのせる ramen = ramen に menma をのせる end def soup(oyu, hunmatusoup) oyu を沸かす hunmatusoup を用意する donburi = oyu と hunmatusoup をいれ、まぜる end food(1玉、1枚、5個) soup(300cc、1袋) print("やっぱインスタントラーメンはうまい!\n") 2A 1.考えた設定 授業の組み合わせを求めるプログラムを考えた。 2.作成したプログラム #!/usr/koeki/bin/ruby def factorial(m) if m == 1 return 1 else m * factorial(m -1) end end def kumiawase(a,b) if a == b return 1 elsif a < b print("この組み合わせは出来ません。\n") exit else factorial(a)/factorial(b)/factorial(a-b) end end STDERR.print("選択できる後期の授業は全部でどのくらいありますか? :") zyugyou = gets.chomp.to_i STDERR.print("その中からどのくらいの授業を選択したいですか?") sentaku = gets.chomp.to_i printf("%d種類ある授業の中から%d個選ぶ際の組み合わせは%dパターンあります。\n",zyugyou,sentaku,kumiawase(zyugyou,sentaku)) 3.実行結果 pan{c109063}% ./def_combination.rb [~/Ruby] 選択できる後期の授業は全部でどのくらいありますか? :20 その中からどのくらいの授業を選択したいですか?12 20種類ある授業の中から12個選ぶ際の組み合わせは125970パターンあります。 pan{c109063}% ./def_combination.rb [~/Ruby] 選択できる後期の授業は全部でどのくらいありますか? :18 その中からどのくらいの授業を選択したいですか?20 この組み合わせは出来ません。 4.考察 pan{c109063}% bc -l [~/Ruby] (20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2*1)/(12*11*10*9*8*7*6*5*4*3*2*1)/(8*7*6*5*4*3*2*1) 125970.00000000000000000000 quit 結果は125970.00000000000000000000になった。プログラムで表示するときは 小数ではなく整数で表示するため小数点以下を切るので、このプログラムは 正しく計算されているといえる。 二つ目の実行結果は選択したい授業数が全部の授業数を超えているため「この組み 合わせをは出来ません」と表示された。よってこのプログラムは正しく動いてい るといえる。 3.感想 人が、まばたきをする行動が機械的な操作を繰り返すものだと思う。 今回の課題は理解するまで時間がかかった。しかし、最終的に完成したので 良かった。 4.参考文献 基礎プログラミング II 第05回 何度も呼び出そう レポート講評 http://roy/~madoka/2009/r2/05/crt.html 西村まどか先生 5.共同学習者 後藤輝久 横山広樹