第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
が計算できるようにコードをそれぞれ変更してください。
VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
数学研究室に戻る