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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 必ずyou bet と表示されます 2 2023/07/28 22:19
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作成するには 2 2022/10/25 21:19
- Java Java 南京錠 2 2023/02/04 11:46
- Ruby プログラミング 3 2023/06/09 14:30
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作りたいのですが 1 2022/10/24 18:56
- その他(プログラミング・Web制作) プログラミング python 3 2023/06/14 03:55
- C言語・C++・C# C言語 コードを書いたのですが上手く実行出来なかったです。どこが間違ってますか? 【作成したいもの】 1 2022/05/04 11:36
- 日本語 「〜たり〜たり」の使い方 1 2022/06/05 16:25
- 介護福祉士・ケアマネージャー・社会福祉士 介護関係者の方に真面目な相談です!! 大変悩んでます…。。 介護専門学生ですが訪問介護に3日実習いき 1 2022/05/23 16:56
- 日本語 「〜たり〜たり」の使い方 2 2022/06/08 21:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
break文でループを一気に抜ける...
-
do-while文が禁止される理由
-
ループを途中で抜けたいのですが。
-
他言語で言うcontinue文
-
Excel VBAで年度をまたぐ期間の...
-
UWSCにてある一定の動作を無限...
-
プログラムの解説をお願いします。
-
if文の中にfor文なのか、for文...
-
エクセルVBAで Do While (1)って?
-
入力した文字列から母音だけを...
-
猫でもわかる、がわかりません。
-
ファイルから読み取った「行の...
-
新たな疑問 for( ; ; ){
-
C言語、whileループを抜け出す...
-
PIC のプログラムについて ど...
-
C言語のwhile()文での大括弧の...
-
For文の終了値を関数にしても問...
-
桁数を求めるプログラム。
-
プログレスバーで
-
Cプログラムが終了しない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
break文でループを一気に抜ける...
-
エクセルでC言語のfor文と同じ...
-
ループを途中で抜けたいのですが。
-
エクセルVBAで Do While (1)って?
-
C言語forループが完結した場合...
-
For文の終了値を関数にしても問...
-
excel VBA if文について
-
入力した数値を倍々するプログラム
-
入力した文字列から母音だけを...
-
Excel VBAで年度をまたぐ期間の...
-
if文の中にfor文なのか、for文...
-
C言語、whileループを抜け出す...
-
for文while文の無限ループの違...
-
UWSCにてある一定の動作を無限...
-
__asm int 3でのブレイクポイン...
-
PIC のプログラムについて ど...
-
他言語で言うcontinue文
-
Cプログラムが終了しない
-
プログラムで関数は使わない方...
おすすめ情報