第 4 回 繰り返しは引っ張りだそう レポート課題 氏 名: 本間 紘司 学籍番号: C1101796 語学クラス: 中国語 コース(系): 社会福祉 -------------------------------------------------------------------------------- 1.筆記問題 A.(2例) 「おやじとかけまして会社が潰れると解きます」 「その心は?」 「どちらも"とうさん"です」 「スキー場とかけましてうけない芸人と解きます」 「その心は?」 「どちらも"すべります"」 参考文献:なし -------------------------------------------------------------------------------- B.(問題) Aは1冊600円の本と、1個3000円の鞄を買った代金の合計がいくらになるか 調べた。 (解答) 本を3冊、鞄を2個買った場合 600 * 3 + 3000 * 2 = 7800 (確かめ算) pan{HOMMA Koji}% bc [~] 600 * 3 1800 3000 * 2 6000 1800 + 6000 7800 quit 参考文献:西村先生 基礎プログラミングI 第 2 回 「よい考察を行なうには」 http://roy/~madoka/2011/r1/02/r1_02_18_theme_10_consideration.html -------------------------------------------------------------------------------- 2.プログラム問題 A.i.考えた設定 変数が2つ以上定義されているdef--endを用いた計算の結果を導くプログラム ii.作成したプログラム (def_twoparam.rb) #!/usr/koeki/bin/ruby def total(x,y) 600 * x + 3000 * y end STDERR.print("本と鞄の合計金額を求める\n") sleep(1) STDERR.print("本を何冊買う?\n") book = gets.chomp!.to_i STDERR.print("鞄は何個買う?\n") bag = gets.chomp!.to_i printf("本と鞄の合計金額は%d[円]です!\n",total(book,bag)) (説明) ・関数は合計金額のためtotalと置いた。 ・仮引数は変数が2つ以上ある2変数のため x,y とふたつ置いた。 ・STDERR #対話的な表示に使うため、STDERR.print("~\n")で文章の説明をした。 ・gets.chomp!.to_i はキーボードから入力した文字列を整数に変換するプログラム ・printfでは合計金額が本と鞄の個数の合計なので、total(book,bag)と置く iii.もとにしたプログラムからの変更点 (def_func.rb)のプログラムを参考にした ・このままだと短調なのでsleepで少しだけ緩急をつけた。 a = gets.chomp!.to_iだとひとつだけ、また本と鞄なので、 book = gets.chomp!.to_i bag = gets.chomp!.to_iと置いた。 iv.プログラムの実行結果 pan{c110179}% ./def_twoparam.rb [~/Ruby] 本と鞄の合計金額を求める 本を何冊買う? 7 鞄は何個買う? 2 本と鞄の合計金額は10200[円]です! ~確かめ算~ pan{c110179}% bc [~/Ruby] 600 * 7 + 3000 * 2 10200 quit v.考察 確かめ算とプログラムの結果が合致しているので成功と言える。 vi.参考文献 西村先生 基礎プログラミングII 題 4 回 「どんな関数がきてもだいじょうぶ」 http://roy/~madoka/2011/r2/04/r2_04_03_theme_03_method.html 第 4 回 「分かりやすいプログラムへ」 http://roy/~madoka/2011/r2/04/r2_04_05_theme_05_print.html -------------------------------------------------------------------------------- B.i.考えた設定 変数のうち1つを固定した計算をするプログラム ii.作成したプログラム(def_oneparam_a.rb) #!/usr/koeki/bin/ruby def total(y) x = 5 600 * x + 3000 * y end STDERR.print("本と鞄の合計金額を求める\n") sleep(1) STDERR.print("本は5冊買うことに決めた!\n") sleep(1) STDERR.print("ところで鞄は何個買う?\n") bag = gets.chomp!.to_i printf("本と鞄の合計金額は%d[円]です!\n",total(bag)) (説明) ・Aのプログラムに少し改良したもの ・変数のうち一つは固定するので仮引数をyだけに また本を5冊買ったとするので関数の定義においてx = 5 と値を代入しておく ・あとは鞄の買う個数はまだわからないので、bag = gets.chomp!.to_i ・totalはbagだけわからいのでtotal(bag)となる iii.もとにしたプログラムからの変更点 改良を加えただけなのでもとにしたプログラムなし iv.プログラムの実行結果 pan{c110179}% ./def_oneparam_a.rb [~/Ruby] 本と鞄の合計金額を求める 本は5冊買うことに決めた! ところで鞄は何個買う? 2 本と鞄の合計金額は9000[円]です! ~確かめ算~ pan{c110179}% bc [~/Ruby] 600 * 5 + 3000 * 2 9000 quit v.考察 確かめ算とプログラムの実行結果が同じなので成功と言える。 vi.参考文献 なし -------------------------------------------------------------------------------- 3.感想 Aのプログラムが出来た後のBは応用だったのが助かった。 グラフに関しては講義中分からないところがあったで来週の講評を見て、理解 したい。疑問としては確かめ算の bc -1と あったがエラーがでたので bc で 実行出来たのでそれを表記した。