【初心者向け】プログラミングの問題を解くのに必要なたった1つのルール

プログラミング基礎

お疲れ様です。YUmarunosukeです。

前回は、プログラミングとコンピュータを紐づけない考え方を書いてみました。

今回は、私が考え方に次いで必要と考える、
プログラミング教育で忘れてはいけないルール
について書いてみます。

この記事はこんな人に読んでもらいたい

  • 「プログラミングの問題がどうしても解けない」と思った方

この記事を読むとこんなことがわかります

  • プログラミングを解く際に必要なルールは「上から順に処理すること」

こんな困り方していませんか?

世の中には、小学生用のプログラミングドリルが販売されていますよね?

お子さんがお持ちのドリルを見て、ご自身で問題を解いてみて、
「なんで私の回答が違うの?」と悩んだことはありませんか?

今回は、例題を使って、こんな考え方をしていませんか?と問題提起をしてみたいと思います。

例題

ルール:『ロボット ← 1』と書くと、ロボットが覚える数字は 1 です。

3体のロボットに数字を覚えさせます。

  • 1番のロボット ← 9
  • 2番のロボット ← 6
  • 3番のロボット ← 8

その後、次のようにロボットへ覚えさせる処理を行いました。

  • 3番のロボット ← 1番のロボット
  • 1番のロボット ← 2番のロボット
  • 2番のロボット ← 3番のロボット

それぞれのロボットが覚えている数字がいくつでしょうか?

回答

皆さん、いかがでしょうか?解けましたか?

 

 

正解は、

  • 1番のロボット が覚えている数字 : 6
  • 2番のロボット が覚えている数字 : 9
  • 3番のロボット が覚えている数字 : 9

です。

誤答例と考え方

ちなみに、誤答例として、

  • 1番のロボット が覚えている数字 : 9
  • 2番のロボット が覚えている数字 : 9
  • 3番のロボット が覚えている数字 : 9

という回答があります。1番のロボットが覚えている数字が違いますね。

どのように考えたのか・・・それは以下のとおりです。

『全部のロボットがそれぞれ教え合っているんだよね。

 1番が3番に教えるから3番が覚えているのは 9 で・・・、

 3番が2番に教えてて、2番が1番に教えているから・・・、

 全部のロボットが 9 を覚えている?』

いかがでしょうか?こんな考え方をした方はいらっしゃいますか?

これは実例で、私の妻の回答です。
(妻は文系の学科卒で、プログラミングに触れたことはありません。)

解けない理由は『上から順に処理していない』から

誤答例に示した考え方でおかしいところは、

上から順にルールを処理していない

これに尽きます。

大人って素直じゃないのです。そして、子供より処理能力が高いのです。

これが逆にプログラミング教育の障害になりうるのですね。

今回の誤答例でいうと、

 全てのロボットがそれぞれ別のロボットに数字を伝えている

ことを、解いている途中で問題分から読み取ってしまったのですね。

すると、初めの『3番のロボット ← 1番のロボット』の結果である、

  • 1番のロボットが覚えている数字 : 9
  • 3番のロボットが覚えている数字 : 9

と、『全てのロボットがそれぞれ別のロボットに数字を伝えている』という認識を組み合わせてしまい、

 全てのロボットが覚えている数字は 9

と理解してしまった、のだと思います。(ちゃんと本人に確認しました。)

まとめ

この記事では、プログラミングに関する問題を解く際に必要なルールを1つだけ提案しました。

もちろん細かなルールはたくさんあります。

でも、今後何かの問題に躓いたときに、間違ったところを明確にするには絶対に必要なルールです。
(「デバッグ」と言われる作業です。)

賢くなってしまった大人が、素直さを忘れてしまったために陥ってしまう誤りだと思いますので、
是非、このルールだけは素直さを持って忘れずにいていただきたいな、と思います。

では、次の記事までごきげんよう。

コメント

タイトルとURLをコピーしました