2021年05月25日 | 公開。(ページ構成の変更により、以前の1ページ目の内容の一部を2ページ目に移動。) |
2021年06月05日 | Syn BASICで使える演算子を公開。 |
2022年11月24日 | Syn BASICで使える関数とSyn BASICで使える演算子を3ページに移動。 |
2022年12月03日 | READ文とDATA文の解説を追加。 |
この章では、Syn BASICの文法について解説します。
Syn BASICで使える文と命令を、表2に示します。
表2には、パラメータという言葉が出てきますが、これは、動作の詳細を指定するために、文や命令の直後に書く数字や文字列の事です。
例えばGOTO文では直後に行番号を指定します。100行にジャンプするためのGOTO文はGOTO 100
ですが、GOTOの後の100が、このGOTO文のパラメータです。
文・命令 | エイリアス | 説明 |
---|---|---|
BREAK文 | 中断、ちゅうだん |
FOR~NEXTのループから抜け、NEXT文の次の文または命令から実行します。BREAK文にパラメータはありません。 多重ループの中でBREAK文を使うと、一番内側のループを抜けます。FOR~NEXTのループの外でBREAK文を使うと、エラーになります。 BREAK文を使うと、FOR文で指定した変数の値は、BREAK文を実行する直前の値のまま、ループを抜けます。例えば次の例では、実行すると3が表示されます。
|
CLS文 | 画面消去、がめんをけせ |
画面を消去します。CLS文にパラメータはありません。 |
CONTINUE文 | 続けろ、つづけろ |
CONTINUE文は、FOR~NEXTのループ内で使います。CONTINUE文を実行すると、CONTINUE文以下の文や命令を実行せずに、NEXT文にジャンプします。 例えば、
というプログラムは、I=0の時だけ、30行を実行しません。 ループ外でCONTINUE文を使うとエラーになります。 |
DATA文 | データ、でーた |
DATA文は、READ文で読み取るためのデータ(数値または文字列)を記述します。 DATAの後に数値を記述すると(例: 文字列のデータは必ずダブルクオーテーション(")で囲む必要があります。例えば、 データをカンマ(,)で区切る事で、複数のデータを1つのDATA文内に記述する事ができます。(例:DATA 123,456,"ABC","DEF") DATA文のパラメータとなるデータは、リテラル(定数)である必要があります。例えば |
DIM文 | 配列、はいれつ |
配列を宣言します。
|
EDIT命令 | 編集、へんしゅう |
指定した行番号のプログラムを編集して再入力します。
|
END文 | 終われ、おわれ | プログラムの実行を終了します。END文にパラメータはありません。 |
FOR~TO~STEP文 | 繰り返せ~最後の数~幅、くりかえせ~さいごのかず~はば |
指定した変数の数を更新しながら、NEXT文までのループを繰り返し実行します。 FOR文は次の書式で記述します。 FOR 変数=初期値 TO 最終値 STEP 増分
変数は、数値の単純変数(配列でない変数)でなければいけません。 FOR文は、まず変数に初期値を代入し、増分で指定した値だけ変数の値を増加させながら(増分が負の数の場合は減少させながら)最終値まで変化させ、NEXT文までのループを繰り返し実行します。増分が1の場合は、STEP 1の記述を省略できます。 例えば次のプログラムは、1から10までの整数を小さい順に表示します。
また次のプログラムは、2から10までの偶数を小さい順に表示します。
さらに次のプログラムは、1から10までの数字を大きい順(10、9、…1の順)に表示します。
|
GOSUB文 | 行ってこい、いってこい |
指定した行番号またはラベルのサブルーチンを実行します。
サブルーチン側でRETURNを実行すると、GOSUBの次の文あるいは命令に戻ってきます。 |
GOTO文 | 行け、いけ |
指定した行番号にジャンプします。(制御を移します) |
INPUT文 | 聞け、きけ |
変数の内容をユーザーに打ち込んでもらいます。
変数のパラメータの前に、文字列定数(ダブルクオートで囲った文字列)のパラメータを付けると、ユーザーに変数の入力を要求する時のメッセージを指定できます。 |
IF~THEN~ELSE~文 | もし~なら~違えば~、もし~なら~ちがえば~ |
IFの後の条件式を評価し、条件が成立していればTHEN以降の命令やコマンドを実行し、条件が成立していなければELSE以降の命令やコマンドを実行します。 ELSE以降は省略する事ができ、その場合、条件が成立しない時は、何も実行しません。 条件式には通常は等号(=)や不等号(<、>など)を使った比較式を指定します。例えばA=3なら「変数Aの値が3である」という条件式になり、B>5なら「変数Bの値が5より大きい」という条件式になります。
THENやELSEの直後がGOTO文の場合は、GOTOを省略して行番号またはラベルだけを書く事ができます。例えば |
KEYWORDS命令 | キーワード、きーわーど |
Syn BASICの予約語を表示します。 |
LET文 | 代入、だいにゅう |
代入文を実行します。LETの後に、変数名、イコール記号(=)、数式の順に書くことで、変数に数式の計算結果が代入されます。
LETは省略できるため、通常はプログラム中にLETを書く事はありません。古いBASICとの互換性のために用意されている予約語です。 |
LIMITKBDWIDTH命令 | キーボードの幅、きーぼーどのはば |
ソフトウェアキーボードの幅の上限を、ピクセル単位で指定します。 ソフトウェアキーボードは、原則的にはSyn BASICの物理画面の幅いっぱいに表示されますが、そのままではWIDTH文で物理画面の幅を広げた時に、ソフトウェアキーボードが大きくなりすぎる事があります。LIMITKBDWIDTH命令は、その様な場合にソフトウェアキーボードが大きくなりすぎない様に、幅に上限を設定するものです。 LIMITKBDWIDTH命令は、数値のパラメータを1つ取ります。そのパラメータをピクセル数として、ソフトウェアキーボードのサイズの上限を設定します。例えば、 パラメータには200以上の数字を指定する必要があります。また、ソフトウェアキーボードの幅の上限値は、初期状態で500ピクセルです。 |
LIST命令 | リスト、りすと |
入力されているプログラムのリストの一部または全部を表示します。 単に 数値のパラメータを1つ付けると、その数値に一致する行番号の行を表示します。例えば、 数値のパラメータを1つ付け、パラメータの後ろに-(マイナス)を書くと、行番号が指定したパラメータ以上になる行を表示します。例えば、 数値のパラメータを1つ付け、パラメータの前に-(マイナス)を書くと、行番号が指定したパラメータ以下になる行を表示します。例えば、 2つの数値のパラメータを付け、それらのパラメータの間に-(マイナス)を書くと、行番号が2つの数値の範囲に入っている行を表示します。2つ目のパラメータが1つ目のパラメータ以上になる様に指定してください。例えば、 LIST命令をプログラム中で使う事はできません。ダイレクトモードで使ってください。 LIST命令を実行すると、処理が直ちに終了します。例えば |
LOAD命令 | ロード、ろーど |
ローカルディスク(使用しているパソコン・スマートフォン等のHDD・SSD等)に保存してあるBASICのプログラムをロードします。(プログラムを読み込みます) LOAD命令にはパラメータはありません。 ロードするプログラムの指定は、LOADENTERと入力した後に画面の下側に出てくるボタンをクリックして、画面に表示されるファイル一覧の中から選択します。 LOAD命令は、プログラム中で使う事はできません。ダイレクトモードで使ってください。 LOAD命令を実行すると、処理が直ちに終了します。例えば |
LOCATE文 | 座標、ざひょう |
LOCATE文は、カーソルを移動します。 LOCATE文には数値のパラメータが3つあります。 第1パラメータには、カーソルの水平座標を指定します。水平座標は物理画面の一番左が0で、右に1文字移動するごとに1ずつ増えます。物理画面の幅が80桁の場合は、0~79の範囲で水平座標を指定してください。 なお、指定した座標に全角文字の右半分が表示されている場合は、指定した水平座標より1つ左の位置にカーソルが移動します。 第2パラメータにはカーソルの垂直座標を指定します。垂直座標は仮想画面の一番上が0で、下に1行移動するごとに1ずつ増えます。 Syn BASICには仮想画面の考え方があります。実際に物理画面に表示されているのよりも広い仮想画面があり、物理画面を上下にスクロールして仮想画面の必要な部分を表示する事で、物理的な表示領域よりも上下に長い画面を取り扱えるようになっています。 LOCATE文の第2パラメータで指定する垂直座標は、仮想画面中の垂直位置を表しており、実際に画面に表示されている物理画面内の垂直位置ではありません。 LOCATE文の第2パラメータで、物理画面に表示されていない垂直座標を指定すると、物理画面が自動的にスクロールし、指定された垂直座標が物理画面内に表示される様になります。 LOCATE文の第3パラメータには、カーソルの表示モードを指定します。カーソルの表示モードには、0または1の値を指定します。 カーソルの表示モードが0の場合は、常にカーソルが表示されます。初期状態ではカーソルの表示モードは0です。 カーソルの表示モードが1の場合は、入力状態の時にだけカーソルが表示されます。プログラムの実行中で、なおかつINPUT文等でユーザーに入力を求めている時以外は、カーソルは表示されません。 LOCATE文では、任意のパラメータを省略して、一部のパラメータだけを指定する事ができます。(だだし、3つ全てのパラメータを省略する事はできません) 例えば |
NEW命令 | 消せ、けせ |
入力されているプログラムを消去し、全ての変数を初期化します。 |
NEXT文 | 変えろ、かえろ |
FOR文と組み合わせて使います。FOR文とNEXT文で挟まれた命令や文を繰り返し実行します。 |
PRINT文 | 書け、かけ |
指定した数式の計算結果を画面に表示します。
文字列の数式の計算結果も表示できます。 セミコロン(;)またはカンマ(,)で区切って複数の数式を指定する事もできます。 PRINT文の文末にセミコロンやカンマを置く事もできます。PRINT文は、通常は数式の計算結果を表示した後に改行しますが、 |
READ文 | 読め、よめ |
READ文は、DATA文で記述された数値または文字列のデータを、変数に読み込みます。例えば READ文は、DATA文で記述されたデータを、プログラムの最初から最後へ、順に読みます。 例えば次の様なプログラムを考えます。
このプログラムは、30行のGOTO文により、無限ループになっているので、10行のREAD文と20行のPRINT文が何度も繰り返し実行されます。 またこのプログラムでは、40行と50行にあるDATA文により、先頭から順に111、222、333の数値データが宣言されています。 最初に10行のREAD文が実行されるときは、先頭のデータの111が変数Dに代入されます。次に10行のREAD文が実行される時は、2番目のデータの222が変数Dに代入されます。3回目に10行のREAD文が実行される時は、3番目のデータの333が変数Dに代入されます。4回目に10行のREAD文が実行される時は、もう全てのデータの読み込みが終わっているため、Out of dataのエラーが出ます。 DATA文に数値のデータが宣言されているのに、READ文で文字列変数にそれを読み込もうとした場合や、逆にDATA文に文字列のデータが宣言されているのに、READ文で数値変数にそれを読み込もうとした場合は、Type mismatchのエラーが出ます。 |
RENUM命令 | 番号、ばんごう |
RENUM命令は、プログラムの行番号を付け直します。 RENUM命令は、数値のパラメータを3つ取ります。第1パラメータは新番号、第2パラメータは旧番号、第3パラメータは増分を表わします。旧番号で指定された行番号の行が、新番号に変わり、その次の行の行番号は、新番号に増分を足した数字になります。それ以降、行が進むごとに、行番号が増分ずつ増えていきます。 例えば、次の様なプログラムがあるとします。
ここで
この例で示す様に、RENUM文は、行頭の行番号を付け直すだけでなく、GOTO文やGOSUB文のパラメータの行番号や、IF文のTHEN節やELSE節の直後に書かれた行番号等も書き換え、プログラムの動作を変えない様にします。 RENUM文のパラメータの一部または全部は、省略する事ができます。 第1パラメータの新番号を省略すると、10が指定されたものとして処理されます。 第2パラメータの旧番号を省略すると、プログラムの一番最初の行が指定されたものとして処理されます。 第3パラメータの増分を省略すると、10が指定されたものとして処理されます。 3つのパラメータを全て省略して RENUM命令は、プログラム中では利用できません。ダイレクトモードで使用してください。 |
RESTORE文 | 復帰、復帰 |
RESTORE文は、次にDATA文で読み込むDATA文の行を指定します。RESTORE文は、例えば全てのDATA文のデータを読み込んだ後に、最初のDATA文からもう一度データを読み直す場合などに使えます。 RESTORE文は、1つの行番号またはラベルのパラメータを取ります。 例えば RESTORE文で指定した行にDATA文がある必要はありません。指定した行にDATA文がない場合は、指定した行以降の最初のDATA文のデータを次のREAD文で読み込みます。 RESTORE文のパラメータを省略して単に |
RETURN文 | 戻れ、もどれ |
サブルーチンを終了してメインルーチンに戻ります。RETURN文にパラメータはありません。 RETURN文はGOSUB文で呼び出されたサブルーチン内で使用する必要があります。RETURN文を実行すると、サブルーチンを呼び出したGOSUB文の次の文(または命令)にジャンプします。 |
REM文 | 注、ちゅう、' |
プログラムに注釈(コンピュータにとっては意味がないがプログラムを読む人間には参考になる情報)を書くための文です。REMの後にスペースを一つ以上挟んで、注釈を書くことができます。 例えば、プログラムで合計を求めている部分があるとして、その部分に REMのエイリアスとしてダッシュ(')が使えますから、 Syn BASICはREM文を見つけると、その行のそれ以降は全て注釈として読み飛ばします。よって、 |
RUN命令 | やれ |
全ての変数を初期化してから、一番行番号の小さい行からプログラムを実行します。RUN命令にパラメータはありません。 |
SAVE命令 | セーブ、せーぶ |
入力されているプログラムをローカルディスク(使用しているパソコン・スマートフォン等のHDD・SSD等)にセーブ(保存)します。 SAVE命令にはファイル名をパラメータとして指定する事もできますし、パラメータを省略する事もできます。 例えば SAVE命令でファイル名の拡張子を省略すると、自動的に.basの拡張子が付加されます。例えば セーブ先のフォルダ(ディレクトリ)は、使用しているブラウザのデフォルトのダウンロードフォルダになります。 注:SAVE命令は、ブラウザのダウンロード機能を利用してプログラムを保存します。 なお、パラメータを省略して単に SAVE命令はプログラム中で使う事はできません。ダイレクトモードで使ってください。 SAVE命令を実行すると、直ちに処理が終了します。例えば |
WAIT文 | 待て、まて |
プログラムの実行を一定時間停止します。停止する時間はms(ミリ秒)単位で指定します。 1msは1/1000秒なので、例えば0.3秒停止するには プログラムが停止する時間はあまり正確ではありませんので、目安程度に考えてください。 |
WIDTH文 | 幅、はば |
WIDTH文は、物理画面および仮想画面の大きさを変更します。(物理画面と仮想画面については、4ページの説明を読んでください) WIDTH文には3つの数値のパラメータがあります。 1番目のパラメータは、物理画面の桁数(=仮想画面の桁数)です。25桁以上200桁以下の数字を指定してください。物理画面の桁数の初期値は40桁です。 2番目のパラメータは、物理画面の行数です。5行以上200行以下の数字を指定してください。物理画面の行数の初期値は、20行です。 3番目のパラメータは、仮想画面の行数です。0行以上10000行以下の数字を指定してください。仮想画面の行数の初期値は200行です。 仮想画面の行数の指定が、物理画面の行数の指定より小さい場合は、仮想画面の大きさが、物理画面の行数と同じに設定されます。例えば、 物理画面の行数と仮想画面の行数が同じ場合、画面はスクロールしません。この状態では、メモリの使用量が少なく、画面の表示速度が速く、また不用意に画面をスクロールしてしまって表示が乱れる事が避けられるため、例えばシューティングゲームのプログラムを作る場合などに便利です。
WIDTH文を実行すると、画面の大きさを変更するとともに、画面が消去されます。 |
次のページでは、Syn BASICで使える関数と演算子について説明します。