ルー

ループ の C++

12個の演習

ループについて

ループは、ある処理を繰り返し実行するために使います。 もっともよく使われるのは、while loop(いつ終わるか決まっていない繰り返し)とfor loop(回数を決めて行う繰り返し)の2つです。 このほかにもfor eachループというものがあり、これについては後の概念で扱います。

基本的な構文

for loopは、ヘッダーと、波括弧で囲まれたループの本体を含むコードブロックでできています。 ヘッダーは、セミコロン;で区切られた3つの要素から成ります。init-statement、condition、そしてもう1つの式です。 これらの要素は、どれも空にすることができます。

for (init-statement; condition; expression) {
  some_statement;
}
  • initの部分は、ループが始まる前に一度だけ実行されるコードです。
  • conditionの部分は、真偽値として評価され、ループをいつ止めるかを制御する式でなければなりません。 この条件がtrueと評価されるあいだは、ループ内のコードが実行されます。 この式がfalseと評価されると、その時点でループの繰り返しは実行されなくなります。
  • expressionの部分は、繰り返しの各回の最後に実行されるコードです。

while loopは、条件がtrueであるかぎり本体を実行します。 次のコードは、forループをwhileループに書き換える方法を示しています。

init-statement;
while(condition) {
    some_statement;
    expression;
}

補足:インクリメントとデクリメント

ループを扱っていると、カウンター変数に1を足したり、1を引いたりすることがよくあります。 これはあまりに頻繁に行われるため、専用の演算子++と--が用意されています。

これらには前置形と後置形があります。 前置形は文の中で使う前に変数を変更し、後置形は使ったあとに変更します。 たいていの場合は、前置形を使うとよいでしょう。

int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3

forループの例

initの部分はふつうカウンター変数を用意し、conditionはループを続けるか止めるかを判定し、postの部分はふつう繰り返しのたびにカウンターをインクリメントします。

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

このループは、1から9までの数値を合計します(9も含みます)。

breakとcontinue

ループの本体では、breakキーワードを使ってループの実行を完全に止めることができます。

int sum{2};
while(true) {
    sum *= 2;
    if (sum > 1000)
        break;
}
// sum is now 1024

これに対して、continueキーワードは現在の繰り返しの実行だけを止め、次の繰り返しへ進みます。

int equal_sum{0};
for (int i{1}; i < 7; ++i) {
  if  (n%2 == 1) {
    continue;
  }
  equal_sum += i;
}
// equal_sum is now 12

補足:breakとcontinueの使用を最小限にするか、まったく避けたほうが、ループのロジックはたいてい理解しやすくなります。

GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

ループを学習する

練習はロックされています

ループを練習するには、あと4個の演習のロックを解除してください