Google Apps Script

【プログラミングお題】GASで「うるう年」の判定関数を書いてみた

ねぇもりさん、今日のお題は?
もりさん
もりさん
うるう年を判定する関数を作ってみよう!
うるう年って4年に1度だよね?なんか簡単すぎない?

うるう年とは?

(1)西暦年号が4で割り切れる年をうるう年とする。
(2)(1)の例外として、西暦年号が100で割り切れて400で割り切れない年は平年とする。

例えば、このようになります。

  • 1900年=平年(100で割り切れるが、400で割り切れない)
  • 2000年=うるう年(400で割り切れる)
  • 2016年=うるう年(4で割り切れる)
  • 2100年=平年(100で割り切れるが、400で割り切れない)

条件を整理してみよう

(1)西暦年号が4で割り切れる年をうるう年とする

もりさん
もりさん
これは大丈夫そうかな?「4で割り切れる=4の倍数」は「うるう年」だね。図にするとこうなるよ
leapyear1

(2)西暦年号が100で割り切れて400で割り切れない年は平年とする

これ、ややこしいなぁ~

「100で割り切れて400で割り切れない数字」とは「100の倍数であるが、400の倍数ではない数字」です。これが「平年」になります。

もりさん
もりさん
図にすると、みどり色の部分が「平年」だね。白い円は何になるかわかるかな?
leapyear2
あれっ?そういえば400の倍数って、4の倍数だよね?

400の倍数→400、800、1200、1600…は4の倍数です。

(1)の条件によると、4の倍数は「うるう年」なので、400の倍数も「うるう年」ですね。図にするとこうなります。

leapyear3
ふむふむ、なるほどねぇ~

2つの条件を合体させる

もりさん
もりさん
はい、あと一歩だよ~。(1)(2)の条件を合体させてみるよ
leapyear3-2
100の倍数は、4の倍数でもあるよね

(1)の「4の倍数」の「水色の円」のなかに、(2)の円を入れ込めばOKです。

leapyear4

ここまできたら、大きい数字から順番に、if~elseを使って①~④を判定します

  1. もし400で割り切れたら「うるう年」
  2. もし100で割り切れたら「平年」
  3. もし4で割り切れたら「うるう年」
  4. その他「平年」

「割り切れるか?」の確認は、「割り算のあまりがゼロであるか」で判定しましょう。

if文では、400→100→4と、大きい数字から順番に割ってチェックします。「4で割り切れるか?」を最初にチェックしてしまうと、100の倍数・400の倍数も判定されてしまうからです。

GASで書いてみた

もりさん
もりさん
はい、よくできました~!
GASの情報ってネット記事は色々読んでるんだけど、もっと体系的に勉強できる良い本ないかぁ〜?
もりさん
もりさん
それならこの本がオススメだね!私もこれで勉強してるよ
ノンプログラマーがプログラミングを学ぶ理由

ノンプログラマーがプログラミングを使えるようになると、「仕事の幅」が広がります。

日常生活にたとえると「車の運転」のイメージです。

多くの人は、大人になると自動車教習所に通って、運転の練習をしますね。F1レーサーやタクシードライバーなどの「プロ」になるわけではないのに。

車の運転ができれば、遠いところへ、速く・ラクに移動できて「生活の幅」が広がるからです。

プログラミングができるようになれば、今の仕事を速く・ラクに片づけて、「仕事の幅」を広げることができます。

「プロ」を目指す必要はありません。今の仕事をより豊かにするための「手段」、それがプログラミングです。

1週間オンライン無料体験あり
全国6教室で無料体験会