11 月 21 日 第 8 回レポート 「個人プログラム発表」 学籍番号:c106XXXX 氏名:XXXXXXXX 語学クラス:英語XX 系: 環境系 A: a,仕様書 *企画 後期で習ったプログラムを活かして前期で製作した年号計算プログラムをさら に使いやすく改良してみました。 Download Files ======== ダウンロードしていただきたいファイルは nengo2.rb プログラムファイル How to use ========== 使い方は kterm で % chmod +x nengo2.rb でゲームの準備ができます。開始するには % ./nengo2.rb とします。 著作権について ============== このプログラムは 東北公益文科大学2年生 公平 那央 が著作権を保有しています。このプログラムの入手・実行・改変・再配布は、いずれも無料で自由に行なうことができます。ただしこのプログラムを取り扱うことで生じたいかなる結果に対しても著作権者は責任を負いません。 このプログラムに対する、感想・助言・要望はおおいに参考にしていただきます。 c106071@f.koeki-u.ac.jp までメッセージをお送り下さい。 b, プログラムの設定 年数を設定すれば年号の年数、年号を設定すれば年数を表示するプログラム プログラムコード #!/usr/koeki/bin/ruby nensu = 0 #変数にして年数を計算できるようにする。(初期値は0) heisei = 1988 syouwa = 1925 taisyou = 1911 meizi = 1867 print("年号計算をします。まず、下から年号を指定して下さい。\n") print("1:平成 2:昭和 3:大正 4:明治 5:西暦\n") print("年号は?:") nengo = gets.chomp #年号を数字で選べるようにする。 if nengo == "1" #1:平成の年数計算 print("平成の年数を記入して下さい。(1~)\n") print("年数は?:") nensu = gets.chomp.to_i def nengo(nensu,heisei) heisei + nensu end if nensu == 1 # ~1年を元年に直す。 printf("平成元年は、西暦%d年です。\n",nengo(nensu,heisei)) elsif printf("平成%d年は、西暦%d年です。\n",nensu,nengo(nensu,heisei)) end end if nengo == "2" #2:昭和の年数計算 print("昭和の年数を記入して下さい。(1~64)\n ") print("年数は?:") nensu = gets.chomp.to_i def nengo(nensu,syouwa) syouwa + nensu end if nensu == 1 # ~1年を元年に直す。 printf("昭和元年は、西暦%d年です。\n",nengo(nensu,syouwa)) elsif printf("昭和%d年は、西暦%d年です。\n",nensu,nengo(nensu,syouwa)) end end if nengo == "3" #3:大正の年数計算 print("大正の年数を記入して下さい。(1~15)\n ") print("年数は?:") nensu = gets.chomp.to_i def nengo(nensu,taisyou) taisyou + nensu end if nensu == 1 # ~1年を元年に直す。 printf("大正元年は、西暦%d年です。\n",nengo(nensu,taisyou)) elsif printf("大正%d年は、西暦%d年です。\n",nensu,nengo(nensu,taisyou)) end end if nengo == "4" #4:明治の年数計算 print("明治の年数を記入して下さい。(1~45)\n ") print("年数は?:") nensu = gets.chomp.to_i def nengo(nensu,meizi) meizi + nensu end if nensu == 1 # ~1年を元年に直す。 printf("明治元年は、西暦%d年です。\n",nengo(nensu,meizi)) elsif printf("明治%d年は、西暦%d年です。\n",nensu,nengo(nensu,meizi)) end end if nengo == "5" #5:西暦 は 年数ごとに年号の場合分けして計算 print("西暦の年数を記入して下さい。(1868~)\n") print("明治:1868~、大正:1912~、昭和:1926~、平成:1989~\n") print("年数は?:") nensu = gets.chomp.to_i print("変換される年号を選んで下さい。\n") print("1:平成 2:昭和 3:大正 4:明治 \n") henkan = gets.chomp if nensu < 1867 #明治以前の場合 print("明治時代以前になってしまいます。\n") end def total(nensu,nengo2) nensu - nengo2 end if henkan == "1" #1:平成の年数計算 if total(nensu,heisei) == 1 # ~1年を元年に直す。 printf("西暦%s年は、平成元年です。\n",nensu) elsif printf("西暦%s年は、平成%d年です。\n",nensu,total(nensu,heisei)) end end if henkan == "2" #2:昭和の年数計算 if total(nensu,heisei) == 1 # ~1年を元年に直す。 printf("西暦%s年は、昭和元年です。\n",nensu) elsif printf("西暦%s年は、昭和%d年です。\n",nensu,total(nensu,syouwa)) end end if henkan == "3" #3:大正の年数計算 if total(nensu,taisyou) == 1 # ~1年を元年に直す。 printf("西暦%s年は、大正元年です。\n",nensu) elsif printf("西暦%s年は、大正%d年です。\n",nensu,total(nensu,taisyou)) end end if henkan == "4" #4:明治の年数計算 if total(nensu,meizi) == 1 # ~1年を元年に直す。 printf("西暦%s年は、明治元年です。\n",nensu) elsif printf("西暦%s年は、明治%d年です。\n",nensu,total(nensu,meizi)) end end end プログラムの変更点 前期作成したnengo.rbを参考に後期で習ったdef-endをいれてみた。 プログラムの実行結果 irsv{c106071}% ./nengo2.rb [~/Ruby] 年号計算をします。まず、下から年号を指定して下さい。 1:平成 2:昭和 3:大正 4:明治 5:西暦 年号は?:2 昭和の年数を記入して下さい。(1~64) 年数は?:62 昭和62年は、西暦1987年です。 irsv{c106071}% ./nengo2.rb [~/Ruby] 年号計算をします。まず、下から年号を指定して下さい。 1:平成 2:昭和 3:大正 4:明治 5:西暦 年号は?:1 平成の年数を記入して下さい。(1~) 年数は?:1 平成元年は、西暦1989年です。 irsv{c106071}% ./nengo2.rb [~/Ruby] 年号計算をします。まず、下から年号を指定して下さい。 1:平成 2:昭和 3:大正 4:明治 5:西暦 年号は?:5 西暦の年数を記入して下さい。(1868~) 明治:1868~、大正:1912~、昭和:1926~、平成:1989~ 年数は?:1966 変換される年号を選んで下さい。 1:平成 2:昭和 3:大正 4:明治 2 西暦1966年は、昭和41年です。 結果の考察 電子辞書の年号計算機能を使って確認しました。 参考文献 講義ノート 広告ホームページへのリンク http://roy.e.koeki-u.ac.jp/~c106071/advertise2/index.html 感想 工夫したところは、def-endを使ったことで同じ計算を何回もプログラムする 部分が省けて製作する方も楽になりました。他に改良した部分は、西暦の年数を 指定した年号に変換できるようになりました。