Pintaniña, belongs to your side
学びの海の助け舟 ピンタニーニャ
Eatablished since 2020

titleimage

小学2年生のプログラミング・教科書に沿って
ハノイの塔風味、お皿を移して ~ニーニャのケーキ~

プログラミングとは、『達成する手順を構築すること』

プログラミングのイメージを直すところからスタートしましょう。みんながイメージしているプログラミングは『コーディング』であることが非常に多いです。パソコンに向かってキーを叩いて命令文を一生懸命に羅列する作業、ハイこれ。これは『コーディング』と言って、『プログラミングが終わった後の作業』です。
簡単に言うと、『仕掛けと順序を考える』のがプログラミングです。実際にやってみましょう!



 

1.プログラミングの基本

プログラムとは、何かを成し遂げるための決まった順序です。つまり、初めに「目的・課題」があります。
今回、2年生は「ハノイの塔のリングの移し方」という課題が、1年生は「ロボくんを思い通りに動かしてみよう」という課題が与えられています。この課題をどうしたら上手くクリアできるか?その方法を探し、解決できる手順を作っていきましょう。
この作業こそが『プログラミング』です!




ピン太とニーニャ

 

小学2年生 ハノイの塔はニーニャのケーキで理解しよう

ハノイの塔は有名なパズルゲーム、なんですが・・・

いきなりよく分からないものが現れました。よく分からないものを、初めて聞くルールで、目的もなく解かされる。パズル好きならともかく、普通の人はこれを見ても『おもしろそう』とは思えないかも…。
というわけで、パズルで楽しむのは あきらめて、世界的にも有名なハノイの塔の解き方を知ってるという知識を得ることにシフトしましょう。その方が有意義。もしかしたら役に立つかもしれないからね!

 

手を動かして見つける。できないなら、先に解法を知っちゃうのもあり

手元に大きさに異なる3枚のリングがあれば、それを使って実際に試してみましょう。でもそんな都合よくリング3枚なんて持っていませんよね?なら先に解法を見ておきましょう。理解しなくてもいいです。見ておくだけでも結構違うものですよ。 これを踏まえて、教科書に載っているロボくんのQRコードで試してみましょう。


 

実際に試してみたらどうかな?

ひとまずやってみましょう。残念なことに、100%作ってからのトライ&エラーを強いられます、う~ん…。
ロボくんに教えよう(教科書の課題)のページへは教科書のQRコードを読み取るか
下記URLをアドレスバーに入力しよう。 
https://gakuto-plus.jp/PMPrograms2019/robokun2.html(※リンクにしてません)
↑これでうまくいかない場合は https://gakuto-plus.jp/01206

【模範解答】
 小を左から中へ → 中を左から右へ 
→ 小を中から右へ(中の上にのせる)→大を左から中へ 
→ 小を右から左へ → 中を右から中へ(大の上にのせる)
→ 小を左から中へ(中の上にのせる) 

この上の指示を 『頭の中で考えてから一気に並べる』必要があります。この学図plusのハノイの塔は、残念ながら《答え合わせしかできない》ちょっと物足りないプログラムです。
ここで一旦整理しましょう。
このように、1段目を置いたところに3段目を持ってくることができます。この辺に法則がありそうですね。

イメージしやすいものを使って、『上にのせてはいけない理由』も共感できるものがあり、なおかつ『解く必要性』も納得できれば、解きたくなるのも必然でしょう。
というわけで、こんなストーリーで実際に動かして確かめられるプログラムをScratchで作ってみました。

ニーニャのケーキ~ハノイタワー風味~
 がんばって何段も重ねたケーキを作ったニーニャちゃん、おつかれさま!でもタイヘン、のせるお皿をまちがえちゃったみたい!
一度に全部は動かせないので、1段ずつ動かします。大きいケーキの上に小さいケーキをのせることはできますが、小さいケーキの上に大きいケーキをのせてしまうと飾りがつぶれてしまうのでダメです。さて、無事にお皿を移してニーニャちゃんを助けてあげることはできるでしょうか?
 

