2 優先順位

まずは一般的な数式の書き方のルール、優先順位について確認しておく。 式の計算の優先順位として教科書に書いてあることは、 基本的には以下の通りである:

規則 1:

  1. カッコがあればその中をまず計算する
  2. 指数 (累乗) があればそれを計算する
  3. 積、商があればそれを計算する
  4. 最後に和、差を計算する

これによれば、 例えば $I=6\times 9-4\times(4-1)^2$ という式であれば、 まずカッコの中の $4-1$ を計算し $I=6\times 9-4\times 3^2$ となり、 次に指数 $3^2$ を計算して $I=6\times 9-4\times 9$ となり、 積 $6\times 9$$4\times 9$ を計算して $I=54-36$ となり、 最後に差を計算して $I=18$ のようにすることになる。

もちろん慣れてくると、この順序には必ずしも従わずに、 干渉し合わないところは並列に計算して、 $I = 54 - 4\times 3^2$ のようにしたり、 計算公式を利用して

\begin{displaymath}
6\times 9 - 4\times 9
= (6-4)\times 9
= 2\times 9
= 18
\end{displaymath}

のように計算したりするようになる。

つまり、人間は、コンピュータのように基本的なルール通りにしか 計算しないのではなく、 「正しいと思う方法、楽だと思う方法」で自分なりに計算するため、 そこに間違いが起こる余地が生まれる。 例えばよく見る間違いは、

などである。 優先順位である規則 1 については中学校で学ぶのであるが、 高校の教科書にはあらためて書いてはいないので、 中学校でそれをちゃんと身につけていなかった学生が 高校の数学 I の「数と式」で式の展開がたくさん出てくるときに ついて行けなくなっている可能性はあるかもしれない。

しかも、規則 1 の優先順位規則はそれだけでは完全とはいえず、 式の計算には必要だがここには含まれてはいないルールもあるし、 さらに数式の書き方には「暗黙の了解」のようなものも存在するため、 式によってはどれを先に計算するのかがわかりにくい場合もある。

例えば、

\begin{displaymath}
2^{3+4}\end{displaymath} (1)

は、2 の $(3+4)$ 乗を意味するので、 カッコは書いていないが先に計算するのは「和」の部分であり、 $2^3+4$ のように計算するのではない。また、
\begin{displaymath}
2^{3^4}\end{displaymath} (2)

にいたっては「$2^3$」の 4 乗なのか、2 の「$3^4$」乗なのか、 すなわち
\begin{displaymath}
2^{(3^4)},
\hspace{1zw}(2^3)^4
\end{displaymath}

のどちらであるのかは、規則 1 のルールからは読み取れないだろう。

また、

\begin{displaymath}
I_1 = 3\div 5\times 2,
\hspace{1zw}I_2 = 3-5+2
\end{displaymath}

のように優先順位が同じレベルの計算でカッコが書いてない場合は、 「左から順に計算する」のであるが、 規則 1 にはそれが明記されていないため 右から計算してもいいのかと間違える可能性がある。 しかしこれらは右からと左からの計算では、
\begin{eqnarray*}(3\div 5)\times 2 &=& 0.6\times 2 = 1.2\\
3\div (5\times 2) &...
...iv 10 = 0.3\\
(3-5) + 2 &=& -2 + 2 = 0\\
3-(5+2) &=& 3-7 = -4\end{eqnarray*}


のように結果に違いが出てしまう。 これらのことを理解していないためか、 カッコをおろそかにして書き忘れているような学生の答案を目にすることも多い。

(2) も、「左から」と見てしまうと、 一見 $(2^3)^4$ の方が正しいように見えてしまうかもしれないが、 (1) の例でわかるとおり、 指数部分にはカッコを書かなくてよいという 「暗黙のルール」があるため、あえてカッコを書けば実は

\begin{displaymath}
2^{(3^{(4)})}
\end{displaymath}

という構造になっていて、 よって普通は $2^{(3^4)} = 2^{81}$ と見ることになっている。 しかし、これに関する明確な説明は、 中学校や高校の教科書にはどうやら見当たらないので、 学生にうまく伝わってはいない可能性が高い。

また、規則 1 の (1) については 「再帰性」があり、 カッコの中の数式も再び規則 1 が適用される、 という構造になっている。 規則 1 のように書くと、 一見それらが単に順番に適用されるように見えてしまうかもしれないが、 実際にはそうではない。

例えば、

\begin{displaymath}
I=3\times 5^2-\{2\times 4^2-(45-4\times 3^2)\}
\end{displaymath}

の場合、 まず (1) により 中カッコ { } の中を $3\times 5^2$ よりも先に計算するが、 中カッコ { } の中の数式にも規則 1 がすべて適用され、 よって $2\times 4^2$ よりも先に小カッコ ( ) の中を計算することになる。 そして、この中では (2) により $3^2$ を一番先に計算し、 次が 4 との積で、最後が 45 との差、という順で計算されることになる。

そして、その後に小カッコの外の計算になり、また指数からの計算となる。 すなわち、以下のようになる。

\begin{eqnarray*}
% latex2html id marker 483 I
&=&
3\times 5^2-\{2\times 4^2...
...n:seki})})
\\ &=&
52\hspace{1zw}(\mbox{(\ref{rule:yusen:wa})})\end{eqnarray*}


しかし、このような再帰性は、 規則 1 だけから正しく読みとれるかと言えば、 やや疑問に感じなくもない。

ちなみに、コンピュータ言語の数式では、 式の書き方や優先順位が明確に決まっていないと コンピュータが動かないので、 むしろ教育での「数学」よりもそれらは明確、厳密に 提示されているように思う。 よって、コンピュータ言語を学ぶことで、 普段の数式のあいまいさを再認識することができる可能性もある。 しかし、通常の数式の書き方が正しくできない学生は、 当然正しく動くコンピュータプログラムを書くことはできない。

竹野茂治@新潟工科大学
2013年11月3日