Syn BASIC (オンラインBASICインタプリタ)(1)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) (4) 次のページへ
2021年02月27日 Version 0.10α公開。
2021年05月21日 ツイートできるBASICプログラムの文字数の上限を、200文字から600文字に拡張。
2021年05月25日 Syn BASICをVersion 0.25αにアップデート。また、ページ構成を変更し、1ページ目の内容の一部を2ページ目に移動。
2021年06月05日 Syn BASICをVersion 0.27αにアップデート。
2021年06月14日 Syn BASICをVersion 0.28αにアップデート。
2022年11月24日 Syn BASICをVersion 0.30αにアップデート。
2022年12月03日 Syn BASICをVersion 0.31αにアップデート。
2023年01月04日 Syn BASICをVersion 0.32αにアップデート。

Syn BASICは、オンラインで使えるBASICインタプリタです。ブラウザ上でBASICのプログラムを実行できるので、開発環境を準備する事なく、気軽にBASICのプログラムを実行できます。

画面1、Syn BASIC

上の画面(画面1)で、BASICのプログラムが実行できます。使い方の説明は1章以降に書いてあります。

画面が狭いと感じる場合は、例えばWIDTH 80,25ENTERと入力すると、画面が広くなります。WIDTH文の第1パラメータは桁数(横幅)で、第2パラメータは行数(高さ)です。詳しくはWIDTH文の説明をご覧ください。

プログラムをツイートボタンで、入力したプログラムをツイートできます。プログラムのツイートは、圧縮された形でツイート内のリンクに埋め込まれ、そのリンクをクリックすると、このサイトで、実際にプログラムが実行できます。

注:ツイートできるプログラムのサイズに上限があります。上限は、圧縮後で1900バイトです。圧縮前だと、2kバイト強のプログラムがツイートできます。

次に示すツイートは、筆者が実際に自分で作ったプログラムをツイートした例です。ツイート内のリンクをクリックすると、作ったプログラムが実際に起動します。

2本の抵抗の抵抗値の比を入力すると、なるべくその比に近い2本の抵抗を、E24系列から選ぶプログラムを作りました。

スクリーンショットは、比が3.14に近くなる組み合わせを選んでいる様子を示します。リンクをクリックすると実行できます。

https://t.co/j8w92YmcjW pic.twitter.com/03bgmhwB5J

— しなぷす@synapse.kyoto (@h164tan1) June 14, 2021

なお、このページで公開しているSyn BASICのバージョンはVersion 0.32αです。アップデートの履歴についてはSyn BASICリリースノートをご覧ください。

Syn Basicの操作法やプログラムの作り方に関する初心者向けの説明や、サンプルプログラムを紹介したページもありますので、そちらも参考にしてください。

目次

1. Syn BASICの特徴 … 1ページ
1-1. 行番号のある古い文法のBASIC … 1ページ
1-2. 自分のWebサイトに埋め込み、簡単な計算をさせる事のできるBASICインタプリタ … 1ページ
1-3. 日本語のエイリアスを使って漢字やひらがなでプログラムできるBASIC … 1ページ
2. Syn BASICの文法 … 2ページ
2-1. Syn BASICで使える文と命令 … 2ページ
2-2. Syn BASICで使える関数 … 3ページ
2-3. Syn BASICで使える演算子 … 3ページ
2-3-1. 用語の説明 … 3ページ
2-3-2. 演算子の一覧 … 3ページ
2-3-3. ビット演算子のオペランドの32ビット整数化 … 3ページ
2-3-4. 演算子の優先順位 … 3ページ
3. 画面やキーボードに関する解説 … 4ページ
3-1. 物理画面と仮想画面 … 4ページ
3-2. 上書きモードと挿入モード … 4ページ
3-2-1. 上書きモード・挿入モードとは … 4ページ
3-2-2. 入力時は挿入モード … 4ページ
3-2-3. PRINT文等で表示する場合は上書きモード … 4ページ

1.Syn BASICの特徴

Syn BASICは、気軽にBASICプログラムを実行できる様に開発された、オンラインで使えるBASICインタプリタです。スマートフォンなどの狭い画面の端末でも動作する様に作られています。

1-1.行番号のある古い文法のBASIC

またSyn BASICはマイクロソフト社のMBASICを意識した文法を採用しています。

行番号のあるBASICで、各行には行番号を付ける必要があります。現在では、Visual Basicなど、行番号を使わない(あるいは行番号を使う事を強制されない)BASICが一般的になっていますが、古き良き時代を偲ぶため、あえて古い文法を採用しています。

10 '100までの数を合計するプログラム
20 s=0 : ' 変数sを0に初期化(省略可)
30 for i=1 to 100
40 s=s+i
50 next i
60 print s
cls:list
画面2、1から100までの合計を求めるプログラム

例として、1から100までの合計を求めるプログラムを、画面2に示します。各行の先頭に10、20、30、・・・と行番号が付いている事が分かります。

