出典:マイクロソフトサポートページ実は、うるう年の判定は結構難しいのです。うるう年かどうかを判定するプログラムを考えると、かなりプログラミングの力が伸びると思います。この判定方法をもっとわかりやすくするために図にしてみました。このようにプログラムの流れを図にしたものをフローチャートといいます。この判定方法を使って、うるう年を判定するプログラムを作ってみましょう。うるう年判定プログラムを作ってみようでは、Scratchでうるう年判定プログラムを作ってみましょう。今年がうるう年かどうかを判定するまずは今年がうるう年かどうか?を判定するプログラムです。うるう年かどうかは割り切れるかどうかなので、「●を▲で割った余り」ブロックを使いましょう。「割り切れる」ということは「余りが0」ということなので、次のようなブロックを用いてプログラムを作っていきましょう。4で割り切れるかどうか?割り切れなければうるう年ではないので、上のブロックの「でなければ」のところに「うるう年ではない」とスプライトが言うブロックを追加します。次は100で割り切れるかどうか?を考えます。上の図の「もし」のところに、また「もし〜でなければ」ブロックを追加しましょう。100で割り切れないときうるう年になるので、スプライトに「うるう年だ」と言わせるブロックを追加します。同じような考え方で、400で割り切れるかどうか?の部分もプログラミングして完成したのがこちらです。このプログラムを実行すると、記事執筆時点(2018年)は以下のような結果になりました。いろいろな年のうるう年を調べられるようにする先ほどは「今年がうるう年かどうか?」を判定するプログラムを作りました。これだけだとプログラムが全て正しいかどうかわかりませんね。いろいろな年のうるう年も調べられるようにしたいです。そこで「聞いて待つ」と「答え」のブロックを使って、いろいろな年を入力できるように変えてみます。このプログラムが正しいかどうかを確認してみましょう。うるう年ではない例この理由により、以下の年はうるう年ではありません。割り切れないためです。出典:マイクロソフトサポートページ「うるう年ではない例」に挙げられている1700を入力してみます。次はうるう年の例です。以下の年はうるう年です。出典:マイクロソフトサポートページ上記の「うるう年の例」に挙げられている1600を入力してみます。こちらもきちんと判定できていますね。最後に、単に4で割り切れるだけの年がうるう年かどうかも確認しておきましょう。プログラムの判定は正確なようです。プログラムの重複をなくしたいさて、先ほどのプログラムですが「●●年はうるう年だよ」「●●年はうるう年ではないよ」というブロックが2個づつあります。動作はしていますが・・・なんとなくすっきりしません。同じ動作をするブロックが2個あると、セリフを変えたいときに二箇所変えないといけなくなります。そのため、プログラムはできるだけ同じ処理を書かない方が良いのです。そこで、「●●年はうるう年だよ」「●●年はうるう年ではないよ」という部分の重複をなくすことを考えてみたいと思います。重複をなくすために、うるう年かどうかの判定を1回だけで行えるようにします。判定を考えるために、数の関係を図にしてみます。全ての年の中に「4で割り切れる年」その中に「100で割り切れる年」さらにその中に「400で割り切れる年」があるという関係があります。この図でうるう年のところだけに色をつけてみます。うるう年となるのは、以下の赤色で塗った部分のところだけになります。うーん・・・なんだかとっても複雑ですね。わかりやすくするために、分けて考えてみましょう。これは「4で割り切れる年のうち、100で割り切れない年」ということになります。つぎに「400で割り切れる」を条件に加える、これは「4で割り切れる年のうち、100で割り切れない年」または「400で割り切れる年」ということになります。Scratchで作ろう先ほど考えた、うるう年かどうか?の判定条件である「4で割り切れる年のうち、100で割り切れない年」または「400で割り切れる年」をScratchのブロックで表現してみましょう。「4で割り切れる年のうち、100で割り切れない年」をScratchのブロックで表現するととなります。これを、『または「400で割り切れる年」』をさらに繋げていくと・・・となります。この条件式こそが「うるう年かどうか」を1発で判定する式になります。この式を使ったプログラムはこのようになります。条件式は複雑になりましたが、「●●年はうるう年だよ」「●●年はうるう年ではないよ」という部をが1箇所だけにすることができました。まとめ今回は、うるう年を判定するプログラムを考えてみました。複雑な条件ですが、基本的には一つ一つの条件を組み合わせていくだけです。小学校高学年のお子さんであれば、前半部分のプログラムが作れれば、かなりすごい!と言っていいのではないでしょうか。後半部分の「うるう年かどうかを1回で判定する条件式」を考えるのはかなり難しいので、こういう考え方があるんだね、ぐらいで大丈夫です。プログラムを作れるかどうかということを重視するよりは、どうしてそういうプログラムにした方がいいのか?という理由を理解してもらえたら、と思っています。TOMONO教育ヲタクの1児の母。小学生の頃から教育書を読んでいた教育ヲタク。大学では、電池の素材の性質について実験とコンピューターシミュレーションを比較する研究を行っていたことがきっかけでSEになる。出産&育休後、子ども向けプログラミング教室講師、子どもたちの考える力を育てるオンライン塾の講師。TOMONO一緒に読まれている記事。Minecraftでプログラミング教育したい人のためのレッドストーン回路クイズ(17)コンパレーターその22019年8月9日970こんにちは。今日もMinecraftのコ...夏に応募したい!2019年子どもプログラミングコンテスト3選2019年7月29日1.14K夏休みが始まりましたね。子どもの頃は楽し...5歳児もハマるプログラミングアプリ-Springin’はじめて講座(4)絵の削除・インポート2019年7月26日865今日もSpringin’の続きです。新小学1年生の入学準備!知って安心、保幼少接続カリキュラム2020年1月14日2020年は教育はどうなるのか?ーやる気が出ない日に未来を心配してみる2019年12月27日プログラミングアプリSpringin’でマリオ風アクションゲームを作ろう(2)キャラクターの操作2019年12月13日プログラミングアプリSpringin’でマリオ風アクションゲームを作ろう(1)ステージの作成2019年12月6日あなたへのおすすめ。暗算が早い子の頭の中、暗算が遅い子の頭の中ー算数ができる子が持っている「量的感覚」のこと2018年11月16日プログラミング初心者のためのScratch(スクラッチ)入門-基礎の基礎編(1)2018年7月31日2020年教育改革-AI時代の教育指標「ブルームタキソノミー」の話2018年12月5日ゲームで頭のいい子を育てるー幼児xマインクラフトの3つの教育的効果2018年11月14日このサイトについて。今、注目されている考えさせる教育、アクティブラーニング。AI時代に教えるべき教育とは何か。2020年に教育必修化するプログラミング教育を交えながら、これからの教育シーンに必要な情報をお届けします。CATMADE,Inc.サイトマップ。