先日、
にて。SmallBASICのインストール方法と変数と表示に関して書きましたが、今回もSmallBASICについて書いていこうかなと思います。
先日のおさらいですが、先日は、変数指定と表示について書きましたが、
のように変数は
■ 命令と名称が同じにならない事
■ 数字で始まらない事
■ 英数字と"_"(アンダースコア)以外の文字を使わない事
という条件が入ります。
あと、文字列を使う場合には、【 " 】(ダブルクォーテーション)で囲む必要があります。
この条件で、
Textwindow
のオブジェクトに
WriteLine()
のクラスを作成し、()の中に表示を吸う物を記述するとその内容が記述されるわけですが、今回は、文字列と変数とその演算結果なので
のような状態になります。当然、Cの内容をA+BとWriteLineの()内に記述しても計算はしてくれます。
このソフトはコーディングですべてを行うので統合環境のようにウィジェットや画像ファイルの表示機能は存在しませんし、フィフォルダー管理やツリー構成を調整する機能は実装していませんが、単体のファイルで完結するようなコードの記述だとスニペットやヘルプがあるので絵結構便利です。例えばm
のように選択すると、
な感じでそれが何であり、どういう処理が可能なのか?の候補が出ます。当然、
のように処理を選択すると、
な感じで、それがどう言った物でどういう挙動をするのか?が表示されます。また、記述の仕様についても表示されます。
とりあえず、アプリケーションを作る場合、
【 バー所上部にソフト名が表示される 】
ような仕様になっていますが、SmallBASICでもそれが可能で、これは、テキストウインドウでも可能です。
この場合、
のように、Titleを追加して表示したい名称を指定すると
のようにアプリケーションの名称を指定することが可能です。このTielwというのは、HTMLでページ名を表示する場合でも使いますが、絶対パスが出たりグラフィックウインドウという名称が出る状態をこれで回避できます。
■ 数式を用いて計算を行う
前回は数式をそのまま用いたのですが、今回は実装された数式について触れていこうかなと思います。
SmallBASICでは、【 Math 】によって実装された数式を使用できます。とりあえず
のように、記述すると、スニペットで使用できる数式が表示されます。
ちなみに、
がMathクラスによって使用可能になっています。とりあえず、三角関数のタンジェント
や円周率のπ
などもそのまま使用することが可能です。ただし、
3.14159265358979323846264338...
のような桁数まであるわけではありませんから、桁数は制限されています。
とりあえず、
のようにコードを打ち込んでみると
のように表示されます。mあた、
のように変数を使用して、円の面積の公式に代入すると
のように演算ができます。
この時に
を用いていますが、これが乗数の演算になります。
乗数というと正方形も二乗で出る数式ですから
のようなコードにすると
という結果になります。とりあえず、これに、
という操作を追加して先ほどの数式を包含してみることにします。これは、
のよに小数点以下の桁の切り下げをするものになります。とりあえず、
にすると
のような結果になります。
■ 値の入力と参照
どのプログラム言語も数式を実装しているのでそれを用いて演算を行うことが可能になっていますが、前述のように定数を指定した場合だとそのまま演算が行えます。変数というのは前述のソースで使用したような定数指定と下変動する数値が存在しますが、上記の内容は、小学校の算数で出てくる
【 問題1 】
半径が10cmの円の面積を求めなさい
【 問題2 】
1辺が10cmの正方形の面積を求めなさい
というものになります。ここでは乗数を使っていますが、小学校だと乗数と平方根は出てきませんから、小学校の場合、
■ 円の面積 : 半径 × 半径 × 円周率
■ 正方形の面積 : 1辺 × 1辺
のはずです。とりあえず、この状態は
【 同じものがいくつ掛け合わされているか? 】
で考えると、【 同じ数値が二度掛け合わされている 】ので、2乗になります。
とりあえず、実数で表記された算数のテストなどがこうした定数指定の演算になるのですが、現実世界において状態を確認する場合、数値を代入して計算しなくてはならに物が存在します。というよりも、アプリケーションの場合、そう言う仕様の物が多いのではないでしょうか?
例えば、身長と体重を入れたBMIを出すとか、基礎代謝の計算式も年齢や身長や体重が基本で、それに生活強度の度合いで目安が出ますが、これもアプリケーションを考える場合には、
【 定数ではなく空鶴の数値であり、入力値を参照してその
まま代入する処理 】
が行われています。そうなると、先ほどの変数の取り扱いとは明らかに異なる処理が発生するわけです。
1980年代に存在した8bitマシンに付属していたBASICインタプリタだと方言は存在しますが、基本的に共通して【 Input文 】でそれが可能になっていましたが、それと同じような機能はどの開発言語でも実装されています。
ちなみに、BASICというと3DSの
■ プチコンmkII
https://smileboom.com/special/ptcm2/
もINPUT文で変数を代入できる仕様になっています。少し話が脱線しますが、Switch版でもプチコンが今年の秋に出るという話でしたが、来年の春に延期になったようですが、スペックが3DSとは別物なので、どんな事ができるようになるのか個人的には気になっています。
■ Nintendo Switch向けソフト「プチコン4 SmileBASIC」の
発売が,2019年春に延期【 4Gamer.net 】
https://www.4gamer.net/games/420/G042044/
■ プチコン4 SmileBASIC
SmallBASICではこうした文字入力待ちを行って、入力値を変数に代入する処理では、
を用います。とりあえず、
のようなコードを書くと
のような処理待ちが発生し、入力が行われるまでプログラムが進まなくなります。数値を入力すると、その値が代入されて、
のようになります。また、
のようにすると、
のような動きになります。
このReadNumberですが、個別の変数に指定することが可能なので、
のような任意の数値が複数入るような公式であっても、
のような挙動の物を作ることができます。
とりあえず、ReadNumberについては入力が終わるまで処理が進まず、入力後にエンターが押されてから処理が進むので、この処理が発生するまでの記述が最初に実行されるような流れになります。
Appendix
SmallBASICにはタートルというカメを表示してその挙動を指定して移動のアルゴリズムを組むような命令も実装されています。
とすると、
のようにカメが表示されるのですが、このカメの表示後に
Turtle.命令
の記述で、移動や旋回などの指定を行い、カメにラインを引かせることができます。
つまり、特定のルートを進む場合どういう命令をすればその通りに動いてくれるのか?ということを考えながら挙動を作る事ができます。
あと、ラインを使う場合、サイクロイド曲線を用いるとフラクタル画像が作れるので、数式によってさまざまなラインを引くことができることも学習できます。
これについては別の機会に書こうと思いますが、大昔のBASICが付属してくる時代の8bitマシンの時代にもLOGOという同じ機能を持ったものが存在していましたが、
【 特定の動きを指定する場合にどういった処理をすれば
いいのか?を考えることができる便利なツール 】
になります。
あと、Turtleを表示すると、ぐらふぃくウインドウが立ち上がりますが、SmallBASICでは、今回使ったテキストウインドウのほかにグラフィックウインドウというグラフィックを表示するウインドウがあります。ゲームやウィジェットを操作し動くアプリケーションを作る場合だとこちらになりますが、
のような記述を行うと
のようにテキストウインドウとグラフィックウインドウの双方の表示が可能になります。