画面2では、RUNボタン(青い三角形のボタン)をクリックすると、実際にプログラムを実行できます。(あるいは、画面をクリックして、画面に文字を入力できる状態にしてから、RUNENTERと入力してもプログラムを実行できます) プログラムを実行すると、1から100までの合計の5050が表示されるはずです。

プログラムの行の追加、削除、変更などは、この行番号を使う事で行います。

例えば、上の画面のプログラムの60行を、次の様に変えたいとします。

リスト1、60行をこの様に変更したいCOPY
60 print "Sum:",s

その場合、上の通り入力してENTERキーを押すと、プログラムが変更できます。

その後、LISTENTERと入力してプログラムのリストを表示すると、次の様に表示されるはずです。

リスト2、60行を変更後のプログラムCOPY
10 '100までの数を合計するプログラム
20 s=0 : ' 変数sを0に初期化(省略可)
30 for i=1 to 100
40   s=s+i
50 next i
60 print "Sum:";s

この様に、すでに入力済みの行の行番号(この場合は60)で始まる文字列を入力してENTERキーを押すと、既存の行を、新しく入力した行で置き換えます。

入力済みのプログラムに使われていない行番号で始まる文字列を入力すると、プログラムにその行を追加します。

リスト3、プログラムに追加したい行COPY
15 print "Calculation of sum"

例えば、先ほど60行を書き換えた後に、さらにリスト3の様に打ち込み、ENTERキーを押すと、プログラムに15行としてリスト3に示す行が追加されます。

その後、LISTENTERと入力すると、表示されるプログラムリストはリスト4の様になります。

リスト4、15行を追加したプログラムCOPY
10 '100までの数を合計するプログラム
15 print "Calculation of sum"
20 s=0 : ' 変数sを0に初期化(省略可)
30 for i=1 to 100
40   s=s+i
50 next i
60 print "Sum:";s

この例で分かる様に、BASICプログラムの行は、行番号が小さい順に並べられます。

ある行と次の行の間に新しい行を追加したい場合は、追加する行の行番号は、既存の2つの行の行番号の間の数字にすればよい事が分かります。上の例では、10行と20行の間に行を追加するために、10と20の間の15を行番号として、新しい行を入力しました。

プログラムの行番号を、1,2,3,・・・と1ずつ大きくしていったのでは、後から行と行の間に新しい行を追加できませんから、BASICでは、行番号を10ずつ増やす習慣があります。

1-2.自分のWebサイトに埋め込み、簡単な計算をさせる事のできるBASICインタプリタ

Syn BASICには、起動時にプログラムを自動入力したり、あるいはさらにそのプログラムを自動的に実行する機能があります。

10 i=i+1
20 print i,
30 wait 1000:' 1秒(1000ms)待つ
40 goto 10
cls:list:'画面を消してリスト表示
run
画面3、自動的に実行される、1秒ごとに数を数えるプログラム

画面3では、一秒間隔で数字がカウントアップしているはずです。これは、次の様なBASICプログラムを作って、それをページに埋め込み、自動実行する様にしてあるからです。

リスト5、画面3に埋め込んであるBASICプログラムCOPY
10 i=i+1
20 print i,
30 wait 1000:' 1秒(1000ms)待つ
40 goto 10

Syn BASICの起動時に、上のプログラムを自動的に入力し、それを自動的に実行するために、このページのHTMLには次の様なコードが埋め込んであります。

リスト6、画面3のHTMLコードCOPY
<div class="SynBasicFrame">
  10 i=i+1<br>
  20 print i,<br>
  30 wait 1000:' 1秒(1000ms)待つ<br>
  40 goto 10<br>
  cls:list:'画面を消してリスト表示<br>
  run
</div>

SynBasicFrameというクラスのdiv要素を設けると、そこがSyn BASICを実行できるコンソール画面になります。そのdiv要素の中に、Syn BASICで自動実行したい命令や文をbrタグ(改行タグ)で区切って書くと、それらが順に自動的に実行されます。

上の例では、10行から40行までのプログラムを打ち込み、画面を消去(cls)してプログラムリストを表示する(list)という操作を自動実行します。

この機能を使うと、ホームページで何か計算を行うサービスを提供したい場合、習得が難しいJavaScriptPHPを使わないでも、習得の易しいBASICでスクリプトを書けます。

画面4に示すのは、一次方程式の解を求めるサービスを、Syn BASICで実現した例です。xに関する一次方程式ax+b=0のaとbを入力すると、方程式の解を表示します。

10 '一次方程式の解を求めるプログラム
20 print "一次方程式 ax+b=0 を解きます。aとbを入力してください。"
30 input "a:",a
40 if a=0 then print "aには0以外の数字を入力してください。":goto 30
50 input "b:",b
60 print
70 if b>=0 then s$="+" else s$="-"
80 print "解きたい方程式:";a;"x";s$;abs(b);"=0"
90 print "求めた解:x=";-b/a
100 print
110 goto 20
cls:run
画面4、BASICで記述した計算サービスの例(一次方程式の解を求めるプログラム)

