第6講 For文以外の繰り返し処理

第1話 While文

この講では、For文以外のループ文のWhile文とDo...Loop While文を見ていきましょう。
まず、While文から。
While文とは、次の命令処理です。
While 条件式
    ・
    ・
    ・
End While
IF文と同じで条件式が真とき実施されます。
IF文と違う点は、条件式が真である間は繰り返されるという点です。
つまり、For文と同じ繰り返し処理です。
例えば、次のようにプログラムを組むと、
Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     '変数の宣言
     Dim i As Integer, w As Integer

     '和の計算
     w = 0
     i = 1
     While i <= 10
       w = w + i
       i = i + 1
    End While

    '和の表示
    Label1.Text = w.ToString

  End Sub
End Class
実行結果
入門

1から10までの和
1+2+3+45+6+7+8+9+10
が計算されます。
つまり、
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     '変数の宣言
     Dim i As Integer, w As Integer

     '和の計算
     w = 0
     For i = 1 To 10
       w = w + i
     Next

     '和の表示
     Label1.Text = w.ToString

   End Sub
End Class
と同じプログラムになります。

トレースしてみましょう。
     w = 0
     i = 1
より、
i <= 10をクリアして、While文が実行されます。
     w = w + i
     i = i + 1
から
     w = 0 + 1 = 1
     i = 1 + 1 = 2
これで1回目の処理が終わります。
ここで、再び条件式i <= 10の判定が行われますが、
i=2でもちろんクリアされ、2回目の処理が実行されます。
     w = w + i
     i = i + 1
から
     w = 1 + 2= 3
     i= 2 + 1= 3
2回目の処理が終わり、条件式i <= 10の判定が行われクリアして、
3回目の繰り返し処理が行われます。
     w = w + i
     i = i + 1
から
     w = 3+3= 6
     i= 3+1= 4
3回目の処理が終わり、条件式i <= 10の判定が行われクリアして、
4回目の繰り返し処理が行われます。
     w = w + i
     i = i + 1
から
     w = 6 + 4= 10
     i= 4 + 1= 5
4回目の処理が終わり、条件式i <= 10の判定が行われクリアして、
5回目の繰り返し処理が行われます。
     w = w + i
     i = i + 1
から
     w = 10 + 5= 15
     i= 5 + 1 = 6
5回目の処理が終わり、条件式i <= 10の判定が行われクリアして、
6回目の繰り返し処理が行われます。
     w = w + i
     i = i + 1
から
     w = 15+6= 21
     i= 6+1= 7
6回目の処理が終わり、条件式i <= 10の判定が行われクリアして、
7回目の繰り返し処理が行われます。
     w = w + i
     i = i + 1
から
     w = 21 + 7 = 28
     i= 7 + 1 = 8
7回目の処理が終わり、条件式i <= 10の判定が行われクリアして、
8回目の繰り返し処理が行われます。
     w = w + i
     i = i + 1
から
     w = 28 + 8 = 36
     i= 8 + 1 = 9
8回目の処理が終わり、条件式i <= 10の判定が行われクリアして、
9回目の繰り返し処理が行われます。
     w = w + i
     i = i + 1
から
     w = 36 + 9 = 45
     i= 9 + 1 = 10
9回目の処理が終わり、条件式i <= 10の判定が行われクリアして、
10回目の繰り返し処理が行われます。
     w = w + i
     i = i + 1
から
     w = 45 + 10 = 55
     i = 10 + 1 = 11
10回目の処理が終わります。
そして、条件式i <= 10の判定が行われますが、
今回は11 <= 10で条件式を満たしません。
これでWhile文は処理を終了します。

もう一度wとiの動きだけとりだしてみましょう。
ループ前
w = 0
i = 1
1回目
w = 0 + 1 = 1
i = 1 + 1 = 2
2回目
w = 1 + 2 = 3
i= 2 + 1 = 3
3回目
w = 3 + 3 = 6
i= 3 + 1 = 4
4回目
w = 6 + 4 = 10
i= 4 + 1 = 5
5回目
w = 10 + 5 = 15
i= 5 + 1 = 6
6回目
w = 15 + 6 = 21
i= 6 + 1 = 7
7回目
w = 21 + 7 = 28
i= 7 + 1 = 8
8回目
w = 28 + 8 = 36
i= 8 + 1 = 9
9回目
w = 26 + 9 = 45
i= 9 + 1= 10
10回目
w = 45 + 10 = 55
i = 10 + 1= 11
ここでi <= 10は11 <= 10となり真ではないのでWhile文を抜けます。
となるのです。
確かに、
1+2+3+45+6+7+8+9+10=55
が計算されてみます。



そして、実行結果
初心者

皆さんも
入門
Form1を作り、コードをタイピングされ確認して下さい。


それでは、問題を3つ出してこの話を閉じましょう。
@ 1+2+3+・・・+100
A 2+4+6+・・+100
B 2+5+8+・・・+99
が計算できるようにコードをそれぞれ変更してください。


第5講第10話へ 第2話へ

006

VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座

数学研究室に戻る