No.1ベストアンサー
- 回答日時:
# 繰り返しを自動でやらせられるだけで(手動に比べて)凄い利点だなぁと。
重要なのは「可読性」と「保守性」の向上です。
コードを処理(繰り返したい)とあわせる->可読性があがる。
コードが減少する->保守性があがる(ことが多い)
同じ処理を何度も書かない->実行コード領域が減る(※。
forの機能は、whileの一類型です。(forの処理はwhileでも書けます)
にもかかわらず、forがある理由は、
開始条件、終了条件、更新がある繰り返しは、繰り返しの典型。
これらの条件を際立たせることができる->可読性アップ。
(※昨今の最適化コンパイラだと自動でやってたりするかも。
いずれにしろ、通常は気にする意味がない。
No.5
- 回答日時:
FORとwhileの違いについて触れてなかったので追記です
あまり書かないでしょうがこんな文を書いたとします
FOR I=1 TO 1 STEP 1
I = 0
NEXT I
VBは知らないですが
一般的なベーシックはノーエラーとし走るでしょう恐らく
(故意には書かなくても実際にはスタックオーバーフローとかで頻繁に発生しますね)
では問題です
これは無限ループですか?
答えはあにはからんや断定できません
処理系によって違うからです
じゃあ何故?
それは上のFOR構文をIF構文に置き換えると分かり易くなります
こんな感じ
I = 0
LAVEL1 I = I + 1
I = 0
IF I < 2 THEN GOTO LAVEL1
て言う感じのを普通思い浮かべますが
I = 1
LAVEL1 IF I >= 1 THEN GOTO LAVEL2
I = 0
I = I + 1
GOTO LAVEL1
LAVEL2 …
としている処理系も割と多くあるのです
2つ目の構文だと直ぐ抜けますよね
しかし普通1つ目の構文の動きをすると思いこんでいるので
プログラムが無限ループせずに頭が無限ループに入ります
生産性が悪いし処理系毎に挙動が変わると困りますよね?
while構文を使うよう言われる場合があると思うのですが
while構文は多くの処理系で条件判断ポイントを明示出来るからです
条件判断ポイントを明記できると挙動が明示的に指定でき安定しますよね
No.4
- 回答日時:
ループを使わないと、こんなソースの間違いがすぐに見つけられません。
i = 0;
i += 1
i += 2
i += 3
i += 4
i += 5
i += 6
i += 7
i += 8
i += 9
i +=10
i +=11
i +=12
i +=13
i +=14
i +=15
i +=16
i +=18
i +=19
i +=20
No.3
- 回答日時:
# 些事ですが、
> しかし中央演算装置には普通
> 凡そ1命令でこれらを実行する機能が備わっています
元がCISCなIntel系CPUにはloopの命令もありますが、
その他のRISC系CPUだとそんな命令は無い(ただの条件分岐になる)方が多く、
環境を特定しない一般論でいえば、Intelの方が例外じゃないかと思いますけど。
# Windows環境限定とかなら、Intel系が普通といってもよいのでしょうが。
No.2
- 回答日時:
繰り返し文を使うとコンパイラーやインタプリタは
専用コードを用い処理の高速化を図ります
ご存知の通り
FOR文やwhile文の中には幾つかの処理を書き込みます
しかし中央演算装置には普通
凡そ1命令でこれらを実行する機能が備わっています
この定型化によりこの命令が使えるようになりますし
パイプラインもハッシュも壊れにくくなり高速化が図れるわけです
また、
ループを使わず野辺ったらしく書いたとします
これもご存知のようにプログラムは
意図するストリングスと実際の記載内容が1文字でも違えば
誤動作する危険性がかなりあります
本来数億回とかループさせるところを
延べて書いたとして
全てを全くコピペだけでは済まないので
一部書き換えなければならなくなるわけですが
これに伴い間違える可能性は飛躍的に高まるでしょう
フェールセーフティーの考えに反する愚行ですね
後ループインとアウトを分かり易くできること
ループ変数に何が用いられているかが明確になること
なども利点でしょうか?
(MrBanさんの記載にかなり被ってますね)
まだまだ一杯利点はあるでしょうがこの辺で勘弁してください
列挙に暇がないので割愛します
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで Do While (1)って?
-
PIC のプログラムについて ど...
-
HEWのバグ?
-
While文の終わりにセミコロンが...
-
C言語 数字を削除する関数
-
do-while文が禁止される理由
-
ループを途中で抜けたいのですが。
-
C言語forループが完結した場合...
-
「Aに対するBの割合」と「Aに対...
-
Enterキーを押されたら次の処理...
-
C言語での引数の省略方法
-
20'(角度)の計算がわかりま...
-
マイナスからプラスへ転じた時...
-
visualstudio C# テキストボッ...
-
O(n log n)について2
-
戻り値を返す関数の前に(void)...
-
「指定されたキャストは有効で...
-
void*型の配列について
-
std::set<int> で、ある値が何...
-
半角カナ→16進
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
ループを途中で抜けたいのですが。
-
break文でループを一気に抜ける...
-
入力した文字列から母音だけを...
-
入力した数値を倍々するプログラム
-
エクセルVBAで Do While (1)って?
-
C言語forループが完結した場合...
-
For文の終了値を関数にしても問...
-
Excel VBAで年度をまたぐ期間の...
-
if文の中にfor文なのか、for文...
-
PIC のプログラムについて ど...
-
UWSCにてある一定の動作を無限...
-
ゲームオーバーのプログラム
-
アルゴリズムです!四つの数字...
-
__asm int 3でのブレイクポイン...
-
ループの特定入力終了
-
線形探索(番兵法)のプログラ...
-
エクセルでC言語のfor文と同じ...
-
for文while文の無限ループの違...
-
フラッシュ暗算
おすすめ情報