第6回 基礎プログラミング I レポート課題 氏名:XXXXXXXX 学籍番号:c1090XXX 語学クラス:英語3 コース:政策マネジメント 1. A.私の誕生日を10進数で表すと、0d1991である。これを16進数と2進数で表 してみる。 まず、2進数で表してみる。10進数を2進数にするには、0d1991を2で割ってい く。 余り 2)1991 1 2) 995 1 2) 497 1 2) 248 0 2) 124 0 2) 62 0 2) 31 1 2) 15 1 2) 7 1 2) 3 1 2) 1 1 よって下から読むと、11111000111となる。 答えは0b11111000111となる。 次に16進数に変換する。10進数を16進数に変換するには、2つの方法がある。 1つは、10進数を直接16進数に変換する方法と、10進数を2進数に変換してか ら16進数に変換する方法がある。今日は、2進数にした後、16進数に変換する。 10進数を2進数にしたときの余りが、111111000111なので、16進数にするに は、11111000111を右から4桁毎に区切る。区切ってみると、 111、1100、0111と区切ることが出来る。これを16進数に変換すると、 111=7、1100=C、0111=7となる。 よって、答えは0x7C7となる。 B.私の名前をアルファベットで表すと、Takehiro Oikawaとなる。これを16進 数で表す。 T=54, a=61, k=6b, e=65, h=68, i=69, r=72, o=6f (名前) O=4f, i=69, k=6b, a=61, w=77, a=61(苗字) となる。 よって、答えは、0x5461656869726f4f696b617761である。 参考文献:Rubyプログラミング基礎高座/広瀬 雄二著 技術評論社 第8項:「16進数と10進数の変換」(ページ 104〜105) 基礎プログラミング I 第5回講義ノート/ 西村 まどか 「ASCII コード 表」:http://roy/~madoka/2010/r1/05/05_01_theme_01_asciicode.html 2. A.作成したデータの内容の説明 今回は、前回と同じようにサッカー選手でチーム名と英語表記を書いて検索し てみることにした。 B.データファイルの張りつけ:./data06.dat 選手 バルセロナ イニエスタ iniesta 選手 ミラン ピルロ pirlo 選手 インテル スナイデル sneijder 選手 チェルシー ドログバ drogba 選手 リバプール トーレス torres 選手 ローマ トニ toni 選手 ユベントス カンナバーロ cannavaro 選手 バルセロナ メッシ messi 選手 ミラン パト pato 選手 インテル エト− etoo 選手 チェルシー ランパード lampard 選手 リバプール ジェラード gerrard 選手 ローマ トッティ totti 選手 ユベントス デルピエロ delpiero C.どのような分類をしたいのか、目的についての説明 その選手がどのチームに所属しているのか、またそのチームにどんな選手 がいるのかを分類してみたい。 D.分類に使った検索パターンについて 6つの検索パターンを考えた。 a.egrep "選手" data06.datを実行する。予想は、全選手が検索 される。 b.egrep "iniesta|messi" data06.datを実行する。予想は、イニエスタ とメッシが検索される。 c. egrep "[e]" data06.datを実行する。予想は、英語表記で[e] が入っている選手を検索する。 d. egrep "t+o" data06.datを実行する。予想は、英語表記の名前にtのあ とにoがくる選手が検索される。 e. egrep "o$" data06.datを実行する。予想は、英語表記の最後の文字 が、[o]で終わる、ピルロ、カンナバーロ、パト、エトー、デルピエロ の5人が検索される。 f. egrep "インテル" data06.datを実行する。予想は、チームがインテル のエトー、スナイデルが検索される。 E.実行した結果 a. pan{c109030}% egrep "選手" data06.dat [~/Ruby] 選手 バルセロナ イニエスタ iniesta 選手 ミラン ピルロ pirlo 選手 インテル スナイデル sneijder 選手 チェルシー ドログバ drogba 選手 リバプール トーレス torres 選手 ローマ トニ toni 選手 ユベントス カンナバーロ cannavaro 選手 バルセロナ メッシ messi 選手 ミラン パト pato 選手 インテル エト− etoo 選手 チェルシー ランパード lampard 選手 リバプール ジェラード gerrard 選手 ローマ トッティ totti 選手 ユベントス デルピエロ b. pan{c109030}% egrep "iniesta|messi" data06.dat [~/Ruby] 選手 バルセロナ イニエスタ iniesta 選手 バルセロナ メッシ messi c. pan{c109030}% egrep "e" data06.dat [~/Ruby] 選手 バルセロナ イニエスタ iniesta 選手 インテル スナイデル sneijder 選手 リバプール トーレス torres 選手 バルセロナ メッシ messi 選手 インテル エト− etoo 選手 リバプール ジェラード gerrard 選手 ユベントス デルピエロ delpier d. pan{c109030}% egrep "t+o" data06.dat [~/Ruby] 選手 リバプール トーレス torres 選手 ローマ トニ toni 選手 ミラン パト pato 選手 インテル エト− etoo 選手 ローマ トッティ totti e. pan{c109030}% egrep "o$" data06.dat [~/Ruby] 選手 ミラン ピルロ pirlo 選手 ユベントス カンナバーロ cannavaro 選手 ミラン パト pato 選手 インテル エト− etoo f. pan{c109030}% egrep "インテル" data06.dat [~/Ruby] 選手 インテル スナイデル sneijder 選手 インテル エト− etoo F.結果の考察 a.予想どおり、全選手が検索されたので、このプログラムは正しく動いたと言 える。 b.予想どおり、イニエスタとメッシが検索できたが、プログラムが正しく動い たとは言えないので、egrep "sneijder|etoo data06.datを実行し、スナイ デルとエトーが検索されるか確認してみる。 pan{c109030}% egrep "sneijder|etoo" data06.dat [~/Ruby] 選手 インテル スナイデル sneijder 選手 インテル エト− etoo 実行した結果、スナイデルとエトーが検索されたので、このプログラムは正 しく動いたと言える。 c.予想どおり、英語表記に[e]が入っている選手が検索できたが、プログラム が正しく動いたとは言えないので、egrep "o" data06.datを実行し、英語 表記で"o"が入っている選手が検索されるか確認してみる。 pan{c109030}% egrep "o" data06.dat [~/Ruby] 選手 ミラン ピルロ pirlo 選手 チェルシー ドログバ drogba 選手 リバプール トーレス torres 選手 ローマ トニ toni 選手 ユベントス カンナバーロ cannavaro 選手 ミラン パト pato 選手 インテル エト− etoo 選手 ローマ トッティ totti 実行した結果、英語表記に[o]が入っている選手が検索できたので、 このプログラムは正しく動いたといえる。 d.予想どおり、tのあとにoが来る選手が検索できたが、このプログラムが正 しく動いたとは言えないので、egrep "e +s" data06.datを行い、プログラ ムが正しく動くか確認する。予想は、英語表記でeのあとにsが来る選手は、 トーレス、メッシ、イニエスタの3選手である。 pan{c109030}% egrep "e+s" data06.dat [~/Ruby] 選手 バルセロナ イニエスタ iniesta 選手 リバプール トーレス torres 選手 バルセロナ メッシ messi 実行した結果、英語表記に[e]のあとに[s]が来るトーレス、メッシ、イニ エスタの3選手が検索されたので、このプログラムは正しく動いたと言え る。 e.予想した通り、英語表記の最後に[o]が来る、選手が検索できたが、このプロ グラムが正しく動いているとは言えないので、egrep "r$" data06.datを行 い、英語表記の最後に[r]が来る選手を検索するようにする。予想では、最 後に[r]が来る選手はスナイデルだけなので、そうなるはずである。 pan{c109030}% egrep "r$" data06.dat [~/Ruby] 選手 インテル スナイデル sneijder 実行した結果、予想した通り、英語表記の最後に[r]が来るのはスナイデ ルだけだったので、このプログラムは正しく動いたと言える。 f. 予想した通り、インテルに所属している、スナイデルとエトーを検索でき たが、このプログラムが正しく動いているとは言えないので、egrep "バ ルセロナ" data06.datを実行し、バルセロナに所属している選手だけが、 検索できるか確認する。 pan{c109030}% egrep "バルセロナ" data06.dat [~/Ruby] 選手 バルセロナ イニエスタ iniesta 選手 バルセロナ メッシ messi 実行した結果、予想した通り、バルセロナに所属する選手だけを検索する ことができたので、このプログラムは正しく動いたと言える。 G.利用した正規表現 今回使用した正規表現は以下のものである。 +(plus):直前の文字が出現しなければならず、その出現は何回でも良い場合 のときに使う。 $(dollar):末尾の文字列のみ探して調べるときに使う。 |(vertical line):「または」の意味。ちなみにvertical lineの意味は垂直 線である。 [ ](braket):[ ]で括られた文字のどれかが一致するものを取りだすときに使 う。 3.感想:今回は検索をするプログラムを作ったが、自分の身の回りにも皇位lっ多 正規表現を使っているものがあるものを探してみた。例えば、携帯電話 はそうではないかと考えた。来襲も正規表現の続きなので、今回学んだ ことを忘れずに覚えておきたい。 参考文献:ウィキペディア http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8 イニエスタ:http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%B3%E3%83%89%E3%83%AC%E3%82%B9%E3%83%BB%E3%82%A4%E3%83%8B%E3%82%A8%E3%82%B9%E3%82%BF スナイデル: http://ja.wikipedia.org/wiki/%E3%83%B4%E3%82%A7%E3%82%B9%E3%83%AC%E3%82%A4%E3%83%BB%E3%82%B9%E3%83%8A%E3%82%A4%E3%83%87%E3%83%AB ピルロ:http://ja.wikipedia.org/wiki/%E3%83%94%E3%83%AB%E3%83%AD ドログバ :http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%AD%E3%82%B0%E3%83%90 トーレス:http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A7%E3%83%AB%E3%83%8A%E3%83%B3%E3%83%89%E3%83%BB%E3%83%88%E3%83%BC%E3%83%AC%E3%82%B9 トニ :http://ja.wikipedia.org/wiki/%E3%83%AB%E3%82%AB%E3%83%BB%E3%83%88%E3%83%8B カンナヴァーロ :http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%83%93%E3%82%AA%E3%83%BB%E3%82%AB%E3%83%B3%E3%83%8A%E3%83%B4%E3%82%A1%E3%83%BC%E3%83%AD メッシ:http://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%83%E3%82%B7 パト :http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AC%E3%82%B7%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AC%E3%83%BB%E3%83%AD%E3%83%89%E3%83%AA%E3%82%B2%E3%82%B9%E3%83%BB%E3%83%80%E3%83%BB%E3%82%B7%E3%82%A6%E3%83%B4%E3%82%A1 エトー:http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%88%E3%83%BC ランパード :http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%B3%E3%82%AF%E3%83%BB%E3%83%A9%E3%83%B3%E3%83%91%E3%83%BC%E3%83%89 ジェラード :http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82%A3%E3%83%BC%E3%83%B4%E3%83%B3%E3%83%BB%E3%82%B8%E3%82%A7%E3%83%A9%E3%83%BC%E3%83%89 トッティ :http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%83%E3%83%86%E3%82%A3 デルピエロ :http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%AB%E3%83%94%E3%82%A8%E3%83%AD 第6回 基礎プログラミング I 講義ノート/西村 まどか http://roy/~madoka/2010/r1/06/ 「何回か繰り返されている文字を探したい」 http://roy/~madoka/2010/r1/06/06_04_theme_02_repetation.html 「いくつかある候補を探したい場合」 http://roy/~madoka/2010/r1/06/06_05_theme_03_or.html space alc:http://www.alc.co.jp/ vertical:http://eow.alc.co.jp/vertical/UTF-8/?ref=sa 協同学習者:川島 哲