第 4 回 繰り返しは引っ張りだそう レポート課題 氏名:夏井 知恵子 学籍番号:c1101655 語学クラス:英語クラス6 コース:政策マネジメント 1.筆記問題 i)なぞかけ 「方言とかけて、 携帯電話と解く」 「その心は?」 「 どちらも県外(圏外)では通じません。」 ii) ・豚肉ととり肉を買って代金がいくらかかるか調べた。 豚肉の値段 は 100グラム 120円、とり肉の値段は 100グラム 80円である。 解答例 1 豚肉を200 グラム、とり肉を200グラム買った場合 120 * 2 + 80 * 2 = 400 合計 400 円 確かめ算 pan{c110165}% bc -l 120 * 2 + 80 *2 400 解答例 2 豚肉を400 グラム、とり肉を300グラム買った場合 120 * 4 + 80 * 3 = 720 合計720円 確かめ算 120 * 4 + 80 *3 720 ・ある店で服を2着買うと20%引きになるセールを行っていた。 そのときの服の値段の合計はいくらか。 解答例 1 1000円の服と1500円の服を買った場合 (1000 + 1500) * 0.8 = 2000 合計2000円 確かめ算 pan{c110165}% bc -l ( 1000 + 1500 ) *0.8 2000.0 解答例 2 1200円の服と2000円の服を買った場合 (1200 + 2000 ) * 0.8 = 2560 合計2560円 確かめ算 pan{c110165}% bc -l ( 1200 + 2000 ) * 0.8 2560.0 2.プログラム問題 プログラム問題 A a) 考えた設定 服を2着買うと20%引きになるときの2着の服の値段の合計金額を求めるプログラ ムを設定した。 b) 作成したプログラ厶 #!/usr/koeki/bin/ruby def shop(clotha, clothb) #関数shopとおく。引数はclotha, clothbとする。 (clotha + clothb) * 0.8 #合計金額の計算 end print("ただ今セール期間につき、服を2着お買い上げのお客様はレジにて20%引きとなり ます。\n") STDERR.print("1着目の服の値段は?: ") dressa = gets.to_i #1着目の服の値段を入力。値段は整数なので.to_iとする。 STDERR.print("2着目の服の値段は?: ") dressb = gets.to_i #2着目の服の値段を入力。値段は整数なので.to_iとする。 printf("合計で%d円になります。\n",shop(dressa , dressb)) #shopメソッドに定義された関数にclotha = dressa 、clothb = dressbを代入。 c) もとにしたプログラムからの変更点 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「どんな関数が きてもだいじょうぶ」にあるプログラムを参考にした。 メソッド名をshopと変更し仮引数をclotha , clothb とした。今回は2着の服の 合計金額から20%分を引くため、def - end 内に (clotha + clothb) * 0.8 とい う式を設けた。引数をdressa , dressbとし、printfを用い、%d内に表示する変数を shop(dressa , dressb)とした。 d) プログラムを実行した結果画面 pan{c110165}% ./def_twoparam.rb [~/Ruby] ただ今セール期間につき、服を2着お買い上げのお客様はレジにて20%引きとなり ます。 1着目の服の値段は?: 2500 2着目の服の値段は?: 1780 合計で3424円になります。 e) 考察 計算が正しいか bc -l を使って計算した。 pan{c110165}% bc -l [~/Ruby] (2500 + 1780 ) * 0.8 3424.0 プログラムで導き出された計算結果と bc -l を使って導き出された計算結果が 同じであったため、このプログラムは正しいといえる。 f) 参考文献 http://roy/~madoka/2011/r2/04/r2_04_03_theme_03_method.html 西村まどか 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「どんな関数が きてもだいじょうぶ」 プログラム問題 B a) 考えた設定 服を2着買うと20%引きになるときの2着の服の値段の合計金額を求めるプログラ ムを設定した。1着の金額は1000円と設定されている。そのため、もう1着の値段を入 力してもらうようにした。 b) 作成したプログラム #!/usr/koeki/bin/ruby def shop(clothb) #関数shopとおく。引数は clothb とする (1000 + clothb) * 0.8 #合計金額の計算 end print("ただ今セール期間につき、服を2着お買い上げのお客様はレジにて20%引きとなり ます。") print("1着目は1000円ですね\n") STDERR.print("2着目の服のお値段は?: ") dressb = gets.to_i # printf("合計で%d円になります。\n",shop(dressb)) c) もとにしたプログラムからの変更点 プログラム問題 A を変更し、プログラム問題 B のプログラムを設定した。 変更したところは仮引数を clothb のみとした。 今回は1000円の服と入力されたもう1着の服の合計金額から20%分を引くため、 def - end 内に (1000 +clothb) * 0.8 という式を設けた。引数をdressbとし、 printfを用い、%d内に表示する変数をshop(dressb)とした。 d) プログラムを実行した結果画面 pan{c110165}% ./def_oneparam_a.rb [~/Ruby] ただ今セール期間につき、服を2着お買い上げのお客様はレジにて20%引きとなり ます。1着目は1000円ですね 2着目の服のお値段は?: 1980 合計で2384円になります。 e) 考察 計算が正しいか bc -l を使って計算した。 pan{c110165}% bc -l [~/Ruby] (1000 +1980) *0.8 2384.0 プログラムで導き出された計算結果と bc -l を使って導き出された計算結果が 同じであったため、このプログラムは正しいといえる。 f) 参考文献 http://roy/~madoka/2011/r2/04/r2_04_03_theme_03_method.html 西村まどか 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「どんな関数が きてもだいじょうぶ」 3.感想 算数や数学と同じしくみだと考えられる。 例えば、y = 2x + 1 とすると、xに1、2、3を代入したときにそれぞれ下記のよ うになる。 x = 1 y = 2 * 1 + 1 = 3 x = 2 y = 2 * 2 + 1 = 5 x = 3 y = 2 * 3 + 1 = 7 xに代入する数値を変化させることで、yの値も変化している。 よって、今回の講義で学んだしくみと同じであると考えられる。 今回のプログラムはdefを用いて関数を設定することで、数学で学んだ関数のよ うに使用することが出来ることがわかった。 グラフの作成をしようと思ったが、理解が出来なかったため今回は断念した。 講義ノートを読み直し、理解した上で作れるようにしたい。