第 7 回 専門演習紹介 レポート課題 氏名:山野 駿 学籍番号:c1111429 語学クラス:英語2 コース:社会福祉 1. A. a. 仕様書 1)プログラム作成の理由 ユニクロなどで行っている「パンツまとめ買いセール」をプログラムで再現でき ないかと思い、作成した。 2)プログラムの説明 在庫整理や季節物の入れ替えなどを想定したセールを行うという設定で、買いた い商品とその数を入力することで、その合計を出すプログラム。また、10000円 以上の買い物で3割引になる。 商品の名前を直接入力するのではなく、商品と関連付けられた番号を入力するこ とで、商品を選択する。 買い物が終わると、擬似的にレシートを発行する。 3)課題 while文をうまく活用することができず、1つのものを複数買うことが出来ない仕 組みになったこと、つまり、「マフラーと手袋と、パーカーを買おう」などとい うことができないということである。また、プログラム本体で商品を決めてしまっ ているため、それ以外が欲しいとなった場合に対応できない。 レシートを発行する箇所では「×(かける)」表示ができず、例えば、ジャケット を3着購入したら、「ジャケット」が三回出現することが課題だ。 while文やif文を駆使することや代入の箇所を工夫することで解決できるのでは ないかと思う。 4)連絡先 この仕様書を見ての意見、要望がある場合は 下記アドレスまでご連絡お願いします。 c111142@g.koeki-u.ac.jp b. 1)設定 買いたい商品とその数を入力しその合計を出すプログラム。また、10000円 以上の買い物で3割引になるという設定 2)作成したプログラム #!/usr/koeki/bin/ruby #coding: euc-jp def shirokuro(gokei) #変数名を shirokuro、仮引数を とする。 if gokei >= 10000 gokei * 0.7 else gokei end end total = 0 fuku = Hash.new # Hash を作成し、fuku と定義 fuku[1] = 1980, "Yシャツ" fuku[2] = 880, "Tシャツ" fuku[3] = 2980, "ジャケット" fuku[4] = 2980, "カーディガン" fuku[5] = 2490, "セーター" fuku[6] = 1980, "パーカー" fuku[7] = 2980, "ジーンズ パンツ" fuku[8] = 2980, "チノ パンツ" fuku[9] = 2980, "カーゴ パンツ" fuku[10] = 1480, "マフラー" fuku[11] = 980, "手袋" fuku[12] = 980, "帽子" print("いらっしゃいませ。\n") print("ただ今、まとめ買いセール実施しております。\n") print("10000円以上お買い上げで 30% OFF と、大変お買い得となっております。\n") print("\n") print("何をお探しですか。\n") fuku.keys.each{|bango| printf("%2d (%12s\t%4d 円)\n", bango, fuku[bango][1], fuku[bango][0]) } STDERR.print("番号を選択:") #番号入れる箱 bango = gets.to_i print("おいくつ買いますか\n") #数を入れる箱 STDERR.print("数を入力:") maisu = gets.to_i total += fuku[bango][0] * maisu printf("合計 %d 円です。\n",shirokuro(total)) print("\n") print("\n") print("\n") meisai = 0 # meisai は 0 から始まる。レシートのこと。 print(" シロクロ\n") print("\n") print"=" * 10 # 「=」を10個並べる。 print(" 領収書 ") print"=" * 10 print("\n") while meisai < maisu printf("%8s %8d 円 \n",fuku[bango][1],fuku[bango][0]) meisai += 1 # 1つずつ増える。 end print("\n") printf(" 合計%12d 円 \n",shirokuro(total)) print("お買上明細は上記のとおりです。\n") print"=" * 28 print("\n") 3)実行結果 i)割引対象外のとき pan{c111142}% ./shirokuro.rb [~/Ruby] いらっしゃいませ。 ただ今、まとめ買いセール実施しております。 10000円以上お買い上げで 30% OFF と、大変お買い得となっております。 何をお探しですか。 1 ( Yシャツ 1980 円) 2 ( Tシャツ 880 円) 3 ( ジャケット 2980 円) 4 ( カーディガン 2980 円) 5 ( セーター 2490 円) 6 ( パーカー 1980 円) 7 ( ジーンズ パンツ 2980 円) 8 ( チノ パンツ 2980 円) 9 ( カーゴ パンツ 2980 円) 10 ( マフラー 1480 円) 11 ( 手袋 980 円) 12 ( 帽子 980 円) 番号を選択:2 おいくつ買いますか 数を入力:3 合計 2640 円です。 シロクロ ========== 領収書 ========== Tシャツ 880 円 Tシャツ 880 円 Tシャツ 880 円 合計 2640 円 お買上明細は上記のとおりです。 ============================ ii)割引対象のとき pan{c111142}% ./shirokuro.rb [~/Ruby] いらっしゃいませ。 ただ今、まとめ買いセール実施しております。 10000円以上お買い上げで 30% OFF と、大変お買い得となっております。 何をお探しですか。 1 ( Yシャツ 1980 円) 2 ( Tシャツ 880 円) 3 ( ジャケット 2980 円) 4 ( カーディガン 2980 円) 5 ( セーター 2490 円) 6 ( パーカー 1980 円) 7 ( ジーンズ パンツ 2980 円) 8 ( チノ パンツ 2980 円) 9 ( カーゴ パンツ 2980 円) 10 ( マフラー 1480 円) 11 ( 手袋 980 円) 12 ( 帽子 980 円) 番号を選択:8 おいくつ買いますか 数を入力:4 合計 8344 円です。 シロクロ ========== 領収書 ========== チノ パンツ 2980 円 チノ パンツ 2980 円 チノ パンツ 2980 円 チノ パンツ 2980 円 合計 8344 円 お買上明細は上記のとおりです。 ============================ 4)考察 実行結果が正しいかbc -lを使い、確かめる。 i)割引対象外のとき pan{c111142}% bc -l [~/Ruby] 880 * 3 2640 実行結果と確かめ算の答えが一致した。 ii)割引対象のとき pan{c111142}% bc -l [~/Ruby] 2980 * 4 11920 11920 * 0.7 8344.0 プログラムで整数で出すようにしているため、実行結果と確かめ算は一致する。 2つのことからこのプログラムは正しく動いている。 d. http://roy.e.koeki-u.ac.jp/~c111142/adv2/index.html 2. 最高傑作ということで、後期学習した def や Hash を使いプログラムを作成し た。while や if を使い、レベルの高いものに仕上げたかったが、上手くいかず、 結局時間切れとなってしまった。時間のあるときに再度取り組み「最高傑作」に 仕上げたい。 3. http://roy/~madoka/2012/r2/03/r2_03_02_review_02_hash.html 西村まどか 基礎プログラミング II 第 3 回 (情報の構造を分析しよう) 「Hash の作りかた」 http://roy/~madoka/2012/r2/02/r2_02_06_theme_05_hash_pair.html 西村まどか 基礎プログラミング II 第 2 回 (なになにといえばこれこれ) 「Hash の対を入力するには」 http://roy/~madoka/2012/r2/02/r2_02_08_appendix_01_each.html 西村まどか 基礎プログラミング II 第 2 回 (なになにといえばこれこれ) 「each を使って並び換え」 http://roy/~madoka/2012/r2/04/r2_04_04_theme_04_stderr.html 西村まどか 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「こ れを代入した答はなあに」 http://roy/~madoka/2012/r2/04/r2_04_03_theme_03_method.html 西村まどか 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「ど んな関数がきてもだいじょうぶ」 http://roy/~madoka/2012/r2/04/r2_04_08_theme_08_comment.html 西村まどか 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「method を使ったプログラムの作り方の特徴」 http://roy/~madoka/2012/r2/05/r2_05_01_theme_01_diet.html 西村まどか 基礎プログラミング II 第 5 回 (何度も呼び出そう) 「脱メタボリッ ク計画」 http://roy/~madoka/2012/r2/06/r2_06_01_review_01_repetation.html 西村まどか 基礎プログラミング II 第 6 回 (目的に応じて使ってみよう) 「何 度も繰り返し」 http://roy/~madoka/2012/r2/06/r2_06_09_appendix_01_methodinmethod.html 西村まどか 基礎プログラミング II 第 6 回 (目的に応じて使ってみよう) 「method の中に method」