第 1 回 前期の復習 レポート課題(再提出) 氏名: 渡辺 龍 学籍番号: c1102057 語学クラス:中国語 クラス3 コース(系):地域共創コース 0.レポートの変更点 前回はレポートは以下の事が出来ていなかった。 *考えた設定 *プログラムを実行した結果画面 その他にも参考文献などに随所おかしな点があった。 以上のことを今回は正確に載せたいと思う。 1.筆記問題 前期に学んだことを述べていこうと思う。 まず、getはキーボードからの入力を読み込むものとして使った。 +・-・*・/ などの演算子も教わった。 変換メソッドとして to_i to_f to_s を使用していた。 繰り返しには while end など活用した。 条件指定には if elsif else を使用した。 正規表現 \S \s \d + などを使用した。 openメソットは他のファイルから読み込む際に使用した。 2進数や16進数なども学んだ。 2.プログラム問題 今回はプログラムを2つ作りました。よろしくお願いします。 まずプログラム summer_a.rb について述べていく。 i.考えた設定(a) 「今年の夏に友達と仙台に行った時に起きた事件について語る。」という設定 を考え、これについて解く summer_a.rb というプログラムを作成した。 ii.プログラムの説明(a) #!/usr/koeki/bin/ruby は必須となるものなので最初に書いた。 自分の書きたいものを載せるため、printを使用した。 print を使用するとプログラムの文として、表示される。 summer_a.rb では最初に語りを聞くか否かを問い、答えによって次の展開が変わ るようになっている。 7行目の kotae = gets.chomp! を入れることによって、利用者が問に対して答え られるようになる。 if 文は条件指定を表す。この9行目の場合利用者が Yes と答えれば「仙台での 思い出について」語るようになっている。 13行目の sleep は()内に数字をいれるとその杪数分時間が経つまで、表示され ないという仕組みになっている。私は利用者が文を読むことを考え、それに担っ た数字を入れた。 22行目の else は最後の条件指定に使用するものである。kotae == "No" は利用者がNo と答えれば次に用意された文へいく。今回はただ終わる結果である。 end は if else などの条件指定を終わらせるためのものである。 iii.作成したプログラム(a) #!/usr/koeki/bin/ruby print"「仙台に友達と買い物に行ったことについて語るプログラムを起動しますか?」\n" print"Yes or No\n" kotae = gets.chomp! if kotae == "Yes" print"8月に私は友達と仙台に遊びに行った。\n" print"男だけだったがとても楽しく買い物や食事をした\n" print"帰りの高速道路をものすごい速度で運転していた友達だが、次の瞬間!!\n" sleep(8) print"「プーン 前の車止まりなさい」という言葉が聞こえた。\n" sleep(5) print"後に就いていた車は覆面パトカーだった。\n" print"友達は「人生終わった」と連呼していた。\n" print"私や他の人はその運転していた友人の落ち込み様に大爆笑していた。\n" print"本当なら一発免許取消なのだが友人は6000円の罰金で済んだ。\n" print"改めて車は安全運転をしなくては、と誓う日だった。\n" else kotae == "No" print"また今度〜\n" end iv.プログラムミングの実行結果(a) Yes の場合 pan{c110205}% ./summer_a.rb [~/Ruby] 「仙台に友達と買い物に行ったことについて語るプログラムを起動しますか?」 Yes or No Yes 8月に私は友達と仙台に遊びに行った。 男だけだったがとても楽しく買い物や食事をした 帰りの高速道路をものすごい速度で運転していた友達だが、次の瞬間!! 「プーン 前の車止まりなさい」という言葉が聞こえた。 後に就いていた車は覆面パトカーだった。 友達は「人生終わった」と連呼していた。 私や他の人はその運転していた友人の落ち込み様に大爆笑していた。 本当なら一発免許取消なのだが友人は6000円の罰金で済んだ。 改めて車は安全運転をしなくては、と誓う日だった。 No の場合 pan{c110205}% ./summer_a.rb [~/Ruby] 「仙台に友達と買い物に行ったことについて語るプログラムを起動しますか?」 Yes or No No また今度〜 v.考察(a) Yes or No どちらかを入力した際、正確な答えが表示されるだろうか? Yes と入力した場合「仙台の思い出」がきちんと語られるようになっていた。 sleep などにも異変は感じられなかった。 No と入力した場合「また今度〜」と表示されプログラムが閉じられる。 結論、Yes と No どちらかを入力するとプログラムは正確に起動した。 次に summer_b.rb について述べていく。 i.考えた設定(b) 「幼少期から現在にいたるまでの夏の思い出を語る。その際に5年ごとに区切り をつけて、1歳〜5歳・5〜10歳・10歳〜15歳・15歳〜20歳というように四択にし 利用者に選択してもらう。」という設定を考え、これについて解くプログラム summer_b.rb 作成した。 ii.プログラムの説明(b) #!/usr/koeki/bin/ruby は必須となるものなので最初に書いた。 自分の書きたいものを載せるため、printを使用した。 print を使用するとプログラムの文として、表示される。 print"\n" は改行のために使用した。 kotae = gets.chomp!.to_i は利用者に入力させるためのものである。これがな い場合入力もできず、プログラムにエラーが表示される。また to_i は入力する ものが数字であるためつけた。これがない場合も、プログラムが入力した数字を 読みとれなくなりエラー表示がでる。 if 文はsummer_b.rb 同様に条件指定にしようした。今回は kotae = 1 と答えた場合に次 の文章に進めるようになっている。 print"\n" は随所に改行を入れ文章を見やすくするためのものである。 sleepもsummer_b.rb と同様に時間を作り利用者に読む時間を与える為に使用し た。 ちなみに、1を選択した場合0歳〜5歳の中で思い出として残っているエピソード が表示される。 45行目の elsif は if と同様に条件指定を表す。この場合は2を答えると、5歳〜 10歳の中からの思い出が表示される。この時にも print"\n" や sleep を使用し 利用者の見やすさなどを重視した。 77行目〜87行目までは、上記に書いたものと同様の形式になっている。 88行目の else は if elsif と同様に条件指定の意味を持つ。 kotae > 4 は答えが4以上の場合を示す。例を上げると6や10である。 間にある || は または と言う意味がある。例: A または B という形になる。 kotae < 1 は答えが1以下の場合を示す。例を上げると0などである。 end は if elsif else などの条件指定を閉じる意味があるため、使用した。 iii.作成したプログラム(b) #!/usr/koeki/bin/ruby print"夏の思い出について語りたいと思います。\n" sleep(2) print"\n" print"この中から選択して下さい。 \n" print" =============================================== 0〜5歳 = 1 5〜10歳 = 2 10〜15歳 = 3 15〜20歳 = 4 ===============================================\n" kotae = gets.chomp!.to_i if kotae == 1 print"\n" sleep(2) print"私はまだ幼く思いではあまり無いが、唯一憶えているのが5歳の時の話である。\n" sleep(2) print"\n" print"物心がついて初めて家族で海に行った。\n" print"私は姉と砂浜で遊んでいた。\n" print"突然テンションの上がった姉は何を思ったか私を担いで海に投げた。\n" print"別に痛くも無かったため、私はすぐに立ち上がろうとしていた。\n" print"しかし立ち上がろうにもたてないのである。\n" print"その理由は……\n" print"\n" print"\n" sleep(10) print"その時私が覆いていたズボンがジーンズ生地の物であったからである。\n" print"\n" sleep(5) print"当時の私にはとてつもなく重く感じ、私は何度も海に沈んだ。\n" print"異変に気付いた父親が私を助けてくれた。しかし姉は自分の行いと白状せずに私が勝手に海に落ちた事にされた。\n" print"5歳にして初めて死を経験しかけた苦い思い出である\n" print"今となれば笑い話になっている。\n" elsif kotae == 2 print"\n" sleep(3) print"8歳の時私は夏休みにアリの自由研究を行った。\n" print"私はアリが大好きで毎日アリの研究をしていた。\n" print"ある日私は研究用の蜂蜜を誤って玄関にこぼした。\n" print"そのことを気にせず、私は出かけた。\n" print"そして私が帰って来た頃には……\n" print"\n" sleep(10) print"玄関にアリが1万匹位いた。\n" sleep(5) print"\n" print"あれは正しくアリのじゅうたんの様だった。\n" print"その後私は母親に酷く叱られた。\n" print"その性か私は綺麗好きになった気がする。\n" elsif kotae == 3 print"\n" sleep(3) print"15歳の夏の思い出は、野球部の最後の大会に負けた日にもう一つ悲劇が重なった事である。\n" print"それは……\n" print"\n" sleep(5) print"当時付き合ってた彼女にふられた事である。\n" sleep(3) print"\n" print"正直その時は2つのショックが重なって何が何だか分らなかった。" print"今では淡い思い出だが、思い出すと今でも胸が痛くなる。\n" elsif kotae == 4 print"\n" sleep(3) print"大学での夏の思いでは、公翔際の実行委員メンバーで旅行に行ったことである。\n" print"それまでバイト地獄だったためとても楽しかった。\n" print"\n" sleep(5) print"後期も授業を頑張ろうと思える楽しい旅行だった。\n" else kotae > 4 || kotae < 1 print"1〜4の数字を打ち込んで下さい。\n" end iv.プログラムの実行結果(b) 1を選択した場合 pan{c110205}% ./summer_b.rb [~/Ruby] 夏の思い出について語りたいと思います。 この中から選択して下さい。 =============================================== 0〜5歳 = 1 5〜10歳 = 2 10〜15歳 = 3 15〜20歳 = 4 =============================================== 1 私はまだ幼く思いではあまり無いが、唯一憶えているのが5歳の時の話である。 物心がついて初めて家族で海に行った。 私は姉と砂浜で遊んでいた。 突然テンションの上がった姉は何を思ったか私を担いで海に投げた。 別に痛くも無かったため、私はすぐに立ち上がろうとしていた。 しかし立ち上がろうにもたてないのである。 その理由は…… その時私が覆いていたズボンがジーンズ生地の物であったからである。 当時の私にはとてつもなく重く感じ、私は何度も海に沈んだ。 異変に気付いた父親が私を助けてくれた。しかし姉は自分の行いと白状せずに私が勝手に海に落ちた事にされた。 5歳にして初めて死を経験しかけた苦い思い出である 今となれば笑い話になっている。 2を選択した場合 pan{c110205}% ./summer_b.rb [~/Ruby] 夏の思い出について語りたいと思います。 この中から選択して下さい。 =============================================== 0〜5歳 = 1 5〜10歳 = 2 10〜15歳 = 3 15〜20歳 = 4 =============================================== 2 8歳の時私は夏休みにアリの自由研究を行った。 私はアリが大好きで毎日アリの研究をしていた。 ある日私は研究用の蜂蜜を誤って玄関にこぼした。 そのことを気にせず、私は出かけた。 そして私が帰って来た頃には…… 玄関にアリが1万匹位いた。 あれは正しくアリのじゅうたんの様だった。 その後私は母親に酷く叱られた。 その性か私は綺麗好きになった気がする。 3を選択した場合 pan{c110205}% ./summer_b.rb [~/Ruby] 夏の思い出について語りたいと思います。 この中から選択して下さい。 =============================================== 0〜5歳 = 1 5〜10歳 = 2 10〜15歳 = 3 15〜20歳 = 4 =============================================== 3 15歳の夏の思い出は、野球部の最後の大会に負けた日にもう一つ悲劇が重なった事である。 それは…… 当時付き合ってた彼女にふられた事である。 正直その時は2つのショックが重なって何が何だか分らなかった。今では淡い思い出だが、思い出すと今でも胸が痛くなる。 4を選択した場合 pan{c110205}% ./summer_b.rb [~/Ruby] 夏の思い出について語りたいと思います。 この中から選択して下さい。 =============================================== 0〜5歳 = 1 5〜10歳 = 2 10〜15歳 = 3 15〜20歳 = 4 =============================================== 4 大学での夏の思いでは、公翔際の実行委員メンバーで旅行に行ったことである。 それまでバイト地獄だったためとても楽しかった。 後期も授業を頑張ろうと思える楽しい旅行だった。 1〜4以外を選択した場合 pan{c110205}% ./summer_b.rb [~/Ruby] 夏の思い出について語りたいと思います。 この中から選択して下さい。 =============================================== 0〜5歳 = 1 5〜10歳 = 2 10〜15歳 = 3 15〜20歳 = 4 =============================================== 7 1〜4の数字を打ち込んで下さい。 v.考察 1などを入力する際に間にスペースなどを入れても実行結果は変わらないのか? または、プログラムは正確に起動するか? 結果、間にスペースなどを入れても結果もプログラム起動にも異変は見られなかっ た。 3.感想 今回のプログラムではif条件にとても苦労した。久しぶりであまり想像通りにい かず悔しかった。次回も一生懸命に頑張りたい。 4.参考文献 神田先生 前期基礎プログラミングページ http://roy/~naoya/ruby/3.html http://roy/~naoya/ruby/4.html http://roy/~naoya/ruby/5.html 協力者 松田 大輝 細田 洋平