探究型プログラミング学習(探プロ)

プログラミングの考え方を学んで、未来を創る力を手に入れる

プログラミングの考え方を学んで未来を創る力を手に入れる

『ルビィのぼうけん』勝手に超訳 Vol.07

5章、ユキヒョウの続きです。

 

プログラミングの考え方として「繰り返し処理」を捉えるならば

その本質は、効率的な処理、と言えます。

 

同じことの繰り返しによる結果として

ユキヒョウの身体についている柄、宝石が乗っていた屋根の模様、ハシゴ

あたりがモチーフとして紹介されていることは前回説明しました。

 

同じ模様をたくさん作るなら、繰り返し同じ処理をすれば良い

という話なのですね。

f:id:dig_learning:20170311235343p:plain

 

ここでもう一歩、掘り下げて

それはつまりどういうことなのか?

と考えてみると、効率的な処理をするための手段である

と言えます。

 

つまり、漫然と同じ処理を繰り返すのではなく

いかにして、効率良く処理するか?

(できるだけ少ないステップで処理する)

と考えてみると、繰り返し処理を考えるときのポイントが2つ見えてきます。

 

それは

  1. 同じ種類の情報をまとめること
  2. 繰り返すための条件を設定すること

です。

 

まず一つめの、同じ種類の情報をまとめること

について説明します。

 

例えば、これから洗濯物を干そうとするシーンを想像してみてください。

目の前には洗濯物の山があって、ハンガーやタコ足などを使って一つ一つ片付けていくわけです。

f:id:dig_learning:20170313211900p:plain

 

どうやって片付けますか?

洗濯物の山に手を伸ばして

まず手にとったシャツの袖をハンガーに通してそのまま物干しにかけ

次に靴下を洗濯バサミでとめて

今度はバスタオルのシワを伸ばして広げて物干し竿に広げ

そしてまたシャツを手に取り…

あっちへ行ったりこっちへ行ったり...

 

なんてやってませんか?

f:id:dig_learning:20170313212013p:plain

 

 

こんな非効率な家事を続けていたら、お母さんたちの時間はいくらあっても足りません。

そこで、繰り返しの考え方を使って改善してみましょう。

 

まず、洗濯物を同じ種類にまとめます。

  • シャツなどハンガーにかけるもの(大人用、子ども用をさらに分けて)
  • タオルなど物干し竿に直接広げるもの
  • 靴下など洗濯ハンガーにまとめて吊るすもの

などなど。

f:id:dig_learning:20170313212143p:plain

 

このとき、シャツとか靴下といった洗濯物の種類で分けるのではなく

洗濯物を干す場所とか方法で分類するのが重要です。

 

そうすれば

ハンガーに袖を通して物干し竿に吊るす

という処理をシャツの数だけくり返すにしても

ベランダの中を行ったり来たりしないで、その場でハンガー掛けの処理を片付けられますね。

 

 

そして2つめのポイントである、繰り返すための条件を設定します。

 

条件には3種類あります。

まず、開始のための条件

 

直径30センチほどの洗濯ハンガーに干すことを考えてみます。

https://www.nitori-net.jp/wcsstore/ec/images/Image/catalog/8500502/646X1000/850050201.jpg

開始条件はまず、当たり前ですが干すべき洗濯物が存在することです。

しかも、バスタオルのように大判のものではなく、靴下など洗濯バサミを1つか2つ使う小物でなければなりません。

 

もし靴下が5足あれば、その数だけ洗濯ハンガーに吊るす作業を繰り返して

洗濯物カゴが空っぽになれば終わりです。

 

f:id:dig_learning:20170313212717p:plain

これが終了条件です。

 

洗濯物がなくなったら、というのは1つの終了条件ですが

それ以外にも、ハンガーが5本しかないのであれば、5本全部使ったら

(もしくは、残りが0本になったら)終わり

というのも終了条件です。

 

 

そしてもう1つの条件が繰り返すための条件です。

これもいろいろありますね。

 

例えば、シャツだけを一気に片付けるのであれば

洗濯物がシャツであること

かつ

ハンガーが1本以上残っていること

 が繰り返しの条件になります。

 

終了条件と繰り返しの条件が同じ場合もありますが、分かりやすく考えるためにも、

・開始条件

・終了条件

・繰り返し条件

の3つがあると理解するのが良いと思います。

 

 

こうやって考えてみると、繰り返し処理というのは単に同じことをくり返す

という意味なのではなく

効率的な処理をするための手段である

ということが分かるのではないかと思います。

 

つまり、最初に種類で分類して、繰り返し処理のための条件をどのように設定するか

ということをちゃんと考えることが、効率良くものごとを進める上でとても重要だということです。

 

プログラミングというちょっと特殊な世界でやっていることは、結局のところこういった考えに基づいてプログラムコードを書いている

ということにすぎません。

 

家庭でもし、この繰り返し処理の考え方を子どもたちに伝えるのであれば

どうすれば家事を効率良く終わらせることができるか?

ということを一緒に考えてみると面白いと思います。

 

洗濯然り、掃除然り、料理然り。

家庭の中には、プログラミングの考え方が役に立つ場面が意外とあるんですよね。

それは、プログラミングの考え方は基本的に「効率が良いこと」を目指しているからです。

 

プログラミングの考え方は、次世代の子どもたちが受ける特別な教育によって手に入るもの

ではなく

私たち大人が普段の日常や仕事の中でも当たり前に使っている考え方と同じである

ということを、まずは大人に理解してもらいたいと最近考えるようになりました。

ルビィの超訳を通じて、そんなことが少しでも伝えられたらと思っています。

 

 

子どもと一緒にこんなことをやってみたよ、という方がいたら、是非教えてください!

@tanpro-lab