Menu
Coddy logo textTech

論理演算子 パート3

CoddyのRustジャーニー「Fundamentals」セクションの一部。レッスン 23/75。

複数の条件(conditions)をチェックする際、コンピュータは最終的な結果(result)が判明した時点ですぐにチェックを停止します(これはショートサーキット評価(短絡評価)と呼ばれます)。

例えば、以下のようになります:

let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2;

ここで x0 に等しいため、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 > 0c < -5 が両方とも false であるため、b < 2d < 10 は評価されません。

challenge icon

チャレンジ

初心者

太陽光パネルのエネルギー生成に適した日かどうかを判定するプログラムを作成しましょう

以下の変数を初期化してください:

  • 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);
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Fundamentalsのすべてのレッスン

自分で練習してみよう: Rustオンラインコンパイラ