「パソコン利用技術」Basicコース
Basicコマンドの説明とプログラム
目次
第1部 導入編
- BASICの起動と終了
- プログラムを打ってみよう
- 計算をしてみよう
- ファイルを使ってみよう
- グラフを書いてみよう
- Yes/Noの判断を利用してみよう
- 他のところへ行って下さい
- くり返しをおこなう
第2部 コマンド解説編
- コマンド
- グラフィック画面制御
- 一般命令
- テキスト画面制御
- 算術関数
- 1バイト系文字列操作
- ファイル制御
- I/Oポート入出力制御
- エラー制御
- その他の制御
第3部 演習編
演習問題を作っています。
第4部 演習解答編
練習問題の解答を作っています。公開は11月12日です。
第2部 コマンド解説編
- 第2部では、n88basic のリファレンスマニュアルに記載されていることをもとに、要約して掲載します。全文を必要な方は、リファレンスマニュアルをお読み下さい。
1.コマンド
- auto
- 機能:行番号を自動的に発生します
- 書式:auto [<行番号>][,<増分>]
- 文例:auto 100,5
- delete
- 機能:プログラムの部分削除を行います
- 書式:delete <始点行番号>[-<終点行番号>]
- 文例:delete 1050
- edit
- 機能:指定された行を画面上に表示し、以降[ROLL UP]キー、[ROLL DOWN]キーなどによるプログラム編集を可能にします
- 書式:edit <行番号>
- 文例:edit 30
edit .
- list
- 機能:メモリ上にあるプログラムの全部、または一部を表示します
- 書式:list <始点行番号>[-<終点行番号>]
- 文例:list .
list 100-200
- load
- 機能:プログラムをメモリにロードします
- 書式:load <ファイルディスクリプタ>[,r]
- 文例:load "b:demo",r
load "com:n82nn"
- renum
- 機能:プログラムの行番号を新しくつけ直します
- 書式:renum [<新行番号>][,<旧行番号>][,<増分>]
- 文例:renum 1000,10
- run
- 機能:メモリにあるプログラムの実行を開始します。また、ディスクからプログラムをメモリにロードし、そのプログラムを実行します
- 書式:run [<行番号>]
run <ファイルディスクリプタ>[,r]
- 文例:run
run
- save
- 機能:メモリにあるBASICプログラムをファイルにセーブ(保存)します
- 書式:save <ファイルディスクリプタ>[,a]
- 文例:save "b:myprog",a
- tron/troff
- 機能:プログラムの実行状態を追跡します
- 書式:tron
troff
- 文例:tron
troff
- files/lfiles
- 機能:ディスクに入っているファイルの名前、サイズ、作成日付などの一覧を出力します
- 書式:files [<ファイルディスクリプタ>]
lfiles [<ファイルディスクリプタ>]
- 文例:files
lfiles "b:"
files "document.txt"
lfiles "a:\source\*.bas"
- kill
- 機能:ディスク上のファイルを削除します
- 書式:kill <ファイルディスクリプタ>
- 文例:kill "b:\data1"
kill "\basicc\data1"
2.グラフィック画面制御
- circle
- 機能:円、楕円を描きます
- 書式:circle (Wx, Wy) , <半径> [,<パレット番号1>][,<開始角度>][,<終了角度>][,<比率>][,f [,<パレット番号2>]]
- 文例:circle (80,80),40,4,0,6.28
circle step (40,-20),30,,,,, f,tile$
- cls
- 機能:現在アクティブな画面をクリアーします
- 書式:cls [<機能>]
- 文例:cls 2
- color
- 書式:color [<ファンクションコード>][,<バックグラウンドカラー>][,<ボーダーカラー>][,<フォアグラウンドカラー>][,<パレットモード>]
- 文例:color 7, 0, 0, 7
- line
- 機能:指定した2点間に直線を描きます(パラメータ指定により四角形も描きます)
- 書式:line [(Wx1,Wy1)]-(Wx2,Wy2)[,<パレット番号1>][,<b/bf>][,<ラインスタイル>]
- 文例:line (100,100)-(135,100),7,,&hf99f
line -step(30,30),7,bf,7
- paint
- 機能:指定された境界色で囲まれた領域を、指定された色でぬります
- 書式:paint (Wx,Wy)[,<領域色>][,<境界色>]
- 文例:paint (-50,120),3,4
paint step (10,10),6
- pset
- 機能:画面上の任意の座標にドットを表示します
- 書式:pset (Wx,Wy)[,<パレット番号>]
- 文例:pset (100,100),4
- screen
- 機能:グラフィック画面に対して種々のモードを設定します
- 書式:screen [<画面モード>][,<画面スイッチ>][,<アクティブページ>][,<ディスプレイページ>]
- 文例:screen 1,0,0,7
- view
- 機能:ディスプレイ画面上での表示領域(ビューポート)を指定します
- 書式:view (Sx1,Sy1)-(Sx2,Sy2)[,<領域色>][,<境界色>]
- 文例:view (100,30)-(200,75),,7
- window
- 機能:ビューポートに表示するワールド座標系内の領域を指定します
- 書式:window (Wx1,Wy1)-(Wx2,Wy2)
- 文例:window (-300,-50)-(100,70)
3.一般命令
- data
- 機能:readで読み込まれる数値定数、文字定数を定義します
- 書式:data <定数>[,<定数> ...]
- 文例:data 1,cba,1465
- def fn
- 機能:利用者定義関数を指定します
- 書式:def fn<名前>[(<パラメータリスト>)]= <関数の定義式>
- 文例:def fna(x,y)=x*2+y*3
- defint/defsng/defdbl/defstr
- 機能:変数の型宣言を行います
- 書式:defint <文字の範囲>[,<文字の範囲> ...]
defsng <文字の範囲>[,<文字の範囲> ...]
defdbl <文字の範囲>[,<文字の範囲> ...]
defstr <文字の範囲>[,<文字の範囲> ...]
- 文例:defint a,k-l
defsng b
defdbl x-z
defstr l-n,q
- dim
- 機能:配列変数の要素の大きさを指定し、メモリ領域に割り当てます
- 書式:dim <変数名>(<添字の最大値>[,<添字の最大値> ...])[,<変数名>(<添字の最大値>[,<添字の最大値> ...])
- 文例:dim a(12,2),b$(3)
- end
- 機能:プログラムの終了を宣言します
- 書式:end
- 文例:end
- for .. to .. step 〜 next
- 機能:
- 書式:for <変数名>=<初期値> to <終値> [step <増分>]
〜
next
- 文例:for j=0 to 100 step 2
for k=10 0 step -1
〜
next k,j
- gosub
- 機能:サブルーチンを呼び出します
- 書式:gosub <行番号>
- 文例:gosub *sub1
gosub 550
- goto
- 機能:指定された行へジャンプし、そこからプログラムを実行します。
- 書式:goto <行番号>
- 文例:goto 500
goto *exit
- if .. then 〜 else
- 機能:論理式の条件判断を行います
- 書式:if <論理式> then <文/行番号> [else <文/行番号>]
- 文例:if a$="y" then *start else *exit
if ss then 200
- on .. gosub / on .. goto
- 機能:指定されたいずれかの行に分岐します
- 書式:on <式> gosub <行番号>[,<行番号> ...]
on <式> goto <行番号>[,<行番号> ...]
- 文例:on a gosub 100, 200, 300, 400
on a goto *entry1, *entry2, *entry3, *entry4
- option base
- 機能:配列の添字の最小値を指定します
- 書式:option base 0/1
- 文例:option base 1
- randomize
- 機能:新しい乱数系列を設定します
- 書式:randomize [<式>]
- 文例:randomize 230
- read
- 機能:dataで用意した数値や文字のデータを読み込み、変数に代入します
- 書式:read <変数>[,<数値> ...]
- 文例:read zip,addr$
- rem
- 機能:プログラムに注釈文を入れます
- 書式:rem [<注釈文>]
- 文例:rem *** Main-Program ***
- return
- 機能:サブルーチンまたは割り込み処理ルーチンを終了し、元のプログラムの実行を再開します
- 書式:return [<行番号>]
- 文例:return
return 200
- stop
- 機能:プログラムの実行を一時中断し、コマンドモードにもどります
- 書式:stop
- 文例:stop
- swap
- 機能:2つの変数の値を入れ換えます
- 書式:swap <変数>,<変数>
- 文例:swap a$,b$
- while 〜 wend
- 機能:while からwend までの区間中にある一連の文を、指定条件が満足されている間、繰り返し実行します
- 書式:while<論理式>
〜
wend
- 文例:while j<=5
〜
wend
4.テキスト画面制御
- cls
- 機能:現在アクティブな画面をクリアーします
- 書式:cls [<機能>]
- 文例:cls 3
- color
- 機能:ディスプレー画面の各部の色およびグラフィック画面のパレットモードを指定します
- 書式:color [<ファンクションコード>][,<バックグラウンドカラー>][,<ボーダーカラー>][,<フォアグラウンドカラー>][,<パレットモード>]
- 文例:color 7, 0, 0, 7
- console
- 機能:テキスト画面モードの設定を行います
- 書式:console [<スクロール開始行>][,<スクロール行数>][,<ファンクション表示スイッチ>][,<カラー/白黒スイッチ>][,<キャラクターモード>]
- 文例:console 0,24,0,1
console ,,1,0
- locate
- 機能:テキスト画面のカーソルを指定位置へ移動します
- 書式:locate [<x>][,<y>][<カーソルスイッチ>]
- 文例:locate 10,10
locate ,,0
- print
- 機能:画面にデータを出力します
- 書式:print [<式>][,/;<式> ...][,/;]
- 文例:print "column=";x,"line=";y
- print using
- 機能:文字列、数値などのデータを編集し、画面に出力します
- 書式:print using <書式制御文字列>; <式>[,<式> ...][,/;]
- 文例:print using "####,."; a,b,c
5.算術関数
- abs
- 機能:絶対値を得ます
- 書式:abs(<数式>)
- 文例:b=abs(-2)
print abs(-1.00000001)
- atn
- 機能:逆正接(アークタンジェント)を得ます
- 書式:atn(<数式>)
- 文例:angle=atn(y/x)
print atn(-3.14159/2)
- cos
- 機能:余弦(コサイン)を得ます
- 書式:cos(<数式>)
- 文例:x=radius*cos(angle)
print cos(3.14159/4)
- exp
- 機能:e(自然対数の底)に対する指数関数の値を得ます
- 書式:exp (<数式>)
- 文例:e=exp(1)
print exp(a/2)
- fix
- 機能:数値の整数部を得ます
- 書式:fix (<数式>)
- 文例:x=fix(b/3)
- int
- 機能:小数点以下を切り捨てた整数値を得ます
- 書式:int (<数式>)
- 文例:print int(1.123)
a=int( rnd*255)
- log
- 機能:自然対数を得ます
- 書式:log (<数式>)
- 文例:print log(35/9)
la= log( x*y)
- rnd
- 機能:乱数を得ます
- 書式:rnd [(<数式>)]
- 文例:r=rnd
r=rnd(-3)
- sin
- 機能:正弦(サイン)を得ます
- 書式:sin(<数式>)
- 文例:x=radius*sin(angle)
print sin(-3.14159/2)
- sqr
- 機能:平方根を得ます
- 書式:sqr(<数式>)
- 文例:distance=sqr(x*x+y*y)
- tan
- 機能:正接(タンジェント)を得ます
- 書式:tan(<数式>)
- 文例:y=x*tan(angle)
6.1バイト系文字列操作
- mid$
- 機能:文字列の中から任意の長さの文字列を抜き出します
- 書式:mid$(<文字列>,<式1>[,<式2>])
- 文例:b$=mid$(a$,2,3)
country$=mid$("JPNUSAFRAGBRCAN",N*3+1,3)
- asc
- 機能:文字のキャラクターコードを得ます
- 書式:asc(<文字列>)
- 文例:a=asc("NEW")
print asc(a$)
- chr$
- 機能:指定したキャラクターコードを持つ文字を得ます
- 書式:chr$=(<数式>)
- 文例:a$=chr$(65)
print chr$(&h4e)
- hex$
- 機能:10進数を16進数に変換し、その文字列を得ます
- 書式:hex$(<数式>)
- 文例:a$=hex$(x)
print hex$(255)
- instr
- 機能:文字列の中から指定文字列を探して、その文字の位置を得ます
- 書式:instr(<位置>,<文字列1>,<文字列2>)
- 文例:j=instr(a$,"J")
print instr("ONETWOTHREE","TWO")
- left$
- 機能:文字列の左側から任意の長さの文字列を抜き出します
- 書式:left$(<文字列>,<式>)
- 文例:b$=left$(a$,4)
print left$("standing",5)
- len
- 機能:文字列の合計バイト数を得ます
- 書式:len(<文字列>)
- 文例:print len(a$)
l=len("TEST")
- right$
- 機能:文字列の右側から任意の長さの文字列を抜き出します
- 書式:right$(<文字列>,<式>)
- 文例:print right$("ABCDabcd"), n*4)
- str$
- 機能:数値を文字列に変換します
- 書式:str$(<数式>)
- 文例:listing$=str$(num)+name$
- val
- 機能:文字列表記の数値を実際の数値に変換します
- 書式:val(<文字列>))
- 文例:a=val("&h20")
7.ファイル制御
- close
- 機能:ファイルを閉じます
- 書式:close [[#]<ファイル番号>[,[#]<ファイル番号>]...]
- 文例:close
close #1,#3
- input #
- 機能:シーケンシャルファイルからデータを読み込み、変数に代入します
- 書式:input #<ファイル番号>,<変数名>[,<変数名> ...]
- 文例:input #1, a,b
input #2, name$
- line input #
- 機能:シーケンシャルディスクファイルより、1行(255バイト以内)単位のデータを一括して文字型変数に読み込みます
- 書式:input # <ファイル番号>,<文字型変数名>
- 文例:input #1 , a$
- open
- 機能:ファイルを開きます
- 書式:open <ファイルディスクリプタ> [for <入出力モード>][<共用モード>] as [#] <ファイル番号>
- 文例:open "b:\data1" as #1
open "f1" for output deny all as #2
open "com1:n81xn" as #1
- print #
- 機能:ファイルにデータを書き出します
- 書式:print # <ファイル番号>,<式>[,/;<式> ...][,/;]
- 文例:print #2, a;b;c
print #1, a$;",";b$
- print # using
- 機能:文字列、数値などのデータを編集し、ファイルに出力します
- 書式:print # <ファイル番号>,using <書式制御文字列>;<式>[,/;<式> ...][,/;]
- 文例:print #2, using "@ ####"; case$, number
- dskf
- 機能:ディスクの空き容量のサイズを得ます
- 書式:dskf(<ドライブ名>)
- 文例:print dskf("a:")
- eof
- 機能:ファイルの終了コードを調べます
- 書式:eof(<ファイル番号>)
- 文例:if eof(1) then close 1 : end
- input$
- 機能:指定されたファイルより指定された長さの文字列を読み込みます
- 書式:input$(<文字数>[,[#]<ファイル番号>])
- 文例:word$=input$(6,#2)
- lof
- 機能:ファイルの大きさを得ます
- 書式:lof(<ファイル番号>)
- 文例:maxrec=lof(2)
8.I/Oポート入出力制御
- beep
- 機能:内蔵スピーカを鳴らしたり、止めたりします
- 書式:beep [<スイッチ>]
- 文例:beep
- out
- 機能:出力ポートに1バイトのデータを送出します
- 書式:out <ポート番号>,<式>
- 文例:out 64,32
- wait
- 機能:入力ポートをモニタする間、プログラムの実行を停止します
- 書式:wait <ポート番号>,<式1>,<式2>
- 文例:wait 1, &h22, &hff
- inp
- 機能:入力ポートから値を読み取ります
- 書式:inp(<ポート番号>)
- 文例:a=inp(15)
9.エラー制御
- error
- 機能:エラー発生のシミュレート、エラーコードの利用者定義を行います
- 書式:error <整数表記>
- 文例:error 200
error a%
- on error goto
- 機能:エラーが起こったときに分岐する処理ルーチンの開始行を定義します
- 書式:on error goto <行番号>
- 文例:on errot goto 1000
- resume
- 機能:エラー処理ルーチンを終了し、元のプログラムの実行を再開します
- 書式:resume [0]
resume next
resume <行番号>
- 文例:resume *start
- erl / err
- 機能:エラーの発生した行番号および発生したエラーのエラーコードを保持しています
- 書式:erl
err
- 文例:if erl=100 then cls : resume
if err=7 then stop
10.その他の制御
- child
- 機能:BASICからMS-DOSへ一時的に制御を移します
- 書式:child [<チャイルドプロセス名およびチャイルドプロセスに引き渡す情報>][,m][,<画面クリアスイッチ1>][,<画面クリアスイッチ2][,<ファンクションキー表示スイッチ>]
- 文例:child "demopro.exe",1,1
child "dir b:",m
child ,m
- clear
- 機能:変数の初期化およびメモリレイアウトを決定します
- 書式:clear [<機械語プログラム領域のサイズ>][,<利用者スタック領域のサイズ>][,<配列データ領域のサイズ>][,<チャイルドプロセス領域のサイズ>]
- 文例:clear &h120, &h100
- date$
- 機能:日付を得ます
- 書式:date$
date$="yy/mm/dd"
- 文例:a$=date$
date$="87/12/12"
- time$
- 機能:時刻を得ます
- 書式:time$
time$="hh:mm:ss"
- 文例:print time$
time$="23:15:00"
- copy
- 機能:画面情報のハードコピーを行います
- 書式:copy [<機能>]
- 文例:copy 2
copy
- lprint
- 機能:プリンターにデータを出力します
- 書式:lprint [<式>][,/;<式> ...][,/;]
- 文例:lprint a$, d2
lprint chr$(&h41);chr$(&h42);chr$(&h43)
- lprint using
- 機能:文字列、数値などのデータを編集し、プリンターに出力します
- 書式:lprint using <書式制御文字列>;<式>[,/;<式> ...][,/;]
- 文例:lprint using "@ ####"; a$, b
lprint using "\\#.###";c