5 月 16 日のレポートについて 語学クラス:XXXX語XX 系 :XXXX系 学籍番号 :C106XXXX 氏名 :XXXXXXXX 1. ルビ緒ロボットが恋をし、熱暴走を起こしている。 16 進法表示から 文字コードに変換するプログラム部分が壊れてしまったようである。 while 文で繰り返される部分を解読したところ、 : printf("%c%c%c%c%cちゃんはかわいいなあ\n",0x45,0x6d,0x69,0x6c,0x79) printf("http://www.%c%c%c.or.jp/%c%c%c%c%c/%c%c%c%c%c/\n", 0x6e,0x68,0x6b,0x61,0x6e,0x69,0x6d,0x65,0x65,0x6d,0x69,0x6c,0x79) : であった。相手は誰か、過程も記して答えよ。 まず、0x45,0x6d,0x69,0x6c,0x79というのが何者であるか調べるために http://roy/~madoka/2007/r1/05/05-03-ascii.htmlより表を見て照らし合 わせてみた。すると、 0x45 = E 0x6d = m 0x69 = i 0x6c = l 0x79 = y ということで誰かはわからないが Emily ちゃんらしい。 後、アドレス部分も直してみると、 0x6e = n 0x68 = h 0x6b = k 0x61 = a 0x6e = n 0x69 = i 0x6d = m 0x65 = e 0x65 = e 0x6d = m 0x69 = i 0x6c = l 0x79 = y ということでアドレス部分は "http://www.nhk.or.jp/anime/emily/"となる。 ルビ緒ロボットは風の少女エミリーが好きと言うことで 毎週土曜午前7:25から教育テレビを見ているのではないかと推測。 2. プログラム問題。2 題とも解答せよ。 a. 定型文を作り、そこに当てはめる文字列を考え、表示するプログラム form_a.rb を作成せよ。配列の添字の数は 4 つ以上とする。配列の要 素数は 3 つ以上とする。 −プログラム− 自分の水曜日の授業についてのプログラムを書いてみた。 大まかには授業でやったtrainと非常に良く似ている。 #!/usr/koeki/bin/ruby cls = Array.new a = 0 cls[0] = ["1時限目","基礎プログラミングI","必修"] cls[1] = ["2時限目","ニュージーランドの政治・行政","NZについて学習する授業"] cls[2] = ["3時限目","TOEIC上級","TOEICに向けての勉強"] cls[3] = ["4時限目","技術と安全","近代の技術と安全性を学ぶ授業"] print("水曜日の授業について語ります:\n") while a < 4 printf("%d時限目 \n",a+1) printf("水曜日の %s は、 %s の授業で %s である。\n",cls[a][0],cls[a][1],cls[a][2]) a += 1 end −実行結果− irsv{c106113}% ./form_a.rb [~/Ruby] 水曜日の授業について語ります: 1時限目 水曜日の 1時限目 は、 基礎プログラミングI の授業で 必修 である。 2時限目 水曜日の 2時限目 は、 ニュージーランドの政治・行政 の授業で NZについて学習する授業 である。 3時限目 水曜日の 3時限目 は、 TOEIC上級 の授業で TOEICに向けての勉強 である。 4時限目 水曜日の 4時限目 は、 技術と安全 の授業で 近代の技術と安全性を学ぶ授業 である。 b. 同じ内容のプログラム。ただしデータ化した word.dat を読み込み、表 示させるプログラムに改良せよ。form_b.rb とする。 −プログラム form_b.rb ver.− #!/usr/koeki/bin/ruby combi = Array.new x = 0 print("水曜日の授業について語ります:\n") while word_data = gets if /(\S+)\s+(\S+)\s+(\S+)/ =~ word_data combi[0] = $1 combi[1] = $2 combi[2] = $3 end printf("%d時限目 \n",x+1) printf("水曜日の %s は、 %s の授業で %s である。\n",combi[0],combi[1],combi[2]) x += 1 end print("以上です!\n") −プログラム word.dat ver.− 1時限目 基礎プログラミングI 必修 2時限目 ニュージーランドの政治・行政 NZについて学習する授業 3時限目 TOEIC上級 TOEICに向けての勉強 4時限目 技術と安全 近代の技術と安全性を学ぶ授業 −実行結果− irsv{c106113}% ./form_b.rb word.dat [~/Ruby] 水曜日の授業について語ります: 1時限目 水曜日の 1時限目 は、 基礎プログラミングI の授業で 必修 である。 2時限目 水曜日の 2時限目 は、 ニュージーランドの政治・行政 の授業で NZについて学習する授業 である。 3時限目 水曜日の 3時限目 は、 TOEIC上級 の授業で TOEICに向けての勉強 である。 4時限目 水曜日の 4時限目 は、 技術と安全 の授業で 近代の技術と安全性を学ぶ授業 である。 以上です! 3. 感想。工夫した点を述べよ。日常生活において似通ったシステムを思い ついた、などプログラムの応用について考えるところがあれば、それに ついても述べること。 最初のエミリーちゃんは結構ASCII表を見ればすぐわかった。 しかし、最後のプログラムは何を作ればいいかわからず結構難しかった。 が、授業でやったときのを思いだし参考にしながらやってみたらできたの でよかった。とはいえ、内容がこれでいいのか少々不安ではあった。 プログラムは作った時、うまく動けば楽しくなるけれども全く分からず迷っ ているととてもつまらないものなので理解してミスをなくす事が重要である と感じた。 ----Next_Part(Thu_May_17_16_05_48_2007_921)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="form_a.rb" #!/usr/koeki/bin/ruby cls = Array.new a = 0 cls[0] = ["1時限目","基礎プログラミングI","必修"] cls[1] = ["2時限目","ニュージーランドの政治・行政","NZについて学習する授業"] cls[2] = ["3時限目","TOEIC上級","TOEICに向けての勉強"] cls[3] = ["4時限目","技術と安全","近代の技術と安全性を学ぶ授業"] print("水曜日の授業について語ります:\n") while a < 4 printf("%d時限目 \n",a+1) printf("水曜日の %s は、 %s の授業で %s である。\n",cls[a][0],cls[a][1],cls[a][2]) a += 1 end ----Next_Part(Thu_May_17_16_05_48_2007_921)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="form_b.rb" #!/usr/koeki/bin/ruby combi = Array.new x = 0 print("水曜日の授業について語ります:\n") while word_data = gets if /(\S+)\s+(\S+)\s+(\S+)/ =~ word_data combi[0] = $1 combi[1] = $2 combi[2] = $3 end printf("%d時限目 \n",x+1) printf("水曜日の %s は、 %s の授業で %s である。\n",combi[0],combi[1],combi[2]) x += 1 end print("以上です!\n") ----Next_Part(Thu_May_17_16_05_48_2007_921)-- Content-Type: Application/Ms-Tnef Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="word.dat" Mbv+uMLM3CAgtPDBw6XXpe2lsKXppd+l86WwSQkJyay9pAoyu/64wszcICCly6XlobyluKG8peml 86XJpM7Ar7yjoaa51MCvCU5apMukxKSkpMaz2L2spLmk67z4tsgKM7v+uMLM3AkgVE9FSUO+5bXp CQkJVE9FSUOky7j+pLGkxqTOytm2rwo0u/64wszcCSC1u73RpMiwwsG0CQkJtuHC5aTOtbu90aTI sMLBtMCtpPKz2KTWvPi2yAo= ----Next_Part(Thu_May_17_16_05_48_2007_921)----