第6回 基礎プログラミング I レポート課題 氏名:伊藤 彩 学籍番号:c1090207 語学クラス:中国語1 コース(系):政策 1.筆記問題 0bは2進法表示、0xは16進法表示、0dは10進法表示。 A. 誕生日: 1990,07,15 10進数(0d)に直すと、0d19,0d90,0d07,0d15 となる。 ・2進数(0b)に直す。 10進数を2進数に直すためには、10進数の数字を2で割っていく。このときに出る 余りが重要である。 計算で出た余りを逆から読むと2進数の値が出る。 0d19を0bに変換する。 19 / 2 = 9 余り 1 9 / 2 = 4 余り 1 4 / 2 = 2 余り 0 2 / 2 = 1 余り 0 1 / 2 = 0 余り 1 よって、0d19 = 0b10011 となる。 0d90を0bに変換する。 90 / 2 = 45 余り 0 45 / 2 = 22 余り 1 22 / 2 = 11 余り 0 11 / 2 = 5 余り 1 5 / 2 = 2 余り 1 2 / 2 = 1 余り 0 1 / 2 = 0 余り 1 よって、0d90 = 0b1011010 となる。 0d07を0bに変換する。 7 / 2 = 3 余り 1 3 / 2 = 1 余り 1 1 / 2 = 0 余り 1 よって、0d07 = 0b111 となる。 0d15を0bに変換する。 15 / 2 = 7 余り 1 7 / 2 = 3 余り 1 3 / 2 = 1 余り 1 1 / 2 = 0 余り 1 よって、0d15 = 0b1111 となる。 10進数(0d)から2進数(0b)に変換した結果をまとめると次の通りになる。 0d19=0b10011 0d90=0b1011010 0d07=0b111 0d15=0b1111 ・16進数(0x)に直す。 上で変換した2進数(0b)を用いる。 10進数(0d)を16進数(0x)に直すためには、10進数の数字を16で割っていき、 余りを逆から読んでいく方法もある。 今回は先に変換してある2進数を用いるので、区切って考える変換の仕方の方が 効率が良いと思ったため、対応表を参考にしながら変換していくこととする。 0d19を0xに変換する。 0d19 = 0b10011 10011 = 1,0011 1 = 1 0011 = 3 よって、0d19 = 0x13 となる。 0d90を0xに変換する。 0d90 = 0b1011010 1011010 = 101,1010 101 = 5 1010 = a よって、0d90 = 5a となる。 0d07を0xに変換する。 0d07 = 0b111 111 = 7 よって、0d07 = 0x7 となる。 0d15を0xに変換する。 0d15 = 0b1111 1111 = f よって、0d15 = f となる。 10進数(0d)から16進数(0x)に変換した結果をまとめると次の通りになる。 0d19=0x13 0d90=5a 0d07=0x7 0d15=f B. 名前: 伊藤 彩 (Ito Aya) ASCIIコード表を参考にして変換する。 I = 0x49 t = 0x74 o = 0x6f A = 0x41 y = 0x79 a = 0x61 よって、私の名前を16進数で表すと 0x49, 0x74, 0x6f, 0x41, 0x79, 0x61 となる。 2.プログラ厶問題 A.データ内容の説明 チョコレートが好きなので、チョコレート菓子の検索ができるようにした。製品 名とローマ字、ひらがな表記、会社名と製造国をデータとした。 B.作成したデータファイル #製品名 #ローマ字表記 #会社 #製造国 #ひらがな表記 チョコボール Choko bo-ru 森永製菓 日本 ちょこぼーる 小枝 Koeda 森永製菓 日本 こえだ コアラのマーチ Koara no ma-chi ロッテ 日本 こあらのまーち ダース Da-su 森永製菓 日本 だーす たけのこの里 Takenoko no yama 明治製菓 日本 たけのこのさと パイの実 Pai no mi ロッテ 日本 ぱいのみ コロガリータ Korogari-ta ロッテ 日本 ころがりーた いちごつみ Itigotumi ロッテ 日本 いちごつみ キットカット Kitkat ネスレ 日本 きっとかっと ヤンヤンつけボー Yanyan tukebo- 明治製菓 日本 やんやんつけぼー チロルチョコ Chiroru choko チロルチョコ 日本 ちろるちょこ きのこのやま Kinoko no yama 明治 日本 きのこのやま C.目的の説明 普段よく食べているチョコレート菓子がどこの会社で作られているのか。また、 それらしい単語は聞いたことはあるが、製品名がよく思い出せない、本当にその 製品は存在しているのか?というときに検索して調べられるようにした。 D.検索パターン、E.実行結果、F.結果の考察 検索パターン1 データを cat で実行するとどうなるか? ★作成したデータが全て表示されると予想できる。全てが表示されなかった場合は正しく実行されたとはいえない。 実行結果 pan{c109020}% cat data06.dat [~/Ruby] #製品名 #ローマ字表記 #会社 #製造国 #ひらがな表記 チョコボール Choko bo-ru 森永製菓 日本 ちょこぼーる 小枝 Koeda 森永製菓 日本 こえだ コアラのマーチ Koara no ma-chi ロッテ 日本 こあらのまーち ダース Da-su 森永製菓 日本 だーす たけのこの里 Takenoko no yama 明治製菓 日本 たけのこのさと パイの実 Pai no mi ロッテ 日本 ぱいのみ コロガリータ Korogari-ta ロッテ 日本 ころがりーた いちごつみ Itigotumi ロッテ 日本 いちごつみ キットカット Kitkat ネスレ 日本 きっとかっと ヤンヤンつけボー Yanyan tukebo- 明治製菓 日本 やんやんつけぼー チロルチョコ Chiroru choko チロルチョコ 日本 ちろるちょこ きのこのやま Kinoko no yama 明治 日本 きのこのやま 考察 作成したデータファイルの中身が全部表示された。結果画面より、正しく実行されたということがわかる。 検索パターン2 商品名に漢字が使われているものが知りたいときは? ★ "egrep"を用いて検索する。常用漢字のなかから見つけ出したいので、[亜-腕]と 入力して実行すればよいと考えた。作成したデータファイル内には漢字表記のも のは一つしかないので、「小枝」が結果画面に表示されれば、この検索方法には 誤りがないものとして考えられる。 実行結果 pan{c109020}% egrep "^[亜-腕]" data06.dat [~/Ruby] 小枝 Koeda 森永製菓 日本 こえだ 考察 実行結果より、「小枝」がきちんと表示されたことから、検索に誤りはなく、正 しく実行されたということがわかる。 検索パターン3 ロッテのお菓子の種類が知りたい。どのような検索方法をすればよいか? ★"egrep"を用いて検索する。作成したファイル内には、ロッテの商品は4つある。 4つ全て表示されれば、検索方法に誤りがないものとして考えられる。4つ全てが 検索されなかった場合、または他の会社の商品が表示された場合は正しく検索さ れたとはいえない。 "ロッテ"という会社名を入力すれば、検索が行なわれると考え、実行してみた。 実行結果 pan{c109020}% egrep "ロッテ" data06.dat [~/Ruby] コアラのマーチ Koara no ma-chi ロッテ 日本 こあらのまーち パイの実 Pai no mi ロッテ 日本 ぱいのみ コロガリータ Korogari-ta ロッテ 日本 ころがりーた いちごつみ Itigotumi ロッテ 日本 いちごつみ 考察 実行結果より、4つのロッテの商品名が正しく表示されたこと、他の会社の商品 が紛れていないことから、正しく実行されたといえる。 この検索では、検索パターン2のように、数ある中からひろう(常用漢字の中から見つけ るなど)ものではないため、検索パターン2のように範囲を指定しなかった。 "ロッテ"という検索目的単語があったため、egrep のあとには、ダブルコーテー ションでくくるだけで正しく表示される。 もし、検索パターン2の入力の仕方で"ロッテ"を検索してみたとしたらどうなる のかやってみた。以下のような結果となった。 pan{c109020}% egrep "^[ロッテ]" data06.dat [~/Ruby] pan{c109020}% [~/Ruby] "ロッテ"の中から取りだすものはないため、実行してもなにも表示されなかった。 何を調べるかによって検索パターンと入力方法が違ってくるので注意したい。 検索パターン4 ローマ字表記した時に、s がはいる商品を検索したいときはどうすればよいか? ★検索パターンと同様に考える。egrep の後に検索したい文字(ここでは s )を ダブルコーテーションでくくって入力する。作成したファイル内には s の含ま れる商品は「ダース」しかない。実行して、「ダース」が表示されれば、正しく 検索されたと考えられる。 実行結果 pan{c109020}% egrep "s" data06.dat [~/Ruby] ダース Da-su 森永製菓 日本 だーす 考察 実行結果より、s が含まれる商品がきちんと表示されたことから、正しく検索さ れたといえる。 検索パターン5 やんやん なんとか ぼー というお菓子を探したい。しかし、「ぼー」とのばす のか、「ぼう」というのかもわからない。検索するにはどうすればいいか? ★「ぼー」とのばす商品または、「ぼう」と商品名につくお菓子を全て検索 すれば表示されると考えた。ファイル内には、「ヤンヤンつけボー」の他に 「チョコボール」もある。しかし目的は、「やんやん なんとか ぼー(/ぼう?)を 見つけ出すことなので複数の商品が表示されてもかまわないと考えた。 egrep のあとに正規表現の"|"を用いて、"ぼー"と"ぼう"を入力してみることと する。"|"は、「または」という意味になる。 「チョコボール」と「ヤンヤンつけボー」がどちらも表示されれば、検索の仕方 には誤りはないと考えられる。 実行結果 pan{c109020}% egrep "ぼー|ぼう" data06.dat [~/Ruby] チョコボール Choko bo-ru 森永製菓 日本 ちょこぼーる ヤンヤンつけボー Yanyan tukebo- 明治製菓 日本 やんやんつけぼー 考察 実行結果より、商品が2種類表示されたことで、検索の仕方に誤りはない。 この結果から、"やんやん なんとか ぼー" は "ヤンヤンつけボー"だということ が確認できた。また、"ぼー" とのばす商品名であったということもわかった。 G.まとめ、きづいたこと 検索するにあたっては、より効率的な方法で検索すべきだと思った。 検索パターン3でも実験してみたが、入力の仕方もしっかり覚えている必 要がある。入力の方法と何を検索するかを明確にしてから実行しなければ検索は 失敗する。 3.感想 検索させるのが楽しかった。普段使っているものの仕組がわかっておもしろかっ た。自分の持ち物では、パソコンが正規表現しているものだと思った。パソコ ン自体の機能にも働いているとも思うし、インターネットでの検索機能でも使 われている。ケータイでもサイト検索や、メール機能の中の予測変換機能も正 規表現されているものだと思った。今回は少なかったが、もっとたくさんの meta characterの種類を用いて実行して、技術を身につけていきたい。 参考文献 ・基礎プログラミング I 第6回 「正規表現と検索」1文字違い(講義ノート) http://roy/~madoka/2010/r1/06/06_06_theme_04_onecharacter.html 西村まどか先生 ・基礎プログラミング I 第6回 「正規表現と検索」ひらがなを検索するには(講 義ノート) http://roy/~madoka/2010/r1/06/06_11_theme_08_hiragana.html 西村まどか先生 ・基礎プログラミング I 第6回 「正規表現と検索」行頭や行末で調べたいとき (講義ノート) 西村まどか先生 ・ようこそ!森永株式会社へ http://www.morinaga.co.jp/index.html 森永株式会社 ・明治製菓 http://www.meiji.co.jp/ 明治製菓株式会社 ・2進数、16進数と10進数 http://www.asahi-net.or.jp/~ax2s-kmtn/ref/bdh.html 作者不明 共同学習者 小松由里 / 酒井春香 / 佐竹聡美 / 小松志保