語学クラス:XXXX語XX 系列:XXXX系 学籍番号:c106XXXX 氏名:XXXXXXXX 1.過程を示しながら答えよ。 A. 0b100101 = 0x?? 2進数を16進数へ変換する。 まず、2進数の 0b100101を4つず右から箱にいれる。 箱にいれると… 10 0101 となる。 これを、以前講義で使用した16進数の表に照らし合わせてみる。 10 0101 ↓ ↓ 2 5 となる。 よって、答えは 0b100101 = 2 5 です。 B. 0d1111 = 0x?? 10進数を16進数に変換する。 まず、10進数1111を2進数に変換する。ひたすら2で割る。 2) 1111 … 1 ーーー 2) 555 … 1 ーーー 2) 277 … 1 ーーー 2) 138 … 0 ーーー 2) 69 … 1 ーーー 2) 34 … 0 ーーー 2) 17 … 1 ーーー 2) 8 … 0 ーーー 2) 4 … 0 ーーー 2) 2 … 0 ーーー 1 答えは、 0d1111 =10001010111 となる。 この2進数を、Aと同じように16進数の表に当てはめて答えをもとめる。 まず、右から4つずつ箱にいれていく。 箱にいれると… 100 0101 0111 となり、表に当てはめると… 100 0101 0111 ↓ ↓ ↓ 4 5 7 となる。 よって、答えは… 0d1111 = 0x 4 5 7 となる。 ☆参考☆ http://roy/~madoka/2007/r1/04/04-12-binary2.html ☆16進数のまとめ☆ 2.以下の少なくとも一問以上について解答せよ。data06.datを使用する。 聖伝 - RG VEDA - 阿修羅 あしゅら asyura 20面相にお願い!! 伊集院 玲 いじゅういん あきら izyuui akira 東京BABYLON 皇 昴流 すめらぎ すばる sumeragi subaru 学園特警デュカリオン 秋海洞 威 しゅうかいどう たけし syuukaidou takesi CLAMP学園探偵団 妹之山 残 いものやま のこる imonoyama nokoru X 司狼 神威 しろう かむい sirou kamui 新・春香伝 春香 ちゅにゃん tyunyann 不思議の国の美幸ちゃん 美幸 みゆき miyuki 魔法騎士レイアース 獅堂 光 しどう ひかる sidou hikaru 魔法騎士レイアース2 獅堂 光 しどう ひかる sidou hikaru カードキャプターさくら 木之本 桜 きのもと さくら kinomoto sakura CLOVER スウ すう suu すき。だからすき 旭 ひなた あさひ ひなた asahi hinata ANGELIC LAYER 鈴原 みさき すずはら みさき suzuhara misaki 合法ドラッグ 栩堂 風疾 くどう かざはや kudou kazahaya ちょびっツ 本須和 秀樹 もとさわ ひでき motosawa hideki ツバサ -RESERVoir CHRoNiCLE - 小狼 しゃおらん syaorann xxxHOLIC 壱原 侑子 いちはら ゆうこ itihara yuuko A.該当するデータ一行を表示させるプログラム answer1.rb, answer2.rb, ... を作る。 ★ 検索パターン1★ 文字列の中に「魔」という文字が入っている行を検索したい。 この場合プログラムは… #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /魔/e =~ data06 # もしもdata06.datのなかに「魔」の文字があったら print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend となるはずはずである。この場合、検索されるものは… 魔法騎士レイアース 獅堂 光 しどう ひかる sidou hikaru 魔法騎士レイアース2 獅堂 光 しどう ひかる sidou hikaru 上の2つだと思われる。 ★検索パターン2★ 文字列の中で「京」の文字はわかるのだが他の文字が分からないとき。 この場合のプログラムは… #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /東?京/ =~ data06 # 直前の 1 文字があってもなくてもよい print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend となるはずである。この場合検索されるのは… 東京BABYLON 皇 昴流 すめらぎ すばる sumeragi subaru だと思われる。 ★検索パターン3★ Cが付いて AMPも付くということが分かっている時の検索。 この場合のプログラムは… #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /C.AMP/e =~ data06 # もしもdata06.datの中でC.AMPが含まれるもの print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend となるはずである。この場合検索されるのは… CLAMP学園探偵団 妹之山 残 いものやま のこる imonoyama nokoru だと思われる。 ★検索パターン4★ 行の中に0から9までの数字が含まれているものを検索する。 この場合のプログラムは… #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /[0-9]/ =~ data06 # もしもdata06.datのなかにカタカナの含まれる行 print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend となるはずである。この場合検索されるのは… 20面相にお願い!! 伊集院 玲 いじゅういん あきら izyuui akira 魔法騎士レイアース2 獅堂 光 しどう ひかる sidou hikaru の2つだと思われる。 ★検索パターン5★ 行の中にAからZまでの大文字英語が含まれているものを検索する。 この場合のプログラムは… #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /[A-Z]/e =~ data06 # もしもdata06.datのなかに大文字英語があったら print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend となるはずである。この場合検索されるのは… 聖伝 - RG VEDA - 阿修羅 あしゅら asyura 東京BABYLON 皇 昴流 すめらぎ すばる sumeragi subaru CLAMP学園探偵団 妹之山 残 いものやま のこる imonoyama nokoru X 司狼 神威 しろう かむい sirou kamui CLOVER スウ すう suu ANGELIC LAYER 鈴原 みさき すずはら みさき suzuhara misaki ツバサ -RESERVoir CHRoNiCLE - 小狼 しゃおらん syaorann xxxHOLIC 壱原 侑子 いちはら ゆうこ itihara yuuko の8つだと思われる。 ☆検索結果&考察☆ ★検索パターン1★ <プログラム> #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /魔/e =~ data06 # もしもdata06.datのなかに「魔」の文字があったら print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend <検索結果> irsv{c106164}% ./answer1.rb data06.dat [~/Ruby] 魔法騎士レイアース 獅堂 光 しどう ひかる sidou hikaru 魔法騎士レイアース2 獅堂 光 しどう ひかる sidou hikaru <考察> 検索した結果、上記のような検索結果が出た。行の初めに「魔」という文字 がきちんと入っている。また、この2つ以外に「魔」という文字が data06.datのなかでは使われていないので、検索は成功していると思う。 ★検索パターン2★ <プログラム> #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /東?京/ =~ data06 # 直前の 1 文字があってもなくてもよい print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend <検索結果> irsv{c106164}% ./answer2.rb data06.dat [~/Ruby] 東京BABYLON 皇 昴流 すめらぎ すばる sumeragi subaru <考察> 検索した結果、上記のような結果が検索された。きちんと行の中に「京」と いう文字が入っている。また、data06.datのなかで「京」の文字が使用され ているのは表示されたものしかないため、この検索も成功していると思う。 ★検索パターン3★ <プログラム> #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /C.AMP/e =~ data06 # もしもdata06.datの中でC.AMPが含まれるもの print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend <検索結果> irsv{c106164}% ./answer3.rb data06.dat [~/Ruby] CLAMP学園探偵団 妹之山 残 いものやま のこる imonoyama nokoru <考察> 検索した結果、上記のように表示された。C.AMPという文字からきちんと 「CLAMP」という文字を検索してきている。「L」を任意の1文字として検索 しているという事になる。「CLAMP」という文字以外、Cを含みAMPと使われる ものはdata06.datの中には無いことから、この検索も成功していると思う。 ★検索パターン4★ <プログラム> #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /[0-9]/ =~ data06 # もしもdata06.datのなかにカタカナの含まれる行 print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend <検索結果> irsv{c106164}% ./answer4.rb data06.dat [~/Ruby] 20面相にお願い!! 伊集院 玲 いじゅういん あきら izyuui akira 魔法騎士レイアース2 獅堂 光 しどう ひかる sidou hikaru <考察> 検索した結果、上記のように表示された。2と0がきちんと表示された2つ含 まれている。数字が含まれる行は、この2つ以外に無いことからこの検索は 成功していると思う。 ★検索パターン5★ <プログラム> #!/usr/koeki/bin/ruby while data06 = gets # data06.datから結果をgetsしてこい if /[A-Z]/e =~ data06 # もしもdata06.datのなかに大文字英語があったら print data06 # data06.datからprintしろ end # whileに対応するend end # ifに対応するend <検索結果> irsv{c106164}% ./answer5.rb data06.dat [~/Ruby] 聖伝 - RG VEDA - 阿修羅 あしゅら asyura 東京BABYLON 皇 昴流 すめらぎ すばる sumeragi subaru CLAMP学園探偵団 妹之山 残 いものやま のこる imonoyama nokoru X 司狼 神威 しろう かむい sirou kamui CLOVER スウ すう suu ANGELIC LAYER 鈴原 みさき すずはら みさき suzuhara misaki ツバサ -RESERVoir CHRoNiCLE - 小狼 しゃおらん syaorann xxxHOLIC 壱原 侑子 いちはら ゆうこ itihara yuuko <考察> 検索した結果、上記のように表示された。どの行にも大文字英語が含まれて いる。その他の行には大文字英語は使われていない。なのでこの検索は成功 していると思われる。 B.上記の問題で、入力した項目と、 出力される項目が異なるように作れ。 ●検索パターン1● キャラクター名を入力すると、そのキャラクターが出ているマンガが検索さ れる。 この場合のプログラムは… #!/usr/koeki/bin/ruby STDERR.print("キャラクター名を入力 : ") pattern = STDIN.gets.chomp request = Regexp.new(pattern, true, "e") printf("%sが出ているマンガ\n",pattern) while data06 = gets if request =~data06 # print data06 if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ data06 printf("%s\n", $1) end end end となるはずである。このプログラムでsumeragi subaruを検索して表示されるのは… キャラクター名を入力 : sumeragi subaru sumeragi subaruが出ているマンガ 東京BABYLON だと思われる。 ◯検索結果&考察◯ ●検索パターン1● <プログラム> #!/usr/koeki/bin/ruby STDERR.print("キャラクター名を入力 : ") #検索するキャラクター名の入力表示 pattern = STDIN.gets.chomp request = Regexp.new(pattern, true, "e") printf("%sが出ているマンガ\n",pattern #入力したキャラクター名を表示させる while data06 = gets #data06からgetsしてこい if request =~data06 #data06から探してくる # print data06 if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ data06 printf("%s\n", $1) #検索した結果を表示させろ end #if(2)の終わり end #if(1)の終わり end #whileの終わり <検索結果> irsv{c106164}% ./answer1_b1.rb data06.dat [~/Ruby] キャラクター名を入力 : sumeragi subaru sumeragi subaruが出ているマンガ 東京BABYLON <考察> 検索した結果、上記のような検索結果が出た。sumeragi subaruと検索し、東 京BABYLONが検索されているのでこの検索は成功していると思う。 E.前問で、起動時にデータを読み込まずして検索できるよう改良したinput_b.rb を作る 阿修羅と入力して聖伝を検索してみる。 <プログラム> #!/usr/koeki/bin/ruby STDERR.print "検索 : " #検索入力 pattern = STDIN.gets.chomp request = Regexp.new(pattern, true, "e") open("data06.dat","r") do |clamp| #ファイルを指定 while data06 = clamp.gets #data06から変数をgetsしてこい if request =~data06 #data06から探してこい # print data06 if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ data06 printf("%s\n", $1) #結果表示 end #if(2)の終わり end #if(1)の終わり end #whileの終わり end #openの終わり <予想検索結果> 検索:阿修羅 聖伝 <検索結果> irsv{c106164}% ./input_b.rb [~/Ruby] 検索 : 阿修羅 聖伝 <考察> 予想検索結果と検索結果が同じなので成功していると思います。 3. 感想。 今回のレポートでは、2-Aの問題を頑張りました。やっているうちに、プロ グラムの扱い方や、レポートの書き方が少しずつですがわかって来ました。 プログラムの一部が違うことで、実行しなかった時はとてもあせりましたが 一つ一つ間違いを直し、きちんと実行された時は充実した気持ちになりまし た。次の講義もきちんと内容を理解し、レポートも頑張りたいと思います。