forとwhileループの違い
C++とJavaでは、forループ、whileループ、do-whileループの反復ステートメントにより、条件がtrueになり、条件がfalseになるとすぐに終了するまで、一連の命令を繰り返し実行することができます。 反復文の条件は、forループのように事前定義することも、whileループのようにオープンエンドすることもできます。
C++にはいくつかの’for’ループのバリエーションがあり、その適用性、パワー、柔軟性を高めることが暗示されています。 たとえば、forループを使用すると、ループ内で複数の変数を使用して制御し、’for’ループで収束関数を使用することができます。 逆に、whileループでは、標準構文で使用する必要がある多くのバリエーションを使用することはできません。
forループとwhileループの間にはいくつかの大きな違いがありますが、これらは比較チャートの助けを借りてさらに説明されています。
コンテンツ: forループ対whileループ
- 比較チャート
- 定義
- 主な違い
- 結論
比較チャート
比較のための基礎 | for | while |
---|---|---|
宣言 | for(初期化;条件;反復){ //’for’ループの本体 } |
while(condition){ ステートメント; //ループの本体 } |
フォーマット | 初期化、条件チェック、反復文は、ループの先頭に書かれています。 | 初期化と条件チェックのみがループの先頭で行われます。 |
を使用してください’for’ループは、反復回数がすでにわかっている場合にのみ使用されます。 | 反復回数が正確にわかっていない場合にのみ使用される’while’ループ。 | |
条件 | 条件が’for’ループに設定されていない場合、loopは無限回反復します。 | 条件が’while’ループに置かれていない場合、コンパイルエラーが発生します。 |
初期化 | ‘for’ループでは、一度行われた初期化が繰り返されることはありません。 | whileループ内条件チェック中に初期化が行われた場合、ループが反復するたびに初期化が行われます。 |
‘for’ループの反復文 | 反復文は先頭に書かれているため、ループ内のすべての文が実行された後にのみ実行されます。 | ‘while’ループでは、反復文はループ内の任意の場所に書き込むことができます。 |
Forループの定義
Javaでは、forループには二つの形式があります。 最初の形式は「伝統的な」形式であり、2番目の形式は「for-each」形式です。
構文
伝統的なforループ文の一般的な形式。
for (initialization; condition; iteration){//body of for loop}
- 初期化:forループのループ制御変数の初期化は、ループの最初の反復中に一度だけ実行されます。 ここでは、ループ制御変数が初期化され、ループ変数がプログラムのどこでも再び使用されず、ループの制御変数としてのみ使用される場合、’for’ループで宣言され、初期化されることがあります。
- 条件:’for’ループの条件は、ループが反復されるたびに実行されます。
- インクリメントとイテレーション:イテレーションステートメントは、ループ制御変数をインクリメントまたはデクリメントする式です。
ループが実行されるたびに、その初期化条件が最初に実行されます; その後、条件がチェックされます。 条件が満たされると、ループの本体が実行され、反復文が実行されます。 繰り返しますが、ループがさらに反復するか終了するかを知るために条件がチェックされます。
Javaでは、初期化文と反復文は、複数の文を含むことができます。 各ステートメントはコンマで区切られていますが、Javaではコンマは区切り文字ですが、C++では”コンマ”は任意の有効な式で使用できる演算子です。
for-eachループとその構文
“for-each”形式は拡張されたforループです。 For-eachループの一般的な形式は次のとおりです。
for(type iter_variable: collection) statement-block
ここで、”タイプ”は反復変数のタイプを指定し、その後に反復変数を指定します。 反復変数は、コレクション変数から要素を受け取ります。 型は、コレクション変数に格納されている要素の型と同じでなければなりません。 For-each形式のforループは、ループの開始から終了までの繰り返しが、連続した順序で値にアクセスするように自動化します。
例
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.println( "value in c " + c); add = add+c; } System.out.println("additon of array elements is " +add); }}// outputvalue in c 10value in c 20value in c 30value in c 40value in c 50value in c 60additon of array elements is 210
ここで、’c’は反復変数であり、配列内の最低インデックスから最高インデックスまで、配列から値を一度に1つずつ受け取ります。 ここでは、ループは配列のすべての要素が検査されるまで反復します。 “Break”を使用することで、その間のループを終了することができます。 ただし、反復変数の変更は読み取り専用変数であるため、配列には影響しません。
whileループの定義
whileループは、C++およびJavaで利用可能な最も基本的なループです。 Whileループの動作は、C++とJavaの両方で似ています。
構文
whileループの宣言は次のとおりです
while ( condition) {statements; //body of loop}
whileループは最初に条件をチェックし、whileループの条件がtrueになるまでステートメントを実行します。 Whileループの条件は、任意のブール式にすることができます。 式がゼロ以外の値を返す場合、条件はtrueになり、式がゼロ値を返す場合、条件はfalseになります。
条件がtrueになった場合、loopはそれ自身を反復し、条件がfalseになった場合、制御はコードの次の行に続いてループに渡されます。 ステートメントまたはボディループは、空のステートメント、単一のステートメント、またはステートメントのブロックのいずれかにすることができます。
例
whileループの動作について説明しましょう。 以下の例では、コードは1から10まで印刷されます。
//example is in Java.public class Main{ public static void main (String args) { int n=0; while(n<10) { n++; System.out.println("n=" +n); } }}//outputn=1n=2n=3n=4n=5n=6n=7n=8n=9n=10
ここで、’n’の初期値は0であり、whileループの条件がtrueになります。 その後、コントロールはwhileループの本体に入り、whileループの本体の最初のステートメントに従って’n’の値がインクリメントされます。
‘n’の値が出力され、コントロールはwhileループ内の条件に戻り、’n’の値が1になり、再び条件を満たし、ループの本体が再び実行されます。 これは、条件がtrueになるまで続き、条件がfalseになるとすぐにループが終了します。
‘for’ループと同様に、’while’ループは、ループの上部、つまり条件チェック中に制御変数を初期化することもできます。
//for examplewhile((ch = getchar( ) ) != 'A'){System.out.println(" The input alphabet " +ch);}
ここで制御変数’ch’が初期化され、ループの状態がループの先頭で検証されます。
注
はforループまたはwhileループであってもよく、ループの本体に文が1つしかない場合、中括弧はその条件では必要ありません。
forループとwhileループの主な違い
- forループでは、初期化、条件チェック、反復変数の増分または減分は、ループの構文でのみ明示的に行われます。 反対に、whileループでは、ループの構文で条件を初期化してチェックすることしかできません。
- ループの実行中に発生する反復回数を認識している場合は、for loopを使用します。 一方、ループ内で発生しなければならない反復の数を認識していない場合は、whileループを使用します。
- forループにcondition文を入れなかった場合、ループの無限の反復につながります。 これとは対照的に、whileループにcondition文を入れないと、コンパイルエラーが発生します。
- for loopの構文の初期化ステートメントは、ループの開始時に一度だけ実行されます。 逆に、whileループがその構文で初期化文を運んでいる場合、whileループの初期化文はループが反復するたびに実行されます。
- forループの反復文は、本体のforループが実行された後に実行されます。 逆に、反復文はwhileループの本体のどこにでも書くことができるので、whileループの本体に反復文の実行後に実行されるいくつかの文が存在する可能性があ
結論
forループとwhileループはどちらも反復文ですが、どちらも明確な特徴を持っています。 Forループには、ループの本体の先頭にすべての宣言(初期化、条件、反復)があります。 逆に、whileループでは、初期化と条件のみがループの本体の上部にあり、反復はループの本体のどこにでも書き込むことができます。