5 月 30 日のレポートについて XXXX語クラスXX XXXX系 C106XXXX XXXXXXXX 1. A.0b100101 = 0x?? 0b は 2 進数だから、最初に 2 進数から 10 進数にする。そしてその後に、16 進数にする。 0b100101 = 0d?? 1×2の5乗 + 0×2の4乗 + 0×2の3乗 + 1×2の2乗 + 0×2の1乗 + 1×2の0 乗 = 32 + 4 + 1 = 37 つまり、0d37 となる。 次に 16 進数にする。 10 進数から 16 進数にするには、16で割ってさらに商を16で割って、余りを下 から順番に並べる。 0d37 = 0x?? 37 ÷ 16 = 2 余り 5 2 ÷ 16 = 0 余り 2 つまり、したから順番に並べるから、0x25 となる。 B.0d1111 = 0x?? 1111 ÷ 16 = 69 余り 7 69 ÷ 16 = 4 余り 5 4 ÷ 16 = 0 余り 4 つまり、0x457 となる。 2. A. ◯作成したデータの内容 それぞれの月の誕生石とその意味、誕生花について ◯データファイルの張りつけ □ data07.rb 1月 水仙、シンピジュ−厶 ガーネット ganetto 友愛、忠実、真実 2月 うめ、フリージア アメジスト amejisuto 誠実、理想、高貴 3月 忘れな草、チューリップ アクアマリン akuamarinn 沈着、勇敢 4月 都忘れ、さくら ダイアモンド daiamondo 純潔、恋に勇気 5月 すずらん、カーネーション エメラルド emerarudo 幸福、幸運、夫婦愛 6月 ばら、グラジオラス ムーンストーン munnsutonn 健康、幸運、恋の予知 7月 ゆり、トルコ桔梗 ルビー rubi 情熱、威厳、勇気、友情、自由 8月 アンスリウム、ひまわり ぺリドット peridotto 友愛、幸福、夫婦の和合 9月 ダリア、りんどう サファイア safaia 慈愛、真理、誠実 10月 コスモス、きく トルマリン torumarinn 歓喜、安楽、忍耐 11月 ブパルディア トパーズ topazu 友情、友愛、希望、潔白 12月 カトレア、シクラメン ターコイズ takoizu 成功を保証する、繁栄 a. [answer1.rb] #!/usr/koeki/bin/ruby while tuki = gets #変数を「tuki」として、変数にデータを 1 行ずつgetsする。 if /ai+a/i =~ tuki #検索したいパターンがデータを読みこませた変数と等しいかどうか。 print tuki end end b.[answer2.rb] #!/usr/koeki/bin/ruby while tuki = gets #変数を「tuki」として、変数にデータを 1 行ずつgetsする。 if /ame[sj]isuto/i =~ tuki #検索したいパターンがデータを読みこませた変数と等しいかどうか。 print tuki end end c.[answer3.rb] #!/usr/koeki/bin/ruby while tuki = gets #変数を「tuki」として、変数にデータを 1 行ずつgetsする。 if /幸福|幸運/e =~ tuki #検索したいパターンがデータを読みこませた変数と等しいかどうか。 print tuki end end d.[answer4.rb] #!/usr/koeki/bin/ruby while tuki = gets #変数を「tuki」として、変数にデータを 1 行ずつgetsする。 if /白$/e =~ tuki #検索したいパターンがデータを読みこませた変数と等しいかどうか。 print tuki end end ◯どのような分類をしたいのか、目的についての説明 どの月が何と言う石で、どういう意味なのか、何月がどういう花なのか調べ たい。 ◯分類に使った検索パターンについて a. if /ai+a/i =~ tuki 予想は「ai」が出現しなければならないから、ダイアモンドとサファイアが検索 される。 b. if /ame[sj]isuto/i =~ tuki 予想は、アメジストが検索される。 c. if /幸福|幸運/e =~ tuki 予想は、幸福または幸運が入っているものが検索される。 d. if /白$/e =~ tuki 予想は、末尾に「白」が入っているものが検索される。 ◯実行した結果 a. irsv{c106037}% chmod +x answer1.rb [~/Ruby] irsv{c106037}% ./answer1.rb data07.dat [~/Ruby] 4月 都忘れ、さくら ダイアモンド daiamondo 純潔、恋に勇気 9月 ダリア、りんどう サファイア safaia 慈愛、真理、誠実 b. irsv{c106037}% chmod +x answer2.rb [~/Ruby] irsv{c106037}% ./answer2.rb data07.dat [~/Ruby] 2月 うめ、フリージア アメジスト amejisuto 誠実、理想、高貴 c. irsv{c106037}% chmod +x answer3.rb irsv{c106037}% ./answer3.rb data07.dat [~/Ruby] 5月 すずらん、カーネーション エメラルド emerarudo 幸福、幸運、夫婦愛 6月 ばら、グラジオラス ムーンストーン munnsutonn 健康、幸運、恋の予知 8月 アンスリウム、ひまわり ぺリドット peridotto 友愛、幸福、夫婦の和合 d. irsv{c106037}% chmod +x answer4.rb [~/Ruby] irsv{c106037}% ./answer4.rb data07.dat [~/Ruby] 11月 ブパルディア トパーズ topazu 友情、友愛、希望、潔白 ◯利用した正規表現について /+/ : 直前の文字が出現しなければならず、その出現は何回でもよい。 /[ ]/ : [ ]で括られた文字のどれかが一致するものを取りだす。 "|" : 「または」の意味。 /$/ : 末尾の文字列のみ探して調べる B. ◯データの張りつけ a. #!/usr/koeki/bin/ruby while tuki = gets if /ai+a/ !~ tuki # =~を !~ に入れ替えると、キーワードを除いて検索できる。 print tuki end end b. #!/usr/koeki/bin/ruby while tuki = gets if /ame[sj]isuto/i !~ tuki print tuki end end c. #!/usr/koeki/bin/ruby while tuki = gets if /幸福|幸運/e !~ tuki print tuki end end d. #!/usr/koeki/bin/ruby while tuki = gets if /白$/e !~ tuki print tuki end end ◯実行した結果 a. irsv{c106037}% chmod +x answer_b1.rb [~/Ruby] irsv{c106037}% ./answer_b1.rb data07.dat [~/Ruby] 1月 水仙、シンピジュ−厶 ガーネット ganetto 友愛、忠実、真実 2月 うめ、フリージア アメジスト amejisuto 誠実、理想、高貴 3月 忘れな草、チューリップ アクアマリン akuamarinn 沈着、勇敢 5月 すずらん、カーネーション エメラルド emerarudo 幸福、幸運、夫婦愛 6月 ばら、グラジオラス ムーンストーン munnsutonn 健康、幸運、恋の予知 7月 ゆり、トルコ桔梗 ルビー rubi 情熱、威厳、勇気、友情、自由 8月 アンスリウム、ひまわり ぺリドット peridotto 友愛、幸福、夫婦の和合 10月 コスモス、きく トルマリン torumarinn 歓喜、安楽、忍耐 11月 ブパルディア トパーズ topazu 友情、友愛、希望、潔白 12月 カトレア、シクラメン ターコイズ takoizu 成功を保証する、繁栄 b. irsv{c106037}% chmod +x answer_b2.rb [~/Ruby] irsv{c106037}% ./answer_b2.rb data07.dat [~/Ruby] 1月 水仙、シンピジュ−厶 ガーネット ganetto 友愛、忠実、真実 3月 忘れな草、チューリップ アクアマリン akuamarinn 沈着、勇敢 4月 都忘れ、さくら ダイアモンド daiamondo 純潔、恋に勇気 5月 すずらん、カーネーション エメラルド emerarudo 幸福、幸運、夫婦愛 6月 ばら、グラジオラス ムーンストーン munnsutonn 健康、幸運、恋の予知 7月 ゆり、トルコ桔梗 ルビー rubi 情熱、威厳、勇気、友情、自由 8月 アンスリウム、ひまわり ぺリドット peridotto 友愛、幸福、夫婦の和合 9月 ダリア、りんどう サファイア safaia 慈愛、真理、誠実 10月 コスモス、きく トルマリン torumarinn 歓喜、安楽、忍耐 11月 ブパルディア トパーズ topazu 友情、友愛、希望、潔白 12月 カトレア、シクラメン ターコイズ takoizu 成功を保証する、繁栄 c. irsv{c106037}% chmod +x answer_b3.rb [~/Ruby] irsv{c106037}% ./answer_b3.rb data07.dat [~/Ruby] 1月 水仙、シンピジュ−厶 ガーネット ganetto 友愛、忠実、真実 2月 うめ、フリージア アメジスト amejisuto 誠実、理想、高貴 3月 忘れな草、チューリップ アクアマリン akuamarinn 沈着、勇敢 4月 都忘れ、さくら ダイアモンド daiamondo 純潔、恋に勇気 7月 ゆり、トルコ桔梗 ルビー rubi 情熱、威厳、勇気、友情、自由 9月 ダリア、りんどう サファイア safaia 慈愛、真理、誠実 10月 コスモス、きく トルマリン torumarinn 歓喜、安楽、忍耐 11月 ブパルディア トパーズ topazu 友情、友愛、希望、潔白 12月 カトレア、シクラメン ターコイズ takoizu 成功を保証する、繁栄 d. irsv{c106037}% chmod +x answer_b4.rb [~/Ruby] irsv{c106037}% ./answer_b4.rb data07.dat [~/Ruby] 1月 水仙、シンピジュ−厶 ガーネット ganetto 友愛、忠実、真実 2月 うめ、フリージア アメジスト amejisuto 誠実、理想、高貴 3月 忘れな草、チューリップ アクアマリン akuamarinn 沈着、勇敢 4月 都忘れ、さくら ダイアモンド daiamondo 純潔、恋に勇気 5月 すずらん、カーネーション エメラルド emerarudo 幸福、幸運、夫婦愛 6月 ばら、グラジオラス ムーンストーン munnsutonn 健康、幸運、恋の予知 7月 ゆり、トルコ桔梗 ルビー rubi 情熱、威厳、勇気、友情、自由 8月 アンスリウム、ひまわり ぺリドット peridotto 友愛、幸福、夫婦の和合 9月 ダリア、りんどう サファイア safaia 慈愛、真理、誠実 10月 コスモス、きく トルマリン torumarinn 歓喜、安楽、忍耐 12月 カトレア、シクラメン ターコイズ takoizu 成功を保証する、繁栄 E. ◯データの張りつけ #!/usr/koeki/bin/ruby STDERR.print "検索パターン : " tanjyou = STDIN.gets.chomp # STDIN : 与えられたデータを処理するに際し て、処理の方法をキーボードからの入力によ り操作したいときに使われる。 "chomp" は、文字列を切り取るという method である。 hana = Regexp.new(tanjyou, true, "e") #Regexp.new(変数, オプション,文字 コード): 正規表現したい文字列にオ プションをつける。 "true" は、大文字小文字を区別しない。 "e" で漢字コードを EUC jp に指定し ている。 open("data07.dat","r") do |flower| #データを開いて (OPEN) 読み込むので モード r(Read) である。 while tuki = flower.gets if hana =~ tuki # print tuki if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ tuki printf("%s\n", $1) # \S+ : 空白文字以外の文字列が 1 個以上並んで いるものを探す。 \s+ : 空白文字が 1 個以上並んでいるものを探す。 end end end end ◯実行した結果 irsv{c106037}% chmod +x input_b.rb irsv{c106037}% ./input_b.rb [~/Ruby] 検索パターン : 友愛|友情 #「友愛」または「友情」が入っているものを探す。 1月 7月 8月 11月 3.感想 だんだんとプログラムのつくりが分かってきた。最初問題文を見たときに、意 味が分からなかったが、授業のことを思い出したり、授業のホームページを見 ながらしていたら理解できた。もっと早くプログラムを作れるようにしたい。