PR

 今回は、記念日を入力すると、今年で何周年になるのか調べ、「銀婚式」や「金婚式」などの記念式を調べるというプログラムを作ってみます。また、先日行われた「なでしこ開発合宿」の様子も報告します。

記念日から何周年かを調べるプログラム

 今回作るのは、記念日から今年で何周年、今日で何日経過しているのか、結婚式を記念日としている場合の記念式を調べるプログラムです。

 結婚記念式というのは、結婚後何周年目かに夫婦健在である結婚生活を祝って行なうものです。結婚式から何周年かによって「真珠婚式」や「金婚式」と名前がつけられていて、その贈り物を夫婦間で交換することになっているようです。(ここでは5年ごとの記念式だけを表示するようになっています。)

●プログラムの使い方

 なでしこのエディタに以下のプログラムを貼り付けて実行します。記念日の日付を尋ねられますので、「2000/1/1」のような(西暦年/月/日)形式で入力します。すると、今年で何周年目か、記念日から今日までの経過日数、記念式の名称を表示します。

図1 2007/3/25に記念日1987/4/1を入力した場合

【プログラムソース1】

# --- ユーザーからの入力
「記念日はいつですか?(西暦年/月/日の形式で)」と尋ねて、記念日に代入。
# --- 計算
記念日を「/」で区切る。記念年=それ【0】
周年=(今年 - 記念年)
経過日=記念日から今日までの日数差。
# --- 記念式の判断
周年で条件分岐
  1ならば、記念式は「紙婚式」
  5ならば、記念式は「木婚式」
  10ならば、記念式は「すず婚式」
  15ならば、記念式は「水晶婚式」
  20ならば、記念式は「陶婚式」
  25ならば、記念式は「銀婚式」
  30ならば、記念式は「真珠婚式」
  35ならば、記念式は「珊瑚婚式」
  40ならば、記念式は「ルビー婚式」
  45ならば、記念式は「サファイア婚式」
  50ならば、記念式は「金婚式」
  55ならば、記念式は「エメラルド婚式」
  60ならば、記念式は「ダイヤモンド婚式」
  75ならば、記念式は「プラチナ婚式」
  違えば、記念式は「{周年}周年記念」
# --- 結果の表示
文字サイズ=24。
「記念日({記念日})から
今日({今日}) までの歩み
------------------------------
・今年で {周年} 周年です。
・今日で {経過日} 日目です。
・記念式は【{記念式}】です。」と表示。

何周年かの数え方

 創立3周年や、結婚5周年など、「n周年」という数え方はよく使われます。このn周年を計算するのは、単純に「n周年=記念日 - 今年」という計算式で求められます。

 計算は簡単なのですが、冒頭のプログラムでは、記念日の年だけでなく、「西暦年/月/日」のような形式で入力してもらうので、年部分だけを取り出す必要があります。

 そこで、『区切る』命令を使って、年、月、日をそれぞれ分けます。この命令は以下の書式で使います。

【書式】「区切る」命令

(対象文字列)を(区切り記号)で区切る

 『区切る』命令を実行すると、特殊変数「それ」に結果が代入されます。
 「西暦年/月/日」を「/」という文字で区切った場合は、『それ【0】』に年が、『それ【1】』に月が、『それ【2】』に日が入ります。
 (このとき、【1】を[1]と書いても同じ意味です。)

 以下のプログラムは、今日の日付を取得し、これを、年、月、日に区切って一行ずつ表示したものです。

【プログラムソース2】

文字サイズ=32
今日を表示。
今日を「/」で区切る。
それ[0]を表示。
それ[1]を表示。
それ[2]を表示。

図2 区切ったところ

経過日の数え方

 次に、記念日からの経過日数の数え方ですが、これは、なでしこに「日数差」という命令がありますのでこれを遣います。これは、『(日付A)から(日付B)までの日数差』という書式で利用します。

 以下は、1999年1月1日から、今日までの日数差を表示します。

【プログラムソース3】

