第 7 回 ゼミ紹介 レポート課題 氏名:薮田大樹 学籍番号:c1101916 語学クラス:中国語3 コース(系):地域共創コース 1、プログラムファイル [最高傑作] いつも利用しているカフェテリアで、買い物をする 一連の流れを、ハッシュを使用してプログラムに してみたい思ったので作成した。 (作成プログラム) #!/usr/koeki/bin/ruby $KCODE= "e" print("公益大のカフェテリアでご飯を食べよう!\n") sleep(1) print("\n\n") print("今日は何を食べようか???(値段が高い順になっています) 今日のお薦めはカツカレー!!!\n") print("\n") menu = Hash.new #Hashの設定 total = 0 # totalは0からはじめる menu[1] = "ラーメン ",350 #ハッシュの中身を設定する menu[2] = "もやし味噌ラーメン",350 menu[3] = "かけそば ",250 menu[4] = "てんぷらそば ",350 menu[5] = "かけうどん ",250 menu[6] = "てんぷらうどん ",350 menu[7] = "各種トッピング ",30 menu[8] = "日替わりスパゲティ",250 menu[9] = "カレー ",350 menu[10] = "カツカレー ",450 menu[11] = "日替わり丼 ",350 menu[12] = "大盛り料金 ",100 menu[13] = "学生プレート ",230 menu[14] = "日替わりプレート ",280 menu[15] = "惣菜 小 ",60 menu[16] = "惣菜 中 ",100 menu[17] = "ライス ",100 menu[18] = "味噌汁 ",80 menu[19] = "ソフトクリーム ",100 menu[20] = "ホットコーヒー ",100 def order(m) # メソッドの設定 print("\n\n買い物を続けるのならそのままreturnしてください\n") print("買い物が終わったら、endと入力してreturnして下さい\n") end # defに対するend menu.keys.sort{|x, y| # sortで並びかえる。 menu[y][1] <=> menu[x][1] }.each{|z| printf("MENU:%3s %s \t値段:%d円\n",z ,menu[z][0],menu[z][1])} while true STDERR.print("番号を入力してください!\n") a = gets.chomp.to_i #整数にする if menu.key?(a) == false printf("\n%sはメニューにありません\n\n",a) #存在しないメニューが入力された場合 else STDERR.print("いくつ買うの???\n") b = gets.chomp.to_i #整数にする total += menu[a][1] * b # 合計の計算 print("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n") printf("\n(%s) \t 数量: %d\n",menu[a][0],b) #注文商品の表示 print("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆") order(a) # メソットを呼び出す c = gets.chomp # zをとってくる if c == "end" # endと入力するとbreakする break end # ifに対するend end # whileに対するend end # if(else)に対するend sleep(1) print("お買い上げありがとうございます!\n") printf(" ---------------------- レシート | ◯月◯日 | | (お買い上げ) | | | 合計%d円です | | | | ---------------------- \n",total) #合計金額の表示 (実行結果及び考察) pan{c110191}% ./cafe.rb [~/public_html/advertise2] 公益大のカフェテリアでご飯を食べよう! 今日は何を食べようか???(値段が高い順になっています) 今日のお薦めはカツカレー!!! MENU: 10 カツカレー 値段:450円 MENU: 4 てんぷらそば 値段:350円 MENU: 11 日替わり丼 値段:350円 MENU: 9 カレー 値段:350円 MENU: 6 てんぷらうどん 値段:350円 MENU: 1 ラーメン 値段:350円 MENU: 2 もやし味噌ラーメン 値段:350円 MENU: 14 日替わりプレート 値段:280円 MENU: 5 かけうどん 値段:250円 MENU: 3 かけそば 値段:250円 MENU: 8 日替わりスパゲティ 値段:250円 MENU: 13 学生プレート 値段:230円 MENU: 19 ソフトクリーム 値段:100円 MENU: 17 ライス 値段:100円 MENU: 12 大盛り料金 値段:100円 MENU: 20 ホットコーヒー 値段:100円 MENU: 16 惣菜 中 値段:100円 MENU: 18 味噌汁 値段:80円 MENU: 15 惣菜 小 値段:60円 MENU: 7 各種トッピング 値段:30円 番号を入力してください! 1 いくつ買うの??? 1 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ (ラーメン ) 数量: 1 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 買い物を続けるのならそのままreturnしてください 買い物が終わったら、endと入力してreturnして下さい 番号を入力してください! 15 いくつ買うの??? 2 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ (惣菜 小 ) 数量: 2 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 買い物を続けるのならそのままreturnしてください 買い物が終わったら、endと入力してreturnして下さい 7 番号を入力してください! 7 いくつ買うの??? 2 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ (各種トッピング ) 数量: 2 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 買い物を続けるのならそのままreturnしてください 買い物が終わったら、endと入力してreturnして下さい end お買い上げありがとうございます! ---------------------- レシート | ◯月◯日 | | (お買い上げ) | | | 合計530円です | | | | ---------------------- ラーメン350 + 惣菜60*2 + トッピング30*2 pan{YABUTA Taiki}% bc -l [~/public_html] 350+60+60+30+30 530 となり、計算もあっているのでこの買い物プログラムでは 正確に買物できることが分かった。 (ホームページリンク及び仕様書) ホームページリンク http://roy/~c110191/advertise2/index.html 仕様書リンク http://roy.e.koeki-u.ac.jp/~c110191/advertise2/cafe.txt <企画意図> いつも利用しているカフェテリアで、買い物をする 一連の流れを、ハッシュを使用してプログラムに してみたい思ったので作成した。 <使い方> まずメニューが表示されるのでメニューにある数字を入力します、 個数を聞かれるので個数を入力し注文は完了。 メニューにないものを入力しても注文は出来ません。 注文が終わりの場合は end を入力して return もっと注文する場合は続けて return して下さい。 <連絡先> c110191@f.koeki-u.ac.jp <ご注意> このプログラムは 東北公益文科大学 薮田大樹 が著作権を保有しています。 このプログラムの入手・実行・改変は自由に行うことができますが、取り扱うこ とで生じた結果に対しては著作権者は責任は一切負いませんので、ご了承ください。 (感想) 今回は今まで習った、Hush def-end key-sort(並び替え)を 利用してプログラムを作ったが、もっとメソッドを使って プログラムを簡略化出来たかも知れないし、 本物のレシートのように買った商品を表示させたかったが出来なかった。 以上の点がすこし心残りである。 次回以降しっかり授業に付いて行けるようにタイピング技術を もっと向上させて行きたいと思う。 (参考文献) 西村まどか 基礎プログラミング II 第 2 回 「なになにといえばこれこれ」 http://roy/~madoka/2011/r2 基礎プログラミング II 第 3 回 (情報の構造を分析しよう) 「keys や values のデータ表現」http://roy/~madoka/2011/r2/03/r2_03_01_review_01_arysort.html 基礎プログラミング II 第5回 何度も呼び出そう 「自作の method 」 http://roy/~madoka/2010/r2/05/05_03_review_01_selfmademethod.html 東北公益文科大学 学生専用サーバ Webページの書き方(情報リテラシーII) http://roy/web/index.html