第 7 回 ゼミ紹介 レポート課題 氏名:渡辺 龍 学籍番号:c1102057 語学クラス:中国語 3クラス コース(系):地域共創コース A.最高傑作に関するレポート a.企画書 ☆企画意図☆ (kikakusyo.txt) 企画意図は、普段人には数字(計算)と関係する場面が多い。例えばスーパーに買 い物に行くなど、食堂でご飯を買うときなどである。だから、今回私が作ったの は「購入した品の合計を求めるプログラム」である。単純な内容かもしれないが、 普段の生活では活用できるので是非試していただきたい。 ★遊び方★ 製品番号が付いている複数ある服やアクセサリーの中から、番号・購入個数を入 力してもらい、合計を求めるプログラム。 なお、購入回数・購入個数に制限はなく何度も買い物できる。当然、その回数・ 購入個数分の合計を計算する。 つまらないかもしれませんが、よろしくお願い致します。 ※注意事項※ このプログラムは渡辺龍が著作権を保有しています。このプログラムの入手・実行・改変・再配布は、いずれも無料で自由に行なうことができます。ただしこのプログラムを取り扱うことで生じたいかなる結果に対しても著作権者は責任を負いません。 ■ダウンロード方法■ ハイパーリンクを右クリックし「Save Link AS...」を選択して、プログラムを保存して下さい。 □連絡先□ c110205@f.koeki-u.ac.jp b.プログラムに関する部分 (kessaku.rb) (1)考えた設定 お買物プログラム。 複数ある服・アクセサリーの中から選択してもらう。購入個数なども入力した 後に購入合計金額を表示するプログラム。 (2)作成したプログラム #!/usr/koeki/bin/ruby print("下記の品から買い物をして下さい。しばらくお待ち下さい。\n") sleep(3) # かっこ内の数字に則って表示する速度が変わる。 $KCODE = 'e' def message(m) # メソッドの設定。 messageという関数を定義。引数は m とする。 print("\n\n以上で買い物を終えますか?\n") print("\n終了なら Ctrl - D を押して下さい、続けて買うのであれば Return を入力してください。\n") end # def を閉じるための end item = Hash.new # Hash.new で新たな Hash を作成。関数item を定義 。 total = 0 # 関数 total を定義。0 から始まることを示している。合計を求める為に使用。 item[1] = "パーカー", 1000 ,"メンズ" item[2] = "ダッフルコート",11000 ,"メンズ" item[3] = "カーゴンパンツ",7000 ,"メンズ" item[4] = "帽子",4000 ,"メンズ" item[5] = "靴",10000 ,"メンズ" item[6] = "ネックレス",3000 ,"共用" item[7] = "カーディガン",1500 ,"メンズ" item[8] = "ネクタイ",1300 ,"共用" item[9] = "ループタイ",2000 ,"共用" item[10] = "ジーンズジャケット",12000 ,"メンズ" item[11] = "時計",20000 ,"メンズ" item[12] = "マフラー",9000 ,"共用" item[13] = "ジーンズパンツ",8000 ,"メンズ" item[14] = "だてメガネ",1500,"共用" # 上記には各品の名品・番号・値段が表示される。 print("\n買い物をはじめます\n") print"\n" # 改行を表す。 print "#" * 50 # # が50回乗算されることを表す。* は乗算を示す。 print("\n買い物カゴ\n") print("商品なし\n") print "#" * 50 # # が50回乗算されることを表す。* は乗算を示す。 print"\n" # 改行を表す。 print("\n価格の安い順に並べてあります。\n") print"\n" # 改行を表す。 print("下記に書いてあるのは、品名・値段・メンズ専用かまたは共用かなど書いてあります。") print"\n" # 改行を表す。 print("\n商品を選んで下さい。\n") item.keys.sort{|x, y| # sort は並び替えを表す。sort xとyは変数。 item[x][1] <=> item[y][1] # 置き換えを表す。 }.each{|z| printf("番号%d \t %s \t %s \t 価格 %d円 \n", z, item[z][2], item[z][0], item[z][1])} while true # 繰り返し作業 print("\n買いたい番号を入力してください。\n") a = gets.chomp.to_i # 入力を求める。変数は a とする。 print("数量は何個買いますか。\n") b = gets.chomp.to_i # 入力を求める。変数は b とする。 total += item[a][1] * b # 合計を求める。item[?]の変数を引用し品の金額を引き出す。 # bは購入個数。つまり 金額 + 個数 という形になる。 print"\n" # 改行を表す。 print "#" * 50 # # が50回乗算されることを表す。* は乗算を示す。 print("\n買い物カゴ\n") printf("\n%s \t 数量: %d\n",item[a][0],b) print "#" * 50 # # が50回乗算されることを表す。* は乗算を示す。 message(a) # メソッドを呼び出す。a は変数。 c = gets # c をとってくる if c == nil # if は条件指定。Ctrl-D を打った場合。 break # 繰り返しから抜け出す。 end # if を閉じるための end end # While を閉じるための end total.to_i # total をとってくる。 print "*" * 50 # * が50回乗算されることを表す。* は乗算を示す。 printf("\n合計%d円です。\n",total) print "*" * 50 # * が50回乗算されることを表す。* は乗算を示す。 print"\n" # 改行を表す。 print("お買い上げありがとうございました!!!\n") (3)実行結果 今回は2つ結果載せます。 1.買い物が1回だけで終了した場合 pan{c110205}% ./kessaku.rb [~/Ruby] 下記の品から買い物をして下さい。しばらくお待ち下さい。 買い物をはじめます ################################################## 買い物カゴ 商品なし ################################################## 価格の安い順に並べてあります。 下記に書いてあるのは、品名・値段・メンズ専用かまたは共用かなど書いてあります。 商品を選んで下さい。 番号1 メンズ パーカー 価格 1000円 番号8 共用 ネクタイ 価格 1300円 番号14 共用 だてメガネ 価格 1500円 番号7 メンズ カーディガン 価格 1500円 番号9 共用 ループタイ 価格 2000円 番号6 共用 ネックレス 価格 3000円 番号4 メンズ 帽子 価格 4000円 番号3 メンズ カーゴンパンツ 価格 7000円 番号13 メンズ ジーンズパンツ 価格 8000円 番号12 共用 マフラー 価格 9000円 番号5 メンズ 靴 価格 10000円 番号2 メンズ ダッフルコート 価格 11000円 番号10 メンズ ジーンズジャケット 価格 12000円 番号11 メンズ 時計 価格 20000円 買いたい番号を入力してください。 1 数量は何個買いますか。 2 ################################################## 買い物カゴ パーカー 数量: 2 ################################################## 以上で買い物を終えますか? 終了なら Ctrl - D を押して下さい、続けて買うのであれば Return を入力してください。 ************************************************** 合計2000円です。 ************************************************** お買い上げありがとうございました!!! 2.複数回買い物した場合 pan{c110205}% ./kessaku.rb [~/Ruby] 下記の品から買い物をして下さい。しばらくお待ち下さい。 買い物をはじめます ################################################## 買い物カゴ 商品なし ################################################## 価格の安い順に並べてあります。 下記に書いてあるのは、品名・値段・メンズ専用かまたは共用かなど書いてあります。 商品を選んで下さい。 番号1 メンズ パーカー 価格 1000円 番号8 共用 ネクタイ 価格 1300円 番号14 共用 だてメガネ 価格 1500円 番号7 メンズ カーディガン 価格 1500円 番号9 共用 ループタイ 価格 2000円 番号6 共用 ネックレス 価格 3000円 番号4 メンズ 帽子 価格 4000円 番号3 メンズ カーゴンパンツ 価格 7000円 番号13 メンズ ジーンズパンツ 価格 8000円 番号12 共用 マフラー 価格 9000円 番号5 メンズ 靴 価格 10000円 番号2 メンズ ダッフルコート 価格 11000円 番号10 メンズ ジーンズジャケット 価格 12000円 番号11 メンズ 時計 価格 20000円 買いたい番号を入力してください。 2 数量は何個買いますか。 1 ################################################## 買い物カゴ ダッフルコート 数量: 1 ################################################## 以上で買い物を終えますか? 終了なら Ctrl - D を押して下さい、続けて買うのであれば Return を入力してください。 買いたい番号を入力してください。 2 数量は何個買いますか。 4 ################################################## 買い物カゴ ダッフルコート 数量: 4 ################################################## 以上で買い物を終えますか? 終了なら Ctrl - D を押して下さい、続けて買うのであれば Return を入力してください。 買いたい番号を入力してください。 3 数量は何個買いますか。 1 ################################################## 買い物カゴ カーゴンパンツ 数量: 1 ################################################## 以上で買い物を終えますか? 終了なら Ctrl - D を押して下さい、続けて買うのであれば Return を入力してください。 ************************************************** 合計62000円です。 ************************************************** お買い上げありがとうございました!!! (4)考察 計算は正確に出来ているか? 確かめ算 1.買い物が1回だけで終了した場合 pan{c110205}% bc -l [~/Ruby] 1000*2 2000 quit 2.複数回買い物した場合 pan{c110205}% bc -l [~/Ruby] 11000*1+11000*4+7000*1 62000 quit 計算は正確に出来ていた。つまりプログラム実行は成功した。 B.ホームページ ☆ホームページの提載☆ ホームページ名 : 傑作 http://roy/~c110205/advertise2/index.html 2.感想 今回は最高傑作とホームページを共に作成するということで、大変苦労をした。 内容的には満足はしていないが、課題も見つかった意味でも良いプログラムになっ たと思う。 しかし、講義中に先生が言うように「社会に出たらこれくらいの苦労は毎日のよ うにある。」と思うので、今回の課題を終えたことで油断しないようにしたい。 またこの様な機会があったら、もっとレベルアップした自分を見せれるようこれ からも努力していきたい。 3.参考文献 西村先生 講義ノート 基礎プログラミング II 第 2 回 「なになにといえばこれこれ」 http://roy/~madoka/2011/r2/02/ 基礎プログラミング II 第 4 回 「繰り返しは引っ張りだそう」 http://roy/~madoka/2011/r2/04/ 協力者 松田 大輝 君 細田 洋平 君 4.添付