第 7 回 専門演習紹介 レポート課題 氏名:石川 拓 学籍番号:c1110105 語学クラス:英語1 コース:政策マネジメントコース 1.A.a仕様書 「企画の意図」 友達と中華料理店に行った時、お店の仕組みをプログラムに取り入れること ができるとかんがえ、今までプログラミング講義で学んだことを活かせるような プログラムを作ろうと考えた。 「プログラムの概要」 このプログラムは中華料理店のプログラムで頼みたい料理と何人前を頼むかを入 力して、最後の合計金額が表示されるプログラムとなっています。なお、合計金 額が5000円以上だった場合、1000円引になる設定にしました。 「操作方法」 プログラムを実行していくと、何の料理を何人分頼むか聞かれますので、指示通りに従って入力して下さい。 この仕様書を見ての意見、要望がある場合は、下記アドレスまでご連絡ださい。 e-mailアドレス c1110105@g.koeki-u.ac.jp b.プログラム #!/usr/koeki/bin/ruby #coding: euc-jp def tyuka(nedan,goukei) # 変数名 tyuka 仮引数 nedan とgoukeiとする if goukei > 5000 # もし合計が5000円以上だったら print("1000円引きになります!!\n") nedan = goukei-1000 # 合計を1000円引きにします else # それ以外の場合は nedan = goukei # 合計を表示する end end menu = Hash.new # Hash配列をmenuとする menu[1] = 870 menu[2] = 650 menu[3] = 330 menu[4] = 800 menu[5] = 710 menu[6] = 600 menu[7] = 780 menu[8] = 2300 menu[9] = 3700 menu[10] = 450 goukei = 0 #合計の初期値 chumon = 0 #注文数の初期値 kakaku = [] #値段の配列 n = 0 # 配列の初期値 while true # 繰り返しメソッド STDERR.print("どのメニューが食べたいですか?(ご注文終了時は0)\n") print("\n") STDERR.print("5000円以上ご注文して頂きますと、1000円引きになります。\n") print("\n") print("1、酢豚 870円\n") print("2、炒飯 650円\n") print("3、杏仁豆腐 330円\n") print("4、麻姿豆腐 800円\n") print("5、カニ玉 710円\n") print("6、小龍包 600円\n") print("7、白酒 780\n") print("8、フカヒレスープ 2300円\n") print("9、北京ダック 3700円\n") print("10、餃子 450円\n") bango = gets.to_i # 注文は番号で入力してもらう kakaku[n] = menu[bango] # 入力してもらった番号の価格を表示 if bango == 0 # 入力した番号が0だったら break # while trueから抜ける elsif kakaku[n] == nil # 入力した番号がデータ以外の番号だったら printf("\n申し訳ありませんがそのようなものは取り扱っておりません\n", bango) break else # それ以外の場合 print("\n何人前ご注文なさいますか?\n") # 何人分かを聞く chumon = gets.to_i # 何人分かを入力してもらう end goukei += kakaku[n] * chumon # 合計に入力された番号の価格とx人分をかけたも # のを足す chumon = +1 # 注文数が1ずつ増える if bango == 7 # もし入力してもらった番号が7だったら print("年齢確認をします。あなたの年齢を教えて下さい。\n") nenrei = gets.to_i # 年齢を入力してもらう if nenrei >= 20 # 年齢が20以上だったら print("わかりました。\n") else # それ以外だったら sleep(0.5) print("未成年の方はご遠慮ください!!\n") goukei = 0 # 合計を0にする end end end sleep(0.5) print("\n") printf("ありがとうございます!お会計%d円です\n",tyuka(goukei,goukei)) 「実行結果」 「合計が5000円より低い場合」 1 pan{c111010}% ./adv_tyuka.rb [~/Ruby] どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 1 何人前ご注文なさいますか? 1 どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 5 何人前ご注文なさいますか? 2 どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 6 何人前ご注文なさいますか? 2 どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 10 何人前ご注文なさいますか? 1 どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 0 ありがとうございます!お会計3940円です 「合計が5000以上の場合」 pan{c111010}% ./adv_tyuka.rb [~/Ruby] どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 3 何人前ご注文なさいますか? 3 どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 4 何人前ご注文なさいますか? 2 どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 9 何人前ご注文なさいますか? 1 どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 0 1000円引きになります!! ありがとうございます!お会計5290円です 「20歳以上の方が白酒を頼んだ場合」 pan{ISHIKAWA Taku}% ./adv_tyuka.rb [~/Ruby] どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 7 何人前ご注文なさいますか? 2 年齢確認をします。あなたの年齢を教えて下さい。 31 わかりました。 どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 0 ありがとうございます!お会計1560円です 「20歳未満の方が白酒を頼んだ場合」 pan{c111010}% ./adv_tyuka.rb [~/Ruby] どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 7 何人前ご注文なさいますか? 4 年齢確認をします。あなたの年齢を教えて下さい。 19 未成年の方はご遠慮ください!! どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 0 ありがとうございます!お会計0円です 「データに無い料理番号を注文した場合」 pan{c111010}% ./adv_tyuka.rb [~/Ruby] どのメニューが食べたいですか?(ご注文終了時は0) 5000円以上ご注文して頂きますと、1000円引きになります。 1、酢豚 870円 2、炒飯 650円 3、杏仁豆腐 330円 4、麻姿豆腐 800円 5、カニ玉 710円 6、小龍包 600円 7、白酒 780円 8、フカヒレスープ 2300円 9、北京ダック 3700円 10、餃子 450円 11 申し訳ありませんがそのようなものは取り扱っておりません ありがとうございます!お会計0円です 「考察」 それぞれの実行結果の計算が合っているか、bc -lで調べる 「合計が5000円未満の場合」 pan{ISHIKAWA Taku}% bc -l [~/Ruby] 870+1420+1200+450 3940 となり、実行結果と一致している 「合計が5000円以上の場合」 pan{ISHIKAWA Taku}% bc -l [~/Ruby] 990+1600+3700 6290 6290-1000 5290 となり、実行結果と一致している。 「20歳以上が白酒を頼んだ場合」 年齢を聞かれた際に31歳と答えた結果、プログラム通り白酒の値段と、人数分の 計算が行われたため、このプログラムは正しいといえる。 「20歳未満が白酒を頼んだ場合」 年齢を聞かれた際に19歳と答えた結果、プログラム通り未成年に対してお断りの 文が表示され、白酒の金額が含まれず、合計金額が0円になったため、このプロ グラムは正しいといえる。 「データにない料理番号を注文した場合」 料理番号は10番までしかなく、間違って11番を入力しても、プログラムのデータ には入っていないので、「そのような物は取り扱っておりません」という否定文 が表示されたため、このプログラムは正しく動いたといえる。 自分の広告ページ http://roy/~c111010/adv2/ 2.感想 webページを作るのは、久々だったので、自分の力だけではなかなか思うように いかず、友達と協力して、無事課題を終わすことができました。しかし、これか らは自分の力でできないと、自由課題発表の時にとても苦労さると思うので、普 段からwebページを作る練習をしなければならないと思いました。 3.参考文献 西村 まどか先生のページ 基礎プログラミング I 第 9 回 (Ruby であそぼ / 広告ページの作成) 「広告用 ホームページ」 http://roy/~madoka/2012/r1/09/r1_09_13_theme_09_software.html 基礎プログラミング I 第 9 回 (Ruby であそぼ / 広告ページの作成) 「ソフト ウェアの公開時」 http://roy/~madoka/2012/r1/09/r1_09_14_theme_10_termsofcondition.html