[C++] 初心者向け!for文の使い方を徹底解説

C++のfor文は、特定の回数だけ繰り返し処理を行うための基本的なループ構造です。

一般的な構文はfor(初期化; 条件; 更新)で、初期化でループ変数を設定し、条件が真の間ループを続け、更新でループ変数を変更します。

例えば、for(int i = 0; i < 10; i++)は、iが0から9までの間、計10回繰り返します。

この構造を理解することで、配列の要素を順に処理したり、特定の範囲で計算を行うことが可能になります。

この記事でわかること
  • for文の基本構文と使い方
  • 配列や2次元配列の操作方法
  • ネストされたfor文の活用例
  • よくあるエラーとその対策
  • for文と他のループ構文との違い

目次から探す

for文とは?

C++におけるfor文は、特定の条件が満たされる限り、繰り返し処理を行うための制御構文です。

主に、決まった回数だけループを実行したい場合に使用されます。

for文は、初期化、条件、更新の3つの部分から構成されており、これによりループの開始時の状態、ループを続ける条件、ループの各回での変化を指定します。

例えば、0から9までの数を表示する場合、for文を使うことで簡潔に記述できます。

for文は、配列やコレクションの要素を順に処理する際にも非常に便利です。

C++のfor文は、他のプログラミング言語でも広く使われているため、習得しておくと多くの場面で役立つでしょう。

for文の基本的な使い方

初めてのfor文:0から9までの数を表示

for文を使って、0から9までの数を表示する基本的な例を見てみましょう。

以下のコードでは、初期化部分で変数iを0に設定し、条件部分でiが10未満である限りループを続け、更新部分でiを1ずつ増加させています。

#include <iostream>
using namespace std;
int main() {
    for (int i = 0; i < 10; i++) {
        cout << i << endl; // 0から9までの数を表示
    }
    return 0;
}
0
1
2
3
4
5
6
7
8
9

for文を使った配列の操作

for文は配列の要素を操作する際にも非常に便利です。

以下の例では、整数型の配列を作成し、for文を使ってその要素を表示します。

#include <iostream>
using namespace std;
int main() {
    int numbers[] = {10, 20, 30, 40, 50};
    int size = sizeof(numbers) / sizeof(numbers[0]); // 配列のサイズを計算
    for (int i = 0; i < size; i++) {
        cout << numbers[i] << endl; // 配列の要素を表示
    }
    return 0;
}
10
20
30
40
50

for文と範囲ベースfor文の違い

C++11以降、範囲ベースのfor文が導入され、配列やコレクションの要素を簡単にループ処理できるようになりました。

通常のfor文と範囲ベースのfor文の違いを以下の表にまとめます。

スクロールできます
特徴通常のfor文範囲ベースfor文
初期化、条件、更新必要不要
書き方for (int i = 0; i < size; i++)for (auto& element : array)
可読性やや低い高い
使用例配列のインデックスを使う場合コレクション全体を処理する場合

範囲ベースのfor文を使うことで、コードがシンプルになり、可読性が向上します。

for文の応用例

ネストされたfor文

ネストされたfor文は、ループの中に別のfor文を含む構造です。

これにより、複雑な繰り返し処理が可能になります。

以下の例では、2つのループを使って、1から3までの数とその倍数を表示します。

#include <iostream>
using namespace std;
int main() {
    for (int i = 1; i <= 3; i++) {
        for (int j = 1; j <= 3; j++) {
            cout << i * j << " "; // iとjの積を表示
        }
        cout << endl; // 各iのループが終わったら改行
    }
    return 0;
}
1 2 3 
2 4 6 
3 6 9

for文を使った2次元配列の操作

2次元配列を操作する際にも、ネストされたfor文が役立ちます。

以下の例では、2次元配列を作成し、各要素を表示します。

#include <iostream>
using namespace std;
int main() {
    int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 2行3列の配列
    for (int i = 0; i < 2; i++) { // 行のループ
        for (int j = 0; j < 3; j++) { // 列のループ
            cout << matrix[i][j] << " "; // 要素を表示
        }
        cout << endl; // 各行のループが終わったら改行
    }
    return 0;
}
1 2 3 
4 5 6

for文と条件分岐の組み合わせ

for文と条件分岐を組み合わせることで、特定の条件に基づいて処理を行うことができます。

以下の例では、1から10までの数の中で偶数だけを表示します。

#include <iostream>
using namespace std;
int main() {
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) { // 偶数の条件
            cout << i << " "; // 偶数を表示
        }
    }
    cout << endl; // 最後に改行
    return 0;
}
2 4 6 8 10

このように、for文と条件分岐を組み合わせることで、柔軟な処理が可能になります。

よくあるエラーとその対処法

無限ループの原因と対策

無限ループは、for文の条件が常に真であるために発生します。

例えば、以下のコードでは、iが常に0のままなので、ループが終了しません。

for (int i = 0; i < 10; ) { // 更新部分が欠けている
    cout << i << endl;
}

対策: 更新部分を正しく記述することが重要です。

上記の例では、i++を追加することで、iが増加し、ループが終了します。

インデックスの範囲外アクセス

配列やベクターの要素にアクセスする際、インデックスが範囲外になると、未定義の動作を引き起こす可能性があります。

例えば、以下のコードでは、配列のサイズが3であるにもかかわらず、4番目の要素にアクセスしようとしています。

int arr[3] = {1, 2, 3};
cout << arr[3]; // 範囲外アクセス

対策: 配列のサイズを確認し、インデックスが有効な範囲内であることを常に確認することが重要です。

条件文を使って、インデックスが範囲内であるかをチェックすることが推奨されます。

初期化、条件、更新のミス

for文の初期化、条件、更新のいずれかに誤りがあると、意図しない動作を引き起こすことがあります。

例えば、以下のコードでは、初期化が間違っており、iが1から始まっています。

for (int i = 1; i < 10; i++) { // 初期化が1
    cout << i << endl; // 1から9まで表示
}

対策: 初期化、条件、更新の各部分を慎重に確認し、意図した通りに設定されているかを確認することが重要です。

特に、初期化が正しい値から始まっているか、条件が正しく設定されているかを確認しましょう。

よくある質問

for文とwhile文の違いは何ですか?

for文とwhile文は、どちらも繰り返し処理を行うための構文ですが、主に使い方に違いがあります。

for文は、初期化、条件、更新が一つの行にまとめられているため、ループの回数が決まっている場合に適しています。

一方、while文は、条件が真である限りループを続けるため、ループの回数が不明な場合に使用されます。

for文の中で変数を宣言することはできますか?

はい、for文の初期化部分で変数を宣言することができます。

例えば、for (int i = 0; i < 10; i++)のように、ifor文の中で宣言することが可能です。

この場合、ifor文のスコープ内でのみ有効です。

ループが終了すると、iは使用できなくなります。

for文を使って逆順にループする方法は?

for文を使って逆順にループするには、初期化部分で最大値を設定し、条件部分で最小値に達するまでループを続け、更新部分で減少させます。

例えば、for (int i = 10; i > 0; i--)とすると、10から1までにかけてループします。

まとめ

この記事では、C++のfor文の基本的な使い方から応用例、よくあるエラーとその対処法について詳しく解説しました。

for文は、繰り返し処理を行うための強力なツールであり、正しく使うことでプログラムの効率を大幅に向上させることができます。

ぜひ、実際のプログラミングにfor文を活用し、さまざまな問題を解決してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

他のコンテンツも見る

関連カテゴリーから探す

  • 条件分岐 (11)
  • 繰り返し処理 (11)
  • URLをコピーしました!
目次から探す