5 月 16 日のレポートについて 語学クラス: XXXX語 系: XXXX 学籍番号: c105XXXX 氏名: XXXXXXXX 1. ルビ緒ロボットの printf 文を解読するには ASCLL コードから 例えば Ox45 は縦の行が 4 に横の行は 5 に当たるのでよって E になる。 参考ホームページ http://roy/~madoka/2007/r1/05/05-03-ascii.html から 全ての文字にはコードが付けられている。16進数で1個を1 byte となる。 理由は comptuer は二進数でしか理解できないので、もし人間がそのままの 内容を見ようとしたら大変な情報量になるので四つに区切ることでまとめ、 かつそれに文字をのせて入力するシステムなのです。 Ox45 で 1byte です。 また、日本語を入力するには文字を2個使うので 2 byte 必要になる。 ここから課題の解読に当たると Ox45= E Ox6d= m Ox69= i Ox6c= l Ox79= y よってルビ緒が恋した相手は Emily ちゃんです。 次にホームページのアドレスは http://www.Ox6e=n Ox68=h Ox6b=k.or.jp つまり NHK のアドレスです。マジ!! /のあとですが Ox61=a Ox6e=n Ox69=i Ox6d=m Ox65=e Ox65=e 0x6d=m Ox6c=l ox79=y なので、animeemly これはなるほどアニメか ルビ緒よ がんばれ! 2. 課題のプログラム 1番目: 今回は配列でまとめてデータを入力するというものでした。 1) form_a.rb について説明するとまず配列を三つにし、定型文は五つに設 定して日本の地名について連想する事柄を連続して挙げるというものです。 2)プログラム本体はホームページ http://roy/~madoka/2007/r1/05/05-12-form2.htmlにあるものを参考に しました。 #!/usr/koeki/bin/ruby jap = Array.new i = 0 jap[0] = ["北海道","羆","夕張"] jap[1] = ["仙台","伊逹 政宗","牛丹"] jap[2] = ["大阪","たこやき","道頓堀"] jap[3] = ["鹿児島","西郷 隆盛","桜島"] jap[4] = ["沖縄","米軍基地","海"] print("あなたの好きな日本の好いところは: \n") while i < 5 printf("場所 %d \n" ,i+1) # %sは文字列を入力するために printf("あなたのすきな場所: %s で連想するものは 1: %s で 2: %s もいいですよね。\n" ,jap[i][0],jap[i][1],jap[i][2]) # jap[i]の意味は [0][1][2] が縦の列を表している i += 1 end print("また来週\n") 3) 実行結果 irsv{c106076}% ./form_a.rb [~/Ruby] あなたの好きな日本の好いところは: 場所 1 あなたのすきな場所: 北海道 で連想するものは 1: 羆 で 2: 夕張 もいいですよね。 場所 2 あなたのすきな場所: 仙台 で連想するものは 1: 伊逹 政宗 で 2: 牛丹 もいいですよね。 場所 3 あなたのすきな場所: 大阪 で連想するものは 1: たこやき で 2: 道頓堀 もいいですよね。 場所 4 あなたのすきな場所: 鹿児島 で連想するものは 1: 西郷 隆盛 で 2: 桜島 もいいですよね。 場所 5 あなたのすきな場所: 沖縄 で連想するものは 1: 米軍基地 で 2: 海 もいいですよね。 また来週 となりました。しかし、これではデータが固定せれていて、次にアンケートなど を取った時にまたプログラムを作り替えないと行けないので今度はデータだけを 取り込むプログラムを作ります。 1) プログラムの概要 作業はデータを emacs 内につくり、Kterm で実行する時に ./プログラム 名.rb 読ませるデータ. dat を入力することでプログラムとデータを結び付 ける。 そして、今回もホームページ:http://roy/~madoka/2007/r1/05/05-13-form3.html :http://roy/~madoka/2007/r1/05/05-14-form4.html :http://roy/~madoka/2007/r1/05/05-15-form5.html を引用、参照させていただくました。 またプログラムについての説明ですが、仮想的アンケートを実施し、それをデー タ化したものを入力することを目的としたものです。 2) プログラム本体 それぞれの行についての説明はプリント文でしているので省略させていただ きます。 #!/usr/koeki/bin/ruby tabi = Array.new #配列を新に作る n = 0 print("あなたのいきたい日本百景 best 5は:\n") while form_data = gets #外部からデータを取ってくる if /(\S+)\s+(\S+)\s+(\S+)/ =~ form_data # if文 / / =~ 変数がきたら起動する # /(S+)\s は前が優先して表示させる tabi[0] = $1 # これは配列のなかで優先された文字列1をもってくる tabi[1] = $2 # 文字列2 tabi[2] = $3 # 文字列3 end printf("ナンバー%d \n",n+1,)# %s は文字列をとってこれる printf("行ってみたいのは %s で、有名ドコロは %s で、食べ物は %s が美味しいです。 \n", tabi[0],tabi[1],tabi[2]) n += 1 end print("アンケートありがとうございました。\n") 3) 実行結果 今回は methad の意味や原理がわかりやすかったのでほぼ自力でプログラム をつくることができました。 irsv{c106076}% ./form_b.rb form.dat [~/Ruby] あなたのいきたい日本百景 best 5は: ナンバー1 行ってみたいのは 宮崎 で、有名ドコロは 知事 で、食べ物は 宮崎の鳥肉 が美味しいです。 ナンバー2 行ってみたいのは 秋田 で、有名ドコロは 男鹿半島 で、食べ物は きりたんぽ が美味しいです。 ナンバー3 行ってみたいのは 仙台 で、有名ドコロは 松島 で、食べ物は 牛たん が美味しいです。 ナンバー4 行ってみたいのは 東京 で、有名ドコロは 東京タワー で、食べ物は もんじゃ焼き が美味しいです。 ナンバー5 行ってみたいのは 酒田 で、有名ドコロは 山居倉庫 で、食べ物は せんべい が美味しいです。 アンケートありがとうございました。 3. 感想 最後の詰めの段階でプログラムが TA が見てもおかしいところがないのにナ ンバーが5ではなく、7まで表示されてしまい、原因がわからなかったのです が、しかしここでデータをよくよく調べたら最後の行から下にスペースを2個 多く入れていることに TA Mさんがきづいてくれたお陰で原因がそれであるこ とが明らかになり、無事に終えることができました。本当に computer のプ ログラムはシビアにできているのだと感じました。 追伸 添付ファイルは3つ送りたいと思うのでお願いします。 ----Next_Part(Wed_May_16_18_45_14_2007_323)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="form_a.rb" #!/usr/koeki/bin/ruby jap = Array.new i = 0 jap[0] = ["北海道","羆","夕張"] jap[1] = ["仙台","伊逹 政宗","牛丹"] jap[2] = ["大阪","たこやき","道頓堀"] jap[3] = ["鹿児島","西郷 隆盛","桜島"] jap[4] = ["沖縄","米軍基地","海"] print("あなたの好きな日本の好いところは: \n") while i < 5 printf("場所 %d \n" ,i+1) printf("あなたのすきな場所: %s で連想するものは 1: %s で 2: %s もいいですよね。\n",jap[i][0],jap[i][1],jap[i][2]) i += 1 end print("また来週\n") ----Next_Part(Wed_May_16_18_45_14_2007_323)-- Content-Type: Application/Ms-Tnef Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="form.dat" tdy66gkJw8679gkJtdy66qTOxLvG+Qq9qcXECQnDy7yvyL7F5wmkraTqpL+k86TdCsDnwuYJCb6+ xecJCbXtpL+k8wrF7LX+CQnF7LX+pb+l76G8CaTipPOkuKTjvsakrQq88sXECQm7s7XvwdK4ywmk u6TzpNmkpAo= ----Next_Part(Wed_May_16_18_45_14_2007_323)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="form_b.rb" #!/usr/koeki/bin/ruby tabi = Array.new n = 0 print("あなたのいきたい日本百景 best 5は:\n") while form_data = gets #外部からデータを取ってくる if /(\S+)\s+(\S+)\s+(\S+)/ =~ form_data # if文 / / =~ 変数がきたら起動する # /(S+)\s は前が優先して表示させる tabi[0] = $1 # これは配列のなかで優先された文字列1をもってくる tabi[1] = $2 # 文字列2 tabi[2] = $3 # 文字列3 end printf("ナンバー%d \n",n+1,n<6) printf("行ってみたいのは %s で、有名ドコロは %s で、食べ物は %s が美味しいです。 \n", tabi[0],tabi[1],tabi[2]) n += 1 end print("アンケートありがとうございました。\n") ----Next_Part(Wed_May_16_18_45_14_2007_323)-- Content-Type: Multipart/Mixed; boundary="--BOUNDARY1(Wed_May_16_18_45_14_2007_925)--" Content-Transfer-Encoding: 7bit ----BOUNDARY1(Wed_May_16_18_45_14_2007_925)---- ----Next_Part(Wed_May_16_18_45_14_2007_323)----