第 4 回 繰り返しは引っ張りだそう レポート課題 氏名:鈴木椎菜 学籍番号:C1101276 語学クラス:英語6 コース(系):社会福祉コース 1.筆記問題 A ・その1 「片思いとかけまして、お正月と解きます。」 「その心は?」 「やきもちがつきものです。」 ・その2 「別れの言葉とかけまして、心霊スポットと解きます。」 「その心は?」 「君 気味 が悪い。」 ・その3 B ・その1 通話料とメール代の総額を求めます。 通話料は30秒につき10円(30秒未満は0秒とし、31秒以上60秒未満は30秒とする。)、 メール代は1通につき3円です。 <計算> ・1回目 通話時間: 65分15秒 メール送受信回数: 503回 -------------------------- pan{SUZUKI Shiina}% - bc [~] 65 * 2 * 10 # 65分 * 2(30秒が何回あるか) * 10円 1300 15 / 30 * 10 # 15秒 / 30秒(30秒が何回あるか) * 10円 0 503 * 3 # 503通 * 3円 1509 1300 + 0 + 1509 # 上記の計算の合計を求める 2809 -------------------------- ・2回目 通話時間: 90分30秒 メール送受信回数: 1027回 -------------------------- pan{c110127}% - bc [~/Ruby] 90 * 2 * 10 # 90分 * 2(30秒が何回あるか) * 10円 1800 30 / 30 * 10 # 30秒 / 30秒(30秒が何回あるか) * 10円 10 1027 * 3 # 1027通 × 3円 3081 1800 + 10 + 3081 # 上記の計算の合計を求める 4891 -------------------------- ・その2 動物園の1日の入場人数からを入場料金の総額を求めます。 大人は800円、子供は400円です。 <計算> ・1回目 大人の入場人数: 189人 子どもの入場人数: 69人 ------------------------- pan{c110127}% - bc [~] 800 * 189 # 800円 * 189人 151200 400 * 69 # 400円 * 69人 27600 151200 + 27600 # 上記の計算の合計 178800 ------------------------- ・2回目 大人の入場人数: 19人 子どもの入場人数: 5人 ------------------------- pan{c110127}% - bc [~/Ruby] 800 * 19 # 800円 * 19人 15200 400 * 5 # 400円 * 5人 2000 15200 + 2000 17200 ------------------------- 2.プログラム問題 提出する問題その1: A <設定> 公益動物園の一日の入場料の総額を求めるプログラム。 大人が407人、子どもが303人入場したとする。 <プログラム: def_twoparam.rb> #!/usr/koeki/bin/ruby # 大人の入場料の総額を計算する関数をつくる def f(x) # fが関数、xが仮引数(後で定数代入してあってるか調べるためのもの) x * 800 # 関数の定義 x を 800倍する。 end # 子どもの入場料の総額を計算する関数をつくる def g(x) # gが関数、xが仮引数(後で定数代入してあってるか調べるためのもの) x * 400 # 関数の定義 x を 400倍する。 end # ここからプログラム def sougaku(otona,kodomo) # sougakuメソッド goukei = f(otona) + g(kodomo) # f(otona)とg(kodomo)をgoukeiに加算代入する # f(x)の仮引数xにotonaを代入して計算。 # g(x)の仮引数xにkodomoを代入して計算。 # f(otona)とg(kodomo)をgoukeiに加算代入する print("\n") # 改行 printf("本日の入場料総額:%d円\n", goukei) end print"公益動物園----本日の入場者・入場料総計\n" otona = 407 # 大人が407人 printf("大人の総入場者数:%d人\n", otona) printf("大人の入場料総額:%d円\n", f(otona)) kodomo = 303 # 子どもが303人 printf("子どもの総入場者数:%d人\n", kodomo) printf("子どもの入場料総額:%d円\n", g(kodomo)) sougaku(otona,kodomo) # sougakuメソッドを呼ぶ。ここで表示する。 <実行結果> ----------------------- pan{c110127}% ./def_twoparam.rb [~/Ruby] 公益動物園----本日の入場者・入場料総計 大人の総入場者数:407人 大人の入場料総額:325600円 子どもの総入場者数:303人 子どもの入場料総額:121200円 本日の入場料総額:446800円 ------------------------ <考察> ・プログラムについて ふたつの関数を設定する、というところで少し悩んだが、 defメソッドを2つつくれば良いのかなと思い f(x)の関数の定義と、g(x)の関数の定義を作ってみた。 そのようにしたらプログラムがうまく作動した。 ・計算結果の確かめ ------------------- pan{c110127}% - bc [~/Ruby] 407 * 800 # 大人の入場料総額の計算 407人 * 800円 325600 303 * 400 # 子どもの入場料総額の計算 303人 * 400円 121200 325600 + 121200 # 大人の入場料と子どもの入場料の総計 446800 ------------------- 提出する問題その2: B <設定> 公益動物園の一日の入場料の総額を求めるプログラム。 大人が407人入場したとし、子どもの入場者数は入力してもらう。 その上で計算を行う。 <プログラム: def_oneparam_a.rb> #!/usr/koeki/bin/ruby # 大人の入場料の総額を計算する関数をつくる def f(x) # fが関数、xが仮引数(後で定数代入してあってるか調べるためのもの) x * 800 # 関数の定義 ここを変えればf(x)の値が変わる end # 子どもの入場料の総額を計算する関数をつくる def g(x) # gが関数、xが仮引数(後で定数代入してあってるか調べるためのもの) x * 400 # 関数の定義 ここを変えればf(x)の値が変わる end # ここからプログラム def sougaku(otona,kodomo) # sougakuメソッド goukei = f(otona) + g(kodomo) # f(otona)とg(kodomo)をgoukeiに加算代入する print("\n") # 改行 printf("本日の入場料総額:%d円\n", goukei) end print"公益動物園----本日の入場者・入場料総計\n" otona = 407 # 大人が407人 printf("大人の総入場者数:%d人\n", otona) printf("大人の入場料総額:%d円\n", f(otona)) print("子どもは何人でしたか??\n") kodomo = gets.to_i printf("子どもの総入場者数:%d人\n", kodomo) printf("子どもの入場料総額:%d円\n", g(kodomo)) sougaku(otona,kodomo) # sougakuメソッドを呼ぶ。ここで表示する。 <実行結果 その1> ------------------------- pan{SUZUKI Shiina}% ./def_oneparam_a.rb [~/Ruby] 公益動物園----本日の入場者・入場料総計 大人の総入場者数:407人 大人の入場料総額:325600円 子どもは何人でしたか?? 209 子どもの総入場者数:209人 子どもの入場料総額:83600円 本日の入場料総額:409200円 ------------------------- <考察 その1> ・計算結果の確かめ ----------------------- pan{c110127}% - bc [~/Ruby] 407 * 800 # 大人の入場料総額の計算 407人 * 800円 325600 209 * 400 # 子どもの入場料総額の計算 209人 * 400円 83600 325600 + 83600 # 大人の入場料と子どもの入場料の総計 409200 ----------------------- <実行結果 その2> ------------------------- pan{c110127}% ./def_oneparam_a.rb [~/Ruby] 公益動物園----本日の入場者・入場料総計 大人の総入場者数:407人 大人の入場料総額:325600円 子どもは何人でしたか?? 999 子どもの総入場者数:999人 子どもの入場料総額:399600円 本日の入場料総額:725200円 ------------------------- <考察 その2> ・計算結果の確かめ ---------------------- pan{c110127}% - bc 407 * 800 # 大人の入場料総額の計算 407人 * 800円 325600 999 * 400 # 子どもの入場料総額の計算 999人 * 400 399600 325600 + 399600 # 大人の入場料と子どもの入場料の総計 725200 ---------------------- 3.感想 中学校の数学では、xとyの方程式があってその一方が変化すると多方も変化し、 それが決まった型式の表となったことは覚えている。 今回作成したプログラムも、 x * 800 = なんらかの数字 y * 400 = なんらかの数字 のような二次方程式で中学校のテストに出そうだと思った。 よって、同じような仕組みであると思う。 4.参考文献など <プログラム問題> 基礎プログラミング西村クラス 第四回講義ノート URL: http://roy/~madoka/2011/r2/04/lec/resume.html 基礎プログラミングII 第四回の講義で作成したプログラム(def_func.rb) --------------------------- 東北公益文科大学 公益学部 公益学科 2年 鈴木椎菜 c110127@f.koeki-u.ac.jp