第6回 基礎プログラミング I レポート課題 氏名:小松由里 学籍番号:c109067 語学クラス:中国語1 コース(系):環境サイエンス 1、筆記問題 A、 私の誕生日は 1990年 6月 30日 です。 これをまず10進数になおすと、 0d19、0d90、0d6、0d30 0d19 <2進数になおす> 19 / 2 = 9 …余り 1 9 / 2 = 4 …余り 1 4 / 2 = 2 …余り 0 2 / 2 = 1 …余り 0 1 / 2 = 0 …余り 1 下から読み上げると 10011 よって、 0d10011 となる。 <16進数になおす> 0d10011 を右端から4桁ずつ区切ると 1、0011 になる。 16進数になおすと 1、3 よって、0x13となる。 0d90 <2進数になおす> 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 下から読み上げると 1011010 よって、0d1011010 となる。 <16進数になおす> 0d1011010 を右端から4桁ずつ区切ると 101、1010 になる。 16進数になおすと よって、0x5aとなる。 0d6 <2進数になおす> 6 / 2 = 3…余り0 3 = 1…余り1 1 / 2 = 0…余り1 下から読み上げると 110 よって、 0d110 となる。 <16進数になおす> 0d110 を右端から4桁ずつ区切ると 110 になる。 16進数になおすと 6 よって、0x6となる。 0d30 <2進数になおす> 30 / 2 = 15…余り0 15 / 2 = 7…余り 1 7 / 2 = 3…余り 1 3 / 2 = 1…余り 1 1 / 2 = 0…余り 1 下から読み上げると 11110 よって、 0d11110 となる。 <16進数になおす> 0d11110 を右端から4桁ずつ区切ると 1、1110 になる。 16進数になおすと 1、e よって、0x1eとなる。 ****************************************************************************** B、 アルファベットで名前を書くと Komatsu Yuri となるので、16進数になおすと K =0x4b o =0x6f m =0x6d a =0x61 t =0x74 s =0x73 u =0x75 Y =0x59 u =0x75 r =0x72 i =0x69 となる。 ****************************************************************************** 2、プログラム問題 A、作成したデータ内容 漫画 スラムダンクのキャラクターの名前・所属高校名で作成しました。 B、データ Sakuragi Hanamiti さくらぎはなみち 桜木花道 湘北高校 PF Rukawa Kaede るかわかえで 流川 楓 湘北高校 SF Akagi Takenori あかぎたけのり 赤木 剛憲 湘北高校 C Miyagi Ryo-ta みやぎりょーた 宮城 リョータ 湘北高校 PG Mitsui Hisashi みついひさし 三井 寿 湘北高校 SG Kogure Kiminobu こぐれきみのぶ 木暮 公延 湘北高校 SF Maki Shiniti まきしんいち 牧 紳一 海南大附属高校 G Jin Souitirou じんそういちろう 神 宗一郎 海南大附属高校 GF Kiyota Nobunaga きよたのぶなが 清田 信長 海南大附属高校 GF Hanagata Tooru はながたとおる 花形 透翔 陽高校 C Fujima Kenji ふじまけんじ 藤真 健司 翔陽高校 PG Hasegawa Kazusi はせがわかずし 長谷川 一志 翔陽高校 F Uozumi Jyun うおずみじゅん 魚住 純 陵南高校 C Sendou Akira せんどうあきら 仙道 彰 陵南高校 PG Fukuda Kittyou ふくだきっちょう 福田 吉兆 陵南高校 PF Aida Hikoiti あいだひこいち 相田 彦一 陵南高校 PG Sawakita Eiji さわきたえいじ 沢北 栄治 山王工業高校 GF Fukatu Kazunari ふかつかずなり 深津 一成 山王工業高校 PG Kawata Mikio かわたみきお 河田 美紀男 山王工業高校 C Kawata Masasi かわたまさし 河田 雅史 山王工業高校 SF Minami Tsuyoshi みなみつよし 南 烈 豊玉高校 SF Kishimoto Minori きしもとみのり 岸本 実理 豊玉高校 PF Iwata Mitsuaki いわたみつあき 岩田 三秋 豊玉高校 C Araki Kazuo あらきかずお 荒木 一雄 三浦台高校 PG Kawasaki Akio かわさきあきお 川崎 昭雄 三浦台高校 C Murasame Kengo むらさめけんご 村雨 健吾 三浦台高校 SF C、 何高校に所属しているのか。また、名前をひらがな・ローマ字で調べることや、 ポジションを調べることができます。 D、分類に使用した検索パターン 8つの検索パターンを考えました。 ****************************************************************************** a、 海南大附属高校の選手が思い出せないので誰がいるのか知りたい。 予想 海南大附属高校の選手は3人いるので、3人が表示されるはず。”海南大附属” というワードがあるデータが検索される。 なので、egrep "海南大附属高校" data06.dat と入力した。 実行結果 pan{c109067}% egrep "海南大附属高校" data06.dat [~/Ruby] Maki Shiniti まきしんいち 牧 紳一 海南大附属高校 G Jin Souitirou じんそういちろう 神 宗一郎 海南大附属高校 GF Kiyota Nobunaga きよたのぶなが 清田 信長 海南大附属高校 GF 考察 データには海南大附属高校の選手が 3人いるので、結果合っている。 ****************************************************************************** b、 "Mi"から名前が始まる選手が複数いたが、誰なのか知りたい。 予想 ”Mi”から名前が始まる選手は3人いるので3人が表示されるはず。ローマ字で表記 されている名字から検索される。 なので egrep "^Mi" data06.dat と入力した。 実行結果 pan{c109067}% egrep "^Mi" data06.dat [~/Ruby] Miyagi Ryo-ta みやぎりょーた 宮城 リョータ 湘北高校 PG Mitsui Hisashi みついひさし 三井 寿 湘北高校 SG Minami Tsuyoshi みなみつよし 南 烈 豊玉高校 SF 考察 結果3人の選手が該当した。"み"から名前が始まるのは3人しかいないので合って いる。 ****************************************************************************** c、 G、PG、SGのポジションの選手を一度で調べたい。 予想 最後に”G”がつくポジションの選手全員が表示されるはず。データの一番最後の ワードから検索される。 なので egrep "G$" data06.dat と入力した。 実行結果 pan{c109067}% egrep "G$" data06.dat [~/Ruby] Miyagi Ryo-ta みやぎりょーた 宮城 リョータ 湘北高校 PG Mitsui Hisashi みついひさし 三井 寿 湘北高校 SG Maki Siniti まきしんいち 牧 紳一 海南大附属高校 G Fujima Kenji ふじまけんじ 藤真 健司 翔陽高校 PG Sendou Akira せんどうあきら 仙道 彰 陵南高校 PG Aida Hikoiti あいだひこいち 相田 彦一 陵南高校 PG Fukatu Kazunari ふかつかずなり 深津 一成 山王工業高校 PG Araki Kazuo あらきかずお 荒木 一雄 三浦台高校 PG 考察 G、PG、SGのポジションの選手が全員表示されたので、合っている。 ****************************************************************************** d、 データを見ていたら、「し」を ローマ字"shi"で統一していたつもりが、"si"で 打ち込んでしまっている名前もあることに気が付いた。 名前の選手全員の名前のローマ字を確認したい。 予想 ”s[hi]”で検索するので、名前に「し」が付く選手全員が表示されるはず。 なので egrep "s[ih]" data06.dat と入力した。 実行結果 pan{c109067}% egrep "s[ih]" data06.dat [~/Ruby] Mitsui Hisashi みついひさし 三井 寿 湘北高校 SG Hasegawa Kazusi はせがわかずし 長谷川 一志 翔陽高校 F Kawata Masasi かわたまさし 河田 雅史 山王工業高校 SF Minami Tsuyoshi みなみつよし 南 烈 豊玉高校 SF Kishimoto Minori きしもとみのり 岸本 実理 豊玉高校 PF 考察 長谷川 一志 、河田 雅史 3人の名前のローマ字を打ち間違えていることが分かっ た。しかし、牧 紳一(まきしんいち)が表示されなかった。"si"が"Si"と大文字 が含まれていたため表示されなかったようだ。 ****************************************************************************** e、 d の検索パターンで「し」のつく名前の選手が全員表示されなかったので、全員表示さ れるようにする。 予想 -i ”s[ih]”で検索するので、今度はオプション -i によって小文字が区別されない ため、「し」のつく名前の選手全員が検索されるはず。 なので、egrep -i "s[ih]" data06.dat と入力した。 実行結果 pan{c109067}% egrep -i "s[ih]" data06.dat [~/Ruby] Mitsui Hisashi みついひさし 三井 寿 湘北高校 SG Maki Shiniti まきしんいち 牧 紳一 海南大附属高校 G Hasegawa Kazusi はせがわかずし 長谷川 一志 翔陽高校 F Kawata Masasi かわたまさし 河田 雅史 山王工業高校 SF Minami Tsuyoshi みなみつよし 南 烈 豊玉高校 SF Kishimoto Minori きしもとみのり 岸本 実理 豊玉高校 PF 考察 オプション -i を付けたことにより、小文字を区別しなくなったため、「し」が 名前に付く選手が全員表示された。 ****************************************************************************** f、 名字の頭に"Kawa"がつき、"a"も含まれている選手を探す。 予想 名字の頭に”Kawa”がつき、”a”が含まれている選手が表示されるはず。名字の中から 検索される。 なので、egrep "Kawa.a" data06.dat と入力した。 実行結果 pan{c109067}% egrep "Kawa.a" data06.dat [~/Ruby] Kawata Mikio かわたみきお 河田 美紀男 山王工業高校 C Kawata Masasi かわたまさし 河田 雅史 山王工業高校 SF Kawasaki Akio かわさきあきお 川崎 昭雄 三浦台高校 C 考察 名字に"Kawa"と"a"が含まれる選手全員が表示されたので合っている。 ****************************************************************************** g、 データに"A"から"E"までのローマ字(大文字)が含まれる選手を表示させる。 予想 ”A-Z”なので、選手全員のデータが表示されるはず。データ全体からAからZの文字が 検索される。 なので、egrep "[A-Z]" data06.dat と入力した。 実行結果 pan{c109067}% grep "[A-Z]" data06.dat [~/Ruby] Sakuragi Hanamiti さくらぎはなみち 桜木花道 湘北高校 PF Rukawa Kaede るかわかえで 流川 楓 湘北高校 SF Akagi Takenori あかぎたけのり 赤木 剛憲 湘北高校 C Miyagi Ryo-ta みやぎりょーた 宮城 リョータ 湘北高校 PG Mitsui Hisashi みついひさし 三井 寿 湘北高校 SG Kogure Kiminobu こぐれきみのぶ 木暮 公延 湘北高校 SF Maki Shiniti まきしんいち 牧 紳一 海南大附属高校 G Jin Souitirou じんそういちろう 神 宗一郎 海南大附属高校 GF Kiyota Nobunaga きよたのぶなが 清田 信長 海南大附属高校 GF Hanagata Tooru はながたとおる 花形 透翔 翔陽高校 C Fujima Kenji ふじまけんじ 藤真 健司 翔陽高校 PG Hasegawa Kazusi はせがわかずし 長谷川 一志 翔陽高校 F Uozumi Jyun うおずみじゅん 魚住 純 陵南高校 C Sendou Akira せんどうあきら 仙道 彰 陵南高校 PG Fukuda Kittyou ふくだきっちょう 福田 吉兆 陵南高校 PF Aida Hikoiti あいだひこいち 相田 彦一 陵南高校 PG Sawakita Eiji さわきたえいじ 沢北 栄治 山王工業高校 GF Fukatu Kazunari ふかつかずなり 深津 一成 山王工業高校 PG Kawata Mikio かわたみきお 河田 美紀男 山王工業高校 C Kawata Masasi かわたまさし 河田 雅史 山王工業高校 SF Minami Tsuyoshi みなみつよし 南 烈 豊玉高校 SF Kishimoto Minori きしもとみのり 岸本 実理 豊玉高校 PF Iwata Mitsuaki いわたみつあき 岩田 三秋 豊玉高校 C Araki Kazuo あらきかずお 荒木 一雄 三浦台高校 PG Kawasaki Akio かわさきあきお 川崎 昭雄 三浦台高校 C Murasame Kengo むらさめけんご 村雨 健吾 三浦台高校 SF 考察 AからZまでのローマ字(大文字)が含まれている選手(全員)が表示された。 ****************************************************************************** h、 名前に「一」「三」の漢字が含まれる名前の選手を調べる。 予想 名前に「一」「三」が含まれる名前の選手全員が表示される。 実行結果 pan{c109067}% egrep "一|三" data06.dat [~/Ruby] Mitsui Hisashi みついひさし 三井 寿 湘北高校 SG Maki Shiniti まきしんいち 牧 紳一 海南大附属高校 G Jin Souitirou じんそういちろう 神 宗一郎 海南大附属高校 GF Hasegawa Kazusi はせがわかずし 長谷川 一志 翔陽高校 F Aida Hikoiti あいだひこいち 相田 彦一 陵南高校 PG Fukatu Kazunari ふかつかずなり 深津 一成 山王工業高校 PG Iwata Mitsuaki いわたみつあき 岩田 三秋 豊玉高校 C Araki Kazuo あらきかずお 荒木 一雄 三浦台高校 PG Kawasaki Akio かわさきあきお 川崎 昭雄 三浦台高校 C Murasame Kengo むらさめけんご 村雨 健吾 三浦台高校 SF 考察 名前に「一」「三」の漢字が含まれる名前の選手が表示されると思ったが、高校名に 「三」がふくまれる高校名もあったので予想していた選手以外の選手も表示された。 ****************************************************************************** E、結果のまとめ 自分が予想した通りになるものもあったが、ならないものもあった。予想通りにならな かったのもの利用した正規表現を再度確認した後で原因を発見することが多かった。 d の検索パターン egrep "s[ih]" data06.dat では、”s[hi]”で検索するので、名前 に「し」が付く選手全員が表示されるはず。と予想を立てたが、この検索では小文字し か読み取られないため、オプション -i をつけ egrep -i "s[ih]" data06.dat で検索し、小文字を区別しないように設定しなければならなかった。 F、実行した結果 実行した結果は各検索パターンに示している。 G、利用した正規表現 ・” ”…コマンドラインでワードを指定する。 ・^…先頭の文字列のみ探す。 ・$…末尾の文字列のみ探す。 ・[ ]…[ ]で括られた文字のどれかが一致するものを探す。 ・-i …小文字を区別しない。 ・. …任意の一文字の候補を探す。 ・[文字1−文字2]…(文字1)から(文字2)の範囲の1文字すべて探す。 ・| …「または」の意味 まとめ 学んだこと . …任意の一文字の候補を取りだす。 ? …直前の文字が 0 または 1 回出現し、直前の文字は記号も可能。 * …出現は何回でもよい場合。 + …直前の文字が出現しなければならず、その出現は何回でもよい場合。 ^ …先頭の文字列のみ探して調べる。 $ …末尾の文字列のみ探して調べる。 | …「または」の意味。 ( ) …( ) 内で括られた条件を先に探す。 [ ] …[ ]で括られた文字のどれかが一致するものを取りだす。 [文字1-文字2] …(文字1)から(文字2)の範囲の 1 文字を全て取りだす。 [^(文字1)-(文字2)] …(文字1)-(文字2)の範囲以外の 1 文字を取り出す。 \s …空白を探し出す \S …空白以外を探し出す \d …[0-9] のこと。 \D …[^0-9] のこと。 egrep (-オプション) "文字列" データ …ファイルの中の文字列を調べるには egrep …オプション -i をつけると、小文字を区別しない。 感想 "自分の持ちものや考え方で正規表現を使用しているもの" 持ち物 パソコン、携帯電話、ウォークマン、電子辞書が挙げられる。 考え方 ・天気や気温によってその日に着る服を選ぶ。 ・しりとり ・レストランなどに行き、セットメニューを注文した際、ライスかパン/サラダか スープ を選択する。 などが挙げられるのではないかと思う。 検索のパターンを探す際、検索が出来たと思い、再度確認すると、これは他の検索を使 用した方が簡単に検索出来てしまうことが判明して、また考え直さなければならないと いうことが多く、なかなか次の検索パターンに進むことができなかった。また、正規表 現を調べれば調べる程、意味が分からなくなってしまい苦労した。 今後は、正規表現を組み合わせて検索を行なっていかなければならなくなるので、正規現 一つひとつの持っている意味を理解して今後取り組んでいきたい。 共同学習者 久保田 瑛一郎 青木 千紗 参考文献 西村 まどか 基礎プログラミング I 第6回 正規表現と検索 正規表現のレポートの体裁について http://roy/~madoka/2010/rpt/egrep.html 「うろ覚えの検索」 http://roy/~madoka/2010/r1/06/06_03_theme_01_patternmatching.html 「何回か繰り返されている文字を探したい」 http://roy/~madoka/2010/r1/06/06_04_theme_02_repetation.html 「いくつかある候補を探したい場合」 http://roy/~madoka/2010/r1/06/06_05_theme_03_or.html 「1 文字違い」 http://roy/~madoka/2010/r1/06/06_06_theme_04_onecharacter.html 「文字の種類を判別して探す」 http://roy/~madoka/2010/r1/06/06_07_theme_05_kind.html 広瀬 雄二 Ruby プログラミング 基礎講座 第5講 正規表現 P.54〜59 5-1 正規表現とは P.60〜66 5-2 正規表現の特殊文字 P.67〜69 5-3 正規表現検索の練習