第9回 基礎プログラミング I レポート課題 氏名:佐竹聡美 学籍番号:c1090816 語学クラス:英語1 コース:社会福祉 ------------------------------------------------------------------------------- 1、筆記問題 A 16進数と16進数の足算をする場合は、一度16進数を2進数に変換し、その2進数を 10進数に変換したもの同士を足算すればよい。よって、以下のようになる。 0x13を2進数に変換すると、00010011となる。 これを10進数に変換する。 1 * 2の0乗 = 1 1 * 2の1乗 = 2 1 * 2の4乗 = 16 1 + 2 + 16 = 19 また、0x24を2進数に変換すると、00100100 となる。 これを10進数に変換する。 1 * 2の2乗 = 4 1 * 2の5乗 = 32 4 + 32 = 36 さっきの10進数と足すと、 19 + 32 = 51 となる。 51を2進数に変換する。 51 / 2 = 25 余り1 25 / 2 = 12 余り1 12 / 2 = 6 余り0 6 / 2 = 3 余り0 3 / 2 = 1 余り1 110011を16進数に変換すると、33となる。 よって、0x13 + 0x24 = 0x37 となる。 B Aと同じ方法で計算していく。 0x23を2進数に変換すると、00100011 となる。 これを10進数に変換すると、 32 + 2 + 1 = 35 となる。 また、0x1eを2進数に変換すると、00011110 となる。 これを10進数に変換すると、 16 + 8 + 4 + 2 + 1 = 31 となる。 それぞれを計算すると以下のようになる。 35 + 31 = 66 これを2進数に変換すると、1000010 となる。 これを16進数に変換すると、42 になる。 よって、0x23 + 0x1e = 0x42 となる。 C 0xaa を2進数に変換すると、10101010 となる。 これを10進数に変換すると、 128 + 32 + 8 + 2 = 170 となる。 また、0x33を2進数に変換すると、00110011 となる。 これを10進数に変換すると、 32 + 16 + 2 + 1 = 51 となる。 それぞれを計算する。 170 - 51 = 119 これを2進数に変換すると、1110111 となる。 これを16進数に変換すると、77 になる。 よって、0xaa - 0x33 = 0x77 となる。 -------------------------------------------------------------------------------- 2、プログラム問題 A ☆広告ホームページ:http://roy/~c109081/advertise/ ☆実用部門にエントリーします。 B a.考えた設定 東北道のサービスエリア、パーキングエリアのグルメを検索するプログラムを作る。 まずは行きたいサービスエリア、パーキングエリアを選び、次に食べたい分類の ものを選びそこでは何が人気のグルメかを検索するプログラム。 b.作成したプログラムとその解説 #!/usr/koeki/bin/ruby name = Array.new print("東北道か東名高速のどちらかを検索するよ。\n") print("東北道なら 1 を東名高速なら 2 を入力してね。\n\n") STDERR.print("検索 :") pattern = STDIN.gets.chomp request = Regexp.new(pattern,true,"e") # Regexp.new(変数,オプション,文字コード)で正規表現したい文字列にオプションをつける。 # true は大文字小文字を区別しないという意味。 open("gurume.dat","r") do |go| # gurume.dat を自動で読みこむ。 n = 0 while gurume = go.gets if request =~ gurume if /(\S+)\s+(\S+)/ =~ gurume # S は文字、sは空白を表す。 name[n] = $1 # $1 は優先された文字列を1を引き取る。 printf("%d, %s \n",n+1,name[n]) n += 1 end # if文のend end # if文のend end # while文のend end # open文のend print("東北道・東名道のPA・SAのグルメを検索するよ。\n") print("行きたいSA・PAを選んで正しく入力してね。\n\n") STDERR.print("場所:") pattern = STDIN.gets.chomp request = Regexp.new(pattern,true,"e") open("gurume.dat","r") do |go| # gurume.dat を自動で読みこむ。 p = 0 while gurume = go.gets if request =~ gurume if/(\S+)\s+(\S+)\s+(\D+)/=~ gurume name[p] = $2 # $2 は優先された文字列2を引き取る。 printf(" %s がおすすめだよ。\n",name[p]) p += 1 end # if文のend end # if文のend end # while文のend end # open文のend print("ぜひ食べに行ってね!\n\n") c.作成したデータ #場所 #グルメ名 #番号 蓮田サービスエリア 点心バーガー 1 佐野サービスエリア 青竹打ち佐野ラーメン 1 大谷パーキングエリア 手作りおにぎり 1 上河内サービスエリア 宇都宮餃子 1 那須高原サービスエリア しょうが焼御膳 1 安達太良サービスエリア 伊逹鶏わっぱ 1 国見サービスエリア 味噌焼きおにぎり 1 菅生パーキングエリア 牛タン定食 1 前沢サービスエリア 前沢牛入りハンバーグたたきセット 1 紫波サービスエリア 白金豚の和風シチュー 1 岩手山サービスエリア 南部かしわ丼そばセット 1 津軽サービスエリア 津軽鶏の照旨丼 1 上郷サービスエリア 八丁味噌坦々 2 浜名湖サービスエリア うなトロ月見重 2 牧之原サービスエリア パフェ食べ放題 2 日本坂サービスエリア 焼津まぐら2色丼 2 日本平パーキングエリア 静岡おでん 2 由比パーキングエリア 三色丼 2 足柄サービスエリア 富士山カレー 2 鮎沢パーキングエリア 怒りんぼドッ君 2 海老名サービスエリア 冷やし坦々麺 2 d.実行結果 pan{c109081}% ./gurume.rb [~/public_html/advertise] 東北道か東名高速のどちらかを検索するよ。 東北道なら 1 を東名高速なら 2 を入力してね。 検索 :1 1, 蓮田サービスエリア 2, 佐野サービスエリア 3, 大谷パーキングエリア 4, 上河内サービスエリア 5, 那須高原サービスエリア 6, 安達太良サービスエリア 7, 国見サービスエリア 8, 菅生パーキングエリア 9, 前沢サービスエリア 10, 紫波サービスエリア 11, 岩手山サービスエリア 12, 津軽サービスエリア 東北道・東名道のPA・SAのグルメを検索するよ。 行きたいSA・PAを選んで正しく入力してね。 場所:国見 味噌焼きおにぎり がおすすめだよ。 ぜひ食べに行ってね! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pan{c109081}% ./gurume.rb [~/public_html/advertise] 東北道か東名高速のどちらかを検索するよ。 東北道なら 1 を東名高速なら 2 を入力してね。 検索 :2 1, 上郷サービスエリア 2, 浜名湖サービスエリア 3, 牧之原サービスエリア 4, 日本坂サービスエリア 5, 日本平パーキングエリア 6, 由比パーキングエリア 7, 足柄サービスエリア 8, 鮎沢パーキングエリア 9, 海老名サービスエリア 東北道・東名道のPA・SAのグルメを検索するよ。 行きたいSA・PAを選んで正しく入力してね。 場所:浜名湖 うなトロ月見重 がおすすめだよ。 ぜひ食べに行ってね! e.考察 東北道と東名高速道がしっかり区別されている。 よって正しく実行されているためこのプログラムは正しい。 f.参考文献 基礎プログラミング I 第9回 Ruby であそぼ / 広告ページの作成 ・http://roy/~madoka/2010/r1/09/ 「ソフトウェアの公開時の条項」 ・http://roy/~madoka/2010/r1/09/09_13_theme_10_termsofcondition.html 高速道路の超人気ご当地グルメ60を食べ尽くす〜東北道編(09/01/09) ・http://dekamori.happylife7.com/touhoku/index.html 高速道路の超人気ご当地グルメ50を食べ尽くす〜東名高速編(09/08/06) http://dekamori.happylife7.com/tomei2/index.html g.感想 なかなかプログラムが出来ずに苦戦した。なかなか実行できず、焦っていたら間 違っているのは英語のスペル間違いという初歩的な間違いをしていた。 また、自分の考えている結果になかなかならず、途中でプログラムを変更するこ とになってしまったが、大幅に変更せずにいまあるプログラム生かし、少しの変 更にとどめることができて良かった。今回は今までやってきたことを使いながら 友達の手助けをあまり借りずに進めることが出来て良かった。 自分のホームページに色をつけたり、フォントを変えたりするのは楽しかった。 サービスエリア・パーキングエリアのグルメを調べていて、どれもおいしそうで 夜のプログラミングの課題は空腹との戦いでした。 第9回の出席課題なんですが、提出したつもりが自分の確認ミスで提出されてい ませんでした。遅いかと思いますが、出席課題を送信します。 <共同学習者> *酒井春香*