第 7 回 ゼミ紹介 レポート課題 氏名:名和 大翔 学籍番号:C1101678 語学クラス:英語6 コース(系):政策マネジメント 1.a.仕様書 外国に旅行にいくのだったら、ローマにいってみたいという理由でこのプロ グラムを作った。遊びかたは単純で、4つの選択肢からローマですることを選び、 それを4回繰り返すといったものだ。最終的に4日間の満足度でエンディングが 異なる。 b.プログラムについて 1.考えた設定 def メソッド を使って繰り返しの手間を省くプログラムを作ろうと思った。 最初は hash も組み込もうとしたがどうすればいいのかわからなくなったの でやめた。新規に作った。 2.作成したプログラム #!/usr/koeki/bin/ruby def kankou(day) #メソッドを作成 STDERR.printf("%s日目です。今日は何をしますか?\n",day) STDERR.print("[1]\tショッピング\n") STDERR.print("[2]\tイタリアン料理を味わう\n") STDERR.print("[3]\t美術館へLet's Go!\n") STDERR.print("[4]\t名所巡り\n") end print("くじ引きでローマ3泊4日のチケットがあたりました!\n") print("思う存分ローマを満喫してください!\n") enjoy = 0 # 楽しみ度 tired = 0 # 疲れ度 manzokudo = 0 # 満足度 day = 1 while true kankou(day) # def でつくったメソッド answer = gets.to_i enjoy += answer printf("楽しみ度は%dです。\n",enjoy) tired += day printf("疲れ度は%dです。\n",tired) manzokudo += enjoy - tired printf("満足度は%dです。\n",manzokudo) if day > 3 break print("今日でローマ3泊4日の旅は終わりです(涙)。この4日間いかがでしたか?\n") end day += 1 end if manzokudo > 16 print("とても満足したみたいですね。ローマに在住したらどうですか!\n") elsif manzokudo > 10 print("充実した4日間を過ごせたようですね。またローマにいってみたらどうですか?\n") elsif manzokudo > 5 print("まぁまぁ楽しめたようですね。\n") else print("ローマは合わなかったみたいですね。ドンマイ!\n") end 3.もとにしたプログラムからの変更点 基礎プログラミング 第6回であつかった「るびおっち」def_rubiocci.rbを 参考にした。変更点はオリジナルのメソッドを作った点と変数の名前を適切 なものに変えた点だ。def を使ってるのは一回だけで結果、シンプルなプロ グラムにした。 4.プログラム実行画面 ・満足度が16より上の場合 pan{c110167}% ./saikoukessaku.rb [~/Ruby] くじ引きでローマ3泊4日のチケットがあたりました! 思う存分ローマを満喫してください! 1日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 4 楽しみ度は4です。 疲れ度は1です。 満足度は3です。 2日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 4 楽しみ度は8です。 疲れ度は3です。 満足度は8です。 3日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 4 楽しみ度は12です。 疲れ度は6です。 満足度は14です。 4日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 4 楽しみ度は16です。 疲れ度は10です。 満足度は20です。 とても満足したみたいですね。ローマに在住したらどうですか! [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 4 楽しみ度は12です。 疲れ度は6です。 満足度は14です。 4日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 4 楽しみ度は16です。 疲れ度は10です。 満足度は20です。 とても満足したみたいですね。ローマに在住したらどうですか! ・満足度が10より上の場合 pan{c110167}% ./saikoukessaku.rb [~/Ruby] くじ引きでローマ3泊4日のチケットがあたりました! 思う存分ローマを満喫してください! 1日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 4 楽しみ度は4です。 疲れ度は1です。 満足度は3です。 2日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 3 楽しみ度は7です。 疲れ度は3です。 満足度は7です。 3日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 3 楽しみ度は10です。 疲れ度は6です。 満足度は11です。 4日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 3 楽しみ度は13です。 疲れ度は10です。 満足度は14です。 充実した4日間を過ごせたようですね。またローマにいってみたらどうですか? ・満足度が5より上の場合 pan{c110167}% ./saikoukessaku.rb [~/Ruby] くじ引きでローマ3泊4日のチケットがあたりました! 思う存分ローマを満喫してください! 1日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 3 楽しみ度は3です。 疲れ度は1です。 満足度は2です。 2日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 3 楽しみ度は6です。 疲れ度は3です。 満足度は5です。 3日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 2 楽しみ度は8です。 疲れ度は6です。 満足度は7です。 4日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 1 楽しみ度は9です。 疲れ度は10です。 満足度は6です。 まぁまぁ楽しめたようですね。 ・満足度が5以下の場合 pan{c110167}% ./saikoukessaku.rb [~/Ruby] くじ引きでローマ3泊4日のチケットがあたりました! 思う存分ローマを満喫してください! 1日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 1 楽しみ度は1です。 疲れ度は1です。 満足度は0です。 2日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 2 楽しみ度は3です。 疲れ度は3です。 満足度は0です。 3日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 2 楽しみ度は5です。 疲れ度は6です。 満足度は-1です。 4日目です。今日は何をしますか? [1] ショッピング [2] イタリアン料理を味わう [3] 美術館へLet's Go! [4] 名所巡り 1 楽しみ度は6です。 疲れ度は10です。 満足度は-5です。 ローマは合わなかったみたいですね。ドンマイ! 5.考察 def メソッド 定義 end によって、繰り返しを入力する部分が省略されて、作りやすいし、またわか りやすいプログラミングになるとわかった。 全部の結果を実行してみて、 manzokudo += enjoy - tired の計算どおりに 数値がだされているとわかった。 たとえば、[3]を4回入力した場合 1日目 楽しみ度は3です。 疲れ度は1です。 満足度は2です。 2日目 楽しみ度は6です。 疲れ度は3です。 満足度は5です。 3日目 楽しみ度は9です。 疲れ度は6です。 満足度は8です。 4日目 楽しみ度は12です。 疲れ度は10です。 満足度は10です。 このように満足度 は楽しみ度から疲れ度を引いたものを加算していってい るとわかる。 c.広告ページ http://roy/~c110167/advertise2/ 2.感想 今回の課題は最高傑作を作らなければいけないということだったので、後期に 学んだことを一通り復習した。特にdefの使い方や利点が課題に取り組む前まで はよくわかっていなかったが、考えて取り組んでいくうちにdefとは繰り返しの 手間を省き、プログラミングを見る人によりわかりやすくするものだと思った。 また、プログラミングを作る過程で前期に学んだ乱数を使おうとしたが、上手 くいかなかった。 if answer = 1 条件 srand comp=rand(x) elsif answer = 2 ・ ・ end としてみたが結果、answer = 1 に設定した乱数だけが起動した。 3.参考文献 基礎プログラミング II 第 6 回 「目的に応じて使ってみよう」 西村まどか先生 http://roy.e.koeki-u.ac.jp/~madoka/2011/r2/06/ 基礎プログラミング II 第 5 回 「何度も呼び出そう」 西村まどか先生 http://roy.e.koeki-u.ac.jp/~madoka/2011/r2/05/ naoya > 基礎プログラミングI > (11)楽しいプログラムを作ろう 神田直弥先生 http://roy.e.koeki-u.ac.jp/~naoya/ruby/11.html #添付します。