読者です 読者をやめる 読者になる 読者になる

2016年11月21日

日記

また最近、算数の掛け算の順序の問題が SNS で話題になってますなぁ。 小学校で掛け算を習う季節ってことでしょうかね。 今年意外だったのは、それなりのプログラマの中にも「掛け算の順序が逆だったら間違い」派がいるようだってところ。 まぢか。 まぁ、プログラミングに案外数学力は必要ないらしいけど、算数のレベルがショボくてもプログラミングはそれなりにできるってことなのかな。

掛け算の順序がどちらでもいいということを批判するのに「0から9までの数字を順に表示させるプログラム」を持ってきて、

for(i = 34; i < 44; i++) print i - 34

みたいなの書いたらおかしいと思うでしょ?みたいな話が流れてきたけど、あまりにも例がクソすぎる。 例として持ってくるなら

for(i = 10; i > 0; i--) print 10 - i

くらいの方が適切っしょ。 プログラムの動作環境によっては0との比較が少しだけパフォーマンスがいいので敢えて逆に列挙するコードにも少しは妥当性が出てくる。 もっと問題なのは、普通書くであろうコード

for(i = 0; i < 10; i++) print i

ってのが掛け算のどういう順序に対応するのか?という点。 何かあるものを1人に5個ずつ3人に与えたとき、そのものは全部でいくらあるか?という問題で、式としては「5×3」なのか「3×5」なのか? 「掛け算の順序が逆だったら間違い」派は最初の数字は1人に与える個数でないといけないと言ってるけど、それは単にその人間がそう習ったという個人的な経験に基づくローカルルールであって、掛け算の式として1人に与える個数を先に書くか後に書くかなんて算数の範囲内からは決めようがない。 というか、他国にも掛け算の順序が大事だと主張する人間はいるようだけど、その順序は日本と逆である国もあるそうで。 まぁ、英語で自然な並びは、どっちかというと人数が先だよねぇ。

掛け算の順序が大事だという主張の1つに、単に数字を適当に並べて計算するのを防いで、問題文をきちんと理解しているか見るためというのがあるようだけど、そういうのは順序を変えると計算結果が変わる引き算や割り算のところでやれば充分でしょうよ。

あと、分数の割り算を計算するとき、割る方の数の分母分子を入れ替えて掛け算にすればいいという計算方法は誰でもやってると思うけど、なぜこの計算方法でいいかというのはどう習っただろうか。 自分が小学校の時にどう習ったかは全く覚えてないけど、(個人的に)分かり易い説明としては、割り算の場合でも通分すると整数の割り算と同じ考え方で理解できるというのがある。 でも、もし教師が式の意味が大事だとか言って、分数の割り算の計算途中で通分しなさい、通分しないと×にするよ、とか言い出したら「この教師頭おかしいんじゃないの?」とか思うでしょうよ。 掛け算の順序が逆になってたら×にする、なんてそれくらいの憤りはある。

そもそも常に正しい結果を与える式は正しい式。 それが全て。

さわって学べる算数図鑑

さわって学べる算数図鑑

ツイート (ツイート数 87)