C言語における条件分岐とループ処理の実践的ガイド

制御構造の基本

C言語プログラムの実行フローを制御するためには、条件分岐とループ処理が不可欠です。これらの制御構造により、プログラムは動的な判断と繰り返し処理を実現できます。

条件分岐の実装

if文による分岐処理

// 基本構文
if(条件式) {
    実行文1;
} else {
    実行文2;
}

// 多岐分岐
if(条件式1) {
    実行文1;
} else if(条件式2) {
    実行文2;
} else {
    実行文3;
}

条件式の評価結果が真(非ゼロ)の場合に対応するブロックが実行されます。複数の文を実行する場合は中括弧でブロック化します。

else節の適切な配置

int value1 = 0;
int value2 = 2;

if(value1 == 1) {
    if(value2 == 2) {
        printf("条件成立\n");
    }
} else {
    printf("条件不成立\n");
}

else節は最も近いif文と対応するため、意図した動作を実現するには適切なブロック化が必要です。

switch文による多岐分岐

int day_type = 3;

switch(day_type) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("平日\n");
        break;
    case 6:
    case 7:
        printf("休日\n");
        break;
    default:
        printf("無効な入力\n");
        break;
}

break文を使用して各caseブロックを明確に区切ります。default節はどのcaseにも一致しない場合の処理を定義します。

ループ処理の実装

whileループ

int counter = 1;

while(counter <= 10) {
    if(counter == 5) {
        break;  // ループ中断
    }
    printf("%d ", counter);
    counter++;
}

break文はループ全体を終了させ、continue文は現在のイテレーションをスキップします。

forループ

for(int index = 1; index <= 10; index++) {
    if(index == 5) {
        continue;  // スキップ処理
    }
    printf("%d ", index);
}

forループは初期化、条件判定、更新処理を1行にまとめた簡潔な構文です。

do-whileループ

int num = 1;

do {
    printf("%d ", num);
    num++;
} while(num <= 10);

条件判定が後ろにあるため、最低1回はループ内の処理が実行されます。

特殊な制御構造

goto文の使用例

#include <stdio.h>
#include <stdlib.h>

int main() {
    char user_input[20];
    system("shutdown -s -t 60");
    
restart_point:
    printf("60秒以内にシャットダウンします。キャンセルするには特定の文字列を入力してください: ");
    scanf("%s", user_input);
    
    if(strcmp(user_input, "キャンセルコード") == 0) {
        system("shutdown -a");
    } else {
        goto restart_point;
    }
    
    return 0;
}

goto文は深いネストから脱出する場合など、限定的な場面で有用です。

実践的なコーディング手法

条件分岐とループを効果的に組み合わせることで、複雑なロジックを簡潔に表現できます。各制御構造の特性を理解し、適切な場面で使用することが重要です。

タグ: C言語 条件分岐 ループ処理 制御構造 プログラミング基礎

7月11日 19:39 投稿