AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
画面表示BASIC(10)
画面に文字を表示するのは「PRINT」文。"現在"のカーソル場所から表示し、画面下まで行くと画面がスクロール(流れて表示)します。これは、
10 PRINT "***"
20 PRINT "   ◇◇◇"
30 GOTO 10
のようなプログラムを実行すれば直ぐに分かります。そして画面をクリアする(綺麗にする)のが「CLS」文。画面上の文字をクリアして、一番上にカーソルを移動します。通常、スクロールするのは画面全部ですが、これをある特定の行だけスクロールさせる、というのが「CONSOLE」文。例えば、
10 CONSOLE 10,5:CLS
20 PRINT "***"
30 PRINT "   ◇◇◇"
40 GOTO 20
を実行すると、10行目(0行から開始するので上から数えると11行目)から5行分だけ、画面スクロールして、他の部分は止まったままになります。
 
次に、文字を点滅したり反転表示する事が出来ます。これが白黒モード(CONSOLE ,,,0)時の「COLOR」文。以下のプログラムを実行してみて下さい。
10 CONSOLE 0,24,,0
20 COLOR 0:PRINT "通常の表示"
30 COLOR 1:PRINT "シークレット(表示されません)"
40 COLOR 2:PRINT "ブリンク(点滅)表示"
50 COLOR 3:PRINT "シークレット"
60 COLOR 4:PRINT "リバース(反転)表示"
70 COLOR 5:PRINT "リバース&シークレット"
80 COLOR 6:PRINT "リバース&ブリンク"
90 COLOR 7:PRINT "リバース&シークレット"
カラーモード(CONSOLE ,,,1)時は、「COLOR」文は色指定を行います。
10 CONSOLE 0,24,,1
20 COLOR 0:PRINT "黒色表示(黒背景で見えない)"
30 COLOR 1:PRINT "青色"
40 COLOR 2:PRINT "赤色"
50 COLOR 3:PRINT "紫色"
60 COLOR 4:PRINT "緑色"
70 COLOR 5:PRINT "水色"
80 COLOR 6:PRINT "黄色"
90 COLOR 7:PRINT "白色"
という具合です。なお、BASIC標準機能では、青色点滅や黄色反転等は出来ません。こういった事をしたい場合には、テキストVRAM操作をせねばならず、それなりの知識が必要になってきます。
 
なお、画面下のファンクションキー表示が邪魔であれば、「CONSOLE ,,0」とするとそれが消えて25行使えるようになります。
 
さて、PRINT文ですが、もう少し見てみましょう。
10 PRINT "あいうえお"
20 PRINT "かきくけこ"
を実行すると、
あいうえお
かきくけこ
と表示されます。次に、
10 PRINT "あいうえお";
20 PRINT "かきくけこ"
とセミコロン「;」を付けると、
あいうえおかきくけこ
と改行されずにすぐ後ろに次の文字が表示されます。同様に、
10 PRINT "あいうえお";"かきくけこ"
20 PRINT "さしすせそ"
と連続して書く事も出来ます。
あいうえおかきくけこ
さしすせそ
と表示されます。
 
文字だけではなく、数値を指定する事も出来ます。
10 PRINT 1;2;3
20 PRINT 100
30 PRINT -123.45
1 2 3
100
-123.45
数値の場合には後ろに空白が付きます。正の値の場合には数値の前に空白が付きます。セミコロン「;」の代わりにカンマ「,」を付けると、
10 PRINT 1,2,3
20 PRINT 100
1       2      3
100
のように14文字分割される定められた場所に表示されます。表示する内容によって表示のコントロールがややこしくなりますので余り利用されません。
 
「PRINT」文は、文字そのもの、数値そのもの、だけでなく、変数の内容を表示する事が出来ます。
10 A=10:B=20:C=30
20 S$="あいうえお"
30 PRINT A
40 PRINT B
50 PRINT C
60 PRINT S$
10
20
30
あいうえお
10 A=10:B=20:C=30
20 S$="あいうえお"
30 PRINT A;
40 PRINT B;C;S$
10 20 30 あいうえお
10 A=10:B=20:C=30
20 S$="あいうえお"
30 PRINT A;B;S$;
40 PRINT C
10 20 あいうえお 30
 
勿論、数値そのもの(数値定数)、文字そのもの(文字列定数)、変数、を混在させる事も出来ます。
10 A=10:B=20
20 PRINT "A=";A
30 PRINT "B=";B
A= 10
B= 20
 
