第 7 回 専門演習紹介 レポート課題 氏名:佐藤航輝 学籍番号:c1110766 語学クラス:英語3 コース:地域共創 1. a.仕様書 ☆ 仕様書 ☆ プログラム名 kessaku2.rb 企画意図 セブンイレブンのおでんを買う流れを Hash を利用してプログラムにしたら 面白いのではないかと思ったので作成した。 取扱説明書 (保存方法) プログラムを保存したディレクトリに移動し、プログラムを実行する。 (使い方) まずおでんのメニューが表示されるのでそこにある数字を入力する。個 数も聞かれるので個数を入力して注文は完了。メニューにないものを入 力しても注文はできない。注文が終わりの場合は end を入力して return 。まだ続ける場合は続けて return を押す。 連絡先 佐藤航輝 c111076@g.koeki-u.ac.jp b.プログラム( kessaku2.rb ) #!/usr/koeki/bin/ruby #coding: euc-jp print("セブンのおでんを食べる。\n") sleep 1.5 print("\n") print("値段が高い順になっています。\n") sleep 1.5 print("\n") menu = Hash.new # Hash の設定 total = 0 # total は 0 から始める menu[1] = "こだわりたまご ",90 # Hash の中身を設定する menu[2] = "味しみ大根 ",75 menu[3] = "白滝 ",75 menu[4] = "絹ごし厚揚げ ",95 menu[5] = "がんも・ひろうす ",110 menu[6] = "焼ちくわ ",105 menu[7] = "さんまつみれ ",105 menu[8] = "炭火焼つくね串 ",105 menu[9] = "ロールキャベツ ",120 menu[10] = "ウィンナー巻 ",105 menu[11] = "餠入り巾着 ",120 def order(m) # メソッドの設定 sleep 1.5 print("\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("おでん:%3s %s \t 値段:%d円\n",z ,menu[z][0],menu[z][1])} while true sleep 1.5 STDERR.print("\n買いたいおでんの番号を入力して下さい。\n") a = gets.chomp.to_i # 整数にする if menu.key?(a) == false sleep 1.5 printf("\n%s はメニューにありません。\n",a) # 存在しないメニューが入力された場合 else sleep 1.5 STDERR.print("\nいくつ買いますか?\n") b = gets.chomp.to_i total += menu[a][1] * b # 合計の計算 sleep 1.5 printf("\n%s \t 数量: %d \n",menu[a][0],b) # 注文されたおでんの表示 order(a) # メソッドを呼び出す c = gets.chomp # z をとってくる if c == "end" # end と入力すると break する break end # if に対する end end # while に対する end end # if(else)に対する end sleep 1.5 print("\nお買い上げありがとうございます。\n") sleep 1.5 printf("\n合計 %d 円です。\n",total) # 合計金額の表示 実行結果 pan{c111076}% ./kessaku2.rb [~/public_html/adv2] セブンのおでんを食べる。 値段が高い順になっています。 おでん: 11 餠入り巾着 値段:120円 おでん: 9 ロールキャベツ 値段:120円 おでん: 5 がんも・ひろうす 値段:110円 おでん: 8 炭火焼つくね串 値段:105円 おでん: 10 ウィンナー巻 値段:105円 おでん: 7 さんまつみれ 値段:105円 おでん: 6 焼ちくわ 値段:105円 おでん: 4 絹ごし厚揚げ 値段:95円 おでん: 1 こだわりたまご 値段:90円 おでん: 3 白滝 値段:75円 おでん: 2 味しみ大根 値段:75円 買いたいおでんの番号を入力して下さい。 11 いくつ買いますか? 2 餠入り巾着 数量: 2 買い物を続けるのならそのまま return して下さい。 買い物が終わったら、end と入力して return して下さい。 買いたいおでんの番号を入力して下さい。 9 いくつ買いますか? 3 ロールキャベツ 数量: 3 買い物を続けるのならそのまま return して下さい。 買い物が終わったら、end と入力して return して下さい。 end お買い上げありがとうございます。 合計 600 円です。 bc -l で確かめてみる。 pan{c111076}% bc -l [~/public_html/adv2] 120 * 2 + 120 * 3 600 quit となり、計算もあっているのでこの買い物のプログラムは確かなことがわかった。 ★ リンク ★ ホームページ( http://roy/~c111076/ ) 広告ホームページ( http://roy/~c111076/adv2/ ) 仕様書( http://roy/~c111076/adv2/siyousyo.txt ) プログラム( http://roy/~c111076/adv2/kessaku2.rb ) プレゼン( r2_c111076.odp ) 2.感想 真似た部分が多かったが、様々な機能を使いプログラムを作ることができた。 sort を組み込めたことが良かったと思う。次回以降、もっと技術を向上させて いけるようにしたいと思う。 3.参考文献 基礎プログラミング II 第 2 回 「なになにといえばこれこれ」 http://roy/~madoka/2012/r2/02/ 基礎プログラミング II 第 3 回 「情報の構造を分析しよう」 http://roy/~madoka/2012/r2/03/ 基礎プログラミング II 第 5 回 「何度も呼び出そう」 http://roy/~madoka/2012/r2/05/ 共同学習者 大野敬司 工藤智也