第 7 回 専門演習紹介 レポート課題 氏名:樋口千穂 学籍番号:C1111240 語学クラス:中国語3 コース:政策マネジメント 1. A.最高傑作 a.仕様書 --- 企画意図 --- 後期に学んだ要素を取り入れようと考えた時に、Hash や def メソッドが思い浮 かんだのでこれらを用いたプログラムを作成することにした。 今までの課題で合計を出すというプログラムを何度か作成してきたので、設定を 工夫して楽しいプログラムが作成できるのではないかと思い企画した。 --- プログラムの概要 --- 表示された商品一覧の中から欲しい商品を選択する。何をいくつ買うのか入力し て買い物カゴに入れていくと、買い物を終了させた時点での合計金額が表示される。 --- 遊び方 --- 1.購入したい商品の番号を入力 2.数量を入力 3.まだ買い物を続ける場合は Return と入力(1、2を繰り返す) 4.買い物を終了する場合は Ctrl - D と入力 買い物カゴに入れた商品の合計金額を表示してくれる。 --- 連絡先 --- プログラムに関して、意見・質問等ございましたら、 下のアドレスまでご連絡下さい。 c111124@g.koeki-u.ac.jp ※注意※ このプログラムの著作権は、東北公益文科大学 樋口千穂が保有しています。 このプログラムの入手・実行・改変は自由に行うことができます。 取り扱うことで生じた問題に関して、著作権者は一切責任を負いませんので ご了承下さい。 b.プログラムに関する部分 ◯shop.rb◯ ◯設定◯ 商品一覧から欲しい商品と数量を選択してもらい買い物カゴに入れる。買い物を終了さ せると合計金額を表示してくれるプログラム。 ◯作成したプログラム◯ #!/usr/koeki/bin/ruby # coding: euc-jp printf("\n\n\t\t \e[1;33;41m☆☆\e[1;41;30m clothes shop\e[1;41;35m MMB \e[1;33;41m☆☆\n\n") printf("\e[m\n") print("下記の商品から買い物をして下さい。しばらくお待ち下さい。\n") sleep(2) # かっこ内の数字に則って表示する速度が変わる。 def message(m) # メソッドの設定。 messageという関数を定義。引数は m。 print("\n\n以上で買い物を終了しますか?\n") print("\n終了なら Ctrl - D を押して下さい。まだ買い物を続ける場合は Return と入力して下さい。\n") end # def に対する end。 clothes = Hash.new # 新しく配列を作成。 total = 0 # 初期値はゼロ。合計を求める為に使用。 clothes[1] = "ダッフルコート", 12000 clothes[2] = "スタジャン", 15000 clothes[3] = "ワンピース", 4500 clothes[4] = "トレーナー", 6900 clothes[5] = "ペプラムトップス", 3900 clothes[6] = "タイトスカート", 5000 clothes[7] = "マフラー", 3000 clothes[8] = "チェック柄タイツ", 1500 clothes[9] = "パーカ", 4900 clothes[10] = "ブラウス", 6000 clothes[11] = "カーディガン", 2500 clothes[12] = "デニムショートパンツ", 7000 print "-" * 50 # - が50回乗算されることを表す。 print("\n買い物カゴ\n") print("商品なし\n") print "-" * 50 # - が50回乗算されることを表す。 print("\n商品は価格の安い順に並べてあります。\n") print"\n" print"\n" print("\n商品を選択して下さい。\n") clothes.keys.sort{|x,y| # sort は並び替えを表す。x と y は変数。 clothes[x][1] <=> clothes[y][1] # 置き換えを表す。 }.each{|z| printf("番号%d \t %s \t 価格 %d円 \n", z, clothes[z][0], clothes[z][1])} while true # 繰り返し STDERR.print("\n買いたい商品の番号を入力して下さい : \n") a = gets.chomp.to_i # 入力を求める。変数は a。 STDERR.print("数量を入力して下さい : \n") b = gets.chomp.to_i # 入力を求める。変数は b。 total += clothes[a][1] * b # 合計を求める。clothes[?]の変数を引用し品の金額を引き出す。 # bは購入個数。つまり 金額 + 個数 という形になる。 print"\n" print "+" * 50 # + が50回乗算されることを表す。 print("\n買い物カゴ\n") printf("\n%s \t 数量: %d\n",clothes[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") ◯もとにしたプログラム○ hash_ary_sort.rb と def_power.rb を基にしながら、授業ページを参考にして 作成した。 文章や数字を適宜変更した。 ◯実行結果◯ ☆1つの商品を1つだけ購入した場合☆ pan{c111124}% ./shop.rb [~/public_html/adv2] ☆☆ clothes shop MMB ☆☆ 下記の商品から買い物をして下さい。しばらくお待ち下さい。 -------------------------------------------------- 買い物カゴ 商品なし -------------------------------------------------- 商品は価格の安い順に並べてあります。 商品を選択して下さい。 番号8 チェック柄タイツ 価格 1500円 番号11 カーディガン 価格 2500円 番号7 マフラー 価格 3000円 番号5 ペプラムトップス 価格 3900円 番号3 ワンピース 価格 4500円 番号9 パーカ 価格 4900円 番号6 タイトスカート 価格 5000円 番号10 ブラウス 価格 6000円 番号4 トレーナー 価格 6900円 番号12 デニムショートパンツ 価格 7000円 番号1 ダッフルコート 価格 12000円 番号2 スタジャン 価格 15000円 買いたい商品の番号を入力して下さい : 1 数量を入力して下さい : 1 ++++++++++++++++++++++++++++++++++++++++++++++++++ 買い物カゴ ダッフルコート 数量: 1 ++++++++++++++++++++++++++++++++++++++++++++++++++ 以上で買い物を終了しますか? 終了なら Ctrl - D を押して下さい。まだ買い物を続ける場合は Return と入力して下さい。 -------------------------------------------------- 合計12000円です。 -------------------------------------------------- お買い上げありがとうございました! ☆1つの商品を複数購入した場合☆ pan{c111124}% ./shop.rb [~/public_html/adv2] ☆☆ clothes shop MMB ☆☆ 下記の商品から買い物をして下さい。しばらくお待ち下さい。 -------------------------------------------------- 買い物カゴ 商品なし -------------------------------------------------- 商品は価格の安い順に並べてあります。 商品を選択して下さい。 番号8 チェック柄タイツ 価格 1500円 番号11 カーディガン 価格 2500円 番号7 マフラー 価格 3000円 番号5 ペプラムトップス 価格 3900円 番号3 ワンピース 価格 4500円 番号9 パーカ 価格 4900円 番号6 タイトスカート 価格 5000円 番号10 ブラウス 価格 6000円 番号4 トレーナー 価格 6900円 番号12 デニムショートパンツ 価格 7000円 番号1 ダッフルコート 価格 12000円 番号2 スタジャン 価格 15000円 買いたい商品の番号を入力して下さい : 7 数量を入力して下さい : 3 ++++++++++++++++++++++++++++++++++++++++++++++++++ 買い物カゴ マフラー 数量: 3 ++++++++++++++++++++++++++++++++++++++++++++++++++ 以上で買い物を終了しますか? 終了なら Ctrl - D を押して下さい。まだ買い物を続ける場合は Return と入力して下さい。 -------------------------------------------------- 合計9000円です。 -------------------------------------------------- お買い上げありがとうございました! ☆複数の商品を1つずつ購入した場合☆ pan{c111124}% ./shop.rb [~/public_html/adv2] ☆☆ clothes shop MMB ☆☆ 下記の商品から買い物をして下さい。しばらくお待ち下さい。 -------------------------------------------------- 買い物カゴ 商品なし -------------------------------------------------- 商品は価格の安い順に並べてあります。 商品を選択して下さい。 番号8 チェック柄タイツ 価格 1500円 番号11 カーディガン 価格 2500円 番号7 マフラー 価格 3000円 番号5 ペプラムトップス 価格 3900円 番号3 ワンピース 価格 4500円 番号9 パーカ 価格 4900円 番号6 タイトスカート 価格 5000円 番号10 ブラウス 価格 6000円 番号4 トレーナー 価格 6900円 番号12 デニムショートパンツ 価格 7000円 番号1 ダッフルコート 価格 12000円 番号2 スタジャン 価格 15000円 買いたい商品の番号を入力して下さい : 2 数量を入力して下さい : 1 ++++++++++++++++++++++++++++++++++++++++++++++++++ 買い物カゴ スタジャン 数量: 1 ++++++++++++++++++++++++++++++++++++++++++++++++++ 以上で買い物を終了しますか? 終了なら Ctrl - D を押して下さい。まだ買い物を続ける場合は Return と入力して下さい。 Return 買いたい商品の番号を入力して下さい : 8 数量を入力して下さい : 1 ++++++++++++++++++++++++++++++++++++++++++++++++++ 買い物カゴ チェック柄タイツ 数量: 1 ++++++++++++++++++++++++++++++++++++++++++++++++++ 以上で買い物を終了しますか? 終了なら Ctrl - D を押して下さい。まだ買い物を続ける場合は Return と入力して下さい。 -------------------------------------------------- 合計16500円です。 -------------------------------------------------- お買い上げありがとうございました! ☆複数の商品を複数購入した場合☆ pan{c111124}% ./shop.rb [~/public_html/adv2] ☆☆ clothes shop MMB ☆☆ 下記の商品から買い物をして下さい。しばらくお待ち下さい。 -------------------------------------------------- 買い物カゴ 商品なし -------------------------------------------------- 商品は価格の安い順に並べてあります。 商品を選択して下さい。 番号8 チェック柄タイツ 価格 1500円 番号11 カーディガン 価格 2500円 番号7 マフラー 価格 3000円 番号5 ペプラムトップス 価格 3900円 番号3 ワンピース 価格 4500円 番号9 パーカ 価格 4900円 番号6 タイトスカート 価格 5000円 番号10 ブラウス 価格 6000円 番号4 トレーナー 価格 6900円 番号12 デニムショートパンツ 価格 7000円 番号1 ダッフルコート 価格 12000円 番号2 スタジャン 価格 15000円 買いたい商品の番号を入力して下さい : 3 数量を入力して下さい : 2 ++++++++++++++++++++++++++++++++++++++++++++++++++ 買い物カゴ ワンピース 数量: 2 ++++++++++++++++++++++++++++++++++++++++++++++++++ 以上で買い物を終了しますか? 終了なら Ctrl - D を押して下さい。まだ買い物を続ける場合は Return と入力して下さい。 Return 買いたい商品の番号を入力して下さい : 11 数量を入力して下さい : 3 ++++++++++++++++++++++++++++++++++++++++++++++++++ 買い物カゴ カーディガン 数量: 3 ++++++++++++++++++++++++++++++++++++++++++++++++++ 以上で買い物を終了しますか? 終了なら Ctrl - D を押して下さい。まだ買い物を続ける場合は Return と入力して下さい。 -------------------------------------------------- 合計16500円です。 -------------------------------------------------- お買い上げありがとうございました! ◯考察◯ bc -l を用いて確かめた。 ☆1つの商品を1つだけ購入した場合☆ pan{c111124}% bc -l [~/public_html/adv2] 12000 * 1 12000 quit ☆1つの商品を複数購入した場合☆ pan{c111124}% bc -l [~/public_html/adv2] 3000 * 3 9000 quit ☆複数の商品を1つずつ購入した場合☆ pan{c111124}% bc -l [~/public_html/adv2] 15000 * 1 15000 1500 * 1 1500 15000 + 1500 16500 quit ☆複数の商品を複数購入した場合☆ pan{c111124}% bc -l [~/public_html/adv2] 4500 * 2 9000 2500 * 3 7500 9000 + 7500 16500 quit d.広告ページ(リンク先) http://roy/~c111124/adv2/ B. a.自分のトップページへのリンク http://roy.e.koeki-u.ac.jp/~c111124/index.html b.仕様書へのリンク http://roy/~c111124/adv2/shiyousyo.txt c.最高傑作のプログラムへのリンク http://roy/~c111124/adv2/ 2.感想 今回は最高傑作ということで、後期に学んだことを復習しながらプログラムを作 成することができた。また、HPへのリンクの仕方など、忘れかけていたことも思 い出しながらレポートに取り組めたので良かった。 時間を見つけてプレゼンテーション原稿を作成してリンクをはっておきたいと思 う。 3.参考文献 webサイト:http://d.hatena.ne.jp/keyesberry/20101107/p1 作者不明、RubyでANSIカラーシーケンスを学ぼう! webサイト:http://roy/~madoka/2012/r2/02/r2_02_04_theme_03_existornot.html 西村まどか先生、基礎プログラミング II 第 2 回 (なになにといえばこれこれ) 「あるかないか」 webサイト:http://roy/~madoka/2012/r2/04/r2_04_03_theme_03_method.html 西村まどか先生、基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「どんな関数がきてもだいじょうぶ」 4.共同学習者 佐藤美咲