論理演算子 パート3
CoddyのRustジャーニー「Fundamentals」セクションの一部。レッスン 23/75。
複数の条件(conditions)をチェックする際、コンピュータは最終的な結果(result)が判明した時点ですぐにチェックを停止します(これはショートサーキット評価(短絡評価)と呼ばれます)。
例えば、以下のようになります:
let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2;ここで x は 0 に等しいため、y / x > 2 は評価されません。もし順序を逆にした場合は次のようになります:
let result: bool = y / x > 2 && x != 0;これはエラーを引き起こします。なぜなら y が0で除算されることになりますが、これは数学的に不正だからです。
この手法は論理式の評価を最適化するために使用されます。例:
let a: i32 = 0;
let b: i32 = 2;
let c: i32 = 3;
let d: i32 = 5;
let result: bool = (a > 0 && b < 2) || (c < -5 && d < 10);この例では、a > 0 と c < -5 が両方とも false であるため、b < 2 と d < 10 は評価されません。
チャレンジ
初心者太陽光パネルのエネルギー生成に適した日かどうかを判定するプログラムを作成しましょう
以下の変数を初期化してください:
is_sunny(値:true)wind_speed(値:5.4)temperature(値:23)solar_panel_output(値:9)is_cloudy(値:false)
これらすべての条件をチェックする1つの論理式を作成してください:
- 晴れている(sunny)
- 風速が10未満である
- 太陽光パネルの出力が15未満である
- 気温が20より高い、または雲がない
自分で試してみよう
fn main() {
// 変数を初期化する
// 以下のプレースホルダー値をタスクの値に置き換えてください
let is_sunny: bool = false;
let wind_speed: f64 = 99.0;
let temperature: i32 = 0;
let solar_panel_output: i32 = 99;
let is_cloudy: bool = true;
// 完全な論理式
// 以下のプレースホルダーを完全な条件に置き換えてください
let result: bool = false;
// 以下の行を削除しないでください
println!("Checking conditions for solar energy production...");
println!("1. Is it sunny? {}", is_sunny);
println!("2. Is wind speed safe? {}", (wind_speed < 10.0));
println!("3. Can panels produce more? {}", (solar_panel_output < 15));
println!("4. Is temperature good OR no clouds? {}", (temperature > 20 || !is_cloudy));
println!("\\nFinal result - Good day for solar energy production: {}", result);
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Fundamentalsのすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