第3回 コンピュータとの情報交換(入力、変数、出力)

学習目標

入力とは何か、出力とは何かを理解する。入力や出力するデータには“数値”と“言葉(正式には文字列と呼ばれる)”がある。入力されたデータはコンピュータ内ではいったん“黒板(正式には変数と呼ばれる)”に書き込まれて利用される。

 

3−1 入力、出力、変数

入力:キーボードからコンピュータにデータを与えること。

出力:コンピュータ内のデータを人に分かるように画面や音声で伝える。

変数:入力されたデータを

コンピュータ内で利用する

には、データをいったん

変数(黒板の働きをする)

と呼ばれるものに書き込ん

でか使用します。

(1つの変数には1つの

データしか書けません)

 

右の図は、コンピュータの

構成を示しています。

キーボードからの入力データ

は、いったん変数(黒板)

に書き込まれ、その後で、

出力されます。

 

早速、キーボードからデータを入力して、読み込んだデータを音声で出力するプログラムを示します。とりあえず実行してみましょう。

 

‘===プログラム3.1

Set Agent1= WScript.CreateObject("Agent.Control.1", "Merlin_")

Agent1.Connected= True

Agent1.Characters.Load "Merlin","Merlin.acs"

Set Merlin= Agent1.Characters("Merlin")

Merlin.Show

ここから下がプログラム本体

data= InputBox("言葉を入力してください")

MsgBox “終わり

‘===

 

プログラム3.1をp31.vbsというプログラムファイルにして、アイコンをWクリックして実行してみましょう。画面にInputBoxと呼ばれる(データ入力用の)ボックスが表示

 

図3.1 InputBox

 

されますので、記入部(白い枠内:上の図は、“こんにちは”と書き込んだ例)に言葉を書き込んで、InputBox上のOKボタンを押しましょう。マーリンが書き込んだ言葉を読み上げてくれます。

 

さて、プログラムを見ていきましょう。

最初の命令は、 data= InputBox("言葉を入力して")  です。

InputBoxという命令は画面に入力ボックスを表示します。InputBoxの後ろの ("言葉を入力して") は、InputBox上に表示される文字です。

この命令は、キャラクターを動かす命令と少し違うことに気づくと思います。そう、=という記号です。これは算数で3+4=7なんて時の=(等しい)と意味が違います。本当は、

hensu<= inputと書くべくもので、“右辺の結果を左辺に書き込みなさい”という意味です。矢印の左側の矢尻マークを取り去ったものです。

言い換えると、入力されたデータをコンピュータ内のdataという名の変数(黒板)に書き込んでください、という意味です。この命令では、皆さんがデータを入力しOKボタンを押さないと次の命令に進みません。

次の命令は、 Merlin.Speak data です。これはマーリンに話させる命令です。Speakは第1回の時のSpeakと同じです。でもSpeakの右側が以前は“こんにちわ”だったのに対し、今回は変数名になっています。そう、Speakの後には、発声させたい言葉を“”で囲んでかいてもよいし、変数名で書いてもよいということです。変数名を指定した場合は変数名で指定される変数(黒板)に書かれているデータを読み上げます。

 

3−2 入力命令

InputBox (“…”)  という命令は、コンピュータにデータを入力する命令です。データとは、“数値”または、“文字列(言葉)”を意味します。

InputBox命令の書き方は、データの種類(“言葉”か“数値”)によって少し書き方が異なります。

 

(1)“言葉”を入力する場合

変数=InputBox (”言葉を入力”)

という形の命令にします。これにより、図3.1の記入部に書いた言葉が変数に書き込まれます。プログラム3.1( data= InputBox("言葉を入力してください") )は、変数dataに“言葉”を入力する命令でした。

 

(2)“数値”を入力する場合

変数= InputBox (”数値を入力”) + 0

というように、InputBox(“…”) の後ろに + 0 を付けて下さい。

(コメント: +0を付けなくても問題ない場合が多いのですが、まれに、付けないとうまくいかない場合がありますので、念のため付けるよう習慣付けて下さい)

 

それでは、InputBoxで指定した位置に、マーリンを動かしてみましょう。マーリンの縦方向の位置は200に固定し、横方向の位置だけをInputBoxで指定することにします。

(ヒント:今までMerlin.MoveToの右には移動する場所を数値で書いてきましたが、変数で指定することもできます。例えばMerlin.MoveTo a,bでは、aという変数に書かれている横方向の位置とbという変数に書かれている縦方向の位置に移動します)

‘===プログラム3.2