一つずつ動かしながら解いてみよう

イメージしやすい設定を踏まえて、実際にやってみましょう。一手ずつ動かします。
下図左側は3段のケーキを移す場合の手順。下図右は4段のケーキを移す方法です。
なお、4段は最初4枚のお皿でやりましたが、3枚のお皿でも移すことができます。頭の中で解くとしても、覚えておくのには限界がありますよね。一手動かすと、次の一手が見えてくるものです。


 

難しい問題にもチャレンジしてみよう!ホントに解けるのか確認

5段のケーキを3枚のお皿で移せるか?という課題をちょっとだけ試してみました。
結論から言えば、可能です。
ケーキを移したい、ということはいちばん下の段を目的のお皿に移したいと言うのが当初の目的です。下の図の場合、A→Dに移したいので、Dに5段目を載せたい。ということは、Bに4段のケーキを作ればAには5段目だけ、Dは空いているという状態になります。これで移せますね。
このとき、 Bに4段目を置きたいので、1⇒D、2⇒B、1⇒BでBに2段のケーキ完成・Dは空きとなります。空いたDに3段目を置き、1をAに一旦載せればDに3段のケーキが完成・Bが空きます。空いたBに4段目を置いたら、その上に3段目をのせたい。ここで、 1段目を載せた方には奇数段のケーキが、反対側には偶数段のケーキができるという法則がありそうな気配を感じますね。

↑これらの手順を見ながら実際に自分でもやってみよう。10回くらいやるとなんとなく見えてくるものがありますよ。

4段・5段、お皿が少ないパターンを動画で見てみよう





ピン太とニーニャ

 

3.ニーニャのケーキ を もっと使ってみたい・作ってみたい

 ~もっと学びたいと思ったら~ 質の良いお手本から学ぶことが、学習の質を高めます

ニーニャのケーキのプログラムはScratch(スクラッチ)で作っておりますので、小学生でも作れないことはありません。自分で作ることで必然的に仕組みを理解します。ここで面白いのが、実はこのプログラムを作ったところで ケーキの上手い移し方が分かるわけではないのです。


ではなぜこのプログラムを作る必要があるのか?
それは、コンピュータ上で確認できるようにするためです。この手のパズル問題は、何度も試して失敗する繰り返し を根気よくつづけた先に、答えがあるものです。
パソコン上でシミュレーション、当たり前の時代です!
Scratchは、MITメディア・ラボのライフロング・キンダーガーテン・グループの協力により、Scratch財団が進めているプロジェクトです。https://scratch.mit.edu から自由に入手できます。

※今回使用したニーニャのケーキのプログラムですが、作り方はWeb上には公開しておりません。
必要な機能だけでなく、奥行きを表すために上に動かすと小さくするような装飾的な機能もあります。ムダに複雑にすることはありません。 生徒のレベルに合わせて適切な方法で教えております。






ピン太とニーニャ

小学校プログラミング授業 他学年の記録

小学1年生 小学1年生プログラミング授業

向きと歩数で指示して落ちずに橋を渡るプログラムを使っての授業

小学2年生 小学2年生プログラミング授業

ハノイの塔を学べるプログラム『ニーニャのケーキ』を使っての授業

小学3年生 小学3年生プログラミング授業

天秤ばかりで重さの違う玉を探すプログラムを使って調べ方を学ぶ

小学4年生 小学4年生小学4年生プログラミング授業

一筆書きを描いて解くプログラムを使っての一筆書きを学ぶ

小学5年生 小学5年生プログラミング授業

直進・曲がるを繰り返しで描くプログラムを使って多角形を学ぶ

小学6年生 小学6年生プログラミング授業

背の順ピンタ/ミルクのソートプログラムを使って並び替えを学ぶ

 一般社団法人ピンタニーニャ・プログラミング学習協会


最後まで読んでいただきありがとうございます