プレイ日記
おちゃめ ochame_nako
QSP(WIDTH 16の1画面プログラム)で「簡易関数電卓QSP」を作りました。 これは、四則演算だけではなく三角関数などのプチコン3号で使える関数による計算も可能な電卓プログラムです。
4そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
これがプログラムリストです。(公開キーは後述)
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
このプログラムでは別途プログラムスロット1、2を使うため上記のプログラムはスロット0か3で実行してください。 例えば2+3*4という計算を行う場合は2+3*4という式を入力してAボタンを押してください。 演算優先順位を考慮して計算するため2+3*4=14と表示されます。 式の後の「=」は計算後に自動的に付くため入力の必要はありません。 式はプチコン3号で普通に記述する式と同じように入力しますが計算できない式を入力してエラーとなった場合はRUNし直してください。(計算可能な式かどうかの事前チェックは行っていません)
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
F1には前回計算した式、F2には前回の計算結果が入っているので活用して下さい。 普通の電卓にあるメモリー機能は無いですが、Bボタンを押しながらAボタンを押すとF3、Xボタンを押しながらだとF4に計算結果が入るため上手く使えばメモリー機能以上のことができます。 なお、Aボタンの空打ちで改行となります。 画面表示が詰まって見にくくなったときに使用してください。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
変数は使用できませんが、カッコ、SIN、COSなどの関数、&&などの論理演算子、TRUEなどのシステム変数、#Aなどの定数リテラルは使用可能です。 この電卓プログラムと直接関係ない話ですが、ver.3.2.1で定数リテラルの値に修正が加えられましたが色関係も修正が行われていて例えば#REDは-65536=RGB(255,0,0)だったのが-524288=RGB(248,0,0)になっています。 これはプチコン3号ではRGBが8の倍数で丸められた色コードで表示されGSPOITで読み出した値と定数リテラルの値が一致しないというのを避けるためだと思われます。 この「簡易関数電卓」の公開キーは【 ED2EM3 】、ファイル名は「1GQ_CALC」です。 この公開キーには下記の拡張関数ライブラリも含んでいます。
1そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
動作原理を簡単に説明すると以前作ったRVAL関数のDEFを外してリスト短縮して使用しています。 RVAL関数というのは何かというと文字列化した式の値を求める関数です。 これは別スロットで実際に実行することで構文解析が不要になり短いリストで記述することが可能になっています。 詳しくは私の過去の投稿からRVAL関数を見てください。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
この簡易関数電卓用に拡張関数ライブラリを用意しました。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
この拡張関数ライブラリを導入することで新たにSIND()、COSD()、TAND()、FACT()、P()、C()という6つの関数が使用可能になります。 SIND()、COSD()、TAND()は例えばsin 60°の値を求める場合にSIN(RAD(60))とせずにSIND(60)のように「度」で直接指定できるだけの関数なので詳しい説明は不用だと思います。 FACT()は階乗を計算する関数です。FACT(10)とすれば10!(10の階乗)を求めることができます。 負数の階乗は計算できないので引数が負数の時はillegal function callエラーを出すようにしています。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
C()は組み合わせを計算する関数です。 C(N,R)で異なるN個の中からR個を取り出した時の組み合わせを計算します。エラーチェックはしてないのでN>=Rとなる値を指定してください。 例えば1~10の数字が書かれたくじがあり、そこから4枚を抜き出した場合に何通りの組み合わせがあるかはC(10,4)とすれば分かります。 C(10,4)=210 (210通り)
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
P()は順列を計算する関数です。 P(N,R)で異なるN個の中からR個を取り出した時の順列を計算します。 例えば1~10の数字が書かれたくじがあり、そこから4枚を抜き出して並べる際に何通りの並べ方があるかはP(10,4)とすれば分かります。 P(10,4)=5040 (5040通り) 1,4,5,6 という順番で引かれたくじと 4,1,5,6 という順番で引かれたくじを別々のものとしてカウントした時の数字です。
0そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
この電卓の計算結果の表示精度はSTR$の変換精度に依存しておりそれほど良いものではありません。 これでは不満があり精度を高めたいという人は私の自作関数PSTR$を使用してみてください。 上記の公開キーには最新となるPSTR$ ver.2.0を入れているため使用する場合はリスト2行目のSTR$をPSTR$に変更するだけで良いです。 デフォルトでPSTR$に対応させてないのはこの「簡易関数電卓」はあくまでQSPであり、別プログラムを使用せず単体で動作するようにしておく必要があるためです。 PSTR$がどのようなものかを知りたい人は私の過去の投稿からPSTR$ ver.2.0を見てください。
0そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
PSTR$を使用すればここまで計算精度が高くなります。 プチコン3号の内部では2進数で表記されている関係で0.1は循環小数になるのですが、それさえもきっちりと表示してくれます。
0そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
日経ソフトウェア10月号p.74に「FOR I=0 TO 2 STEP 0.1:PRINT I:NEXT」が1.9で終了すると書いている理由もこの簡易関数電卓+PSTR$を使えば一目瞭然です。
0そうだね
プレイ済み