小学生のプログラミング学習│アルゴリズムとは?どう教えたらよいの?

プログラミングは処理の内容やステップをロジカルに書き出すことから始まります。

そして、処理の順番を正しく組み立てるのが大切なのは当然ですが、処理を細かい単位に分けなければ、プログラミングはできません。このように、ロジカルに細分化された処理の全体論理のことを「アルゴリズム」といいます。

このサイトのテーマである「小学生のプログラミング学習」の水準からは、少し上級の概念となりますが、これからプログラミング学習を進めるうえで耳にする機会があると思いますので、アルゴリズムの概要だけ覚えておきましょう!

アルゴリズムはプログラミングの基本ですが、小学生の水準で考えると、少し難解です。学習の初歩の段階では意識しなくてもよいので、ご関心があれば読み進めてください。プログラミングへのご関心が高ければ、面白い内容かと思います。

目次

アルゴリズムとは?

Webs隊長

今日のテーマはアルゴリズムだ!
小学生レベルでは少し難しいけど、プログラミングの初歩的な概念だ!

アルゴリズムね。
はい!とりあえず聞いてみます

コンピューターは細かい指示が必要

以前の記事で、「プログラムとはコンピューターへの指示書」という説明をしましたが、コンピューターに指示をする場合には、とても細かい内容で伝える必要があります。

例えば、ヒトに「近くの自動販売機でオレンジジュースを買ってきて」といえば、ほとんどのヒトには通じますが、コンピューターはそう簡単には理解してくれません。

「自動販売機でオレンジジュースを買う」という行為に対して、ひとつひとつ細かい指示が必要なのです。

例:コンピューターへの指示(アルゴリズム)

  1. 具体的に指定した自動販売機で
  2. 具体的に指定したオレンジジュースが売り切れになっていないことを確認し
  3. 100円硬貨を2枚投入し
  4. 投入金額の表示が200円になっていることを確認し
  5. 「②」のオレンジジュースのボタンを押下し
  6. 商品取り出し口にオレンジジュースがあることを確認し
  7. 商品取り出し口からオレンジジュースを取り出し
  8. お釣りの返却レバーを下げ
  9. お釣りを取り出し「200円-オレンジジュース代」の金額になっていることを確認し
  10. お家に帰ってくること

このような指示になります。なお、この例は簡単な見本であり、本来は「分岐」の処理が必要です。具体的には「②」の指示について、オレンジジュースが売り切れになっていた場合の指示も明確に書く必要があります。

他にも想定される事柄は細かに書いておかなければ、想定外の事態が発生したときに、プログラムエラーになってしまいます。(アルゴリズムが不十分)

例えば、自動販売機では、時々、投入した硬貨が課金されず、返却口に返されることがありますね。つまり、「④」の工程で200円になっていない場合の処理も書くべきなのです。さらに、「⑥」については、誤って違う商品が補充されている可能性も考慮し、オレンジジュースではない商品が出てきた場合の指示、さらに何も出てこなかった場合の指示も書くべきなのです。

「⑨」のお釣りについても、元々、直前に買ったヒトが取り忘れた硬貨が残っていて、お釣りの金額が「200円-オレンジジュース代」になっていないかもしれません。

アプリのエラーなども原因はアルゴリズム!

あ~。難しいよ~。
言っていることは分かるけど、どこまで細かくすればよいの~!

Webs隊長

今はそこまで考えなくていいぞ!
正解は気にせずに、どこまで細かくできるのかを考えるのもプログラミングの学習だ!

そうね!
あまり考えると苦手意識を持っちゃいそう

Webs隊長

参考までに!
実はスマホのアプリなどで発生するエラーも、ほとんどはアルゴリズムが原因だ!特定の条件下で発生するエラーは、まさにそうだ!

この記事を読んでいる方も、スマホやパソコンのアプリケーションで発生するエラーに遭遇したことがあると思います。

例えば、前節の自動販売機の例では、投入した100硬貨が課金されず、返却口に返されてしまった場合、「④」の工程でプログラムが停止し、一定時間経過後、エラーになってしまいます。

これは、100硬貨を2枚投入した際、その自動販売機で200円分の課金が有効にならない可能性を想定していなかったためです。つまり、アルゴリズムが不十分なのです。

ヒトであれば、別の100円硬貨を投入したり、オレンジジュースを買わずに帰ってくるという判断ができますが、コンピューターは指示されていない行動は絶対にせず、エラーで停止状態になってしまいます。

参考までに。AI(人工知能)というテクノロジーは、膨大な過去のデータを基にしてコンピューター自身が判断することが可能です。例えば、オレンジジュースがなければ何も買わないほうがよいのか、代わりにアップルジュースを買ったほうがよいのか、過去のデータを基にコンピューターが判断し行動します。

小学生にアルゴリズムはどう教えるの?

ところで、わたしもアルゴリズムは難しいと思ってしまったんだけど・・
子どもにはどう教えたらいいの?それとも教えなくてもいいの?

Webs隊長

段階的に教えたらよい!
後日、別記事で「具体的なフローチャートの書き方」を説明するが、それぞれの工程で『ここをもっと詳しく分解してみよう!』という方法でよいのだ!


まずはフローチャート

小学生のプログラミング学習は(実は大人でもそうですが)、まずはフローチャートを書く学習から始めます。

当サイトで何度も説明している「 処理の内容やステップをロジカルに書き出す 」練習ですね!

そして、ある程度、フローチャートが書けるようになった段階で、次の工程に進みます。次の工程は、「細分化(アルゴリズム)」です。

フローチャートを書こう

次に細分化(アルゴリズム)

書き上げたフローチャートを子どもと一緒に見てみましょう。

どこかにもっと細かくできる箇所や、「分岐」が必要な箇所があるはず。その工程を「ここ、もっと詳しくできるかな?」というように、子どもが納得できる範囲で細分化してみましょう!

でも、前章の自動販売機の例でお分かりの通り、細かくし過ぎるとキリがありません。適度な範囲に留めておきましょう!

また、子どもが「あまり納得していない」や「つまらなそうにし始めた」場合には、無理に細分化する必要はないでしょう。そもそも、アルゴリズムは、現実のプログラミング寄りの概念で、小学生のプログラミング学習の水準ではないのです。

Webs隊長

誤解してはいけないのは、アルゴリズムは単に細かくする作業のことじゃないぞ!必要な細分化がされていて、全体論理が正しくなっていなければならない。

あとがき

今回の記事は、少し難しい内容になってしまいましたね。

アルゴリズム小学生には難しくても、一般のプログラミングの基本の概念であり、ロジカルな思考力を育成するには効果的なので、紹介してみました。

お子さまがプログラミングに興味を持っており、楽しんでいるようでしたら、ぜひロジカルな細分化(アルゴリズム)の学習も進めてみてください。プログラミング力が一気に高まります。

Webs隊長

今回の記事は少しレベルが高いぞ!
今日はここまで!

よかったらシェアしてね!

この記事を書いた人

このサイトの運営者。

生粋のプログラマーではなく、庶民的なプログラミングユーザーとして、初心者の目線に立った分かりやすい解説を心掛けている。過去に、企業を対象にプログラミングの研修講師も経験。

2022年時点で、2年生の1児の親。

ともに成長しましょう!

目次
閉じる