基礎から学ぶVBAプログラミング教室

もりさんのお題を解きながら楽しく勉強しよう

スポンサーリンク

【ノンプロ研_お題】GASでうるう年判定関数を書いてみた

2018年6月からノンプロ研(※)のSlackで「今週のお題」チャンネルがスタートしました。

(※)正式名称「ノンプログラマーのためのスキルアップ研究会」


1つのお題に対して、各自の得意言語(VBA、GAS、Python)で書いたコードを投稿してガヤガヤしています。

今回は初のGASチャレンジです!

f:id:excel-accounting:20180822210926p:plain:w450

今週のお題

「年を整数で渡して、それがうるう年かどうかを判定する」


うるう年って4年に一度だから、年を4で割った余りがゼロならうるう年か~

って…なんか簡単すぎるな…

うるう年って?

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

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

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

  • 1900年=平年
  • 2000年=うるう年
  • 2016年=うるう年
  • 2100年=平年

なるほど~

プログラミングの練習にはうってつけですね!

はじめてのGAS

買っちゃいましたよ~

ずっしり重い!しっかり勉強します!

ノンプロ研主催者でもあるタカハシノリアキさん(@ntakahashi0505)の著書です!

GASで書いてみた

function myFunction(){
  var y = 2018;
  Logger.log(y + '年は' + isLeapYear(y) + 'です');
}


function isLeapYear(y) {
  
  if (y % 400 === 0){
    Leap = 'うるう年'
  }else if(y % 100 === 0){
    Leap = '平年'; 
  }else if(y % 4 === 0){
    Leap = 'うるう年';
  }else{
    Leap = '平年';
  }
  
  return Leap;
  
}

(余談)2100年問題

うるう年、調べるまで「4年に一度」って思ってました。

2000年前後に生きてる私たちは「100で割り切れて400で割り切れないときは平年」なんて考える必要ないですもんね。

そこで気になるのが・・・

「2100年うるう年じゃないのにうるう年になっちゃう問題」


無理やり命名した感ありますけど、単純に4で割ってるシステムありそうですよね。

2000年は問題なくうるう年判定されてるから見過ごされているけれど、2100年になったら大丈夫でしょうかね…


そのくらいエンジニアならちゃんとチェックしてるだろ

って?

ええまぁ、以前勤務していた会社のチェックリストにも、ちゃんとチェック項目ありましたよ

✔ うるう年を考慮した設計になっているか?

ってね(笑)

「よし、ちゃんと4で割ってうるう年の考慮してるから大丈夫!」ってなったらアウトですよね


チェックリストを作るときは「〇〇を考慮した~」だけでなく、具体例も書いておくといいですね



プログラミングの練習になりそうな他のお題(書いてみたシリーズ)もぜひ見ていってくださいね~

www.excel-prog.com

スポンサーリンク