第1回 プログラムを始めよう「4.Hello,world!を改造しよう」

1−4 Hello,world!を改造しよう

 Hello,world!を、もう少しアプリケーションらしくするために、何か良いアイディアを考えてみましょう。
ということで、次に考えたのは「画面上のボタンをタップすると、Hello,world!が表示される」というアプリケーションです。
「おぉ!多少は、プログラムっぽくなった」という気がしませんか?

「画面上のボタンをタップすると、Hello,world!が表示される」というのは、1つのルールでもあり、目標でもありますね。このようなルールのことを「仕様」と言います。
例えば、このアプリケーションを完成しさせたとき「Hello,Good-bye!って表示されんじゃないか!」と怒る人に対して、「仕様外です」と答える事のできるあの「仕様」です。
仕様は、作成するアプリケーションの動作の範囲や結果などをまとめたもの、と言っても良いでしょう。

早速、仕様に注目して下さい。仕様では「××したら○○する」という言い方をしていますが、これは、Windowsのアプリケーションでも良く見かける動作ですね。
「スタートをクリックしたらメニューがでる」「印刷ボタンを押したら印刷される」と言うように「××したら○○する」という構文に基づいた動作が多く出てきますが、この「××したら」という何らかの"きっかけ"を「イベント」と呼んでいます。イベントによって何らかの動作が引き起こされるので、このようなプログラミングを「イベント起動型」または「イベントドリブン型」と言います。
Windows上で開発するアプリケーションは、イベントドリブン型のものがほとんどです。

そして、NS Basicもイベントドリブンな開発です。
つまり、何らかのイベントを発生するオブジェクトを画面上に配置する必要があるわけです。これは仕様どおり「ボタン」がいいでしょう。
ボタン(Button)は[OK]と書かれたツールで、配置すると[?Button]というボタンが作成されますが、ご存知の通り、タップされるオブジェクトです。これは、タップされるとイベントを発生させる機能を持っています。
先ほどのプロジェクトにそのままボタンを追加すればよいですので、適当にボタンを配置してください。次に、右クリックでプロパティを表示してみましょう。
プロパティ表示は、ラベルと同じようなプロパティ設定画面が表示されますので、Labelプロパティを[PHSH]とかにしてみましょう。 ここにもLabelプロパティがありますね。実は、このLabelというプロパティは、予め何か表示用の文字列を置くためのプロパティで、様々なオブジェクトが持っています。BASIC上では、同じ働きのプロパティは同じ名前になっている、と覚えておくと良いでしょう。
ちなみに、VBAだと、Captionという言葉が使われます。
この場合、ボタンに「OK」という文字を表示させる訳ですから、Labelプロパティを使います。

    

次は、イベントを処理します。つまり、ボタンをタップしたらHello,world!を表示するところですね。
配置したボタンをダブルクリックするか、右クリックで[View Code]を選択、クリックしてください。
このような画面が表示されましたね。なんだか、文字を入力するようです。(これは、Ver.1.10のものなので、付録バージョンやその他のバージョンでは画面の構成が違うかも知れません。また、[Show Code]のバージョンもあります。)

    

仕様の「ボタンをタップしたら」という言葉は「ボタンをタップするイベントが発生したら」と言い換えることができますが、そのイベントが発生した時、いま表示されている部分が"呼び出されて"処理される仕組みになっています。
"呼び出される"って何?ということですが、現在表示されている所に「Hello,world!と表示する」処理を書いておき、それを呼び出す、と言うことです。そして、この中にはBASICの「命令語」でその処理や動作を書きこみます。
命令語(コマンド)の集まりを、コードと呼び、この画面は「コードウィンドウ」と言います。コマンドを書きこむことを難しく言うと「コードを記述する」になります。
やっと、登場したBASICですが、そのコマンドは英単語が基本になっていることが大きな特徴です。
英単語ですので、ある程度、どんな働きをするのか理解しやすい点が、初心者向きと言われる理由でしょうが、そうは言っても「あんたは機械か!」と思うくらい文法はしっかりチェックしますので、油断はできません。

画面に文字を表示するコマンドに何があるだろう、と思ってハンドブックを眺めてみますと、次のようなコマンドを発見しました。

  MsgBox ステートメント
 MSGBOX msg as String
 説明
 ディスプレイ画面上の箱に文字列msgを表示し、プログラムを継続する前にユーザーの応答を待ちます。
 文字列の最大文字数は185です。ニューライン(改行)の挿入はchr(10)を使用してください。
 例
 MsgBox "The last appointment was dated " + lastDate
これはMessage Box の略で、画面に「処理が完了しました」とか表示するアレです。
説明は難しく書いてありますが、確かに[OK]をクリックしないと、次に進みませんから「継続する前に応答を待って」いますね。

後ろについている msg as String ですが、これは「Stringとしてのmsg」、Stringは「文字列」を表しますが、つまり何らかの文字を指定しなさい、ということを言っています。
ちょっと難しくなってきましたが、(例)を参項に使い方が推定できるのではないでしょうか?
サンプルを真似してみると・・・

   msgbox "Hello,world!"

とすれば良いのです。NS Basicでは、コマンドの大文字小文字を区別しませんので、MsgBoxでもMSGBOXでも構いません。
ここで1つルールですが、文字列は""で囲む、ということです。理由は簡単で、どこまでがコマンドでどこまでが表示すべき文字列か区別がつかないからです。

そして、このコマンドは、sub xxx から end subの間に入れます。
sub〜end subで、ひとつの処理単位を表しますが、これは、ボタンのタップイベントが発生した時、呼び出される処理の始め〜処理の終わりを表しています。なので、この間にそのイベントが発生した時の処理をBASICコマンドで記述すれば良いのです。
では、入力したらコードウィンドウを閉じて、コンパイルしてみましょう。F5かGenerateでしたね。コンパイルできたら、早速、ダウンロードして試してみましょう。
もし、入力間違いをしていたら、コンパイル時にエラーメッセージが表示されますので、確認して修正しましょう。

   

        

いかがでしょうか?ボタンをタップしたらメッセージが表示されたでしょうか?
プログラム初心者ながら、2つの方法で"Hello,world!"を表示させることができましたが、2つ目の方法はよりアプリケーションらしくなりましたね。

ここまではよろしいでしょうか?簡単なことを難しく言っているような気もしますが・・・
とりあえず、もう少し、Hello,world!を続けてみたいと思います。

前へ     目次へ     次へ

第1回 プログラムを始めよう「4.Hello,world!を改造しよう」