アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミングにおいて繰り返し文を使うことは多いと思います。その利点とは同じ処理を何回も書かなくて良いという点だけでしょうか?
for文while文、それぞれについて上記以外の利点があれば教えてください。

A 回答 (5件)

# 繰り返しを自動でやらせられるだけで(手動に比べて)凄い利点だなぁと。



重要なのは「可読性」と「保守性」の向上です。

コードを処理(繰り返したい)とあわせる->可読性があがる。
コードが減少する->保守性があがる(ことが多い)
同じ処理を何度も書かない->実行コード領域が減る(※。

forの機能は、whileの一類型です。(forの処理はwhileでも書けます)
にもかかわらず、forがある理由は、
開始条件、終了条件、更新がある繰り返しは、繰り返しの典型。
これらの条件を際立たせることができる->可読性アップ。

(※昨今の最適化コンパイラだと自動でやってたりするかも。
  いずれにしろ、通常は気にする意味がない。
    • good
    • 0

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構文は多くの処理系で条件判断ポイントを明示出来るからです

条件判断ポイントを明記できると挙動が明示的に指定でき安定しますよね
    • good
    • 0

ループを使わないと、こんなソースの間違いがすぐに見つけられません。



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
    • good
    • 0

# 些事ですが、



> しかし中央演算装置には普通
> 凡そ1命令でこれらを実行する機能が備わっています

元がCISCなIntel系CPUにはloopの命令もありますが、
その他のRISC系CPUだとそんな命令は無い(ただの条件分岐になる)方が多く、
環境を特定しない一般論でいえば、Intelの方が例外じゃないかと思いますけど。
# Windows環境限定とかなら、Intel系が普通といってもよいのでしょうが。
    • good
    • 0

繰り返し文を使うとコンパイラーやインタプリタは


専用コードを用い処理の高速化を図ります

ご存知の通り
FOR文やwhile文の中には幾つかの処理を書き込みます
しかし中央演算装置には普通
凡そ1命令でこれらを実行する機能が備わっています
この定型化によりこの命令が使えるようになりますし
パイプラインもハッシュも壊れにくくなり高速化が図れるわけです

また、
ループを使わず野辺ったらしく書いたとします

これもご存知のようにプログラムは
意図するストリングスと実際の記載内容が1文字でも違えば
誤動作する危険性がかなりあります

本来数億回とかループさせるところを
延べて書いたとして
全てを全くコピペだけでは済まないので
一部書き換えなければならなくなるわけですが
これに伴い間違える可能性は飛躍的に高まるでしょう
フェールセーフティーの考えに反する愚行ですね

後ループインとアウトを分かり易くできること
ループ変数に何が用いられているかが明確になること
なども利点でしょうか?

(MrBanさんの記載にかなり被ってますね)

まだまだ一杯利点はあるでしょうがこの辺で勘弁してください
列挙に暇がないので割愛します
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!