Set Agent1= WScript.CreateObject("Agent.Control.1", "Merlin_")

Agent1.Connected= True

Agent1.Characters.Load "Merlin","Merlin.acs"

Set Merlin= Agent1.Characters("Merlin")

Merlin.Show

ここから下がプログラム本体

yoko= InputBox("横方向の位置を数値で入力して下さい")+0

Merlin.MoveTo  yoko,200

MsgBox yoko

‘===

 

(注)InputBox (“…”)( )内に書かれた文字は図3.1のデータ記入部の上に表示されますが、ここには色々なことが書けます。この書き方については3-4節のMsgBoxを参考にして下さい。

 

3−3 変数

突然、変数とかいう変なやつが出てきて戸惑ったかもしれません。ここで変数の特性を少し整理してみます。

     変数には名前を付けて区別します。名前は、どんな名前でかまいませんが、英数字を使います(日本語は駄目)。

     変数名は大文字小文字の区別がありません。ABCという変数もabcという変数も同じ変数になってしまいますので注意しましょう。

     変数は、いくつでも使えます。

     1つの変数には1つのデータが書き込まれます。(データは数値でも、文字列でもかまいません)

     変数にデータを書き込む時は、すでにデータが書き込んである場合、古いデータの上に新しいデータを上書きします。即ち、以前のデータは消えてしまいます。

     変数にデータを書き込むことを、正式には“代入する”と言います。

 

 

それでは、変数にデータを2回書くと、最初のデータが消えてしまうことを試してみましょう。

(準備)プログラム3.1で、

data= InputBox("言葉を入力して")

の後に、

data= InputBox("数を入力して")+0

という命令を入れて実行してみましょう。

こうすると、dataという変数に2回データ入力を行いますが、マーリンがしゃべるのは、最後に入力した数です。すなわち、最初に入力して変数dataに書き込まれた言葉は、2回目に書き込まれた数値で消されてしまいます。

 

3−4 出力命令

出力命令は、Speak(音声)とMsgBox(文字)の2つです。

(1)   音声出力Speak

今まで、Merlin.Speakは何度も出てきたので大体様子が分かっていると思います。ここでは、データを一つだけでなく沢山しゃべらせる方法を示します。

プログラム3.1でマーリンに語らせる命令は Merlin.Speak data です。この場合、単にdataに書かれている数を読み上げて終わりです。そこで、もう少し親切に、

“結果は〜です“と言わせましょう。この場合Speak命令は次のようにします。

Merlin.Speak “結果は” & data & “です

この命令を見れば分かるとおり、言葉は””の間に書き、変数は変数名を””を使わないで書きます。また、言葉と変数をつなげてしゃべらせるには&でつなぎます。

(注)数がつながっていると(例えば34)ひとつの数(34なら“さんじゅうよん”)と読みます。これを二つの数“さんよん”と読ませたい時は、数の間に&” “を入れます。

 

(2)   文字出力MsgBox

計算結果などを皆さんに伝えるのに、Speakを使って声で伝える方法もありますが、文字で表示した方が間違いがなくて便利です。コンピュータの出力を文字で表示するためにメッセージボックス(MsgBox:図1.1)を使います。

 

MsgBoxの使い方は既に出てきました。MsgBoxに複数のことを表示する方法は、Speakと同様で&でつないでいきます。上の例で言えば、

MsgBox “結果は” & data & “です

となります。文字表示の場合、文が長くなると改行して2行にしたい場合がでてきます。その場合は、改行のための記号“&Chr(13) & Chr(10)”を入れます。上の例で“結果は”で改行するには、

MsgBox “結果は” & Chr(13) & Chr(10)& data & “です

とします。

 

ちなみに、InputBox(”…”)に入る言葉もMsgBoxに書かれる場合と同様に、変数や改行が行えます。

 

 

(問題3.1)マーリンを指定した位置に動かそう。

Step1:変数yokoInputBoxで数値入力を行う。

Step2:変数tateInputBoxで数値入力を行う。

Step3: Speakで“〜〜へ移動します”と言わせ、その位置に移動する。

a31.vbs

 

(問題3.2)次の処理を行うプログラムを書こう。

Step1:変数aInputBoxで数値入力を行う。

Step2: Speakで“変数aに書かれている数は〜です”と言わせる。

Step3:変数bInputBoxで数値入力を行う。

Step4: Speakで“変数bに書かれている数は〜です”と言わせる。

Step3:メッセージボックスに“変数aは〜”で改行し“変数bは〜です”と書かせる。

a32.vbs