第6回 基礎プログラミング I レポート課題 氏名:酒井信市郎 学籍番号:c1090733 語学クラス:英語1 コース(系):政策 ------------------------------------------------------------------------------- 1、筆記問題 A 誕生日19900523 1990と0523に分けて計算した。 0d1990 = 0x6C7 0d1990 = 0b011111000110 0d0523 = 0x20B 0d0523 = 0b01000001011 B ASCIIコード表より s a k a i s h i n i c h i r o =73, 61, 6b, 61, 69, 73, 68, 69, 6e, 69, 63, 68, 69, 72, 6f となった。 ------------------------------------------------------------------------------- 2、プログラム問題 A、ピザの品名、サイズ、価格、使用ソースについて。 B、 #品名 #サイズ #価格 #ソースの種類 さんあんいも明太 S 900 明太 さんあんイカマヨ S 950 ショウユ さんあんウィンナー M 1300 無し さんあんチキントマト M 1350 トマト さんあんトリプルミート M 1300 トマト さんあんコーンクリーム S 900 無し さんあんサラミ S 950 トマト さんあんツナエビ M 1200 トマト さんあんエビマヨ M 1200 アメリカン さんあんきのこ S 900 ショウユ さんあん味噌ホルモン S 900 無し さんあんブロッコリー S 950 無し 10.4ミックス L 2000 トマト フレッシュトマト L 2000 トマト からあげエッグ L 2100 ショウユ 香味海鮮 L 2100 トマト 特撰エビホタテ M 1500 トマト ジョイポップ M 1500 トマト チョリソー M 1500 チリトマト カントリー男爵 L 2500 ショウユ サニーナポリ L 2500 トマト 極 L 2000 無し マヨカルビ L 2500 ショウユ 生ハムガーリック M 1500 トマト C、サイズや価格、使用ソースごとに検索できるようにしたい。 D、検索パターンをいくつか考えた。 a. egrep "さ" data06.dat を実行。予想は品名に"さ"が含まれるさんあんシリーズが検索される。 b. egrep "生ハム.サンド" data06.dat を実行。予想は何も検索されない。 c. egrep "25*00" data06.dat を実行。予想は2500円と2000円のピザが検索される。 d. egrep "9*50" data06.dat を実行。予想は950円と900円のピザが検索される。 e. egrep "^フ" data06.dat を実行。予想はフレッシュトマトが検索される。 f. egrep "ト$" data06.dat を実行。予想はトマトソースを使ったピザが検索される。 g. egrep "(さんあん)い" data06.dat を実行。予想はさんあんいも明太が検索される。 h. egrep "[亜-腕]" data06.dat を実行。予想は漢字を含んだピザが検索される。 i. egrep "^[あ-ん]" data06.dat を実行。予想はひらがなを含んだピザが検索される。 E、実行結果 (a) pan{c109073}% egrep "さ" data06.dat [~/Ruby] さんあんいも明太 S 900 明太 さんあんイカマヨ S 950 ショウユ さんあんウィンナー M 1300 無し さんあんチキントマト M 1350 トマト さんあんトリプルミート M 1300 トマト さんあんコーンクリーム S 900 無し さんあんサラミ S 950 トマト さんあんツナエビ M 1200 トマト さんあんエビマヨ M 1200 アメリカン さんあんきのこ S 900 ショウユ さんあん味噌ホルモン S 900 無し さんあんブロッコリー S 950 無し (b) pan{c109073}% egrep "生ハム.サンド" data06.dat (c) pan{c109073}% egrep "25*00" data06.dat [~/Ruby] さんあんツナエビ M 1200 トマト さんあんエビマヨ M 1200 アメリカン 10.4ミックス L 2000 トマト フレッシュトマト L 2000 トマト カントリー男爵 L 2500 ショウユ サニーナポリ L 2500 トマト 極 L 2000 無し マヨカルビ L 2500 ショウユ (d) pan{c109073}% egrep "95*0" data06.dat [~/Ruby] さんあんいも明太 S 900 明太 さんあんイカマヨ S 950 ショウユ さんあんコーンクリーム S 900 無し さんあんサラミ S 950 トマト さんあんきのこ S 900 ショウユ さんあん味噌ホルモン S 900 無し さんあんブロッコリー S 950 無し (e) pan{c109073}% egrep "^フ" data06.dat [~/Ruby] フレッシュトマト L 2000 トマト (f) pan{c109073}% egrep "ト$" data06.dat [~/Ruby] さんあんチキントマト M 1350 トマト さんあんトリプルミート M 1300 トマト さんあんサラミ S 950 トマト さんあんツナエビ M 1200 トマト 10.4ミックス L 2000 トマト フレッシュトマト L 2000 トマト 香味海鮮 L 2100 トマト 特撰エビホタテ M 1500 トマト ジョイポップ M 1500 トマト チョリソー M 1500 チリトマト サニーナポリ L 2500 トマト 生ハムガーリック M 1500 トマト (g) pan{c109073}% egrep "(さんあん)い" data06.dat [~/Ruby] さんあんいも明太 S 900 明太 (h) pan{c109073}% egrep "[亜-腕]" data06.dat [~/Ruby] #品名 #サイズ #価格 #ソースの種類 さんあんいも明太 S 900 明太 さんあんウィンナー M 1300 無し さんあんコーンクリーム S 900 無し さんあん味噌ホルモン S 900 無し さんあんブロッコリー S 950 無し 香味海鮮 L 2100 トマト 特撰エビホタテ M 1500 トマト カントリー男爵 L 2500 ショウユ 極 L 2000 無し 生ハムガーリック M 1500 トマト (i) pan{c109073}% egrep "^[あ-ん]" data06.dat [~/Ruby] さんあんいも明太 S 900 明太 さんあんイカマヨ S 950 ショウユ さんあんウィンナー M 1300 無し さんあんチキントマト M 1350 トマト さんあんトリプルミート M 1300 トマト さんあんコーンクリーム S 900 無し さんあんサラミ S 950 トマト さんあんツナエビ M 1200 トマト さんあんエビマヨ M 1200 アメリカン さんあんきのこ S 900 ショウユ さんあん味噌ホルモン S 900 無し さんあんブロッコリー S 950 無し からあげエッグ L 2100 ショウユ F、考察 ほとんどの検索結果が予想通りだった。(c)の検索で2000円と2500円以外の商品が検索されてしまったこと、(f)の検索で"チリトマト"が出てしまったのは失敗だった。 G、正規表現のまとめ (a) " "内の文字を含むピザが検索される。 (b) ピリオド以降任意の一文字の候補を取りだす。 (c)、(d) 文字が何回か繰り返されていて出現は何回でもよい場合。 (e) 先頭の文字列のみ探して調べる。 (f) 末尾の文字列のみ探して調べる。 (g) 内で括られた条件を先に探す。(さんあん)い は、"さんあん" という候補を 先に検索したのち、その後に "い" がついているかどうか調べる。 (h) 漢字を含んだ文字を検索。 (i) ひらがなを含んだ文字を検索。 なぜ(c)の検索で1200円の商品が出てしまったのか分かりませんでした。 (f)は語尾の一文字しか対象でないからこの結果がでたと思います。 3、感想 筆記問題のAは前の復習のようなものだったので解くことが出来ました。Bは ASCIIコード表をもとに解くことが出来ました。プログラミング問題は正規表 現が難しかったのですが、先輩のアドバイスで少しは理解できたと思います。 携帯電話は正規表現を使用していると思います。 参考文献 http://roy/~madoka/2010/r1/06/ 基礎プログラミング I 第6回 正規表現と検索 西村まどか著 協力していただいた先輩 工藤智也