第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:変数yokoにInputBoxで数値入力を行う。
Step2:変数tateにInputBoxで数値入力を行う。
Step3: Speakで“〜〜へ移動します”と言わせ、その位置に移動する。
答a31.vbs
(問題3.2)次の処理を行うプログラムを書こう。
Step1:変数aにInputBoxで数値入力を行う。
Step2: Speakで“変数aに書かれている数は〜です”と言わせる。
Step3:変数bにInputBoxで数値入力を行う。
Step4: Speakで“変数bに書かれている数は〜です”と言わせる。
Step3:メッセージボックスに“変数aは〜”で改行し“変数bは〜です”と書かせる。
答a32.vbs