第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話へ

004
  

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

数学研究室に戻る