第4回 繰り返しは引っ張りだそう レポート課題 氏名:小川まどか 学籍番号:C1100420 語学クラス:英語2 コース:社会福祉 1.筆記問題 A. 「テストで0点を取った子供とかけて、妻と喧嘩中の夫ときます」 「その心は?」 「どちらも家に帰りたくない気分でしょう」 B. 問題1 美術館の入場料がいくらかかるか 大人は800円,子供は450円かかる (1)大人3人、子供2人の場合 (800*3)+(450*2)=2400+900=3300 確かめ算 pan{OGAWA Madoka}% bc -l [~] 800*3+450*2 3300 quit (2)大人4人、子供5人の場合 (800*4)+(450*5)=3200+2250=5450 確かめ算 pan{c110042}% bc -l [~] 800*4+450*5 5450 quit 問題2 パン屋でパンを買う パンの種類はメロンパン125円、クリームパン110円、あんぱん105円、ピザパ ン140円の四種類 (1)メロンパン2個、クリームパン5個、あんぱん2個、ピザパン1個買う 場合 (125*3)+(110*5)+(105*2)+(140*1)=375+550+230+140=1275 確かめ算 pan{c110042}% bc -l [~] 125*3+110*5+105*2+140*1 1275 quit (2)メロンパン6個、クリームパン3個、あんぱん6個、ピザパン4個買う 場合 (125*6)+(110*3)+(105*6)+(140*4)=750+330+690+560=2270 確かめ算 pan{c110042}% bc -l [~] 125*6+110*3+105*6+140*4 2270 quit 2.プログラム問題 A i.考えた設定 筆記問題Bの問題2を使い、合計を計算するプログラム def_twoparam.rb を作成 した。 ii.作成したプログラム #!/usr/koeki/bin/ruby def pan(a,b,c,d) # panは関数 125 * a + 110 * b + 105 * c + 140 * d end # defの終了 STDERR.print("あなたが買ったパンの合計金額を表示します。\n") print("パンの個数を入力して下さい。\n") print("\n") STDERR.print("メロンパン:") meronpan = gets.chomp.to_i # 入力された値を整数にする STDERR.print("クリー厶パン:") kurimupan = gets.chomp.to_i STDERR.print("あんぱん:") anpan = gets.chomp.to_i STDERR.print("ピザパン:") pizapan = gets.chomp.to_i print("\n") STDERR.printf("合計は %d 円になります。\n",pan(meronpan,kurimupan,anpan,pizapan)) # 入力された値が代入される iii.もとにしたプログラムからの変更点 授業で作成した def_func.rb をもとにした。 変数をプログラムに合うように変更した。 iv.プログラムを実行した結果画面 pan{c110042}% ./def_twoparam.rb [~/Ruby] あなたが買ったパンの合計金額を表示します。 パンの個数を入力して下さい。 メロンパン:5 クリー厶パン:2 あんぱん:2 ピザパン:6 合計は 1895 円になります。 v.導き出された結果の考察 bc -lを使い、プログラムが正しく実行されているか確かめた。 pan{c110042}% bc -l [~/Ruby] 125*5+110*2+105*2+140*6 1895 quit プログラムと同じ値になったので、このプログラムは正しいと言える。 B i.考えた設定 筆記問題Bの問題2を使い、一つの変数を固定して合計を計算する プログラム def_oneparam_a.rb を作成した。 ii.作成したプログラム #!/usr/koeki/bin/ruby def pan(b,c,d) # panは関数 125 * 3 + 110 * b + 105 * c + 140 * d # メロンパンの個数を固定する end # defの終了 print("メロンパンを3個買おう!\n") print("クリームパン(110円)、あんぱん(105円)、ピザパン(140円)はいくつ買おうかな…?\n") print("\n") STDERR.print("クリームパンはいくつお買い上げになりますか?:") kurimupan = gets.chomp.to_i # 入力された値を整数にする STDERR.print("あんぱんはいくつお買い上げになりますか?:") anpan = gets.chomp.to_i STDERR.print("ピザパンはいくつお買い上げになりますか?:") pizapan = gets.chomp.to_i print("\n") printf("合計は %d 円になります。\n",pan(kurimupan,anpan,pizapan)) # 入力された値が代入される iii.もとにしたプログラムからの変更点 授業で作成した def_func.rb をもとにした。 変数をプログラムに合うように変更した。 iv.プログラムを実行した結果画面 メロンパンを3個買おう! クリームパン(110円)、あんぱん(105円)、ピザパン(140円)はいくつ買おうかな…? クリームパンはいくつお買い上げになりますか?:1 あんぱんはいくつお買い上げになりますか?:4 ピザパンはいくつお買い上げになりますか?:4 合計は 1465 円になります。 v.導き出された結果の考察 bc -lを使い、プログラムが正しく実行されているか確かめた。 pan{c110042}% bc -l [~/Ruby] 125*3+110*1+105*4+140*4 1465 quit プログラムと同じ値になったので、このプログラムは正しいと言える。 3.感想 義務教育で学んだ算数や数学と同じ仕組みだと思う。 今回はdefの使い方を学んだ。defを使うと関数に関する計算ができるようになる ので、使いこなせるようになると便利だと思った。 グラフは難しくて理解できないところがあったので、しっかりと復習したい。 4.参考文献 基礎プログラミングII 第4回 繰り返しは引っ張り出そう (http://roy.e.koeki-u.ac.jp/~madoka/2011/r2/04/) ・どんな関数がきてもだいじょうぶ (http://roy.e.koeki-u.ac.jp/~madoka/2011/r2/04/r2_04_03_theme_03_method.html) ・これを代入した答はなあに (http://roy.e.koeki-u.ac.jp/~madoka/2011/r2/04/r2_04_04_theme_04_stderr.html) ・分かりやすいプログラムへ (http://roy.e.koeki-u.ac.jp/~madoka/2011/r2/04/r2_04_05_theme_05_print.html) 西村まどか先生