第5章 制御構造

この章では、Rustの条件分岐・ループなど、プログラムの流れを制御する基本構文について学びます。これらの構文を理解することで、より柔軟で複雑なロジックを実現できるようになります。


if文による条件分岐

Rustのif文は、他の多くの言語と似ていますが、条件は必ずbool型である必要があります。

fn main() {
    let score = 80;

    if score >= 90 {
        println!("優秀です!");
    } else if score >= 70 {
        println!("合格です。");
    } else {
        println!("不合格です。");
    }
}
ifは式としても使える

Rustではifは値を返す式としても利用可能です。

fn main() {
    let condition = true;
    let result = if condition { "Yes" } else { "No" };
    println!("結果: {}", result);
}


ループ構文

loop(無限ループ)
fn main() {
    let mut count = 0;

    loop {
        println!("カウント: {}", count);
        count += 1;

        if count >= 5 {
            break; // ループを抜ける
        }
    }
}
whileループ
fn main() {
    let mut number = 3;

    while number > 0 {
        println!("{}...", number);
        number -= 1;
    }
    println!("発射!");
}
forループ
fn main() {
    let array = [10, 20, 30];

    for value in array.iter() {
        println!("値: {}", value);
    }
}

または数値レンジで

fn main() {
    // 5を含む
    for i in 1..=5 {
        println!("{}回目", i);
    }

    // 5を含まない
    for j in 1..5 {
        println!("{}回目", j);
    }
}
breakとcontinue

ループ内でbreakやcontinueを使うことで、より細かな制御が可能です。

fn main() {
    for i in 1..=10 {
        if i % 2 == 0 {
            continue; // 偶数はスキップ
        }
        if i == 7 {
            break; // 7で終了
        }
        println!("奇数: {}", i);
    }
}
ラベル付きループ

ネストされたループで外側のループを制御したい場合は、ラベルを使うことができます。

fn main() {
    'outer: for i in 1..=3 {
        for j in 1..=3 {
            if i == 2 && j == 2 {
                break 'outer; // 外側ループを抜ける
            }
            println!("i = {}, j = {}", i, j);
        }
    }
}


練習問題1.

数値を1〜100まで表示し、3の倍数なら「Fizz」、5の倍数なら「Buzz」、両方の倍数なら「FizzBuzz」と表示するプログラムを書いてください。


練習問題2.

配列をforループで処理し、すべての要素の合計を求めてください。


練習問題3.

loop を使って、ユーザーが「終了」と入力するまで標準入力から文字列を読み取り、すべて表示し続けるプログラムを書いてください。


最終更新日:2026年01月07日 10時53分08秒