第 9 回 Ruby であそぼ / 広告ページの作成 レポート課題 氏名:浅沼佑香 学籍番号:C1110039 語学コース:英語1 コース:社会福祉コース 1.すべて16進数で表示されているので、数学のように「0x」を1つの記号と考え てそのまま計算した。また、アルファベット表示になっているものは10進数表 示に直してから、その答えを16進数表示に戻した。結果は下の通りである。 A.a.0x32 + 0x24 = 0x?? 32 + 24 = 56 よって答えは、0x56である。 b.0x15 + 0x2d = 0x?? bを10進数に直すと、11である。 すべてを10進数表示にする(右から16の倍数をかける)。 0d15→1*16 + 5*1 = 16 + 5 = 21 0d2d→2*16 + 13*1 = 32 + 13 = 45 0d21 + 0d45 = 0d66 0d64を今度は16進数に変換する(答えが0になるまで16で割り、出たあまりを 下から読む)。 66 / 16 = 4 … 2 4 / 16 = 0 … 4 ↑下から読む よって答えは、0x42である。 c.0xed - 0x12 = 0x?? bと同様に直すと、 e→14 d→13 なので、そのまま10進数で計算すると、 0ded→14*16 + 13*1 = 224 + 13 = 237 0d12→1*16 + 2*1 = 16 + 2 = 18 0d237 ー 0d18 = 0d219 0d219を今度は16進数変換する。 219 / 16 = 13 … 11 13 / 16 = 0 … 13 ↑下から読む 13と11をそれぞれ16進数に直すと、 13→d 11→b よって答えは、0xdbである。 B.1〜31までの整数の中で 7の倍数に 2を足したものが、7で割るとあまり 2であ る数字になるので、それが答えである。結果は下に表示する。 7 * 1 + 2 = 9 7 * 2 + 2 = 16 7 * 3 + 2 = 23 7 * 4 + 2 = 30 bc -l で確かめると、 pan{ASANUMA Yuka}% bc -l [~] 7*1+2 9 7*2+2 16 7*3+2 23 7*4+2 30 となり、計算があっていた。 なので、7で割るとあまりが 2であるような数字は、 9、16、23、30 である。 2.A.見れるホームページ 「http://roy/~c111003/adv/」 B.プログラムを下に表示します。 <データ(gorin.dat)> #分野 #競技 複数競技 近代五種競技 複数競技 トライアスロン 水のスポーツ 水泳 水のスポーツ ボート競技 水のスポーツ セーリング 水のスポーツ カヌー 格闘技 フェンシング 格闘技 レスリング 格闘技 ボクシング 格闘技 柔道 格闘技 テコンドー 的当て 射撃 的当て アーチェリー 球技 テニス 球技 サッカー 球技 ホッケー 球技 バスケットボール 球技 バレーボール 球技 ハンドボール 球技 卓球 球技 バトミントン その他 陸上競技 その他 体操 その他 ウエイトレスリング その他 自転車競技 その他 馬術 <企画書(plan.txt)> 〜企画書〜 <企画前> 今年は世界のイベント、4年に1度のオリンピックが行われる。 オリンピックが始まるのはいいが、どんな競技があるのか気になり、これを調べ られるプログラムを作成しようと考えた。 オリンピックに関しての参考にしたサイトは http://ja.wikipedia.org/wiki/夏季オリンピック である。(6月13日閲覧) <企画後> どんな競技があるか調べられるように、分野を表示してから、分野を入れてそれ にどんな競技があるか調べられるように検索した。 しかし、競技の中にもさまざまな種目があるので、いつか競技の中の種目を検索 できるようなデータを作成して、プログラムを改良させたい。 <取り扱い説明書(00readme)> 〜取り扱い説明書〜 1.はじめに このプログラムは、オリンピックの競技検索をするものです。 検索をしたい場合は、以下のファイルのダウンロードをお願いします。 ・プログラム本体 orinpikku.rb ・データ gorin.dat 2.検索の仕方 ktermの「cd public_html/adv/」にダウンロードしたファイルを入れて下さい。 ファイルを入れたら、「ls」を押してダウンロードしたファイルに「*」がついていな ければ、「chmod +x orinpikku.rb」と打ち、プログラム本体が使えるようにした下さ い。 その後に「./orinpikku.rb」と入力して下さい。 そうすると、検索プログラムが実行されます。 後は文章にそって従って下さい。 <プログラム本体(orinpikku.rb)> #!/usr/koeki/bin/ruby #coding: euc-jp print("オリンピックの種目検索へようこそ!\n") #文字が表示 print("複合競技\n") #文字が表示 print("水のスポーツ\n") #文字が表示 print("格闘技\n") #文字が表示 print("的当て\n") #文字が表示 print("球技\n") #文字が表示 print("その他\n") #文字が表示 print("の分野の競技があります。\n") #文字が表示 STDERR.print("何の分野の競技が知りたい?: ") #文字が表示 pattern = STDIN.gets.chomp request = Regexp.new(pattern, true) open("gorin.dat" ,"r") do |orinpikku| #データを同時に実行 while gorin = orinpikku.gets if request =~ gorin if /(\S+)\s+(\S+)/ =~ gorin #文字列、空白、文字列の順 print("\t \n") #\tは空白 print("検索結果\n") printf("分野: %s \n", $1) #$1列の文字表示 printf("競技: %s \n", $2) #$2列の文字表示 print("\t \n") end #ifの文終わり end #ifの文終わり end #whileの文終わり end #openの文終わり print("以上です。\n") #文字が表示 print("興味があった競技はありましたか?\n") #文字が表示 print("是非、日本のメダルを期待しましょう!!!!!\n") #文字が表示 pan{c111003}% ./orinpikku.rb [~/public_html/adv] オリンピックの種目検索へようこそ! 複合競技 水のスポーツ 格闘技 的当て 球技 その他 の分野の競技があります。 何の分野の競技が知りたい?: その他 検索結果 分野: その他 競技: 陸上競技 検索結果 分野: その他 競技: 体操 検索結果 分野: その他 競技: ウエイトレスリング 検索結果 分野: その他 競技: 自転車競技 検索結果 分野: その他 競技: 馬術 以上です。 興味があった競技はありましたか? 是非、日本のメダルを期待しましょう!!!!! c.実用部門にエントリーします。 キャッチフレーズは、「あなたはオリンピックの競技をどれくらい知ってます か?」です。 3.自分でプログラムを作成してから、ktermで実行する際に、今まで講義でやっ たことを思い出しながらやった。今回は、文字の検索だけだけど、また作る機 会があったら、計算するソフトを作ってみたい。 <参考資料> 基礎プログラミングI 第8回 電子チケットを作ろう 西村 まどか CSSの色見本 http://roy/~madoka/2012/r1/08/r1_08_12_appendix_02_safecolor.html 基礎プログラミングI 第7回 正規表現とRuby言語でのプログラミング 西村 まどか 駅名だけを切り出そう http://roy/~madoka/2012/r1/07/r1_07_09_theme_07_parenthesis.html <学習協同者> 伊藤詩野/佐藤祐子/村上茉奈美