「1999/1/1」から今日までの日数差を表示。

「条件分岐」構文

 それから、冒頭のプログラムでは、記念式があるかどうか判断するのに、「条件分岐」構文を利用しました。これは、条件として与えた値に応じた選択肢を実行するという構文です。

【書式】条件分岐

(条件)で条件分岐
  (選択肢1)ならば、(選択肢1に応じた処理)。
  (選択肢2)ならば、(選択肢2に応じた処理)。
  (選択肢3)ならば、(選択肢3に応じた処理)。
  違えば、(その他の処理)。

 例えば、その日の天気によって、処理する内容を変更したい場合、以下のように書くことができます。

【プログラムソース4】

天気で条件分岐
  「晴れ」ならば、洗濯する。
  「雨」ならば、家の掃除をする。
  違えば、天気予報を調べる

 もちろん、条件の真偽で実行内容を変更する「もし」構文を使って、下記のように書き直すこともできます。

【プログラムソース5】

もし、天気が「晴れ」ならば
  洗濯をする
違えば
  もし、天気が「雨」ならば
    家の掃除をする
  違えば
    天気予報を調べる

 こうして見ていくと、繰り返し「もし、天気が・・・ならば」と出てきます。条件が同じなのに、何度も同じように書くのは大変な場合、「条件分岐」構文を利用して書くことができます。

今日のまとめ

 今回は、記念日からの日付計算の方法と「条件分岐」構文を紹介しました。ここでは、何周年に応じた記念式の表示を行いましたが、今回の条件分岐を応用して、日付ごとに「今日は、xxの日」のような、記念日カレンダーを作っても便利でしょう。

琵琶湖の湖畔で開発合宿しました!

 先日(3月24日~25日)、琵琶湖の湖畔で、なでしこの開発合宿が行われました。開発合宿はメーリングリストで告知され、6人が参加しました。開発合宿と言うのは、ホテルや民宿に缶詰になって、ひたすら開発を行うイベントです。

 好きなメンバーで集まって、好きな開発をします。とても楽しい上に、人が開発する様子を観察することができ、何かが完成していく楽しみを共有できます。刺激的で勉強になるという訳で、ここ数年、エンジニアの間で開発合宿が流行しています。

 今回の開発合宿でも、それぞれ自分のやりたい目標を持って集まりました。私は、最近、他の開発が忙しく、なかなか、なでしこに新しい機能を追加できてなかったので、Excel関連の命令など、いくつか新命令を追加しました。

 他の参加メンバーは、なでしこでプログラムを開発したり、また、現在、ユーザー主導でなでしこの解説本を作ろうというプロジェクトがあり、このための原稿を書いたりと、それぞれ非常に充実したものとなりました。

 1泊2日という短い合宿でしたが、缶詰になって集中して開発を行うことができたので、いつも以上の成果を出すことができました。琵琶湖の美しい景色を横目にリゾート気分も楽しむことができて、一泊で二倍美味しい合宿でした。

 開発成果は、既になでしこの新しいバージョンに反映されていますので、バージョンアップしてお楽しみください。

はじめてこの連載を読む方へ
 この連載では、日本語でプログラムが書ける「なでしこ」というツールを使って仕事に役立ちそうなプログラムを紹介しています。なでしこのプログラムエディター(なでしこエディタ)に、記事中で紹介しているプログラムソースをコピー・アンド・ペーストし、実行ボタンを押すだけで、プログラムを動作させることができます。詳しい内容は本連載第1回をご覧ください。

【PCオンライン編集部からのお願い】
「なでしこ」は個々のユーザーの責任において利用してください。
コラムで紹介するなでしこのプログラム動作については編集部でも確認していますが、すべてのユーザーのパソコン環境で同じように動作することを保証するものではありません。
申し訳ありませんが、紹介する内容について、個別のご質問にはお答えしかねます。なでしこの公式ページでは詳しいマニュアルや質問を受け付ける掲示板が提供されていますので、そちらをご参照ください。よろしくお願いいたします。