かけ算の順序の昔話

算数教育について気楽に書いていきます。

(9+3)×4÷2か,((9+3)×4)÷2か,(9+3)×(4÷2)か

  • 青山尚司: 発する言葉を少なくする, 算数授業研究, 東洋館出版社, pp.56-57 (2024).

 カラーの目次と,ページ番号その他が合っていません。上記の見出しとページ番号は本文の記載に基づきます。
 内容は,第5学年,「台形の面積の求め方を考えよう」という授業です。見開きの左の右カラムには,(A)から(D)まで,方眼紙上に台形や補助線が描かれています。図を載せるかわりに,対象となる台形の形状を書いておくと,(0,0),(9,0),(5,4),(2,4)の4点を結んで得られる図形です。
 (A)から(D)までの図示に対応する式は,見開きの右(p.57)の左カラムで,ゴシック体になっていました。3番目だけ句点(。)なしなのは原文ママです。

(A) 9×4÷2+3×4÷2
 =(9+3)×4÷2
 2つの三角形の求積式をまとめている。
(B) (9+3)÷2×4
 台形の幅を均して6cmにしている。
(C) (9+3)×4÷2
 半分の高さをかけている
(D) (9+3)×4÷2
 同じ台形2つ分の面積を2等分する。

 明朝体に戻って,「(C)や(D)は,そのままでも意味が通じやすい。」と続くのですが,同一の式に対し「半分の高さをかけている」「同じ台形2つ分の面積を2等分する」と,異なる解釈を示しているのは,驚かずにいられません。
 (C)について,「半分の高さをかけている」のをより明確にするには,式を「(9+3)×(4÷2)」とすることです。
 同様に,(D)については「((9+3)×4)÷2」と表したいところです。とはいえカッコの中にカッコが入る式は,小学校で見かけません。「{(9+3)×4}÷2」と書けばいいのかもしれませんが,このようにカッコの記号を変えるのは,面倒ですし,大学などでの数学や,プログラミングでは,()と{}は区別され,混同するわけにもいきません。

 とはいえ小学校のプログラミングで,「((9+3)×4)÷2」を表すことができるのかどうか,気になってきました。そこでブロックエディターで,試してみました。
 最も有名なのは,Scratchです。ブロックを組み合わせて「旗が押されたとき」「(9+3)×4÷2と言う」を作り,実行すると「24」と言ってくれました。しかし,この画面では,プログラミング言語による編集ができません。
 Scratchと同様にブラウザで実行でき,ブロックを組み合わせるだけでなくJavaScriptPythonによる編集も可能なのは,micro:bit ブロックエディターです。「最初から」「文字列を表示」に「(9+3)×4÷2」の式を書いて,動作確認を行い,JavaScriptに切り替えると「basic.showString("" + ((9 + 3) * 4 / 2))」になりました。
 このコードを,「basic.showString("" + {(9 + 3) * 4} / 2)」あるいは「basic.showString("" + [(9 + 3) * 4] / 2)」に変更すると,「問題」が表示されます。この状態で,ブロックに戻ろうとすると,表示が出て,「変更を破棄してブロックを表示する」か「JavaScriptの編集を続ける」かを選ぶことに迫られます。文法的にエラーになる式は,ブロックエディター上で表示されないよう,配慮されていました。
 「basic.showString("" + (((9 + 3) * 4) / 2)」に編集するとエラーは出なくなり,ブロックに戻って実行できましたが,JavaScriptに切り替えると,コードが「basic.showString("" + ((9 + 3) * 4 / 2))」に戻りました。「((9+3)×4)÷2」は,「(9+3)×4÷2」に簡略化されました。
 「最初から」「文字列を表示」「(9+3)×(4÷2)」に対応する,JavaScriptのコードは,「basic.showString("" + ((9 + 3) * (4 / 2)))」です。これは問題なく,ブロックに戻って,「(9+3)×4÷2」の式との違いを確認することもできました。