for文とwhile文の使い分け、存在意義について教えてください。調べてもピンときませんでした。forは回数が決められている場合に使用するとありましたがどちらも同じように使えますよね?for(i=2: i\u0026lt;6)i=0:while(2\u0026lt;i\u0026lt;6)という風に条件定義の仕方の問題ですか?それともどちらかにしかできないこと。または、同じことを書くとしてもどちらかは数倍の文量が必要になるなどの違いがあるのでしょうか?出来れば経験なども含めて書いてくれると助かります。それと、適当に調べてコピペしたりは私も既に調べていますので必要ありません。

1件の回答

回答を書く

1015066

2026-02-10 08:10

+ フォロー

はい、大体どちらも同じように使用できます。一般プログラマーは一生関わらないようなササいな違いを除けば『条件定義の仕方』しか違いはありません。



質問文の for文と while文とは「同じではない」ので『条件定義の仕方』以外にも違いがありますけどね。それは後述します。



使い分け、存在意義については、まさしく『条件定義の仕方』にあります。



for文やwhile文のような繰り返し処理は一般にループ(専門的には反復)と呼びます。ループには二種類あります。



・とある条件が満たされるまで同じ処理を無限に繰り返す

・回数を数える、配列を最後まで読み込むなどの、「最初」から始めて「最後」まで「順番」に繰り返す



前者が while文で、後者が for文です。コンピューターにとっては、後者も前者の一種です。まさに『条件定義の仕方』しか違いはありません。



ですが人間様にとっては大きな違いです。後者は「コンピューターにとっては同じ処理」であっても、人間様にとっては「対象が変わっている」ことになります。



例えば「教室の中にいる生徒を全員○○します」という処理の場合は、



・教室の中にまだ○○されていない生徒がいる間、教室の中にいる人間を一人○します。

・出席番号とか席順とかの順番で生徒を一人一人○○します。



の両方に解釈が可能です。後述しますが、ヤるだけならばヤることは一緒なので「解釈」の問題です。



前者の場合、サボっていた生徒や途中で逃げた生徒がいた場合、クラスの全員を○○することはできないかも知れません。

後者の場合、サボっていた生徒や途中で逃げた生徒がいた場合、その生徒がいないことは○○しようとした時に判ります。



ちなみに○○には「テストを返却」とか「通信簿を渡」とか入れられます。



コンピューターにとっては、言われた通りに愚直に行動するだけです。しかし人間は「行動」する以外にも、プログラムを読んで解釈したり、間違いが無いか確認したり、改造したりします。その時に「そもそもこの処理は前者後者のどちらの処理だ?」というのを考えながら読みます。



その時に「開始」「最後」「順番」が全部 for文の最初に「まとめて全部」が書いてあると、最初にそれを理解してから繰り返し処理を読むことになりますので、間違いがありません。



ですがこれを「コンピューターにとっては同じだから」と while文で書いてしまうと、保証ができなくなります。「開始」がはるか前の方に書いてあるかも知れません。もしかしたら「書き忘れている」かも知れません。同様に「順番」が繰り返し処理の中の何処に書いてあるのか探さないといけません。これも書き忘れていることは良くあるミスです。最悪、書いてあっても if文で「順番」が処理されたりされなかったりしているかも知れません。



なので while文の場合は、そういうことが無いように全部を細かく一文一文全てを見落としなく調べなければなりません。for文ならば先頭にそれらが全部書いてあります。探さなくてもあるか無いかもその内容も、すぐに判るのです。



その判り易さが重要になるので、後者の場合は for文で、前者の場合は while文で、と使い分けます。その方が「読み易い」ので「間違いが減る」からであり、それが存在意義です。



ちなみに質問文の for文と while文との違いです。正しくは、



for( i = 2 : i \u0026lt; 6 ; ++i ){ print i; }



i=2; while( i \u0026lt; 6 ){ print i; ++i; }



になります。もう少し勉強を進めてから見直してください。

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有