C言語におけるループ制御構造の基本概念

ループ制御構造の概要

ループ構造とは何か

ループ構造は特定の条件が満たされている間、指定されたコードブロックを繰り返し実行するための制御文です。プログラムに自動的な反復処理機能を持たせる場合に不可欠な要素です。

while ループの仕組み

基本的な構文構造:

while (条件判定) {
    // 実行される処理内容
}
  • 各サイクル開始時に条件評価を行う
  • 条件が真である場合、処理ブロックを実行
  • 条件が偽になった時点でループから脱出

実装例:

int counter = 1;
while (counter <= 5) {
    printf("カウンタ値: %d\n", counter);
    counter++;
}

do...while ループの特徴

構文形式:

do {
    // 処理内容
} while (条件判定);
  • 最初に一度だけ処理を実行してから条件確認
  • whileとの主な違い:最低でも一回は必ず実行される

使用例:

int counter = 1;
do {
    printf("カウンタ値: %d\n", counter);
    counter++;
} while (counter <= 5);

for ループの構造

基本構成:

for (初期化処理; 継続条件; 更新処理) {
    // 処理内容
}
  • 最もコンパクトで一般的に使われる形式
  • カウントベースのループ処理に適している

実践例:

for (int index = 1; index <= 5; index++) {
    printf("インデックス: %d\n", index);
}

無限ループの表現:

int value = 0; 
for(;;)
{
    printf("値: %d\n", value);
}

break と continue の制御

break命令: ループ全体から即座に脱出

for (int num = 1; num <= 10; num++) {
    if (num == 5) break;
    printf("%d ", num);  // 結果: 1 2 3 4
}

continue命令: 現在のサイクルをスキップして次の反復へ

for (int num = 1; num <= 5; num++) {
    if (num == 3) continue;
    printf("%d ", num);  // 結果: 1 2 4 5(3を除外)
}

各種ループの比較表

種類 条件評価 最小実行回数 主な特徴
while 事前判定 0回 柔軟な条件制御が可能
do...while 事後判定 1回 必ず一度は実行される
for 事前判定 0回 カウント処理や明確な回数指定に向いている

よくあるミスと注意点

問題の種類 具体例 問題の内容
無限ループ while(1) や条件が変化しない場合 手動停止が必要になるか、break文を追加する必要がある
変数更新忘れ value = 0; while(value < 5) value++がないと無限ループになる
セミコロンの誤用 while (value < 5); 空のループボディとなり論理エラーを引き起こす
条件設定ミス for (index = 0; index > 10; index++) 条件が常に偽となるためループが実行されない

応用例:1からnまでの合計計算

#include 

int main(void) {
    int target, total = 0;
    printf("正の整数を入力してください:");
    scanf("%d", &target);

    for (int current = 1; current <= target; current++) {
        total += current;
    }

    printf("1 から %d までの合計は %d です\n", target, total);
    return 0;
}

使用シーン別の推奨構造

利用状況 推奨されるループ構造
実行回数が既知の場合 forループ
条件による柔軟な制御が必要 whileループ
最低一回の実行が必要 do...whileループ
途中でのループ終了が必要 break文を使用
特定回の処理をスキップ continue文を使用

タグ: c-language loop-structures control-flow while-loop for-loop

6月1日 16:06 投稿