参考:どのようなプログラムが動いているのかを知りたい方は、中断ボタンをクリックしてプログラムを停止した後、LISTENTERと入力してください。プログラムのリストが表示されます。

ボタンを押したりプルダウンメニューから選択肢を選んだりといったグラフィカルなインターフェースはSyn BASICは実現できませんが、逆にいえば、GUIを扱うのに必要なイベントハンドラ等の勉強をせずに、とりあえず動作するプログラムが組めます。

Syn BASICはTypeScriptで記述されていますが、そのTypeScriptのソースファイルを、近い将来MITライセンスで公開する予定です。そのソースファイルをダウンロードし、ご自分のWebサイトのサーバーにアップロードすれば、ご自分のサイトにBASICプログラムを組み込む事ができる様になります。

参考:TypeScriptは、JavaScriptを拡張したプログラミング言語で、JavaScriptと共に、Webブラウザ上で動作するプログラムの開発によく使われます。

1-3.日本語のエイリアスを使って漢字やひらがなでプログラムできるBASIC

このBASICインタプリタの特徴として、多くの予約語に日本語のエイリアス(別名)がある事が挙げられます。

例えば"PRINT"のエイリアスは「書け」と「かけ」なので、"PRINT"と入力する代わりに、「書け」や「かけ」と入力しても、同じ動作になります。

主な予約語と、そのエイリアスを表1に示します。

注:将来のバージョンアップにともない、予約語やエイリアスは変更になる可能性があります。

表1、主な予約語とそのエイリアス
予約語 エイリアス
PRINT 書け,かけ
INPUT 聞け,キケ
LIST リスト, りすと
NEW 消せ, けせ
RUN やれ
GOTO 行け, いけ
GOSUB ってこい, いってこい
RETURN 戻れ, もどれ
IF もし
THEN なら
ELSE 違えば, ちがえば
FOR 繰り返せ, くりかえせ
TO 最後の数, さいごのかず
STEP 幅, はば
NEXT 変えろ,かえろ
REM 注,ちゅう

また、変数名に日本語が使えます。変数名の最初が全角文字なら(厳密にいえば基本ラテン文字でなければ)、全角文字が続く限り変数名が続いているとみなします。

予約語に日本語のエイリアスがある事と、変数名に日本語が使える事を利用すれば、画面2の1~100の数の合計を求めるプログラムは、画面5の様に記述する事もできます。

10 '100までの数を合計するプログラム
20 合計=0 : ' 変数「合計」を0に初期化(省略可)
30 繰り返せ 数=1 最後の数 100 : 'for文
40 合計=合計+数
50 変えろ 数 : 'next文
60 書け 合計 : 'print文
cls:list
画面5、漢字やひらがなを使って書いた、1~100までの合計を求めるプログラム

RUNボタン(青い三角形のボタン)をクリックすると、プログラムを実行できます。

また、ひらがなのエイリアスを使えば、画面6の様に、ひらがなだけでプログラムを記述することもできます。

10 '100までのかずをごうけいするプログラム
20 ごうけい=0
30 くりかえせ かず=1 さいごのかず 100
40 ごうけい=ごうけい+かず
50 かえろ かず
60 かけ ごうけい
cls:list
画面6、アルファベットや漢字を使わずに、ひらがなだけで書いた1~100までの合計を求めるプログラム

RUNボタン(三角形の青いボタン)をクリックすると、プログラムを実行できます。

なお、予約語のエイリアスに、ひらがなの物を用意したのは、「小学生にプログラミング教育をする上で、児童がアルファベットを習得していない点がネックになる」と聞いたことがあるからです。最終的に、全ての英語の予約語にひらがなのエイリアスを用意して、数字とひらがなと小学生にもなじみのある記号だけでプログラムできる様にしようと考えています。

なお、このBASICの日本語化の際におこなっているのは、予約語に日本語のエイリアスを用意している事だけで、ぴゅう太のG-BASICの様に、命令の語順を日本語に合わせて変える事は行いません。(例:GOTO 100 ⇒ 100 ニイケ)

キーボードの絵のボタンをクリックすると、ソフトウェアキーボードが画面の下に出てきます。スマートホンやタブレットでそれをタップする事でプログラムを入力できます。通常のQWERTY配列のキーボードもありますが、ABC順のキーボードやひらがなのキーボードも用意してあります。QWERTY配列を覚えていない小さな子供には、ABC順のキーボードやひらがなのキーボードでプログラムする方がとっつきやすいかも知れません。

次のページでは、Syn BASICで使える命令や文などについて説明します。

目次へ  前のページへ (1) (2) (3) (4) 次のページへ

関連ページ

Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。