第 4 回 繰り返しは引っ張りだそう レポート課題 氏名:下妻 匡哉 学籍番号:c1101164 語学クラス:英語(6) コース(系):地域共創コース 1-A.「熟してないバナナ とかけて、未成年の若者 と解く」 「その心は?」 「どちらもまだまだ青いでしょう。」 「人気のマンションの部屋 とかけて、便秘の人が入ったトイレ と解く。」 「その心は?」 「どちらもすぐには空かないでしょう。」 1-B. 問1. ねむの丘君は、1個500円の牡蛎と1本200円のサザエ串を買った代金がいくら になるか調べた。 答1. 牡蛎を2個、サザエ串を4本買った時の合計代金 500 * 2 + 200 * 4 = 1800 確かめ算 pan{c110116}% bc -l [~] 500*2+200*4 1800 quit 問2. とある家族が、列車で余目駅から新庄経由で村山駅まで行くことになった。 なお、普通列車で行くとする。 運賃は大人が1450円、子供は大人の半額(10円以下の端数は切り捨て)の720円で ある。 答1. 大人2人、子供2人 1450 * 2 + 720 * 2 = 4340 確かめ算 pan{c110116}% bc -l [~] 1450*2+720*2 4340 quit -------------------------------------------------------------------------------- 2.プログラミング問題 A. 1の問題で考えた設問を流用して、def_関数_endを用いると、2-Aのプログラム ができると考えた。 (1)考えた設定 「しもやん一家」が旅行することになった。移動手段は列車で、余目駅から村 山駅まで乗車する。運賃は大人が1450円、子供が半額(10円以下の端数切り捨て)の 720円である。 これらをもとに、人数分の運賃を求めるプログラムdef_twoparam.rbを作成した。 (2)作成したプログラム #!/usr/koeki/bin/ruby def total(x,y) #関数をtotalとし、大人の人数をx、子供の人数をyとする。 1450 * x + 720 * y #今回の公式 end print("しもやん一家が列車で余目〜村山駅間まで行くことになりました。\n") #説明文 sleep 2 print("運賃は大人1450円、子供は半額(10円以下切り捨て)の720円です。\n") #説明文 sleep 2 STDERR.print("大人の人数は?\n") #人数の入力を促す。 adult = gets.chomp!.to_i #入力された数値をadultとする。 STDERR.print("子供の人数は?\n") #人数の入力を促す。 child = gets.chomp!.to_i #入力された数値をchildとする。 sleep 2 printf("大人は%d人、子供は%d人行きます。\n", adult, child) #入力された人数を表示する。 sleep 2 printf("合計%d円\n",total(adult, child)) #上記のdef関数で計算された結果を表示する。 (3)プログラム実行結果 pan{c110116}% ./def_twoparam.rb [~/Ruby] しもやん一家が列車で余目〜村山駅間まで行くことになりました。 運賃は大人1450円、子供は半額(10円以下切り捨て)の720円です。 大人の人数は? 1 子供の人数は? 1 大人は1人、子供は1人行きます。 合計2170円 pan{c110116}% ./def_twoparam.rb [~/Ruby] しもやん一家が列車で余目〜村山駅間まで行くことになりました。 運賃は大人1450円、子供は半額(10円以下切り捨て)の720円です。 大人の人数は? 2 子供の人数は? 3 大人は2人、子供は3人行きます。 合計5060円 (4)考察 大人1人、子供1人の場合 pan{c110116}% bc -l [~/Ruby] 1450*1+720*1 2170 大人2人、子供3人の場合 pan{c110116}% bc -l [~/Ruby] 1450*2+720*3 5060 以上、計算結果が合致していることから、このプログラムは正常に作動している と言える。 -------------------------------------------------------------------------------- 3.感想 今回のプログラムでやったことは、義務教育で学んだ算数・数学と同じ仕組みだ と思う。 今回作った def total(x,y) 1450 * x + 720 * y end の形は、つまりtotal(x,y) = 1450x + 720yであるので、同じ仕組みであると思 う。 今回新たに登場した def の構文は、数学要素があり、かなり苦戦した。私は数 学が苦手である。しかし、どこか懐かしい気持ちにもなれた。 今後も使う機会が多くなると思われるので、しっかり使えるようにして今後に 備えたい。 -------------------------------------------------------------------------------- 4.参考文献 http://roy/~madoka/2011/r2/04/r2_04_03_theme_03_method.html 西村まどか 基礎プログラミングII 第 4 回 「繰り返しは引っ張りだそう」 どんな関数がき てもだいじょうぶ http://roy/~madoka/2010/r2/04/rpt/crt.html 西村まどか 基礎プログラミングII(2010) 第 4 回 「繰り返しは引っ張りだそう」 Ruby/def_func.rb 授業中に作成したプログラム 共同学習者:上林 千尋 , 須藤 充司 ------------------------- 東北公益文科大学 公益学部 2年 下妻 匡哉 C110116@f.koeki-u.ac.jp -------------------------