
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言語はスタックやキューを標準で直接サポートしません。配列や構造体などで自分で実装します。
