はじめに
C++のプログラムは、セミコロン(;
)で終わる文(statement)を上から下へ順番に実行していくことで成り立っています。C++には、単純な計算を行う文から、条件によって処理の流れを変える(制御する)ための制御文まで、様々な種類の文があります。
この記事では、C++プログラミングの基本となる、主要な文の種類と使い方を網羅的に解説します。
1. 式文 (Expression Statement)
値の計算、代入、関数呼び出しなど、何らかの「式 (expression
)」の最後にセミコロン ;
を付けたものです。最も基本的な文です。
#include <iostream>
int main() {
int x;
x = 10 + 20; // 代入文
std::cout << x; // 関数呼び出し文
return 0; // return文
}
2. 複合文(ブロック)
複数の文を波括弧 {}
で囲んだものです。ブロックとも呼ばれ、if
文やfor
文などの制御文と組み合わせて使われるほか、変数のスコープを限定するためにも使われます。
{ // ブロックの開始
int local_variable = 100;
// ... この変数はブロック内でのみ有効 ...
} // ブロックの終了
3. 制御文(分岐)
プログラムの実行フローを、条件に応じて分岐させます。
if
文
条件式が true
の場合に、特定の処理を実行します。else if
や else
と組み合わせることで、より複雑な条件分岐が可能です。
int score = 85;
if (score >= 90) {
std::cout << "優" << std::endl;
} else if (score >= 75) {
std::cout << "良" << std::endl;
} else {
std::cout << "可" << std::endl;
}
// 初期化を伴うif文 (C++17)
if (int result = score / 10; result >= 8) {
std::cout << "高得点です。" << std::endl;
}
switch
文
一つの変数の値に応じて、多数の選択肢に分岐する場合に使います。条件は整数型または列挙型でなければなりません。
int rank = 2;
switch (rank) {
case 1:
std::cout << "金メダル" << std::endl;
break;
case 2:
std::cout << "銀メダル" << std::endl;
break;
case 3:
std::cout << "銅メダル" << std::endl;
break;
default:
std::cout << "入賞" << std::endl;
break;
}
4. 制御文(繰り返し)
特定の処理を、条件が満たされる間、繰り返し実行します。
while
文
ループに入る前に条件式を評価します。条件が最初からfalse
の場合、一度も実行されません。
int i = 0;
while (i < 3) {
std::cout << i << " "; // -> 0 1 2
i++;
}
do-while
文
ループの処理を一度実行した後で条件式を評価します。必ず最低1回は処理が実行されます。
int j = 5;
do {
std::cout << j << " "; // -> 5
j++;
} while (j < 3);
for
文
初期化、継続条件、更新処理をまとめて記述できる、最も一般的なループ文です。
for (int k = 0; k < 3; k++) {
std::cout << k << " "; // -> 0 1 2
}
範囲for
文 (Range-based for loop)
vector
などのコンテナや配列の全要素を、先頭から順番に処理する場合に使う、非常に簡潔で安全な構文です。
#include <vector>
std::vector<int> data = {10, 20, 30};
for (int value : data) {
std::cout << value << " "; // -> 10 20 30
}
5. ジャンプ文
プログラムの実行フローを、別の場所に強制的にジャンプさせます。
break;
:switch
文や、現在実行中のループ(for
,while
など)を即座に中断し、そのブロックの外に抜けます。continue;
: ループ内の残りの処理をスキップし、次の回のループ(次のイテレーション)に直接進みます。return;
: 現在の関数を終了し、呼び出し元に制御を戻します。値を返すこともできます。
6. try-catch
ブロック
例外処理を行うための特殊な文です。try
ブロック内で発生した例外を、catch
ブロックで捕捉して対処します。
#include <stdexcept>
try {
throw std::runtime_error("エラー発生");
}
catch (const std::exception& e) {
std::cerr << "例外を捕捉: " << e.what() << std::endl;
}
まとめ
今回は、C++のプログラムを構成する基本的な「文」について、その種類と役割を網羅的に解説しました。これらの制御文を正しく組み合わせることで、単純な逐次実行だけでなく、条件に応じた分岐や、効率的な繰り返しといった、複雑なロジックを構築することができます。