絶対値のあらわし方

タグの編集
投稿者 L  (社会人) 投稿日時 2009/10/16 17:39:37
AひくBが絶対値の10以下になるまで繰り返すプログラムはこれで正しい? 

While A(i) - B(i) < Math.Abs(10)
  '処理 
end while
投稿者 ?-?  (その他) 投稿日時 2009/10/16 18:11:55
> 投稿者 L   (社会人)   投稿日時 2009/10/16 8:39:37  
> AひくBが絶対値の10以下になるまで繰り返すプログラムはこれで正しい? 

> While A(i) - B(i) < Math.Abs(10)
>   '処理 
> end while 


A(i)=-100、B(i)=10だったらどう思いますか?
そもそも
 
>   '処理 

でどんな処理をしようとしてますか?

いろいろと間違い・足りないものが多すぎです。
投稿者 mitchin  (社会人) 投稿日時 2009/10/16 21:13:25
While Math.Abs(AひくB) > 10
 '処理 
End While


「絶対値が10以下になるまで」ということは「絶対値が10を超えている間は」ってことですよね。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/10/17 07:00:37
> AひくBが絶対値の10以下になるまで

『~になるまで』という条件でループさせる場合には「Until」を使います。
Do Until 終了条件
 '処理 
Loop
Do
  '処理 
Loop Until 終了条件



一方「While」は、『~の間』というループ条件を意味します。
Do While 継続条件
  '処理 
Loop
Do
  '処理 
Loop While 継続条件
While 継続条件
  '処理 
End While  'VB6では「Wend」 



別の言い方をするならば、
 Until「条件を満たすまで、ループ処理を続ける」(Falseなら継続、Trueで終了)
 While「条件を満たしている間、ループ処理を続ける」(Trueなら継続、Falseで終了)
という使い分けとなります。


条件を逆転させることで、Until な処理を While で書くことも、While な処理を Until で書くこともできますが、
それらのコードが意図する意味は、Until は「~まで」、While は「~の間」です。