第8講 4次魔方陣と6次魔方陣の作成

第3話 交換プログラム


交換プログラムコード例
Private Sub CommandButton1_Click()

  Dim a As Integer, b As Integer, w As Integer

  a = Cells(6, 2) '値代入
  b = Cells(7, 2) '値代入

  'aとbの値交換
  w = a 'aのバックアップ
  a = b 'aの箱の中身は、bの値になる。aの箱にあったもともとの値は消滅するが、wの箱に保存してある。
  b = w 'wの箱に保存してあった値を入力

  '交換後のaとbの値の表示
  Cells(10, 2) = a
  Cells(11, 2) = b

End Sub

解説
うっかりすると次のようにやってしまいそうです。
Private Sub CommandButton1_Click()

  Dim a As Integer, b As Integer

  a = Cells(6, 2) '値代入
  b = Cells(7, 2) '値代入

  'aとbの値交換
  a = b
  b = a

  '交換後のaとbの値の表示
  Cells(10, 2) = a
  Cells(11, 2) = b

End Sub
ところがこれだと
例えば失敗例となってしまい成功しません。

なぜでしょうか。
VBでは、変数とは値を入れる箱でした。
そして、個の箱には値は1個しか入れられません。
別の値を入れるともともとの値は出て行ってしまいます。
値の動き
そして、値は箱の中でしか生きることが出来ませんので、
箱から出ると消滅してしまいます。
この例だと1は消滅してしまいます。
そして、aにはbの値2が入っています。
すると、次のb=aはまったく意味がありません。

そこで、aの値を一時保存しておく、もう一つの箱wを用意する必要があります。
a=8
b=3

箱asd
w=a
保存箱箱箱b
a=b

保管交換後bの値

b=w

aereee

これなら、交換がうまくいきます。
ここの学習のポイントは、一時値を入れておく箱の用意です。

では皆さん、自然配列

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

1 2 3  4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36

から魔方陣を作る課題に挑戦しましょう。

第2話へ 第4話へ

004


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

数学研究室に戻る