第 7 回 ゼミ紹介 レポート課題 氏名:菊地瑞紀 学籍番号:c1100673 語学クラス:英語6 コース(系):地域共創コース 1-A a、仕様書 【shop.rbの仕様書】 [目次] 1、プログラムの作成理由 2、プログラムの概要 3、操作方法 4、今後の課題 1、 このプログラムを作成した理由は、いつもなにげなく使われているレジをプ ログラムで作ることは出来ないかと思ったことがきっかけです。 花が好きなので花屋のプログラムを作成しました。 2、 このプログラムは花屋のプログラムです。 買いたい花と本数を入力することで合計金額を表示できます。 日付のデータを取りこむことで、感謝デーを設けることができました。 毎月10日は感謝デーで 5%OFF になります。 3、 プログラムを実行していくとどの花を買うかと何本買うかを聞かれます。 指示どうりに入力してください。 10日とそれ以外の日では結果が違うので、10日とそれ以外の日でも実行して みてください。 4、今後の課題 最初は10日、20日、30日と感謝デーを三回設けるつもりでしたが、if を使っ ての場合分けが上手く行かず、10日だけになりました。 また、 def メソッドを使えばもう少し短くすっきりしたプログラムになるの ではと思ったので、その二点が今後の課題です。 この仕様書を見ての意見、要望がある場合は御手数ですが 下記アドレスまでご連絡ださい。 e-mailアドレス c110067@f.koeki-u.ac.jp なお、迷惑メール対策のため@は全角にしていますので、 コピーして使用する際には半角に直してご使用ください。 ----------------------------------- b、プログラム [考えた設定] 花屋のプログラムを作成しようと考えました。 どの花を何本買うときの合計を計算させるプログラムです。 [プログラム本体] #!/usr/koeki/bin/ruby $KCODE = 'e' #文字を日本語にしている year = Time.now.year month = Time.now.month day = Time.now.day # Time.nowで現在の時刻をもってくる printf("\n\n\t\t \e[1;34;47m*\e[1;47;32m flower shop\e[1;47;31m MZK \e[1;34;47m*\n\n") printf("\e[m\n") printf("今日は%d年%d月%d日です。\n",year,month,day) #日付を呼び出す print("毎月、10日は[5パーセントOFF]です♪\n\n" ) flower = Hash.new #新しく配列を作成 print("\n\e[35m++++++++++++++++++++++++++++++\n\n") printf("\e[m\n") flower["マーガレット"] = 230 flower["チューリップ"] = 360 flower["スイートピー"] = 150 flower["バラ"] = 630 flower["カーネーション"] = 170 flower.keys.each{|item| # item のなかに flawer をいれていく printf("%-20s %5d\n" ,item,flower[item])} print("\n\n\e[35m++++++++++++++++++++++++++++++\n\n") printf("\e[m\n") total = 0 # 初期値はゼロ item = 0 # 初期値はゼロ while true #繰り返し STDERR.print("どの花をお買い上げですか?\n") print("(会計は Ctrl+D を押してください)\n\n") item = gets #getsで入力された文字を取りこむ if item == nil # Ctrl+D したら繰り返しから break # 抜ける else # そうじゃない場合は item = item.chomp # 入力をしてもらう end # if の end if flower.key?(item) == false # 文字列 item があるか調べる printf("すいません[ %s ]はわかりません。もう一度入力してください。\n\n",item) #false の場合に表示される else STDERR.print("何本買いますか: ") kazu = gets.chomp.to_f # true の場合本数の入力をしてもらう printf("%14s 【%d 本】%d 円です。\n", item,kazu,flower[item]*kazu) #true の場合に表示される end # if の end if day == 10 # もし10日だったら tax = (flower[item]*kazu)*0.05 # (花の値段*本数)*0.05 「5%分のお金の計算四式」 sum = (flower[item]*kazu)-tax # 5%分のお金を合計から引く total += sum.to_i else # 10日以外の日だったら sum = flower[item]*kazu # 花の値段*本数 total += sum.to_i #足していく end # if の end end # while true の end if day == 10 # もし10日だったら printf("今日は[5パーセントOFF]なので %d 円です♪ \n",total) #こっちを表示 else # それ以外 printf("お会計 %d 円です♪ \n",total) # こっち表示 end # ifのend [実行結果] 【通常営業】 今日は2011年11月21日です。 毎月、10日は[5パーセントOFF]です♪ ++++++++++++++++++++++++++++++ チューリップ 360 スイートピー 150 マーガレット 230 バラ 630 カーネーション 170 ++++++++++++++++++++++++++++++ どの花をお買い上げですか? (会計は Ctrl+D を押してください) チューリップ 何本買いますか: 3 チューリップ 【3 本】1080 円です。 どの花をお買い上げですか? (会計は Ctrl+D を押してください) マーガレット 何本買いますか: 2 マーガレット 【2 本】460 円です。 どの花をお買い上げですか? (会計は Ctrl+D を押してください) お会計 1540 円です♪ pan{c110067}% ./shop.rb [~/public_html/advertise2] 【感謝デー】 * flower shop MZK * 今日は2011年11月21日です。 毎月、10日は[5パーセントOFF]です♪ ++++++++++++++++++++++++++++++ チューリップ 360 スイートピー 150 マーガレット 230 バラ 630 カーネーション 170 ++++++++++++++++++++++++++++++ どの花をお買い上げですか? (会計は Ctrl+D を押してください) チューリップ 何本買いますか: 3 チューリップ 【3 本】1080 円です。 どの花をお買い上げですか? (会計は Ctrl+D を押してください) マーガレット 何本買いますか: 2 マーガレット 【2 本】460 円です。 どの花をお買い上げですか? (会計は Ctrl+D を押してください) 今日は[5パーセントOFF]なので 1463 円です♪ pan{c110067}% ./shop.rb [~/public_html/advertise2] [計算の確認] 通常営業 pan{KIKUCHI Mizuki}% bc -l [~/public_html/advertise2] 360*3+230*2 1540 感謝デー pan{KIKUCHI Mizuki}% bc -l [~/public_html/advertise2] 1540*0.05 77.00 1540-77 1463 [考察] 計算の確認からも計算が合っていると確認できた。 また、感謝デーの方は実行した日が10日ではなかったので、感謝デーになるよう にプログラムを変更してから確認した。 どちらも、プログラム自体には問題はないようだ。 --------------------------------------- 1-B 作成したHPのURL http://roy/~c110067/advertise2/ --------------------------------------- 2、感想 今回は最高傑作のプログラムを作るという課題だったがなかなか苦戦した。 最初は感謝デーを10日、20日、30日の三回設けようとしていたが、 if での場合 分けがうまくいかず、10日のみとなってしまった。 また、プログラムが結構長くなってしまったのだが def メソッドなどを使ってもっ と短くすっきりと書けないかなどの課題も見えてきた。 早めにこつこつ終わらせることの大事さが良く分かったので、見直していきたい。 3、参考文献 著者 西村まどか 基礎プログラミングII 第 4 回 繰り返しは引っ張りだそう Value に配列が入る場合の処理 http://roy/~madoka/2011/r2/04/r2_04_17_review_04_valueasary.html 基礎プログラミング II 第 3 回 情報の構造を分析しよう Hash の作りかた http://roy/~madoka/2011/r2/03/r2_03_02_review_02_hash.html 前年の先輩のレポート 共同学習者 宮原絵美里 見川英駿 五十嵐兼一 ----------------------- 東北公益文化大学 公益学部 公益学科  2年 菊地瑞紀 c110067@f.koeki-u.ac.jp -----------------------