C言語のきほん|C言語の制御文

分岐・ループ・抜け道まで自由自在!C言語の制御文を覚えると、アルゴリズムが“動くプログラム”になるよ。

アルゴリズムは「順次・選択・繰り返し」の3つの基本構造で作れる、という話をしました。
C言語では、この3つの構造を実際のコードとして表現するために 制御文 が用意されています。

制御文は、プログラムの流れ(どこを実行して、どこで分岐して、いつ繰り返して、いつ抜けるか)をコントロールするための道具です。
これが使えるようになると、単に計算するだけじゃなく、「状況に応じて賢く動く」プログラムが書けるようになります。

C言語の制御文は大きく3カテゴリ

文書にある分類を、分かりやすく表にまとめます。

分類制御文役割
選択文if, switch条件で分岐する
繰り返し文for, while, do-while同じ処理を繰り返す
ジャンプ文break, continue, goto, return流れを途中で変える

ここから先の章(if や for の章)で詳しく学びますが、まずは「どんな道具があるか」と「何に使うか」を掴むのが目的です。

選択文:条件で分岐する(選択構造)

if 文:2方向に分岐

if は「条件が真ならA、そうでなければB」の形で使います。

  • 例:点数が合格なら合格メッセージ、そうでなければ再挑戦メッセージ

switch 文:多方向に分岐

switch は「値に応じて分岐先がたくさんある」場合に向いています。

  • 例:メニュー番号 1〜4 で処理を切り替える

繰り返し文:ループで反復する(繰り返し構造)

for 文:指定回数に強い

  • 例:10回表示する、配列の要素を先頭から全部処理する

while 文:条件が真の間ずっと(前判定)

  • 例:入力が正しい間は読み続ける

do-while 文:最低1回は必ず実行(後判定)

  • 例:メニューを最低1回表示して、続けるかどうかを最後に聞く

ジャンプ文:流れを途中で変える

ジャンプ文は「今いる場所から、流れを変える」道具です。

制御文よくある用途イメージ
breakループやswitchを抜ける強制終了
continue今回の残りを飛ばす次の周回へ
goto任意の位置へ飛ぶ最終手段(基本は控えめ)
return関数を終了して戻る関数を終える

goto は書けるけど、読みにくくなりやすいので学習段階では「存在を知る」くらいで十分です。

制御文を軽く体験するシンプル例

「選択+繰り返し+ジャンプ」を一度に味見できる短いサンプルプログラム例です。

例:数を何回か入力して、0 が来たら終了。負の数は無視して次へ。正の数だけ合計する。

  • while で繰り返し
  • if で分岐
  • break で終了
  • continue でスキップ

ファイル名:7_5_1.c

#include <stdio.h>

int main(void)
{
    int x;
    int sum = 0;

    printf("数値を入力してください(0で終了)\n");
    printf("負の値は合計に入れません。\n");

    while (1) {
        printf("入力 > ");
        scanf("%d", &x);

        if (x == 0) {
            break;  /* 0が来たらループを抜ける */
        }

        if (x < 0) {
            continue;  /* 負の値は今回の処理を飛ばして次へ */
        }

        sum += x;  /* 正の値だけ合計する */
    }

    printf("正の値の合計は%dです。\n", sum);
    printf("メッセージ: 制御文があると流れを柔軟に作れるよ。\n");
    return 0;
}

この短いプログラムの中だけでも、制御文の役割が自然に見えてきます。

確認問題:7章チェック

正しいものには○、間違っているものには×を付けてください。

① アルゴリズムとは、問題を解決するための手順の集合である。
② C言語でソートを実装する場合、必ず構造体を使わなければならない。
③ バブルソートは、隣り合う要素を比較して必要なら交換する方法である。
④ 流れ図で判断を表す記号は、ひし形である。
⑤ 基本制御構造は、順次・選択・繰り返しの3つで構成される。
⑥ 選択構造は、条件の結果によって処理の流れを分ける。
⑦ while 文は、条件が真の間だけ繰り返しを行う前判定の繰り返し文である。
⑧ 繰り返し構造を実現する制御文は for と while の2つだけである。
⑨ 構造体は、異なる種類のデータをひとまとめにして扱える。
⑩ C言語はスタックとキューを言語仕様として標準で用意している。

解答と解説

① ○
アルゴリズムは「解くための手順」です。コードの前の設計図みたいなものですね。

② ×
ソートは配列だけでも実装できます。構造体が必要なのは「複数の情報を1セットで並べ替える」ような場合です。

③ ○
バブルソートは隣同士を比べて交換しながら並べます。

④ ○
判断はひし形、開始・終了は楕円(端子)です。

⑤ ○
順次・選択・繰り返しが基本制御構造です。

⑥ ○
条件が真か偽かで処理が分岐するのが選択構造です。

⑦ ○
while は前判定です。条件が最初から偽なら1回も実行されません。

⑧ ×
do-while 文もあります。後判定で、少なくとも1回は実行されます。

⑨ ○
構造体は、名前・年齢・身長など、異なる型をまとめるための仕組みです。

⑩ ×
C言語はスタックやキューを標準で直接サポートしません。配列や構造体などで自分で実装します。