短絡評価とは
たんらくひょうか
論理演算の and(かつ)や or(または)で、左側の値だけで結果が決まるときに右側を評価しない評価の方法。and では左側が偽なら、or では左側が真なら、右側を評価しない。配列の範囲の確認を左側に書いて、範囲外の参照を防ぐのによく使う。
「短絡評価」は、2分野の3問の練習問題に出てきます(プログラミングの基礎(擬似言語のトレース), C言語の基礎など)。
この用語の分野: プログラミングの基礎(擬似言語のトレース)
たんらくひょうか
論理演算の and(かつ)や or(または)で、左側の値だけで結果が決まるときに右側を評価しない評価の方法。and では左側が偽なら、or では左側が真なら、右側を評価しない。配列の範囲の確認を左側に書いて、範囲外の参照を防ぐのによく使う。
「短絡評価」は、2分野の3問の練習問題に出てきます(プログラミングの基礎(擬似言語のトレース), C言語の基礎など)。
この用語の分野: プログラミングの基礎(擬似言語のトレース)
右側の式に関数の呼出しや配列の参照が含まれるとき、短絡評価かどうかで結果が変わります。「i ≦ n and a[i] ≠ x」は、i が n を超えると左側が偽になるので、範囲外の a[i] を参照しません。左右を入れ替えると、先に範囲外を参照してしまいます。右側で呼ぶ関数が変数を書き換える場合は、関数が呼ばれる回数も変わります。
C、Java、Python などの多くの言語では、論理演算の && と ||(Python では and と or)は短絡評価です。C や Java の & と | は、両側を必ず評価します。擬似言語の問題で短絡評価が結果に関わるときは、問題文の説明に従います。
短絡評価を使うと、「配列の範囲内で、かつその要素が条件を満たす」のように、前の条件が成り立つときだけ意味を持つ条件を1つの式で書けます。時間のかかる判定を右側に置けば、左側で結果が決まったときに省けます。一方、必ず実行してほしい処理を右側の関数に入れると、呼ばれないことがあるので注意します。
C、Java、Python などでは、短絡評価はコンパイラの最適化ではなく、言語の決まりとして定められています。そのため、右側が評価されないことを前提にしたプログラムを書いても、正しく動くことが保証されます。
ド・モルガンの法則により、論理値としては同じです。not (i > n or a[i] = x) と i ≦ n and a[i] ≠ x は、どちらも i の条件だけで結果が決まるときに a[i] を評価しません。
短絡評価に頼るときは、範囲の確認を左側に書きます。
要素数 n の配列 a から値 x を探し、見つかった要素番号を i に求める次のプログラムがある。配列の要素番号は1…&& は左側が偽なら、|| は左側が真なら、右側を評価しません(短絡評価)。
&& と || の右側に b++ を書いた上のコードを実行したときの出力として、正しいものはどれか。Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。