パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)

BASIC超基本1(30分でBASIC−−基本8語)(互換)

====================================================================================
・行番号、変数、代入
・Print / Locate / Width / Input / If then else / Goto / Inkey$ /For Next /
BASICの詳細については、お使いのBASICのマニュアルや、HELP,その他BASIC
の一般書籍でお調べいただくとして、まったくの初心者でもBASICで手っ取り早く簡単なプログラム
ができるように、超基本の8命令を厳選してまとめてみました。
なお、使うBASICはWINDOWS上のフリーソフトである、潮田氏による
N88互換BASIC for Winを念頭においてますが、他のBASICでもほぼ共通です。
====================================================================================

1 行番号、変数、代入

(1) 行番号
BASICプログラムは、先頭に行番号を記述します。行番号は1づつ増やしてもかまい
ませんが、たいていは10おきにつけます。(あとで、途中に追加しやすいようにという配慮)
実行時には、基本的に小さい行番号から実行されていきます。

(2) 変数と代入
変数は大きく分けて数値変数と文字変数があります。変数名の最後に$をつけると、
文字変数として扱われます。
A=5    Aは数値変数で Aの値は5
Q$="5"  Q$は文字変数でQ$は5という文字が入っている

上記の場合の = は等号ではなく、代入をあらわしています。すなわち、
Aに5を代入するという意味です。(BASICの場合、等号としても = を使うので注意
等号としての使用は IF 文の個所を参照)
従って、A = A+1 というのは、(元の)Aに1加えた値を(新しい)Aに代入するということ
になります。

では
10 A=3
20 A=A+2
30 PRINT A , B

というプログラム(PRINT文は下を参照。画面への表示の命令)で、A、Bはそれぞれいくつ
でしょうか。Aは5ですね。さて、Bはどうでしょう。いちども、Bに数値が代入されていません。
N88互換BASIC for Win では一度も数値の代入されていない変数には、初期値として0が
設定されます。(BASICの種類によって取り扱いが違うが、だいたい0が設定される)
従って、この場合

5      0

と画面に表示されます。
このように大方のBASICにおいては、未定義(初期値を与えてない)変数をいきなり使っても、0を初期値
として与えてくれます。これはBASICのおおらかで、プログラムしやすい点ですが、反面ルーズとも言えます。
他の言語では、未定義の変数は全てエラーとしてペケにするものが多いです。


2 PRINT
なにはともあれ、画面に表示することが、一番の感心事ですよね。
PRINT 文で画面に表示します。

PRINT文 仕様
PRINT 式<数値>               (例) PRINT 4+5
PRINT 変数<数値変数、文字変数>    (例) PRINT A
PRINT "<文字列>"              (例) PRINT "HELLO"

もちろん、式、変数、文字列を組み合わせて、使うことができます。
その際、複数のデータの区切りとして , (コロン) ;(セミコロン)を使います
(例)PRINT "金額"; A*100; "円"

 

以下の2つのサンプルプログラムがどう表示されるか、実験してみて下さい。

Sample-1
10 A=5
20 PRINT A         

結果画面は下図のような感じ

5


SAMPLE-2
10 PRINT "HELLO"
20 PRINT "HELLO"
30 PRINT "HELLO","HELLO"     '区切りがコロンです(コロンの場合空白が出力されます)
40 PRINT "HELLO";"HELLO"     '区切りがセミコロンです (セミコロンでは、続けて文字が出力)

結果画面は下図のような感じ

HELLO
HELLO
HELLO            HELLO
HELLOHELLO


3 LOCATE, WIDTH

画面上の表示する座標を指定するのが LOCATE文です。

LOCATE文 仕様
LOCATE x座標<数値、変数、式>, y座標<数値、変数、式>  

画面は 横*縦で、40*20、40*25、80*20、80*25の4タイプがあり
これはWIDTH で指定します。 (例)WIDTH 80, 20
80*20の指定の時は、左上が(0、0)、 右下が(79、19)という座標になります。
(例)

(0、0).......................     .......(79、0)
.........


...........                      .....(79、19)


SAMPLE-3は画面のど真ん中に Aという文字を表示します。

SAMPLE-3
10 WIDTH 80,20         
20 LOCATE 39,9  
30 PRINT "A"

これで、好きな位置に表示できるようになりました。


4 INPUT

ユーザーに何か数値を入力させたい時に使うのがINPUTです。

