ループ文の概要
C言語におけるループ文の役割:
C言語におけるループ文の役割は、プログラムでコードの一部を繰り返し実行することで、データの一括処理や繰り返し計算などの操作を実現することです。C 言語には、for ループ、while ループ、do-while ループなどのさまざまなループ ステートメントが用意されており、各ループ ステートメントには固有の使用シナリオと文法的特徴があります。ループ文を使用することで、繰り返しの処理をより簡潔かつ効率的に実行できるようになり、プログラムの可読性や保守性が向上します。
ループ文の分類
for ループ
for ループは通常、配列を反復処理したり、値に対して特定の回数の操作を実行したりするために使用されます。for ループの構文は次のとおりです。
for (初始化表达式; 条件表达式; 更新表达式)
{
// 循环体
}
このうち、初期化式はループ変数の初期値を設定するために使用され、条件式はループの実行を継続するかどうかを決定するために使用され、更新式はループ変数の値を更新するために使用されます。
たとえば、次のコードは for ループを使用して 1 から 10 までの数値を出力します。
for (int i = 1; i <= 10; i++)
{
printf("%d\n", i);
}
while ループ
while ループは、特定の条件が true である間、コードのブロックを繰り返し実行するために使用されます。while ループの構文は次のとおりです。
while (条件表达式)
{
// 循环体
}
このうち、条件式はループの実行を継続するかどうかを判断するために使用されます。
たとえば、次のコードは while ループを使用して 1 から 10 までの数値を出力します。
int i = 1;
while (i <= 10)
{
printf("%d\n", i);
i++;
}
do-while ループ
do-while ループは while ループに似ていますが、コード ブロックの実行後に条件が評価されるため、コード ブロックは少なくとも 1 回実行されます。do-while ループの構文は次のとおりです。
do
{
// 循环体
} while (条件表达式);
このうち、条件式はループの実行を継続するかどうかを判断するために使用されます。
たとえば、次のコードは do-while ループを使用して 1 から 10 までの数値を出力します。
int i = 1;
do
{
printf("%d\n", i);
i++;
} while (i <= 10);
while ループと for ループの比較
for と while はどちらも、ループの実装過程で初期化、判定、調整の 3 つの部分から構成されますが、for ループの 3 つの部分が非常に集中しているため、コードのメンテナンスが容易になります。 while ループの部分は比較的分散しているため、for ループの方が形式が優れています。
ブレークステートメントと継続ステートメント
ブレークステートメント
- Break ステートメントは、現在のループ (または switch ステートメント) から抜け出し、ループ (または switch) の後でコードの実行を継続するために使用されます。
- Break ステートメントを使用してループを抜け出すと、ループ後のすべてのコードがスキップされ、プログラムは次のステートメントを直接実行します。
- たとえば、次のコードのループは 1 回だけ実行されます。これは、2 回目の実行中に Break ステートメントが発生し、ループが次から抜け出すためです。
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break;
}
printf("%d\n", i);
}
出力は次のとおりです。
継続ステートメント
- continue ステートメントは、現在のループ内の残りのコードをスキップして次のループに入るために使用されます。
- continue ステートメントを使用してループ内の反復をスキップすると、その反復内のすべてのコードがスキップされ、次の反復が直接実行されます。
- たとえば、次のコードのループは 0 から 9 までを出力しますが、i が 5 に等しい場合、Continue ステートメントは残りのコードをスキップして次のループを直接実行するため、0 ~ 4 と 6 ~ 9 の数字のみが出力されます。 . :
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d\n", i);
}
出力結果は以下の通りです。
ループの入れ子
実際の問題を解決するプロセスでは、問題をより適切に解決するためにループがネストされることがよくあります。これをループのネストと呼びます。
例:
int main()
{
for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%d*%d=%d\t", j, i, i * j);
}
printf("\n");
}
return 0;
}
上記のコードは、1 から 10 までの九九を出力するものです。出力結果は次のとおりです。
この例では、外側のループは行数を制御し、内側のループは列数を制御します。内側のループは実行されるたびに乗算式を出力し、最後に外側のループは改行文字を出力して各行の乗算式を個別に表示します。