第1回 基礎プログラミング II レポート課題 氏名:青木 千紗 学籍番号:C1090012 語学クラス:中国語1 コース(系):地域共創コース 1、筆記問題 A emacs の復習としては、ファイルを開く場合は Ctrl + x , Ctrl + f でファ イルを開くことができる。そのファイルを保存するためには Ctrl + x , Ctrl + s で保存することができる。(** が -- になれば保存されている。)また、emacs を分裂させるには Ctrl + x 5 2 で分裂することができる。これは、メールとファ イルを同時に開くときに便利である。 プログラムにおいては、while は 繰り返し, if は もし, open 指定したファ イルを開く, Array.new 配列を新しく作る, print ・ printf 文章を表示するこ とができる。 2、プログラム問題 A プログラム(summer_a.rb) a.考えた設定 上山市に行ったときのことについて語るプログラムを考えた b.作成したプログラム #!/usr/koeki/bin/ruby print("今年の夏休みは、4泊5日で上山市での公益社会演習に参加しました。\n") print("上山市にある歴史的建造物である蔵と特産物であるくだものを使用して、\n") print("\"賑わいのあるまちをつくる\"というテーマでまちづくりを行ないました。\n") print("上山市は歴史的建造物、くだものの他にも城下町、温泉のまちとしても有名なので\n") print("もちろん、城下町としての上山・温泉まちとしての上山も存分に堪能してきました。\n") print("当日は、蔵とくだものを使用してフルーツパーラーを行ない、大盛況でした。\n") print("今回、公益社会演習に参加して上山市の良いところをさらに知ることができたし\n") print("また、上山市やまちづくりにおいての課題も発見することができました。\n") print("とても充実した4泊5日でした。\n") # print文を使用して、文章を表示させた c.もとにしたプログラム print文の内容を変えて表示させた d.実行画面 pan{c109001}% ./summer_a.rb [~/Ruby] 今年の夏休みは、4泊5日で上山市での公益社会演習に参加しました。 上山市にある歴史的建造物である蔵と特産物であるくだものを使用して、 "賑わいのあるまちをつくる"というテーマでまちづくりを行ないました。 上山市は歴史的建造物、くだものの他にも城下町、温泉のまちとしても有名なので もちろん、城下町としての上山・温泉まちとしての上山も存分に堪能してきました。 当日は、蔵とくだものを使用してフルーツパーラーを行ない、大盛況でした。 今回、公益社会演習に参加して上山市の良いところをさらに知ることができたし また、上山市やまちづくりにおいての課題も発見することができました。 とても充実した4泊5日でした。 e.考察 print文を使用することによって、文章を表示することができる。 このプログラムは、print文を使用して、文章がきちんと表示されている。 また、\nで改行をするこができるので、\nで改行もするこができた。 B プログラム(summer_b.rb) a.考えた設定 その年を選択させて、その年の思い出を表示するプログラムを考えた b.作成したプログラム #!/usr/koeki/bin/ruby STDERR.print("1、小学校1年生 2、小学校5年生 3、中学3年生 4、高校2年生 5、大学1年生 6、最近の思い出 どの思い出が知りたいですか?\n") # print文を使用して文章を表示させる。 summer = gets.to_i # gets.to_iで文字を数字に変えて summer に代入する。 if summer == 1 # もし summer が1だったら print("おばあちゃんの家に行って、山でカブトムシを採りました。\n") elsif summer == 2 # 1でなくて もし summer が2だったら print("家族で軽井沢に泊まりに行きました。\n") elsif summer == 3 # 1、2でなくて もし summer が3だったら print("部活動の最後の大会があったので部活に熱心に取り組んでいました。\n") elsif summer == 4 # 1、2、3でなくて もし summer が4だったら print("北海道の親戚の家に遊びに行きました。\n") elsif summer == 5 # 1、2、3、4でなくて もし summer が5だったら print("嘉村くんと潤くんとかと一緒に飛島に行ってきました。\n") else summer # それ以外の場合 print("上山社会演習に参加しました。\n") end # if に対する end c.もとにしたプログラム if文の内容を変えて表示させた d.実行結果 pan{c109001}% ./summer_b.rb [~/Ruby] 1、小学校1年生 2、小学校5年生 3、中学3年生 4、高校2年生 5、大学1年生 6、最近の思い出 どの思い出が知りたいですか? 1 おばあちゃんの家に行って、山でカブトムシを採りました。 pan{c109001}% ./summer_b.rb [~/Ruby] 1、小学校1年生 2、小学校5年生 3、中学3年生 4、高校2年生 5、大学1年生 6、最近の思い出 どの思い出が知りたいですか? 2 家族で軽井沢に泊まりに行きました。 pan{c109001}% ./summer_b.rb [~/Ruby] 1、小学校1年生 2、小学校5年生 3、中学3年生 4、高校2年生 5、大学1年生 6、最近の思い出 どの思い出が知りたいですか? 3 部活動の最後の大会があったので部活に熱心に取り組んでいました。 pan{c109001}% ./summer_b.rb [~/Ruby] 1、小学校1年生 2、小学校5年生 3、中学3年生 4、高校2年生 5、大学1年生 6、最近の思い出 どの思い出が知りたいですか? 4 北海道の親戚の家に遊びに行きました。 pan{c109001}% ./summer_b.rb [~/Ruby] 1、小学校1年生 2、小学校5年生 3、中学3年生 4、高校2年生 5、大学1年生 6、最近の思い出 どの思い出が知りたいですか? 5 嘉村くんと潤くんとかと一緒に飛島に行ってきました。 pan{c109001}% ./summer_b.rb [~/Ruby] 1、小学校1年生 2、小学校5年生 3、中学3年生 4、高校2年生 5、大学1年生 6、最近の思い出 どの思い出が知りたいですか? 6 上山社会演習に参加しました。 pan{c109001}% ./summer_b.rb [~/Ruby] 1、小学校1年生 2、小学校5年生 3、中学3年生 4、高校2年生 5、大学1年生 6、最近の思い出 どの思い出が知りたいですか? 7 上山社会演習に参加しました。 e.考察 プログラムでは、もし 1 を選択するとprint文で、print("おばあちゃんの家に 行って、山でカブトムシを採りました。\n")と実行される予定である。実際に プログラムを実行してみると おばあちゃんの家に行って、山でカブトムシを採 りました。 と表示される。したがって、プログラムは正しく実行されていると いえる。 C データ(summer_c.dat) プログラム(summer_c.rb) a.考えた設定 その年を選択させて、その年の思い出を読み込みながら表示させるプログラムを考えた b.作成したプログラム データ(summer_c.dat) a 中学校3年生 吹奏楽部の夏の大会があり、中学最後の大会だったので部活動に取り組んでいました。 b 高校2年生 北海道にいる親戚の家に、弟と1週間くらい遊びに行きました。 c 大学1年生 公益自由研究の授業で飛島に嘉村くんや潤くんとかと一緒に2泊3日で泊まりに行きました。 d 最近の思い出 公益社会演習で上山に4泊5日で行きってきました。 プログラム(summer_c.rb) #!/usr/koeki/bin/ruby STDERR.print("a、中学3年生 b、高校2年生 c、大学1年生 d、最近の思い出 どの思い出が知りたいですか?\n") # pritn文を使用して、文章を表示させる summer = STDIN.gets.chomp # 文字をとってきて、変数 summer に代入する。 # chomp は改行もとってくる。 yaer = Regexp.new(summer, true, "e") # summer の中に代入したものを、文字列に変更して、変数 yaer に代入する。 open("summer_c.dat" , "r") do |memories| # summer_c.dat を読み込み、変数 memories する while age = memories.gets # summer_c.dat の最後まで繰り返す if yaer =~ age # もし year と age が同じなら if /(\S+)\s+(\S+)\s+(\S+)/ =~ age # age が文字列 空白 文字列 空白 文字列 空白 文字列 printf("%s \t %s \n" , $2, $3) # printf文を使用して、文章を表示させる end # if に対する end end # if に対する end end # while に対する end end # open に対する end c.もとにしたプログラム opneの内容を変更して表示させた d.実行結果 pan{c109001}% ./summer_c.rb [~/Ruby] a、中学3年生 b、高校2年生 c、大学1年生 d、最近の思い出 どの思い出が知りたいですか? a 中学校3年生 吹奏楽部の夏の大会があり、中学最後の大会だったので部活動に取り組んでいました。 pan{c109001}% ./summer_c.rb [~/Ruby] a、中学3年生 b、高校2年生 c、大学1年生 d、最近の思い出 どの思い出が知りたいですか? b 高校2年生 北海道にいる親戚の家に、弟と1週間くらい遊びに行きました。 pan{c109001}% ./summer_c.rb [~/Ruby] a、中学3年生 b、高校2年生 c、大学1年生 d、最近の思い出 どの思い出が知りたいですか? c 大学1年生 公益自由研究の授業で飛島に嘉村くんや潤くんとかと一緒に2泊3日で泊まりに行きました。 pan{c109001}% ./summer_c.rb [~/Ruby] a、中学3年生 b、高校2年生 c、大学1年生 d、最近の思い出 どの思い出が知りたいですか? d 最近の思い出 公益社会演習で上山に4泊5日で行きってきました。 e.考察 プログラムでは、もし a を選択するとopenで、summer_c.datのデータを読み 込んで $2 が 中学校3年生、 $3 が 吹奏楽部の夏の大会があり、中学最後の 大会だったので部活動に取り組んでいました。 と表示する予定である。十歳 にプログラムを実行してみると、中学校3年生 吹奏楽部の夏の大会があ り、中学最後の大会だったので部活動に取り組んでいました。 と表示される。 したがって、プログラムは正しく実行されているといえる。 3、感想 STDIN.gets.chomp や Regexp.new などのメタキャラの使い方を忘れていて、 使用するときにあやふやだったが、基礎プログラミングIのページや友達の助け で解決することができた。後期もきっと難しいと思うが、あのプログラムが実 行できたときの喜びを忘れずに頑張りたい。 4、参考文献 基礎プログラミング I 第4回 「もしもそうならば」 http://roy/~madoka/2010/r1/04/04_03_theme_01_branch.html ------------------------------------------------------------ 基礎プログラミング I 第7回 「データを読み込むようにするには」 http://roy/~madoka/2010/r1/07/07_09_theme_08_fileread.html ------------------------------------------------------------ 著者:西村 まどか 5、共同学習者 大島 藍 ・ 小松 由里 ・ 久保田 瑛一郎 ・ 横山 広樹 6、添付