-------------------------------
 道楽としての9Bプログラミング
   〜 文字表示とのたはむれ (2) 〜
-------------------------------


◆ 前回の続き ◆

前回、文字表示のサンプルとして、こんなプログラムを使用しました。

REM 944BASIC 'もうちょっとハデに'
CLS
FONT 96

GCURSOR 60,60
REM 赤
COLORFG 255,0,0
PRINT '文字!!'

GCURSOR 70,70
REM 緑
COLORFG 0,255,0
PRINT '文字!!'

GCURSOR 80,80
REM 青
COLORFG 0,0,255
PRINT '文字!!'

KEYWAIT
END

今回は変数を使って、このプログラムを書き直してみます。


◆ 変な数ではありません ◆   ↑目次

「はじめの一歩を踏みだす前に」というページでも説明しましたが、変数は数や文字を書き留めておくメモ帳の紙や、付箋紙なんかと似た感じのものです。

たとえば、家族の誰かや会社の同僚に電話がかかってきたとしましょう。その電話を受けたあなたは、用件を聞きます。もちろん、頭の中にこれを記憶しておいてもよいのですが、メモに記しておけば後から思い出すのに苦労しませんし、何なら食卓なり同僚の机の上にそのメモを置いておくことだってできます。

このように、データは何か「器」に入れることで扱いやすくなります。プログラムでは、数や文字などのデータを、変数に入れて扱いやすくしているのです。

では、上のサンプルを、変数を使って書き換えてみましょう。
※変更した箇所を太字で示しています。

REM 944BASIC 'もうちょっとハデに'
CLS
FONT 96

A='文字!!'

GCURSOR 60,60
REM 赤
COLORFG 255,0,0
PRINT A

GCURSOR 70,70
REM 緑
COLORFG 0,255,0
PRINT A

GCURSOR 80,80
REM 青
COLORFG 0,0,255
PRINT A

KEYWAIT
END

前回のプログラムから変更したのは、次の箇所です。

A='文字!!'
変数を使用しているのは、まさにここです。

Aというのが変数の名前です。Aとラベルが貼られたメモ帳や付箋紙をイメージしてもらえばよいでしょう。
この名前はAでなく、MOJIやSTR_TMP1などとしてもかまいません。ただし、9Bの命令ですでに使われている名前や、数字で始まる名前は付けられません。

次の=は、変数に内容を入れるための記号です(ちなみに、この手の記号を演算子といいます)。

残りの'文字!!'が変数に入れる内容です。' '記号は、前回PRINTで説明したように、文字であることを示すために付ける記号です。

・・・とまあ、細かく説明するとこうなるのですが、= を「は」と読めばだいたい意味はわかりますね。「変数 A は、'文字!!'」と命令しているわけです。

PRINT A
PRINTに続くAは、変数Aを表します。したがって、変数Aの中身である「文字!!」が表示されます。「A」という文字が表示されるわけではありません。

ところで、「A」という文字を表示するにはどうすればよいでしょう?
・・・簡単ですね。文字を表すには ' ' を使う。つまり、PRINT 'A' とすればよいことになります。

--

これの何が便利? と思う方がいるかもしれませんが、たとえば「文字!!」を「もじっ!!」に変えたくなったときのことを考えてみてください。元のプログラムでは3箇所変更する必要がありますが、変数を使って書き直したプログラムでは、1箇所の変更で済みます。

このように、何度も繰り返し使うようなデータ(数や文字)は、変数を使うと便利です。データを簡単に使い回しできるわけです。


◆ 数字も変数に ◆   ↑目次

数字も変数に入れてみましょう。

REM 944BASIC 'もうちょっとハデに'
CLS
FONT 96

A='文字!!'
X=60
Y=60

GCURSOR X,Y
REM 赤
COLORFG 255,0,0
PRINT A

GCURSOR X+10,Y+10
REM 緑
COLORFG 0,255,0
PRINT A

GCURSOR X+20,Y+20
REM 青
COLORFG 0,0,255
PRINT A

KEYWAIT
END

