第4講 If文の学習

第10話 データ交換ソフト
さて、行ごとの交換を考えるために、
新しいプロジェクトから次のようなForm1作り、
入門
キーボードから入力されたデータ1とデータ2を交換するということを考えてみましょう。
実行をダブルクリックして、コーティングを考えます。

一見すると次のコーティングで、うまくいくような気がします。
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     '変数の宣言
     Dim a As Integer, b As Integer

     'TextBoxからデータの取得
     a = TextBox1.Text
     b = TextBox2.Text

     'データ交換
     a = b
     b = a

     'データ交換後の表示
     TextBox3.Text = a
     TextBox4.Text = b

   End Sub
End Class

ところがビルドして、入力してから実行ボタンを押すと、
初心者
でうまくいきません。どうしてでしょうか。

動きをトレースしてみましょう。
まず、
    a = TextBox1.Text
    b = TextBox2.Text
の2行で、変数aと変数bにデータが収容されます。
基礎
次の行のa = b によって、
初歩
28がaの箱に入ってきます。
箱には1個のデータしか入りませんから、
12は箱から出ていきます。
そうです。
データは箱の中でしか生きられませんから、
箱から出た瞬間に12は消滅してしまうのです。
尚、28は箱bから出ていくのではなく、
箱bの内容がコピーされ、コピーされた28が箱aに入って行くのです。
図では、その違いを移動とコピーペースト
(俗に言うコピペです。データを記憶装置=メモリーに複写することをコピーといい、
そのメモリーに複写されたデータを該当の場所に貼り付けることをペーストといいます。)
という言葉で比喩的に表しています。
さて、この瞬間に実は、
入門
となってしまっています。
ですから、次の行のb = a は全く意味がありません。
初心者

ではどうしたらよいのでしょうか。ヒントはもう一つ箱(変数)を用意することです。
基礎
皆さん、正しいコーティングを考えてください。解答例は、30行下。





































Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     '変数の宣言
     Dim a As Integer, b As Integer, w1 As Integer

     'TextBoxからデータの取得
     a = TextBox1.Text
     b = TextBox2.Text

     'データ交換
     w1 = a
     a = b
     b = w1

     'データ交換後の表示
     TextBox3.Text = a
     TextBox4.Text = b

   End Sub
End Class
実行例
VB入門
うまくいきました。

トレースしてみましょう。
vb初心者
はじめての
入門
初心者
基礎
確かにデータの交換に成功しています。

尚、用意する箱(変数)w1は、
Dim w1 As String
と宣言してください。Stringは文字型です。
DataGridViewには数字も文字も入っているからです。
その両方に対応できるのがString型です。
VC++だと型がいろいろあってちょっとでも違うと柔軟性がなくエラーしますが、
VBの方はかなり柔軟で、今回のように文字と数字が混ざっていても、
うまく自動的にキャスト(変換)して、柔軟に対応してくれます。

考えるための材料はすべてそろいました。
第9話と第10話を熟読の上、
並び替えに挑戦しましょう。


第9話へ 第11話へ

006

VC++講義第1部へ
vb講義へ
VB講義基礎へ

数学研究室に戻る