第5回 基礎プログラミング I レポート課題 氏名 :XXXXXXXX 学籍番号 :c109XXX 語学クラス :英語3 コース :地域共創 1.筆記問題 A. printf("%c%c%c%c%c%c%c%cに会いたいぞよ\n" ,0x6f, 0x6b, 0x6f, 0x72, 0x69, 0x6e, 0x62, 0x6f) これをASCII コードで変換する。 すると 6f = o 6b = k 6f = o 72 = r 69 = i 6e = n 62 = b 6f = o よって printf("okorinboに会いたいぞよ\n"...)となる。 また printf("http://www9.%c%c%c.or.jp/%c%c%c%c%c/%c%c%c%c%c/%c%c%c%c%c/%c%c% c%c%c/%c%c%c.html\n", 0x6e, 0x68, 0x6b, 0x61, 0x6e, 0x69, 0x6d, 0x65, 0x6f, 0x6a, 0x61, 0x72, 0x75, 0x63, 0x68, 0x61, 0x72, 0x61, 0x70, 0x6f, 0x70, 0x75, 0x70, 0x6f, 0x6b, 0x6f) これもASCII コードで変換して 6e = n 68 = h 6b = k 61 = a 6e = n 69 = i 6d = m 65 = e 6f = o 6a = j 61 = a 72 = r 75 = u 63 = c 68 = h 61 = a 72 = r 61 = a 70 = p 6f = o 70 = p 6f = o 6b = k 6f = o よって printf("http://www9.nhk.or.jp/anime/ojaru/chara/popup/oko.html\n"...) となる。 「おじゃる丸」のサイトにアクセスでき、登場キャラクターに「オコリン坊」 が存在している。「オコリン坊」は満願神社(まんがんじんじゃ)に住んで いるキャラクターである。 したがって瑠美姫の理想の番人はこの「オコリン坊」のことである。 またプログラムが暴走してしまったときは ctrl + c で止めることができる。 B.a.0d42 = 0b?? 0dは10進数を意味している。0bは2進数のことなので10進数を2進数に変換 すれば良い。 2進数にするには2で割っていき、答えと余りを計算していく。これを答え が0になるまで繰り返していく。最後に出た余りから逆(上方向)に書いてい く。 したがって 42 / 2 = 21 余り0 21 / 2 = 10 1 10 / 2 = 5 0 5 / 2 = 2 1 2 / 2 = 1 0 1 / 2 = 0 1 よって 0d42 = 0b101010 となる。 b.0d51 = 0b?? a と同様の方法で行う。 したがって 51 / 2 = 25 余り 1 25 / 2 = 12 1 12 / 2 = 6 0 6 / 2 = 3 0 3 / 2 = 1 1 1 / 2 = 0 1 よって 0d51 = 0b110011 となる。 2.プログラム問題 巨人の年別成績を紹介するプログラムを作成した。 西暦と監督名、勝敗、順位を表示させて順位の平均も表示させる。 もとにしたプログラムは ary_train.rb である。 プログラムは次のとおりである。 #!/usr/koeki/bin/ruby team = Array.new i= 0 total = 0 heikin = 0 team[0]=["1998年 ","長嶋茂雄 ","73勝 ","62敗 ","0分 ",3] team[1]=["1999年 ","長嶋茂雄 ","75勝 ","60敗 ","0分 ",2] team[2]=["2000年 ","長嶋茂雄 ","78勝 ","58敗 ","0分 ",1] team[3]=["2001年 ","長嶋茂雄 ","75勝 ","63敗 ","2分 ",2] team[4]=["2002年 ","原辰徳 ","86勝 ","52敗 ","2分 ",1] team[5]=["2003年 ","原辰徳 ","71勝 ","66敗 ","3分 ",3] team[6]=["2004年 ","堀内恒夫 ","71勝 ","64敗 ","3分 ",3] team[7]=["2005年 ","堀内恒夫 ","62勝 ","80敗 ","4分 ",5] team[8]=["2006年 ","原辰徳 ","65勝 ","79敗 ","2分 ",4] team[9]=["2007年 ","原辰徳 ","80勝 ","63敗 ","1分 ",1] team[10]=["2008年 ","原辰徳 ","84勝 ","57敗 ","3分 ",1] team[11]=["2009年 ","原辰徳 ","89勝 ","46敗 ","9分 ",1] print("巨人の過去12年の成績を知りたい。\n") while i < team.length printf("西暦 %sで監督は %s監督で 結果は %s %s %s 順位は %s位でした。\n", team[i][0],team[i][1],team[i][2],team[i][3],team[i][4],team[i][5] ) printf("これまでの順位の合計は %s 位です。\n",total += team[i][5]) i+=1 heikin = total /12 heikin = heikin.to_i end printf("巨人の平均順位は %d 位です。 \n",heikin) print("終了 \n") ◎もとにしたプログラムからの変更点 ・配列を12個に増やした。 ・添字を5個に増やした。 ・変数を team に変えた。 ・平均の計算結果を整数にするために heikin = heikin.to_i をいれた。 ◎プログラムを実行した結果 pan{c109130}% ./form_a.rb [~/Ruby] 巨人の過去12年の成績を知りたい。 西暦 1998年 で監督は 長嶋茂雄 監督で 結果は 73勝 62敗 0分 順位は 3位でした。 これまでの順位の合計は 3 位です。 西暦 1999年 で監督は 長嶋茂雄 監督で 結果は 75勝 60敗 0分 順位は 2位でした。 これまでの順位の合計は 5 位です。 西暦 2000年 で監督は 長嶋茂雄 監督で 結果は 78勝 58敗 0分 順位は 1位でした。 これまでの順位の合計は 6 位です。 西暦 2001年 で監督は 長嶋茂雄 監督で 結果は 75勝 63敗 2分 順位は 2位でした。 これまでの順位の合計は 8 位です。 西暦 2002年 で監督は 原辰徳 監督で 結果は 86勝 52敗 2分 順位は 1位でした。 これまでの順位の合計は 9 位です。 西暦 2003年 で監督は 原辰徳 監督で 結果は 71勝 66敗 3分 順位は 3位でした。 これまでの順位の合計は 12 位です。 西暦 2004年 で監督は 堀内恒夫 監督で 結果は 71勝 64敗 3分 順位は 3位でした。 これまでの順位の合計は 15 位です。 西暦 2005年 で監督は 堀内恒夫 監督で 結果は 62勝 80敗 4分 順位は 5位でした。 これまでの順位の合計は 20 位です。 西暦 2006年 で監督は 原辰徳 監督で 結果は 65勝 79敗 2分 順位は 4位でした。 これまでの順位の合計は 24 位です。 西暦 2007年 で監督は 原辰徳 監督で 結果は 80勝 63敗 1分 順位は 1位でした。 これまでの順位の合計は 25 位です。 西暦 2008年 で監督は 原辰徳 監督で 結果は 84勝 57敗 3分 順位は 1位でした。 これまでの順位の合計は 26 位です。 西暦 2009年 で監督は 原辰徳 監督で 結果は 89勝 46敗 9分 順位は 1位でした。 これまでの順位の合計は 27 位です。 巨人の平均順位は 2 位です。 終了 ◎考察 実際に計算してみたところ pan{c109130}% bc -l [~/Ruby] 3+2+1+2+1+3+3+5+4+1+1+1 27 27/12 2.25000000000000000000 となったので小数点以下は四捨五入して2となるのでプログラムと一致するのでプ ログラムは正常に作動していることとなる。 ◎参考文献 ・授業のときのプログラム ary_train.rb ◎感想 今回のプログラミングでは一つのミスをなかなか探すことが出来ずにかなり の時間を費やしてしまった。一つミスしただけでプログラムが作動しないの でこれからはもっと慎重にやっていかなければいけないと思った。 このようなプログラムが使われているのはやはり電車の乗り換えや時刻を教 えてくれるものであると思うしこれがわたしにとって一番身近に感じられる ものである。 これからも講義はもちろん、課題の方も気を引き締めて頑張っていきたいと思 う。 ◎共同学習者 ・池田 博哉 ・花木 剛志