do ~Loop while 文についての素朴な疑問

タグの編集
投稿者 デフォルト  (社会人) 投稿日時 2009/7/8 20:20:31
基礎的な質問ですみません。
do ~Loop while 文ですが、下記のコードでLoop while f2はf2=trueという解釈で
よいのでしょうか?


 Dim f1 As Boolean, f2 As Boolean    ’Booleanの初期値はtrueですよね?

    do
         f1=false
      <ステートメントブロック>

    do
        f2=false
      <ステートメントブロック>

       f2=true

       Loop while f2
      <ステートメントブロック>
       Loop while f1
投稿者 るしぇ  (社会人) 投稿日時 2009/7/8 21:50:35
ステップ実行やブレークポイントの設定でプログラムを中断し
その時の変数の中身を確認するか、
Debug.WriteLine 等のコマンドで変数の値を出力して確認して下さい。

こちらのサイトでは初級講座のデバッグのページで解説されています。
投稿者 トマト  (小学生) 投稿日時 2009/7/9 01:40:59
初期値はFalseだった気がします。
あってなかったらごめんなさい。
投稿者 刈谷勇  (社会人) 投稿日時 2009/7/9 02:54:53
write by:デフォルトさん
>do ~Loop while 文ですが、下記のコードでLoop while f2はf2=trueという解釈で
>よいのでしょうか?

あってます。ちなみにf2=falseの場合は、not f2とかけます。
あと、質問するときはVBのバージョンも書いてくださいね。
(今回はあまり関係ありませんが)
投稿者 (削除されました)  () 投稿日時 2009/7/9 19:16:06
(削除されました)
投稿者 デフォルト  (社会人) 投稿日時 2009/7/11 20:04:24
有り難うございました(亀レスですみません)
投稿者 デフォルト  (社会人) 投稿日時 2009/7/14 16:47:12
すみさせん、追加質問です 
下記は、マップの中でボールが反射する部分のサンプルコードの一部ですが

<>の解釈でよいのでしょうか?

' ボールの反射処理
     ●   Do         <f1 、 f2 = true>
            f1 = False  <f1 = False、f2 = true>

    ●   Do
            f2 = False  <f1 = False、f2 = false>


                If map(bx + bhx, by) <> 0 Then ' 進行方向の左右が壁
                    map(bx + bhx, by) = -1 ' 光る壁にする印
                    bhx = -bhx
                    f2 = True
                End If
                 If map(bx, by + bhy) <> 0 Then ' 進行方向の上下が壁
                     map(bx, by + bhy) = -1 ' 光る壁にする印
                    bhy = -bhy
                    f2 = True
                End If
         ●   Loop While f2   <f2 = trueの間は、ループ>
            
      If map(bx + bhx, by + bhy) <> 0 Then ' 移動先が壁
                map(bx + bhx, by + bhy) = -1 ' 光る壁にする印
                bhx = -bhx
                bhy = -bhy
            End If
        
    ●  Loop While f1    <f1 = trueの間は、ループ?>
投稿者 デフォルト  (社会人) 投稿日時 2009/7/14 17:28:19
ちなみにブレークポイントを設定して、f1 ,f2の値の変化をみましたが
下記の部分は表示されなかったので質問した次第です。 


 ●  Loop While f1    <f1 = trueの間は、ループ?> 
投稿者 るしぇ  (社会人) 投稿日時 2009/7/30 19:27:41
そんなに悩むほどの内容ではない。


        Dim f1 As Boolean, f2 As Boolean
        Dim count1, count2 As Integer
        Debug.WriteLine("初期値  … " & f1.ToString & ":" & f2.ToString)

        '[変更] 
        f1 = True
        f2 = True
        Debug.WriteLine("[変更]  … " & f1.ToString & ":" & f2.ToString)

        Do         '<f1 、 f2 = true>★[変更]のコードがないと間違い 
            f1 = False  '<f1 = False、f2 = true>★[変更]のコードがないと間違い 
            Debug.WriteLine("Loop1前 … " & f1.ToString & ":" & f2.ToString)

            Do
                f2 = False  '<f1 = False、f2 = false> 
                Debug.WriteLine("Loop2前 … " & f1.ToString & ":" & f2.ToString)

                If count2 < 4 Then ' 進行方向の左右が壁 
                    f2 = True
                End If
                Debug.WriteLine("Loop2後 … " & f1.ToString & ":" & f2.ToString)

                count2 += 1
            Loop While f2   '<f2 = trueの間は、ループ> 
            Debug.WriteLine("Loop1後 … " & f1.ToString & ":" & f2.ToString)

            count1 += 1
        Loop While f1    '<f1 = trueの間は、ループ?> 

        Debug.WriteLine("終了値  … " & f1.ToString & ":" & f2.ToString)
投稿者 デフォルト  (社会人) 投稿日時 2009/8/1 17:22:21
るしぇさん、有り難うございます。m(_ _)m