第 1 回 前期の復習 レポート課題 氏名:千葉すずな 学籍番号:c1111062 語学クラス:英語1 コース:地域共創 1. 筆記問題 A. 前期で学んだ項目 ◯ emacs Esc - mew … mew Esc - trr … trr ctrl - x - f … ファイル開く ctrl - s … ファイル保存 ctrl - f … 文節変換 ctrl - x 5 2 … emacs をもう1こ開く ctrl - c - a … メール添付 ctrl - c - c … メール送信 ctrl - g … 困ったときに ctrl - x 2 … ウィンドウを上下分割 ctrl - x 0 … 今のウィンドウを消す ctrl - x 1 … ウィンドウを1つにする ◯ kterm bc - l … 計算機 ./ … ファイルを開く cd … ホームに戻る mkdir … 新しいディレクトリを作る mv … ファイルなどを移動させる ctrl - c … 困ったときに ls … ファイル一覧 ◯ プログラム #!/usr/koeki/bin/ruby … プログラムの頭につける #coding: euc-jp … 日本語入力すると示す %s … 文字 %d … 数字 %f … 小数ありの数字 while … 繰り返す if … もしも~なら end … ifのおわり end … whileのおわり /S … 文字列 /s … 空白 2. プログラム問題 C. データを読み込んで実行するプログラム i. 設定 見たい計画の西暦と月を入力すれば、 その指定された計画が出てくるプログラム。 ii. プログラム ◯プログラム #!/usr/koeki/bin/ruby #coding: euc-jp print("2012.10 ~ 2015.3 の計画を表示します!\n") # 検索の案内文 print("※年と月の数値のみを続けて入力してください\n") # /nは改行の意味 STDERR.print("〔いつの計画が見たい?〕 ") # 入力案内文 pattern = STDIN.gets.chomp # さっきの入力を読み込む request = Regexp.new(pattern, true) # それを正規表現に変える open("mydata_c111106.dat","r") do |plan| # 読み込んだデータをplanと名付ける while life = plan.gets # planからの出力が終わるまで続ける if request =~ life # 入力があったら # print life # lifeの中に何個入っているか if /(\S+)\s+(\S+)\s+(\S+)/ =~ life # 正規表現のどこを取り出すか print("*--------------------------------------------*\n") printf(" %s : %s\n", $1, $2) # 正規表現の1、2番目を表示 print("*--------------------------------------------*\n") end end end end ◯データ 2012年10月 バイトを頑張って将来の資金集め 201210 2012年11月 先月できなかったことをする 201211 2012年12月 販売士検定3級の勉強 201212 2013年1月 はつもうで!販売士の試験 20131 2013年2月 ディズニーとかに旅行に行く!! 20132 2013年3月 春休みに友人たちに会いに行く! 20133 2013年4月 今年度の計画を立てる。将来も 20134 2013年5月 漢検準2級の勉強。GW旅行 20135 2013年6月 漢検受検。就職の勉強。 20136 2013年7月 試験勉強。誕生日会いっぱい 20137 2013年8月 ゼミ合宿とゼミの交流 20138 2013年9月 インターンシップと母とTDR 20139 2013年10月 色彩検定3級の勉強 201310 2013年11月 色彩検定受検。試験勉強。 201311 2013年12月 冬休みに初めての冬ディズニー! 201312 2014年1月 漢検2級の勉強 20141 2014年2月 漢検受検。イベントに参加。 20142 2014年3月 就活のはじまり。勉強追い込み 20143 2014年4月 卒論のネタ探し。 20144 2014年5月 卒論のインタビューとかする 20145 2014年6月 SPIの猛勉強。みんなで励まし合う 20146 2014年7月 無事に内定する!! 20147 2014年8月 花火とかで最後の夏休みを楽しむ 20148 2014年9月 東京に就活&学ぶために旅行! 20149 2014年10月 本をいっぱい読む 201410 2014年11月 好きな映画をいっぱい見る 201411 2014年12月 冬のライブやらコンサートに行く 201412 2015年1月 みんなでさよならパーティー 20151 2015年2月 いろんな人と卒業旅行に行く! 20152 2015年3月 祝:卒業 20153 iii. 変更点 参考にしたプログラムは regexp_readdatta.rb 最初にプログラムの説明文を加えて、 表示の最後には見やすいようにラインを入れた。 また、読み込ませるデータ名と各変数を今回の内容に合わせて変更した。 iv. 結果画面 pan{c111106}% ./life_open.rb [~/Ruby] 2012.10 ~ 2015.3 の計画を表示します! ※年と月の数値のみを続けて入力してください 〔いつの計画が見たい?〕 201210 *--------------------------------------------* 2012年10月 : バイトを頑張って将来の資金集め *--------------------------------------------* pan{c111106}% ./life_open.rb [~/Ruby] 2012.10 ~ 2015.3 の計画を表示します! ※年と月の数値のみを続けて入力してください 〔いつの計画が見たい?〕 20142 *--------------------------------------------* 2014年2月 : 漢検受検。イベントに参加。 *--------------------------------------------* pan{c111106}% ./life_open.rb [~/Ruby] 2012.10 ~ 2015.3 の計画を表示します! ※年と月の数値のみを続けて入力してください 〔いつの計画が見たい?〕 20153 *--------------------------------------------* 2015年3月 : 祝:卒業 *--------------------------------------------* 指定された年月の計画を表示させることができた。 pan{c111106}% ./life_open.rb [~/Ruby] 2012.10 ~ 2015.3 の計画を表示します! ※年と月の数値のみを続けて入力してください 〔いつの計画が見たい?〕 20131 *--------------------------------------------* 2013年1月 : はつもうで!販売士の試験 *--------------------------------------------* *--------------------------------------------* 2013年10月 : 色彩検定3級の勉強 *--------------------------------------------* *--------------------------------------------* 2013年11月 : 色彩検定受検。試験勉強。 *--------------------------------------------* *--------------------------------------------* 2013年12月 : 冬休みに初めての冬ディズニー! *--------------------------------------------* しかし「20131」のように1月を指定するとほかの「201310」「201311」「201312」 にも同じ部分が含まれているので、結果が4つ出てきてしまった。 v. 結果の考察 2つ目の結果を回避させるために、データの検索用数値を、月が1ケタの場合 となりに0をつけたものに変更する。例: 2013年1月 → 201301 さらに、プログラム最初の説明文にこの説明を足してこのように入力させる。 ※ ということで次から変更後のデータとプログラムを使用します ◯変更後のプログラム #!/usr/koeki/bin/ruby #coding: euc-jp print("2012.10 ~ 2015.3 の計画を表示します!\n") # 検索の案内文 print("※見たい年と月の数値のみを続けて入力してください\n") # /nは改行の意味 print(" 月が一桁の場合01のように0をつけてください\n\n") # 入力の注意 STDERR.print("〔いつの計画が見たい?〕 ") # 入力案内文 pattern = STDIN.gets.chomp # さっきの入力を読み込む request = Regexp.new(pattern, true) # それを正規表現に変える open("mydata_c111106.dat","r") do |plan| # 読み込んだデータをplanと名付ける while life = plan.gets # planからの出力が終わるまで続ける if request =~ life # 入力があったら # print life # lifeの中に何個入っているか if /(\S+)\s+(\S+)\s+(\S+)/ =~ life # 正規表現のどこを取り出すか print("*--------------------------------------------*\n") printf(" %s : %s\n", $1, $2) # 正規表現の1、2番目を表示 print("*--------------------------------------------*\n") end end end end ◯変更後のデータ 2012年10月 バイトを頑張って将来の資金集め 201210 2012年11月 先月できなかったことをする 201211 2012年12月 販売士検定3級の勉強 201212 2013年1月 はつもうで!販売士の試験 201301 2013年2月 ディズニーとかに旅行に行く!! 201302 2013年3月 春休みに友人たちに会いに行く! 201303 2013年4月 今年度の計画を立てる。将来も 201304 2013年5月 漢検準2級の勉強。GW旅行 201305 2013年6月 漢検受検。就職の勉強。 201306 2013年7月 試験勉強。誕生日会いっぱい 201307 2013年8月 ゼミ合宿とゼミの交流 201308 2013年9月 インターンシップと母とTDR 201309 2013年10月 色彩検定3級の勉強 201310 2013年11月 色彩検定受検。試験勉強。 201311 2013年12月 冬休みに初めての冬ディズニー! 201312 2014年1月 漢検2級の勉強 201401 2014年2月 漢検受検。イベントに参加。 201402 2014年3月 就活のはじまり。勉強追い込み 201403 2014年4月 卒論のネタ探し。 201404 2014年5月 卒論のインタビューとかする 201405 2014年6月 SPIの猛勉強。みんなで励まし合う 201406 2014年7月 無事に内定する!! 201407 2014年8月 花火とかで最後の夏休みを楽しむ 201408 2014年9月 東京に就活&学ぶために旅行! 201409 2014年10月 本をいっぱい読む 201410 2014年11月 好きな映画をいっぱい見る 201411 2014年12月 冬のライブやらコンサートに行く 201412 2015年1月 みんなでさよならパーティー 201501 2015年2月 いろんな人と卒業旅行に行く! 201502 2015年3月 祝:卒業 201503 ◯変更後の結果 pan{c111106}% ./life_open.rb [~/Ruby] 2012.10 ~ 2015.3 の計画を表示します! ※見たい年と月の数値のみを続けて入力してください 月が一桁の場合01のように0をつけてください 〔いつの計画が見たい?〕 201301 *--------------------------------------------* 2013年1月 : はつもうで!販売士の試験 *--------------------------------------------* 予定していた通り、指定した2013年1月分だけ出るようになった。 pan{c111106}% ./life_open.rb [~/Ruby] 2012.10 ~ 2015.3 の計画を表示します! ※見たい年と月の数値のみを続けて入力してください 月が一桁の場合01のように0をつけてください 〔いつの計画が見たい?〕 201312 *--------------------------------------------* 2013年12月 : 冬休みに初めての冬ディズニー! *--------------------------------------------* pan{c111106}% ./life_open.rb [~/Ruby] 2012.10 ~ 2015.3 の計画を表示します! ※見たい年と月の数値のみを続けて入力してください 月が一桁の場合01のように0をつけてください 〔いつの計画が見たい?〕 201409 *--------------------------------------------* 2014年9月 : 東京に就活&学ぶために旅行! *--------------------------------------------* pan{c111106}% ./life_open.rb [~/Ruby] 2012.10 ~ 2015.3 の計画を表示します! ※見たい年と月の数値のみを続けて入力してください 月が一桁の場合01のように0をつけてください 〔いつの計画が見たい?〕 201502 *--------------------------------------------* 2015年2月 : いろんな人と卒業旅行に行く! *--------------------------------------------* ほかの年の結果も予定していた通りに出すことができた。 3. 感想 前期に、データから検索して結果を表示させる駅やチケットのプログラムを 作ったことを思い出して、その回にあたる第7回について復習した。 当時はついていくので精一杯で、時間がたちほとんど忘れた状態だったが 今見直したほうが前より理解することができた。 また、将来のことについてこんなに詳しく考える機会がなかったので、 友人とこれからのことについてまじめに話すことができた。 4. 参考文献 前期の自分のノート 基礎プログラミングI 第 7 回 (正規表現と Ruby 言語でのプログラミング) 「データを読み込むようにするには」 西村まどか http://roy/~madoka/2012/r1/07/r1_07_10_theme_08_fileread.html □ 共同学習者 須藤早貴 / 樋口千穂