Menu
CoddyTech

論理演算子 パート3

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

複数の条件を確認するとき、コンピューターは最終的な答えがわかった時点で確認を停止します(これは短絡評価と呼ばれます)。

例:

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がどちらも偽であるため、b < 2とd < 10は評価されません。

challenge icon

チャレンジ

初心者

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

次の変数を初期化します:

  • is_sunny の値を true にする
  • wind_speed の値を 5.4 にする
  • temperature の値を 23 にする
  • solar_panel_output の値を 9 にする
  • is_cloudy の値を false にする

次の条件をすべて確認する論理式を1つ作成します:

  • 晴れている
  • 風速が10未満である
  • 太陽光パネルの出力が15未満である
  • 気温が20を超えている OR 雲がない

自分で試してみよう

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!("Final result - Good day for solar energy production: {}", result);
}
quiz icon腕試し

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

基礎のすべてのレッスン

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