第4回のレポート課題です。 氏名: 時田佳穂 学籍番号: C1101603 語学クラス: 中国語3 コース(系): 環境サイエンス 1-A. 「起床とかけて、熱湯ととく。」 「その心は?」 「どちらもさめるから。」 1-B1. 子供会で子どもにあげるお菓子は、 中学生用の袋が一つ500円、 小学生用の袋が一つ400円かかった。 ある家族に中学生が2人、小学生が1人いると (500*2)+(400*1)で合計1400円かかる。 また、別の家族には中学生1人、小学生が3人いるので (500*1)+(400*3)で合計1700円かかる。 1-B2. 服売り場でのセールで、 1着700円のカゴと1着900円のカゴがある。 700円のカゴから2着、900円のカゴから2着とると (700*2)+(900*2)で合計3200円になる。 また、700円のカゴから3着、900円のカゴから1着とると (700*3)+(900*1)で合計3000円になる。 2-A. ◯作成したプログラム・説明 #!/usr/koeki/bin/ruby print"子供会で子どもにあげるお菓子は、\n" print"中学生用の袋が一つ500円、\n" print"小学生用の袋が一つ400円かかった。\n\n" def sum(ele,jun) #引数が2つの関数 #小学生用の個数をele、中学生用の個数をjunとして、 ele * 400 + jun * 500 #合計の金額をsum(ele,jun)で呼び出す。 end #小学生用1つ、中学生用2つのとき ele = 1 jun = 2 printf("小学生%d人、中学生%d人だと合計%d円。\n",ele,jun,sum(ele,jun)) #小学生用3つ、中学生用1つのとき ele = 3 jun = 1 printf("小学生%d人、中学生%d人だと合計%d円。\n",ele,jun,sum(ele,jun)) ◯実行結果 pan{c110160}% ./def_twoparam.rb [~/Ruby] 子供会で子どもにあげるお菓子は、 中学生用の袋が一つ500円、 小学生用の袋が一つ400円かかった。 小学生1人、中学生2人だと合計1400円。 小学生3人、中学生1人だと合計1700円。 2-B. ◯作成したプログラム・説明 #!/usr/koeki/bin/ruby print"子供会で子どもにあげるお菓子は、\n" print"中学生用の袋が一つ500円、\n" print"小学生用の袋が一つ400円かかった。\n\n" def sum(ele,jun) #引数が2つの関数 #小学生用の個数をele、中学生用の個数をjunとして、 ele * 400 + jun * 500 #合計の金額をsum(ele,jun)で呼び出す。 end ele = 3 #小学生用を3つで固定 print"小学生は3人です。\n" STDERR.print"中学生は何人ですか?\n" jun = gets.chomp.to_i printf("小学生%d人、中学生%d人だと合計%d円\n",ele,jun,sum(ele,jun)) print"\n" def barplot(x1,x2,ele,jun) #引数が4つの関数 printf("%d < 中学生の人数 < %d\n",x1,x2) #後で入力してもらう中学生の人数の範囲を表示 STDERR.print"この時の合計金額のグラフ\n" print"+" print"-" * 40 print">\n" for jun in x1..x2 #入力してもらった範囲の数を毎回junに代入 print"|" print"*" * (sum(ele,jun) / 100) #合計金額を100で割った長さのグラフを書く print"\n" end print"\n" end while true STDERR.print"中学生の人数の範囲 (x1 < x < x2)\n" STDERR.print"x1 = " x1 = gets.to_i STDERR.print"x2 = " x2 = gets.to_i if x1 > x2 #x2よりx1の方が大きかった場合に注意してもう一度入力してもらう print"「 x1 < x < x2 」の形になるように入力して下さい。\n\n" redo end break end barplot(x1,x2,ele,jun) #グラフを表示 ◯実行結果 (1)普通にやった場合 pan{c110160}% ./def_oneparam_bar.rb [~/Ruby] 子供会で子どもにあげるお菓子は、 中学生用の袋が一つ500円、 小学生用の袋が一つ400円かかった。 小学生は3人です。 中学生は何人ですか? 3 小学生3人、中学生3人だと合計2700円 中学生の人数の範囲 (x1 < x < x2) x1 = 1 x2 = 6 1 < 中学生の人数 < 6 この時の合計金額のグラフ +----------------------------------------> |***************** |********************** |*************************** |******************************** |************************************* |****************************************** (2)範囲を間違えた場合 pan{c110160}% ./def_oneparam_bar.rb [~/Ruby] 子供会で子どもにあげるお菓子は、 中学生用の袋が一つ500円、 小学生用の袋が一つ400円かかった。 小学生は3人です。 中学生は何人ですか? 2 小学生3人、中学生2人だと合計2200円 中学生の人数の範囲 (x1 < x < x2) x1 = 5 x2 = 3 「 x1 < x < x2 」の形になるように入力して下さい。 中学生の人数の範囲 (x1 < x < x2) x1 = 2 x2 = 5 2 < 中学生の人数 < 5 この時の合計金額のグラフ +----------------------------------------> |********************** |*************************** |******************************** |************************************* ◯考察 グラフの「*」数がちゃんと合計金額/100になっているかどうかを 確かめるために、中学生の人数の範囲を0〜1にした。 その結果、 pan{c110160}% ./def_oneparam_bar.rb [~/Ruby] 子供会で子どもにあげるお菓子は、 中学生用の袋が一つ500円、 小学生用の袋が一つ400円かかった。 小学生は3人です。 中学生は何人ですか? 3 小学生3人、中学生3人だと合計2700円 中学生の人数の範囲 (x1 < x < x2) x1 = 0 x2 = 1 0 < 中学生の人数 < 1 この時の合計金額のグラフ +----------------------------------------> |************ |***************** 小学生の人数は3で固定なので、中学生がいないときの 合計金額は 400*3で1200円である。 グラフでの「*」の数は合計金額/100(個)なので、 12個となっている。 中学生が1人のとき500円分増え、500/100=5(個)分 グラフが伸びているので正しい。 3. 表記の仕方は違うが、考え方は算数・数学と同じだと思いました。 表計算でグラフを作ったことはありましたが、 関数の設定をちゃんとしていれば 表計算ほど入力しなくてもグラフを書いてくれるので 便利だと思います。 4. 参考URL: 基礎プログラミングII 第6回 (神田直弥) http://roy/~naoya/rubyII/6.html 共同学習者: 継枝沙希、赤石亜希子、長谷川成美、小林実貴