第4回 基礎プログラミング II レポート課題 氏名:佐竹聡美 学籍番号:c1090816 語学クラス:英語1 コース:社会福祉 1、筆記問題 A. <なぞかけ> 「腐った卵」とかけて「お化け屋敷」と解く。その心はキミ(黄身、気味)が悪い」 B. <1例目> Sさんは団子が大好きです。月見をするために団子を買いました。 みたらし … 80円 →2本 ずんだ … 90円 →3本 あんこ … 90円 →1本 ごま … 100円 →1本 以上の4種類を合計7本買うことにしました。 式は 80 * 2 + 90 * 3 + 90 * 1 + 100 * 1 = 620 合計は 620円 である。 bc -l で確認すると、 pan{c109081}% bc -l [~] 80*2+90*3+90*1+100*1 620 quit 620円となり正しいといえる。 <2例目> Sさんは友だちと鍋をすることにしました。そのための材料を買いにいきました。 白菜 … 140円 → 1個 ネギ … 120円 → 2本 肉団子 … 20円 → 10個 しめじ … 80円 → 2袋 以上の品を買う買うことにしました。 式は 140 * 1 + 120 * 2 + 20 * 10 + 80 * 2 = 740 合計は 740円 である。 bc -l で確認すると、 pan{c109081}% bc -l [~] 140*1+120*2+20*10+80*2 740 quit 740円となり正しいといえる。 B、プログラム問題 A. a.考えた設定 変数が2つ以上定義されている def -- end を用いた数値の計算を導くプログラ ム。 購入する団子の本数を入力していくと、それぞれの合計金額と、全ての合計金額 が出力されるようにした。 b.作成したプログラム #!/usr/koeki/bin/ruby def mita(x) 80 * x # みたらしの値段 * 本数 end def zunda(y) 90 * y #ずんだの値段 * 本数 end def anko(z) 90 * z #あんこの値段 * 本数 end def goma(k) 100 * k #ごまの値段 * 本数 end print("今日は月見です。団子を買いにいきましょう!\n") print("本日は4種類用意しています。\n") STDERR.print("みたらし団子を何本買いますか?\n") STDERR.print("みたらし(1本80円): \n") a = gets.to_i # to_i で整数表示にする STDERR.print("ずんだ団子を何本かいますか?\n") STDERR.print("ずんだ(1本90円): \n") b = gets.to_i STDERR.print("あんこ団子を何本買いますか?\n") STDERR.print("あんこ(1本90円): \n") c = gets.to_i STDERR.print("ごま団子を何本買いますか?\n") STDERR.print("ごま(1本100円): \n") d = gets.to_i STDERR.printf("\nみたらし団子の合計金額: %d 円\n",mita(a)) STDERR.printf("ずんだ団子の合計金額: %d 円\n",zunda(b)) STDERR.printf("あんこ団子の合計金額: %d 円\n",anko(c)) STDERR.printf("ごま団子の合計金額: %d 円\n",goma(d)) printf("\n全ての合計金額は %d 円です。\n",mita(a)+zunda(b)+anko(c)+goma(d)) c.もとにしたプログラムからの変更点 def_func.rb をもとに、変数を変換した。 d.実行結果 pan{c109081}% ./def_twoparam.rb [~/Ruby] 今日は月見です。団子を買いにいきましょう! 本日は4種類用意しています。 みたらし団子を何本買いますか? みたらし(1本80円): 2 ずんだ団子を何本かいますか? ずんだ(1本90円): 4 あんこ団子を何本買いますか? あんこ(1本90円): 5 ごま団子を何本買いますか? ごま(1本100円): 6 みたらし団子の合計金額: 160 円 ずんだ団子の合計金額: 360 円 あんこ団子の合計金額: 450 円 ごま団子の合計金額: 600 円 全ての合計金額は 1570 円です。 e.考察 pan{c109081}% bc -l [~/Ruby] 80*2 160 90*4 360 90*5 450 100*6 600 160+360+450+600 1570 quit 上記の計算より、正しいといえる。 B、 a.考えた設定 変数のうち一つを固定して、ユーザーが入力した数と計算させて合計金額を出力 させるプログラム。みたらし団子を10本買うことを固定して、他のずんだ、あん こ、ごまの購入本数を入力してもらう。 b.作成したプログラム #!/usr/koeki/bin/ruby def dango(x) 80 * 10 + 90 * x #購入するみたらし団子の本数を 3(本)と固定する end STDERR.print("本日は団子を2種類を用意しております。\n") STDERR.print("☆みたらし - 1本80円 \t ☆ずんだ - 1本90円 \n\n") STDERR.print("みたらしを10本買います!\n") STDERR.print("ずんだは何本買いますか?\n") zunda = gets.to_i #to_i で整数表示にする printf("\n合計金額は %d 円です。\n",dango(zunda)) # medhod に定義された関数に x = zunda を代入する c.もとにしたプログラムからの変更点 def_func.rbをもとに変数を変換した。 d.実行結果 <ずんだ3本の場合> pan{c109081}% ./def_oneparam_a.rb [~/Ruby] 本日は団子を2種類を用意しております。 ☆みたらし - 1本80円 ☆ずんだ - 1本90円 みたらしを10本買います! ずんだは何本買いますか? 3 合計金額は 1070 円です。 <ずんだ8本の場合> pan{c109081}% ./def_oneparam_a.rb [~/Ruby] 本日は団子を2種類を用意しております。 ☆みたらし - 1本80円 ☆ずんだ - 1本90円 みたらしを10本買います! ずんだは何本買いますか? 8 合計金額は 1520 円です。 e.考察 <ずんだ3本の場合> pan{c109081}% bc -l [~/Ruby] 80*10 800 90*3 270 800+270 1070 quit <ずんだ8本の場合> pan{c109081}% bc -l [~/Ruby] 80*10 800 90*8 720 800+720 1520 quit 上記の計算より、正しいといえる。 3、感想 義務教育で学んだ算数や数学と同じ仕組みだと思う。表計算、簿記などからグラ フをある。これは算数や数学と似たような仕組みだと思う。 今回のレポートはあまり友達の力をあまり借りず作成することができた。でもス ムーズにはいかなかった。B問題では固定した1つ以外の数値が2つ以上の場合を どうしたらいいのか分からなかった。何回かしたか実行ならなかった。 今回C問題まで出来なかったがプログラムでグラフが作れるのはすごいと思った。 授業中であまりグラフのやり方が分からなかったのでしっかり復習しておきたい です。 参考文献 基礎プログラミング II 第4回 繰り返しは引っ張りだそう *「どんな関数がきてもだいじょうぶ」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/04/04_03_theme_03_method.html *「これを代入した答はなあに」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/04/04_04_theme_04_stderr.html *「分かりやすいプログラムへ」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/04/04_05_theme_05_print.html *「操作をまとめる」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/04/04_07_theme_07_allinone.html Wコロン - Wikipedia http://ja.wikipedia.org/wiki/W%E3%82%B3%E3%83%AD%E3%83%B3 共同学習者 *酒井春香