INPUT文 仕様
INPUT ["<文字列> " {,|;}] 変数 ,[変数]   変数はいくつでもOKです。
[   ]は省略可  { | }はどちらか選択

INPUT文が実行されると、(文字列)を表示して、キーボードからの入力待ちになります。

SAMPLE-4は身長と体重を入力させ、そのまま画面に再度表示するプログラムです。

SAMPLE-4
10 INPUT"身長と体重を入れて下さい";H,W       
20 PRINT"身長";H;"体重";W

SAMPLE-5は半径を入力し、円の面積を出すプログラム

SAMPLE-5
10 INPUT "半径";R
20 MENSEKI=R*R*3.14
30 PRINT "面積";MENSEKI         

 

5 IF .... THEN ...... ELSE
論理式の条件判定をします。

IF文 仕様
IF 論理式 THEN  文  [ELSE 文 ]
ELSEは省略可能
論理式を判定し、論理式が真なら THEN を実行 、 偽なら ELSEを 実行します。


SAMPLE-6は入力した歳により、出力文をかえます。

SAMPLE-6
10 MYAGE=30
20 INPUT "あなたの歳を入れて下さい" ; YOUR
30 IF MYAGE>=YOUR THEN PRINT "私は同い歳か、年上" ELSE PRINT "私は年下"

 

6 GOTO
指定された行番号へジャンプさせます。 (例)  GOTO 200

SAMPLE-7は永遠に、0から9までの数字を画面の真ん中に表示し続けます

SAMPLE-7
10 WIDTH 80,20
20 X=0
30 LOCATE 39,9
40 PRINT X
50 X=X+1
60 IF X>9 THEN X=0         
70 GOTO 30


7 INKEY$
INPUT文は、キーボードからの入力待ちとなり、リターンキーが押されるまで、そこで
プログラムは実行待機となりましたが、これではシューティングゲームはできません。
それに対しINKEY$はキー入力待ちをせず、その時押されているキーの文字を得ます。
もし何もキーが押されていなければ、INKEY$の値はヌルストリング(空文字)となります。

SAMPLE-7は永遠に止まらないプログラムとなっていますが、これでは困ります。
1 のキーが押されたら終了するようにしたのが、SAMPLE-8です。

SAMPLE-8
10 WIDTH 80,20
20 X=0
30 LOCATE 39,9
40 PRINT X
50 X=X+1
60 IF X>9 THEN X=0
70 A$=INKEY$               'ここで押されているキーを取得しA$に代入  
80 IF A$="1" THEN GOTO 90 ELSE GOTO 30      'A$の判定 1なら 90へ
90 END

ここまで、使えれば、簡単なプログラムならいろいろ組めるようになるはずです。

8 FOR ....... NEXT
コンピューターに一番やらせたいのは、何といっても単純な繰り返し作業です。(生身の人間が一番やりたく
ないことです。)そのための命令が FOR........ NEXTです

FOR NEXT 仕様
FOR 変数=初期値<数値、変数> TO 終値<数値、変数>

NEXT [変数]
[  ]は省略可

変数が終値になるまでFOR NEXTのループを繰り返します。
NEXTのところで変数は1づつ増加されます。


SAMPLE-9、SAMPLE-10はそれぞれ、1から入力された数までの総和(1+2+3+....)
を求めるプログラムです。SAMPLE-9はFOR NEXTを使わない場合です。

SAMPLE-9
10 INPUT "総和の終値を入力" ; E
20 TOTAL=0 : X=1
30 TOTAL=TOTAL+X
40 X=X+1
50 IF X>E THEN GOTO 60 ELSE GOTO 30   
60 PRINT TOTAL

 

SAMPLE-10
10 INPUT "総和の終値を入力" ; E  
20 TOTAL=0
30 FOR X=1 TO E
40 TOTAL=TOTAL+X          
50 NEXT X
60 PRINT TOTAL

 FOR ... NEXTにはその仕様をしっかり把握しておかないと、思いもかけない落とし穴にはまることが
あります。FORループの落とし穴もあわせて参照下さい。

9 補足
以上の命令でBASICのプログラムは簡単なものならそこそこ、組めるはずです。
あとは、基本命令はGOSUB、 RETURN (サブルーチンにとばして、戻る)
CLS(画面を消去する)とかぐらいでしょうか。
そこらへんは、BASIC超基本(10語でシューティングゲームを作る)を参考にして、
研究してみて下さい。

 

TOP PAGE >Basic活用研究目次