第7講 結果を報告しない社員

第7話 箱が生きている時間

前話問題

2つのプログラムにおける箱の生きている時間
Private Sub CommandButton1_Click()
  wa
  seki
End Sub
Private Sub CommandButton2_Click()
  Rows("6:200").Select
  Selection.ClearContents
  Cells(1, 1).Select
End Sub
Sub wa()
  Dim w As Long, i As Byte
  w = 0
  For i = 1 To 10
    w = w + i
  Next
  Cells(6, 1) = "1から10までの和"
  Cells(6, 3) = w
End Sub
Sub seki()
  Dim w As Long, i As Byte
  w = 1
  For i = 1 To 10
    w = w * i
  Next
  Cells(7, 1) = "1から10までの積"
  Cells(7, 3) = w
End Sub
の場合の解答
vba
実際の時間順(プログラムの流れる順)
Private Sub CommandButton1_Click()
  wa


vb

  seki

visual

End Sub



Dim w As Long, i As Byte
Private Sub CommandButton1_Click()
  wa
  seki
End Sub
Private Sub CommandButton2_Click()
  Rows("6:200").Select
  Selection.ClearContents
  Cells(1, 1).Select
End Sub
Sub wa()
  w = 0
  For i = 1 To 10
    w = w + i
  Next
  Cells(6, 1) = "1から10までの和"
  Cells(6, 3) = w
End Sub
Sub seki()
  w = 1
  For i = 1 To 10
    w = w * i
  Next
  Cells(7, 1) = "1から10までの積"
  Cells(7, 3) = w
End Sub
の場合の解答

basic

図にすると、グローバルの場合メモリーを無駄に消費していることがわかります。
グローバル変数の場合は、最初から最後までメモリー上に箱が存在しているのに対して、
ローカル変数の場合は、必要に応じてメモリーに存在しています。
グローバルの場合、劇の上演中常に舞台に上がっているのに対して
ローカルの場合は、役者(社員)が舞台に上がって、箱を生まれよと呪文を言った瞬間に舞台に登場し、
役者(社員)が舞台から降りるときに、一緒に舞台から降ります。
というより、役者が箱を持って降りるといった方が正確です。
箱は、手品師の箱のように、箱を作った役者(社員)が常に手にしているものです。
ですから、役者が舞台から降りれば、自動的に箱も舞台から降りてしまうわけです。

メモリーの節約の観点から、なるべくグローバル変数は用いないようにした方がよいことがわかります。


実際上の社長(親分)CommandButton1_Clickが社員(子分)に命じる例ばかりを見てきましたが、
社員も他の社員に仕事を命じる(お願いする)こともできます。
プログラムの文章を次のように変更してみましょう。
Private Sub CommandButton1_Click()
  wa
End Sub
Private Sub CommandButton2_Click()
  Rows("6:200").Select
  Selection.ClearContents
  Cells(1, 1).Select
End Sub
Sub wa()
  Dim w As Long, i As Byte
  w = 0
  For i = 1 To 10
    w = w + i
  Next
  Cells(6, 1) = "1から10までの和"
  Cells(6, 3) = w
  
seki
End Sub
Sub seki()
  Dim w As Long, i As Byte
  w = 1
  For i = 1 To 10
    w = w * i
  Next
  Cells(7, 1) = "1から10までの積"
  Cells(7, 3) = w
End Sub
実行結果を予想してください。

第6話へ 第8話へ

トップ

vc++講義へ

初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義へ
VB講義基礎へ
初心者のためのJava 入門 基礎から応用まで
数学研究室に戻る