第21講 電卓の高度化その1
第2話 1→.→1→1と押すと、1.11になるように小数ボタンとボタン1のコードを考える
解答例
Dim w As Double, v As Double, h As Byte, k As Byte, a As Integer
Private Sub CommandButton18_Click()
k = 1
a = 0
End Sub
Private Sub CommandButton2_Click()
Dim i As Byte
If k = 1 Then
For i = 0 To a
w = 10 * w
Next
w = w + 1
For i = 0 To a
w = w / 10
Next
a = a + 1
End If
If k = 0 Then w = 10 * w + 1
TextBox1.Text = w
End Sub
解説
皆さんの頭には?が浮かんでいますよね。
1→.→1→1→1と押されたとき、1.111とするには、
次の手順をたどればよいのです。
1→10倍→1を加える→10で割る→100倍→1を加える→100で割る→1000倍→1を加える→1000で割る。
実際この手順の通りにすると、
1→10→11→1.1→110→111→1.11→1110→1111→1.111
でうまくいきます。
以上の手順をFor文で実現すればよいのです。
1→.→1→1→1と押されたときで、トレースしてみましょう。
まず、1が押されると、kは0(変数は宣言されたとき0に初期化される)ですから、
If k = 0 Then w = 10 * w + 1が実行され、1と表示されます。
次に、小数点ボタン.が押されると、k = 1、a = 0となります。
その後1が押されると、
今度はk = 1ですから、
If k = 1 Then
For i = 0 To a
w = 10 * w
Next
w = w + 1
For i = 0 To a
w = w / 10
Next
a = a + 1
End If
の方が実施されます。
a = 0なので、それぞれのFor文は1回ずつ実行されます。
ですから、1→10倍→1を加える→10で割る となり、
1→10→11→1.1になります。
最後a = a + 1によって、aは1となります。
1がまた押されると、k = 1、a = 1の状態で
If k = 1 Then
For i = 0 To a
w = 10 * w
Next
w = w + 1
For i = 0 To a
w = w / 10
Next
a = a + 1
End If
の命令が遂行されます。
ですからそれぞれのFor文は2回実施されますので、
1.1→11→110→111→11.1→1.11となります。
4回目の1についてはご自分ででトレースして下さい。
では、皆さん234567890それぞれのボタンのコーティングを考えましょう。
第1話へ 第3話へ
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る