第7回 専門演習紹介 レポート課題 氏名:田中井晶帆 学籍番号:C111104A 語学クラス:中国語3 コース:社会福祉 1. A.a.仕様書 ●企画意図 入学願書や履歴等の学歴や取得資格を書く際に、何年に卒業したのか、 何年にその資格を取得したのかを記入しなければならない。そのときに 「西暦は分かるが和暦は…」と思った経験はないだろうか? この悩みを解消すべく、西暦・和暦変換プログラムを作成した。 ●使用方法 1.jidai.rb(プログラム本体)をダウンロードする。 2.kterm上で 「cd(保存先のディレクトリ)」 と打つと、プログラムが置いてあるディレクトリに移動する。 3.kterm上で 「chmod +x jidai.rb」 Enter 「./ jidai.rb」 Enter と入力する。 4.プログラムが開始される。 ●連絡先: c111104@g.koekiu-ac.jp b.プログラムについて ●プログラム名:jidai.rb ●設定 「西暦 → 和暦」「和暦 → 西暦」へと変換するプログラム。 ●作成したプログラム #!/usr/koeki/bin/ruby #coding: euc-jp def seireki(nen) # 西暦から和暦に変換する関数 if nen < 1992 # もし入力された数値が 1992 より小さかったら print("変換範囲外です。\n") # エラーメッセージ elsif nen >= 1992 # もし入力された数値が 1992以上だったら tosi = nen - 1988 # この計算をする → 平成は 1989年〜であり、1989年が平 成元年であるため、それより1小さい 1988 で nen を引けばよい。 printf("平成 %d 年です。\n", tosi) # 結果の表示 end # if文の終わり end # def の終わり def wareki(heisei) # 和暦から西暦に変換する関数 if heisei < 4 # もし入力された数値が 4 より小さかったら print("変換範囲外です。\n") # エラーメッセージ elsif heisei >= 4 # もし入力された数値が 4 以上だったら tosi = heisei + 1988 # この計算をする → 平成は 1989年〜であり、1989年が 平成元年であるため、それより1小さい 1988年でheisei を引けばよい。 printf("%d 年です。\n", tosi) # 結果の表示 end # if文の終わり end # def の終わり print("西暦から和暦 / 和暦から西暦への変換をします。\n") # メッセージ print(" ※変換範囲:1992年(平成4年)以降\n\n") # メッセージ print("どのように変換しますか?\n") # メッセージ STDERR.print("西暦から和暦 → 1 / 和暦から西暦 → 2: ") # 変換方法を選択 kensaku = gets.chomp.to_i # 選択された文字の取りこみ、数値化 if kensaku == 1 # もし kensaku が 1 だったら STDERR.print("\n変換する年は?: ") # 変換する年の入力 nen = gets.chomp.to_i # 入力された文字の取りこみ、数値化 seireki(nen) # def seireki(nen) を持ってくる elsif kensaku == 2 # もし kensaku が 2 だったら print("\n変換する年は?\n") # メッセージ STDERR.print("数字で入力して下さい。: ") # 変換する年の入力 heisei = gets.chomp.to_i # 入力された文字の取りこみ、数値化 wareki(heisei) # def wareki(heisei) を持ってくる end # if文の終わり ●実行結果 --------その1:「西暦 → 和暦」で 1999年 を変換する------------------------- 西暦から和暦 / 和暦から西暦への変換をします。 ※変換範囲:1992年(平成4年)以降 どのように変換しますか? 西暦から和暦 → 1 / 和暦から西暦 → 2: 1 変換する年は?: 1999 平成 11 年です。 --------その2:「西暦 → 和暦」で 1991年 を変換する------------------------- 西暦から和暦 / 和暦から西暦への変換をします。 ※変換範囲:1992年(平成4年)以降 どのように変換しますか? 西暦から和暦 → 1 / 和暦から西暦 → 2: 1 変換する年は?: 1991 変換範囲外です。 --------その3:「西暦 → 和暦」で 2030年 を変換する------------------------- 西暦から和暦 / 和暦から西暦への変換をします。 ※変換範囲:1992年(平成4年)以降 どのように変換しますか? 西暦から和暦 → 1 / 和暦から西暦 → 2: 1 変換する年は?: 2030 平成 42 年です。 --------その4:「和暦 → 西暦」で 平成16年 を変換する----------------------- 西暦から和暦 / 和暦から西暦への変換をします。 ※変換範囲:1992年(平成4年)以降 どのように変換しますか? 西暦から和暦 → 1 / 和暦から西暦 → 2: 2 変換する年は? 数字で入力して下さい。: 16 2004 年です。 --------その5:「和暦 → 西暦」で 平成3年 を変換する------------------------ 西暦から和暦 / 和暦から西暦への変換をします。 ※変換範囲:1992年(平成4年)以降 どのように変換しますか? 西暦から和暦 → 1 / 和暦から西暦 → 2: 2 変換する年は? 数字で入力して下さい。: 3 変換範囲外です。 --------その6:「和暦 → 西暦」で 平成28年 を変換する----------------------- 西暦から和暦 / 和暦から西暦への変換をします。 ※変換範囲:1992年(平成4年)以降 どのように変換しますか? 西暦から和暦 → 1 / 和暦から西暦 → 2: 2 変換する年は? 数字で入力して下さい。: 28 2016 年です。 ●考察 --------実行結果その1について---------------------------------------------- bc -l での計算結果は 1999 - 1988 11 このようになる。 --------実行結果その2について---------------------------------------------- 変換できるのは 1992年 以降であり、 1991年 は変換範囲外とな るため、エラーメッセージが出る。 --------実行結果その3について---------------------------------------------- bc -l での計算結果は 2030 - 1988 42 このようになる。 --------実行結果その4について---------------------------------------------- bc -l での計算結果は 16 + 1988 2004 このようになる。 --------実行結果その5について---------------------------------------------- 変換できるのは 平成4年 以降であり、 平成3年 は変換範囲外と なるため、エラーメッセージが出る。 --------実行結果その6について---------------------------------------------- bc -l での計算結果は 28 + 1988 2016 このようになる。 以上のことから、プログラムは正常に動いているといえる。 d.広告ページアドレス: http://roy/~c111104/adv2/index.html 2.感想 今までプログラミングの課題でプログラムを作ってきて、私は難しく考えす ぎて分からなくなるという傾向があることに気付いた。かなり時間をかけて プログラムを作り、ふとした瞬間に「こうすれば簡単に解決する」というこ とに気付く。これからプログラムを作成するときには、もっと頭を柔軟にし て作成していきたい。 またプログラムに関してだが、今回作成したプログラムは私達の学年用に作 成したため、私達の生まれた年から変換できるように作ってあるが、多くの 年齢層に使ってもらうためにも、歴史の勉強等で使えるようにするにも、もっ と長い期間を変換できるようにしなければならないと思った。 3.参考文献 http://roy/~madoka/2012/r2/06/r2_06_09_appendix_01_methodinmethod.html 西村まどか 『基礎プログラミング2 第6回(目的に応じて使ってみよう) 「methodの中に method」』 共同学習者: 藤川恒介