今度は、X、Yという変数に60という数を入れています。数の場合は、' 'などの記号は必要ありません。

GCURSOR X,Y 前回までは GCURSOR 60,60 のように、数字を直接使っていました。今回は変数を使っています。
この変数には数が入っているので、当然計算ができます。GCURSOR X+10,Y+10とすると、60+10=70を指定したことになります。

プログラムをこのように変更したことで、X,Yの内容を変えるだけで、簡単に表示位置を変えることができるようになりました。

このように、あるデータを変化させたり加工する場合にも、変数は便利です。上の例では、10や20を足して加工しているわけですね。


◆ 文字を入力してみる ◆   ↑目次

今回はまだ、新しいコマンドが出ていません。それではつまらん・・というわけで、文字入力のコマンドを紹介します。しっかり変数も使います。
(ファイル名: TSTOSTR3.BAS)

REM 944BASIC '文字入力'
CLS
FONT 96

GCURSOR 0,40
PRINT 'あなたのお名前は?'
PRINT '(名前を打ち終わったら[入力]キーを押してください)'

INPUT A,24,1

PRINT 'ふ〜ん、';
PRINT A;
PRINT 'さんかぁ。'

PRINT ' '
PRINT 'これからもよろしくお願いしますね。'
PRINT ' '
PRINT 'では、さようなら。'

KEYWAIT
END

このプログラムを実行すると、まず名前を尋ねるメッセージが表示されます。その下には赤いカーソルが表示され、文字を入力できる状態になります。名前をタイプして[入力]キーを押すと、ビミョーになれなれしく社交辞令を言われ、そそくさと終了します。

以下に、このプログラムで新しく出てきた命令(コマンド)について説明します。

INPUT A,24,1
ユーザーが文字を入力できるようにするコマンドです。

INPUT直後のAは変数です(もちろん変数名はAでなくてもかまいません)。ユーザーが入力した文字は、この変数に入ります。

次の24は、入力できる文字数です。この場合、半角文字で24文字まで入力できます。

最後の1は、入力ボードの文字種モードを指定します。下の図のように、左端のボタンから順に数字と対応しています。



なお、モードに0を指定すると、入力ボードで直前に使用した文字種が引き継がれます。

PRINT A;
以前にも説明したPRINTコマンドですが、末尾に;が付いているのが、これまでと違うところ。
通常、PRINTコマンドは、文字を表示した後で自動的に改行します。ところが、末尾に;を付けると、改行せず、そのまま横につなげて文字を表示します。

◆ まとめと練習問題 ◆

今回取り上げたコマンドは、次のとおりです。

REM 944BASIC − 1番最初のお約束&タイトル
CLS − 画面全体の消去
LOCATE − 文字表示の位置指定(桁と行)
PRINT − 文字の表示
KEYWAIT − キー待ち
END − プログラムの終了
FONT − フォントの大きさ(種類)の指定
GCURSOR − 文字表示の位置指定(座標)
COLORFG − 文字などの色指定
REM − コメント

これだけコマンドを覚えれば、文字表示だけでもそれなりに遊ぶことができます。
次の練習問題を試しにやってみてください。

(練習問題)
文字の表示方法を覚えたので、ちょっとした文章を表示するプログラムを作ってみることにしました。文章の書き出しだけを表示する、こんなプログラムです。


・・・これではいまいちなので、次のように表示するプログラムに書き直してください。

1. 何かキーを押すたびに、1行ずつ文章を表示する。
2. もう少し見やすい画面位置に文章を表示する。

なお、最後の行の「・・・・・・」は、各自で適切なオチに書き換えるように。

では、次回まで、さようなら。

--

このページの文章やプログラムに誤りや問題点がある場合は、遠慮なくご指摘ください

最後に一応、断り書きを。

[お断り]
このページの文章は、加工・転載を自由に行ってもらってかまいません。

このページに掲載したプログラムを使用したことで、どのような損害または障害が発生したとしても、筆者は一切その責任を負いません。 ご使用は、あくまで自己責任で行ってください。


 戻 る