プログラミングは処理の内容やステップをロジカルに書き出すことから始まります。
そして、処理の順番を正しく組み立てるのが大切なのは当然ですが、処理を細かい単位に分けなければ、プログラミングはできません。このように、ロジカルに細分化された処理の全体論理のことを「アルゴリズム」といいます。
このサイトのテーマである「小学生のプログラミング学習」の水準からは、少し上級の概念となりますが、これからプログラミング学習を進めるうえで耳にする機会があると思いますので、アルゴリズムの概要だけ覚えておきましょう!
アルゴリズムはプログラミングの基本ですが、小学生の水準で考えると、少し難解です。学習の初歩の段階では意識しなくてもよいので、ご関心があれば読み進めてください。プログラミングへのご関心が高ければ、面白い内容かと思います。
今日のテーマはアルゴリズムだ!
小学生レベルでは少し難しいけど、プログラミングの初歩的な概念だ!
アルゴリズムね。
はい!とりあえず聞いてみます
以前の記事で、「プログラムとはコンピューターへの指示書」という説明をしましたが、コンピューターに指示をする場合には、とても細かい内容で伝える必要があります。
例えば、ヒトに「近くの自動販売機でオレンジジュースを買ってきて」といえば、ほとんどのヒトには通じますが、コンピューターはそう簡単には理解してくれません。
「自動販売機でオレンジジュースを買う」という行為に対して、ひとつひとつ細かい指示が必要なのです。
このような指示になります。なお、この例は簡単な見本であり、本来は「分岐」の処理が必要です。具体的には「②」の指示について、オレンジジュースが売り切れになっていた場合の指示も明確に書く必要があります。
他にも想定される事柄は細かに書いておかなければ、想定外の事態が発生したときに、プログラムはエラーになってしまいます。(アルゴリズムが不十分)
例えば、自動販売機では、時々、投入した硬貨が課金されず、返却口に返されることがありますね。つまり、「④」の工程で200円になっていない場合の処理も書くべきなのです。さらに、「⑥」については、誤って違う商品が補充されている可能性も考慮し、オレンジジュースではない商品が出てきた場合の指示、さらに何も出てこなかった場合の指示も書くべきなのです。
「⑨」のお釣りについても、元々、直前に買ったヒトが取り忘れた硬貨が残っていて、お釣りの金額が「200円-オレンジジュース代」になっていないかもしれません。
あ~。難しいよ~。
言っていることは分かるけど、どこまで細かくすればよいの~!
今はそこまで考えなくていいぞ!
正解は気にせずに、どこまで細かくできるのかを考えるのもプログラミングの学習だ!
そうね!
あまり考えると苦手意識を持っちゃいそう
参考までに!
実はスマホのアプリなどで発生するエラーも、ほとんどはアルゴリズムが原因だ!特定の条件下で発生するエラーは、まさにそうだ!
この記事を読んでいる方も、スマホやパソコンのアプリケーションで発生するエラーに遭遇したことがあると思います。
例えば、前節の自動販売機の例では、投入した100硬貨が課金されず、返却口に返されてしまった場合、「④」の工程でプログラムが停止し、一定時間経過後、エラーになってしまいます。
これは、100硬貨を2枚投入した際、その自動販売機で200円分の課金が有効にならない可能性を想定していなかったためです。つまり、アルゴリズムが不十分なのです。
ヒトであれば、別の100円硬貨を投入したり、オレンジジュースを買わずに帰ってくるという判断ができますが、コンピューターは指示されていない行動は絶対にせず、エラーで停止状態になってしまいます。
ところで、わたしもアルゴリズムは難しいと思ってしまったんだけど・・
子どもにはどう教えたらいいの?それとも教えなくてもいいの?
段階的に教えたらよい!
後日、別記事で「具体的なフローチャートの書き方」を説明するが、それぞれの工程で『ここをもっと詳しく分解してみよう!』という方法でよいのだ!
小学生のプログラミング学習は(実は大人でもそうですが)、まずはフローチャートを書く学習から始めます。
当サイトで何度も説明している「 処理の内容やステップをロジカルに書き出す 」練習ですね!
そして、ある程度、フローチャートが書けるようになった段階で、次の工程に進みます。次の工程は、「細分化(アルゴリズム)」です。
書き上げたフローチャートを子どもと一緒に見てみましょう。
どこかにもっと細かくできる箇所や、「分岐」が必要な箇所があるはず。その工程を「ここ、もっと詳しくできるかな?」というように、子どもが納得できる範囲で細分化してみましょう!
でも、前章の自動販売機の例でお分かりの通り、細かくし過ぎるとキリがありません。適度な範囲に留めておきましょう!
また、子どもが「あまり納得していない」や「つまらなそうにし始めた」場合には、無理に細分化する必要はないでしょう。そもそも、アルゴリズムは、現実のプログラミング寄りの概念で、小学生のプログラミング学習の水準ではないのです。
誤解してはいけないのは、アルゴリズムは単に細かくする作業のことじゃないぞ!必要な細分化がされていて、全体論理が正しくなっていなければならない。
今回の記事は、少し難しい内容になってしまいましたね。
アルゴリズムは小学生には難しくても、一般のプログラミングの基本の概念であり、ロジカルな思考力を育成するには効果的なので、紹介してみました。
お子さまがプログラミングに興味を持っており、楽しんでいるようでしたら、ぜひロジカルな細分化(アルゴリズム)の学習も進めてみてください。プログラミング力が一気に高まります。
今回の記事は少しレベルが高いぞ!
今日はここまで!