はじめに
本記事では、プログラミング言語の一つであるC言語におけるcontinue文の詳細な使い方から注意点、カスタマイズ方法までを一挙に解説します。
また、具体的なサンプルコードを交えて初心者でも理解しやすい形でご紹介します。
●C言語とは
C言語は、1970年代に開発されたプログラミング言語で、OSや組み込みシステムなど、様々なソフトウェア開発に幅広く使用されています。
そのシンプルで効率的な特性から、他の多くの言語の設計に影響を与え、現在でもその学習は必須とされています。
●continue文とは
continue文はC言語における制御文の一つで、これが登場するとその後の処理をスキップし、ループの最初に戻る働きを持っています。
ループ処理の中で特定の条件の時だけ処理をスキップしたい、という場合に非常に有用なツールとなります。
○continue文の基本的な使い方
continue文は、基本的にはwhile文やfor文といったループ文の内部で使用されます。
次の基本形を覚えておきましょう。
for(int i = 0; i < 10; i++) {
if(i % 2 == 0) {
continue;
}
printf("%d\n", i);
}
このコードでは、for文を使って0から9までの数を出力しています。
ただし、continue文によりiが偶数の時はprintf文をスキップし、次のループに進む動作をします。
●continue文の詳細な使い方
ここで、continue文のもう少し詳細な使い方を解説します。
○サンプルコード1:基本的な使い方
前述の基本的な使い方を紹介します。
for(int i = 0; i < 10; i++) {
if(i % 3 == 0) {
continue;
}
printf("%d\n", i);
}
このコードでは、for文を使って0から9までの数を出力しています。
ただし、continue文によりiが3で割り切れる数(0、3、6、9)の時はprintf文をスキップし、次のループに進む動作をします。
このため、出力結果は1, 2, 4, 5, 7, 8となります。
○サンプルコード2:ループ内での使用例
次に、ループ内でcontinue文を用いた例を見てみましょう。
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
if(j == 2) {
continue;
}
printf("i:%d, j:%d\n", i, j);
}
}
このコードでは、二重のforループを行っており、内側のループ(jループ)でjが2の時にcontinue文が働きます。
そのため、「j:2」という出力だけがスキップされ、他の値については正常に出力されます。
○サンプルコード3:複数のループでの使用例
さらに、複数のループでcontinue文を用いた例を見てみましょう。
for(int i = 0; i < 5; i++) {
if(i == 2) {
continue;
}
for(int j = 0; j < 5; j++) {
if(j == 2) {
continue;
}
printf("i:%d, j:%d\n", i, j);
}
}
このコードでは、外側のループ(iループ)でも内側のループ(jループ)でもそれぞれの値が2のときにcontinue文が働きます。
その結果、「i:2」および「j:2」の出力がスキップされます。
●continue文の注意点
continue文の使用にあたり、いくつか注意すべき点があります。
一般的に、continue文はループの途中であっても処理をスキップするため、制御構造が複雑になり、プログラムの流れを読み解くことが難しくなる可能性があります。
そのため、必要以上にcontinue文を使うことは避け、可能な限りシンプルな構造を保つことが推奨されます。
○サンプルコード4:誤った使用例とその対処法
次に、continue文を誤って使用した例とその対処法を紹介します。
#include<stdio.h>
int main() {
int i = 0;
while(i < 10) {
i++;
if(i % 2 == 0) {
continue;
}
printf("%d\n", i);
i++;
}
return 0;
}
このコードでは、iが偶数の時にcontinue文が働き、その後のprintf文と「i++」をスキップします。
しかし、このままでは「i++」がスキップされるため、iの値が更新されず、無限ループに陥ってしまいます。
これを防ぐためには、continue文が実行される前にiの値を更新することで、正しくループを終了させることができます。
#include<stdio.h>
int main() {
int i = 0;
while(i < 10) {
i++;
if(i % 2 == 0) {
continue;
}
printf("%d\n", i);
}
return 0;
}
この修正後のコードでは、iが偶数の時にprintf文をスキップするだけで、「i++」は必ず実行されるため、正しくループが終了します。
●continue文のカスタマイズ方法
次に、continue文をカスタマイズして使用する方法を見てみましょう。
○サンプルコード5:ループと条件文を組み合わせたカスタマイズ例
for(int i = 0; i < 10; i++) {
if(i < 5) {
continue;
}
printf("%d\n", i);
}
このコードでは、for文を使って0から9までの数を出力しています。
ただし、continue文によりiが5未満のときはprintf文をスキップし、次のループに進む動作をします。
このため、出力結果は5, 6, 7, 8, 9となります。
このように、continue文とif文を組み合わせることで、出力を制御することができます。
●continue文の応用例
最後に、continue文の応用例を見てみましょう。
○サンプルコード6:効率的なデータ処理のためのcontinue文の使用例
int data[10] = {1, -1, 2, -2, 3, -3, 4, -4, 5, -5};
for(int i = 0; i < 10; i++) {
if(data[i] < 0) {
continue;
}
printf("%d\n", data[i]);
}
このコードでは、配列dataの要素をfor文を用いて一つずつ取り出しています。
continue文により要素が負の数のときはprintf文をスキップし、次のループに進む動作をします。
このため、出力結果は1, 2, 3, 4, 5となります。
このように、continue文を用いることで不要なデータを無視し、必要なデータのみを処理することができます。
○サンプルコード7:高度なプログラミングテクニックとしてのcontinue文の使用例
for(int i = 0; i < 100; i++) {
if(i % 2 == 0 || i % 3 == 0) {
continue;
}
printf("%d\n", i);
}
このコードでは、for文を用いて0から99までの数を取り出しています。
ただし、iが2または3で割り切れる数の時にprintf文をスキップし、次のループに進む動作をします。
その結果、2または3で割り切れない数だけが出力されます。
まとめ
以上がC言語のcontinue文の詳細な解説でした。
これらの例を通じて、continue文がどのように動作し、どのような場面で有効に活用できるかを理解できたでしょうか。
ただし、continue文は制御フローを複雑にする可能性があるため、適切な場面で使うことが重要です。
ぜひ、この知識を活かして、効率的なコードを書くことに挑戦してみてください。