5 月 16 日のレポートについて XXXX語クラスXX XXXX系 C106XXXX XXXXXXXX 1. 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) これを解読するのに、1ASCII コード表を参考に解読した。 0x45 E 0x6b m 0x69 i 0x6c l 0x79 y 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 つまり、「エミリー NHKアニメ エミリー」となる。だから相手は、エミリーと なる。 2. A. ◯考えた設定 誕生石とその誕生石の意味を検索するプログラムを作った。 ◯作成したプログラム #!/usr/koeki/bin/ruby isi = Array.new # 配列を与える method t = 0 # 誕生石を与えるラベル isi[0] = ["6月","真珠","「健康、長寿、冨」","ムーンストン"] isi[1] = ["8月","サードオニキス","「夫婦の幸福、和合」","ぺリドット"] isi[2] = ["10月","オパール","「安楽、忍耐、非哀を克服して幸福を得る」","トルマリン"] isi[3] = ["12月","ターコイズ","「成功を保証する」","トルコ石"] print("誕生石と意味を検索します:\n") while t < 4 printf("誕生石 %d \n",t+1) printf("%s の誕生石は %s でその象徴は %sで、他には %s という石もある。\n", isi[t][0],isi[t][1],isi[t][2],isi[t][3]) # 上で入力したものが、 %s に順番に入る。 t += 1 # 検索結果で、誕生石 1、誕生石 2 と順番に増えていくことを意味 している。 end print("検索終了\n") ◯もとにしたプログラムからの変更点 授業で作った「検索案内プログラム」をもとに誕生石のプログラムを作った。 変数を「isi」「t」に設定した。 ◯プログラムを実行した結果画面 irsv{c106037}% chmod +x form_a.rb [~/Ruby] irsv{c106037}% ./form_a.rb [~/Ruby] と入力すると、 誕生石と意味を検索します: 誕生石 1 6月 の誕生石は 真珠 でその象徴は 「健康、長寿、冨」で、他には ムーンストン という石もある。 誕生石 2 8月 の誕生石は サードオニキス でその象徴は 「夫婦の幸福、和合」で、他には ぺリドット という石もある。 誕生石 3 10月 の誕生石は オパール でその象徴は 「安楽、忍耐、非哀を克服して幸福を得る」で、他には トルマリン という石もある。 誕生石 4 12月 の誕生石は ターコイズ でその象徴は 「成功を保証する」で、他には トルコ石 という石もある。 検索終了 となる。 ◯参考文献 http://www.gem.or.jp/ngl/mame/month/index.php B. ◯作成したプログラム 「word.dat」 6月 真珠 「健康、長寿、冨」 ムーンストーン 8月 サードオニキス 「夫婦の幸福、和合」 ペリドット 10月 オパール 「安楽、忍耐、悲哀を克服して幸福を得る」 トルマリン 12月 ターコイズ 「成功を保証する」 トルコ石 「form_b.rb」 #!/usr/koeki/bin/ruby storn = Array.new # 配列を与える method u = 0 print("誕生石と意味を検索します:\n") while word_data = gets if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ word_data # if /パターン/ =~ 変数 =~ は指定された正規表現が一致するかどうかを調べるときに使う。 \S+ は 文字列の連続 \s+ は 空白文字の連続 () は () 内に含まれる文字列を優先して探す word.rb で、文字 空白 文字 空白…と4回続くから /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/となる storn[0] = $1 storn[1] = $2 storn[2] = $3 storn[3] = $4 # () で優先された文字列は $1, $2, ..と順番に名前をつけられる /(優先された文字列 1)優先されない文字列(優先された文字列 2) 優先されない文字列 ... / =~ 変数 $1 は 優先された文字列 1 を引き取る $2 は 優先された文字列 2 を引き取る : end printf("誕生石 %d \n",u+1) printf(" %s の誕生石は %s で その象徴は %s で 他には %s という石もある。 \n", storn[0],storn[1],storn[2],storn[3]) u += 1 end print("検索終了\n") ◯プログラムを実行した結果画面 % chmod +x form_b.rb % ./form_b.rb word.dat # % ./プログラム .rb 読ませるデータ .dat gets の部分で、読ませるデータを 1 行ずつ読む。 と入力して、 誕生石と意味を検索します: 誕生石 1 6月 の誕生石は 真珠 で その象徴は 「健康、長寿、冨」 で 他には ムーンストーン という石もある。 誕生石 2 8月 の誕生石は サードオニキス で その象徴は 「夫婦の幸福、和合」 で 他には ペリドット という石もある。 誕生石 3 10月 の誕生石は オパール で その象徴は 「安楽、忍耐、悲哀を克服して幸福を得る」 で 他には トルマリン という石もある。 誕生石 4 12月 の誕生石は ターコイズ で その象徴は 「成功を保証する」 で 他には トルコ石 という石もある。 検索終了 となる。 3. プログラムをいつもよりは理解して作ることができた。プログラムを作って、 最初は kterm でエラーが出て、どこが間違っているのか分からなかったけれ ど、最終的にはちゃんとプログラムを作ることができてよかった。