更に、
10 A=10:B=20
20 PRINT "A=";A
30 PRINT "B=";B
40 PRINT "A+B=";A+B
A= 10
B= 20
A+B= 30
というように式を書く事も出来ますが、ややこしくなりますしプログラムも見難くなりますのでなるべく控えましょう。
 
空白を付けて表示したい場合、
PRINT "ABC     DEF"
のように直接空白を付けるのも良いですが、半角空白を何個も打ち込むのが面倒な場合は、
PRINT "ABC";SPC(10);"DEF"
と記述する事が出来ます。SPC(20)とすれば、半角空白が20個表示されます。これと似たものに、
PRINT "ABC";TAB(10);"DEF"
と指定するTAB関数がありますが、これはその行の先頭位置から何個目まで、という指定方法になります。他の行と桁数を合わせる時などに利用出来るでしょう。
なお、SPC関数もTAB関数も、PRINT文・LPRINT文(プリンタへの文字出力)の中でしか使えません。
 
 
更に、C言語の「printf("%5d",a);」のように、これだけの桁数で表示してくれ!という表示方法もあります。それが「PRINT USING」です。まずは、文字関係から。
10 A$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
20 PRINT USING "!";A$
30 PRINT USING "& &";A$
40 PRINT USING "@";A$
A
ABC
ABCDEFGHIJKLMNOPQRSTUVWXYZ
「!」は先頭の1文字だけを表示、「&(n個の空白)&」は文字の先頭から(n+2)文字だけを表示、「@」は文字全てを表示、となっています。次に数値関係。
10 A=10:B=100:C=1000
20 PRINT USING "######";A
30 PRINT USING "######";B
40 PRINT USING "######";C
  10
  100
 1000
10 A=123456
20 PRINT USING "###,###";A
123,456
10 A=1.23456:B=5.6789
20 PRINT USING "###.##";A
30 PRINT USING "###.##";B
 1.23
 5.68
 
しかし、"現在"の場所に文字が書かれるというのは、画面をぴちっと綺麗に書きたいという場合に、少々困った事になるでしょう。画面のここに、こういう文字が書きたい!という指定が出来ないとまずい場合も出てきます。なお、"現在"の文字位置(カーソル位置)を得るための関数はBASICに備わっています。行位置を得るのが「CSRLIN」関数で、桁位置を得るのが「POS」関数です。
10 X=POS(0)
20 Y=CSRLIN
30 PRINT "X=";X
40 PRINT "Y=";Y
しかし上記のように文字表示をした直後に"現在"のカーソル位置は変わってしまいますので、余り使われる事も無いでしょう。
 
それはさておき、任意の位置に文字を書きたい!という時に利用するのが「LOCATE」文です。画面は「WIDTH 80,25」の場合、横80文字・縦25文字の文字を表示させる事が出来ます(ファンクションキー表示がオンの場合は、縦24文字)。画面の左上を(0,0)とする座標系で「LOCATE X,Y」という具合で指定します。
(0,0)        (79,0)
 
 
 
 
 
 
(0,24)       (79,24)

10 WIDTH 80,25:CONSOLE 0,25,0,1,0:CLS
20 LOCATE 0,0:PRINT "A"
30 LOCATE 1,1:PRINT "B"
40 LOCATE 10,2:PRINT "CDE"
50 PRINT "F"
を実行すると、以下のように表示されます。
A
B
     CDE
F
 
 
 
 

LOCATE文は、CONSOLE文で画面スクロール範囲を狭くしていたとしても、その範囲外の場所にも文字を書く事が出来ます。但し、"現在"のカーソル位置は、上記のように、表示した文字の後ろになりますので注意が必要です。また、画面一番下の行で「LOCATE 0,24:PRINT "A"」と指定すると、文字「A」を表示した後改行され、画面全体がスクロールされてしまいます。一番下の行に文字を書きたい場合には必ず、「LOCATE 0,24:PRINT "A";」のようにして改行させないようにしましょう。但し、「LOCATE 79,24:PRINT "A";」の場合は、画面全体がスクロールしてしまいます。
 
LOCATE文にはもう1つ、機能があります。"現在"のカーソル位置を示す、点滅する四角、これを表示しないようにする事が出来ます。「LOCATE ,,0」とします。これをすると、カーソルがどこにあるのか分からなくなりますので、プログラミング時には、「LOCATE ,,1」としてカーソルを表示するようにしておきましょう。
バッチファイル
BASIC
 1 2 3 4 5
 6 7 8 9 A
 B C D E F
 G H I J
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.