forループとwhileループの違い
コンテンツ
C ++およびJavaでは、forループ、whileループ、do-whileループの反復ステートメントにより、条件がtrueになるまで一連の命令を繰り返し実行でき、条件がfalseになるとすぐに終了します。反復ステートメントの条件は、forループのように事前定義するか、whileループのようにオープンエンドにすることができます。
C ++には、その適用性、能力、柔軟性を高めるためにいくつかの「for」ループのバリエーションが含まれています。たとえば、forループを使用すると、ループ内で複数の変数を使用して制御したり、「for」ループで収束関数を使用したりできます。逆に、whileループでは多くのバリエーションを使用できません。これは標準構文で使用する必要があります。
forループとwhileループには大きな違いがいくつかあります。これらについては、比較チャートを使用してさらに説明します。
- 比較表
- 定義
- 主な違い
- 結論
比較表
比較の根拠 | ために | ながら |
---|---|---|
宣言 | for(初期化;条件;反復){ // forループの本体 } | while(condition){ ステートメント; //ループの本体 } |
フォーマット | 初期化、条件チェック、反復ステートメントはループの先頭に書き込まれます。 | ループの先頭では、初期化と条件のチェックのみが行われます。 |
つかいます | forループは、反復回数が既にわかっている場合にのみ使用されます。 | whileループは、反復回数が正確にわからない場合にのみ使用されます。 |
調子 | 条件がforループに入れられていない場合、loopは無限に繰り返されます。 | 条件がwhileループに含まれていない場合、コンパイルエラーが発生します。 |
初期化 | forループでは、一度行われた初期化は繰り返されません。 | whileループでは、条件チェック中に初期化が行われると、ループが繰り返されるたびに初期化が行われます。 |
反復ステートメント | forループの繰り返しステートメントは先頭に記述されるため、ループ内のすべてのステートメントが実行された後にのみ実行されます。 | whileループでは、ループ内のどこにでも反復ステートメントを記述できます。 |
forループの定義
Javaには、次の2つの形式があります。 ために ループ。最初の形式は「伝統的な」形式で、2番目の形式は「for-each」形式です。
構文
従来のforループステートメントの一般的な形式。
for(初期化;条件;反復){// forループの本体}
- 初期化 – forループのループ制御変数の初期化は、ループの最初の反復中に1回だけ実行されます。ここでは、ループ制御変数が初期化されます。ループ変数がプログラムのどこでも再び使用されず、ループの制御変数としてのみ使用される場合、「for」ループで宣言および初期化されます。
- 調子 –「for」ループの条件は、ループが繰り返されるたびに実行されます。
- インクリメントとイテレーション–反復ステートメントは、ループ制御変数をインクリメントまたはデクリメントする式です。
ループが実行されるたびに、その初期化条件が最初に実行されます。その後、条件がチェックされます。条件が満たされると、ループの本体が実行され、次に反復ステートメントが実行されます。次に、条件がチェックされ、ループがさらに繰り返されるか終了するかが確認されます。
Javaでは、初期化ステートメントと反復ステートメントに複数のステートメントが含まれる場合があります。各文はコンマで区切られます。Javaではコンマが区切り文字で、C ++では「コンマ」は有効な式で使用できる演算子です。
for-eachループとその構文
「for-each」フォームは拡張されたforループです。 for-eachループの一般的な形式は次のとおりです。
for(type iter_variable:collection)statement-block
ここで、「タイプ」は反復変数のタイプを指定し、その後に反復変数が続きます。反復変数は、コレクション変数から要素を受け取ります。タイプは、コレクション変数に格納されている要素のタイプと同じでなければなりません。 forループのfor-each形式は、値へのアクセスを開始から終了まで順番に繰り返します。
例
forループで使用されるさまざまなタイプのコレクションがあります。コレクションとして配列を使用して説明します。
public class Main {public static void main(String args){int array = {10、20、30、40、50、60}; int add = 0; for(int c:array){System.out.ln( "value in c" + c); add = add + c; } System.out.ln( "配列要素の加算は" + add); }} // cの出力値c 10の値c 20の値c 30の値c 40の値c 50の値c 60の値配列要素の加算は210
ここで、「c」は反復変数です。配列内の最小のインデックスから最大のインデックスまで、一度に1つずつ配列から値を受け取ります。ここでは、配列のすべての要素が検査されるまでループが繰り返されます。 「break」を使用して、間にあるループを終了することができます。ただし、反復変数の変更は、読み取り専用変数であるため、配列には影響しません。
whileループの定義
の ながら ループは、C ++およびJavaで利用可能な最も基本的なループです。 whileループの動作は、C ++とJavaの両方で類似しています。
構文
whileループの宣言は次のとおりです
while(条件){ステートメント; //ループの本体}
whileループは最初に条件をチェックし、whileループの条件が真になるまでステートメントを実行します。 whileループの条件には、任意のブール式を使用できます。式がゼロ以外の値を返す場合、条件は真になり、式がゼロの値を返す場合、条件は偽になります。
条件が真になると、ループ自体が繰り返され、条件が偽になると、制御はループの直後のコードの次の行に渡されます。ステートメントまたは本体ループは、空のステートメント、単一のステートメント、またはステートメントのブロックのいずれかです。
例
whileループの動作について説明しましょう。以下の例では、コードは1〜10です。
//例はJavaにあります。 public class Main {public static void main(String args){int n = 0; while(n <10){n ++; System.out.ln( "n =" + n); }}} // output n = 1 n = 2 n = 3 n = 4 n = 5 n = 6 n = 7 n = 8 n = 9 n = 10
ここでは、「n」の初期値は0であり、whileループの条件が真になります。その後、コントロールはwhileループの本体に入り、whileループの本体の最初のステートメントに従って「n」の値が増分されます。 「n」の値が編集されると、制御はwhileループの条件に戻り、「n」の値は1になり、再び条件が満たされ、ループの本体が再び実行されます。これは、条件が真になるまで続き、条件が偽になるとループが終了します。
「for」ループと同様に、「while」ループは、ループの先頭、つまり条件チェック中に制御変数を初期化することもできます。
//たとえば、while((ch = getchar())!= A){System.out.ln( "入力アルファベット" + ch); }
ここでは、制御変数「ch」が初期化され、ループの状態がループの先頭で検証されます。
注意:
forループまたはwhileループの場合があります。ループの本体にステートメントが1つしかない場合、その状態では中括弧は不要です。
- に ために ループ、初期化、条件チェック、および反復変数の増分または減分は、ループの構文でのみ明示的に行われます。反対に、 ながら ループループの構文では、条件の初期化とチェックのみを行うことができます。
- ループの実行で発生しなければならない反復回数に気付いたら、次を使用します。 ために ループ。一方、ループで発生しなければならない反復回数に気付いていない場合は、次を使用します。 ながら ループ。
- 条件ステートメントの挿入に失敗した場合 ために ループ、それはループの無限の反復につながります。対照的に、条件文を ながら ループすると、コンパイルエラーが発生します。
- 構文の初期化ステートメント ために ループは、ループの開始時に一度だけ実行されます。逆に、 ながら ループは構文に初期化ステートメントを保持しており、whileループの初期化ステートメントはループが繰り返されるたびに実行されます。
- の反復ステートメント ために loopは、ループの本体が実行された後に実行されます。それどころか、反復ステートメントは、 ながら そのため、whileループの本体に反復ステートメントの実行後に実行されるステートメントが存在する可能性があります。
結論:
forループとwhileループは両方とも反復ステートメントですが、どちらにも明確な機能があります。 forループの宣言(初期化、条件、反復)はすべて、ループ本体の上部にあります。逆に、whileループでは、初期化と条件のみがループ本体の最上部にあり、繰り返しはループ本体のどこにでも記述できます。