Casio Basic入門58

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

 2017/11/04
追記 2017/11/05
修正 2017/11/11


 4. CasioBasicを使ってみる(続き)

Chapter 10 - 中級

◆ Chapter 10 の目標: 3桁区切り出力 - 汎用サブルーチンの作成

前回: Casio Basic入門57 を見る


これまでに、fx-5800P版3桁区切りサブルーチン (下記) が完成しました。

前回完成させた "高速3桁区切り出力・汎用サブルーチン" fx-5800P版:3DS
Z=0⇒Return

Int(log(Z))+1→K
(K≥4)+(K≥7)+(K≥10)→I

X→D:X→W
X=0⇒17-K-I→X
If X+K+I>17 Or K≥13
Then
X+K≥17⇒17-K→D
If K≥11:Then
2→D:X<2⇒X→D
W=0⇒2→D
IfEnd
Locate D,Y,Z
Return:IfEnd

X103Frac(Z÷X103)→U
Int(X103Frac(Z÷X106))→V
Int(X103Frac(Z÷X109))→W
Int(Z÷X109)→D

If K≤8:Then
Locate X,Y,X108W+X104V+U
I≥1⇒Locate X+K-2-(I=1),Y,","
I≥2⇒Locate X+K-6,Y,","
Else
X+K-6+(I≥3)→J
Locate J,Y,X107+X104V+U
Locate X,Y,X104D+W
Locate J+4,Y,","
Locate J,Y,","
I≥3⇒Locate X+K-9,Y,","
IfEnd


今回は、3DS の使いこなし例を紹介します。


Chapter 10-4
3桁区切りサブルーチン fx-5800P版 の使いこなし

3桁区切りサブルーチン 3DS は、手軽に使ってこそ価値があると思います。そこで、旧来の命令を使った手軽なプログラムで使いこなす例を紹介します。


指定位置に3桁区切り出力

かけ算プログラム:3DS TEST
"A"?→A
"B"?→B
"C"?→C
"A×B×C="
7→X:4→Y:ABC→Z
Prog "3DS"


これは、変数 ABC に値を入力させ、A×B×C を計算した結果を出力するプログラムです。

実行すると、

 A?

と表示されるので、例えば 12 と入力すると、A12 が格納され、

 A?
 12
 B?


と表示されます。次に 45 と入力すると、B45 が格納され、

 12
 B?
 45
 C?


と表示されます。最後に 78 と入力すると、C78 が格納され、さらに ABC の計算結果を表示します。

 45
 C?
 78
 A×B×C=42,120


4行目に A×B×C= に続いて3桁区切りで出力されています。

旧来の出力命令 " " が実行されると自動的に改行されるので、入力行が1行づつ下に下がります。改行が4行目に達すると、入力行は4行目に固定され、画面表示が1行上にスクロールされる、これが Casio Basic の仕様です。

従って、上のプログラムでは、A×B×C の計算結果が4行目に出力されることを理解していれば、Prog "3DS" の直前の設定で 4→Y で良いことが分かります。 A×B×C= に続いて計算結果を出力させるために、7→X と設定しています。


右寄せで3桁区切り出力

上のプログラムの最後に(一旦停止)を追加し、さらに3行追加しました。

かけ算プログラム:3DS TEST
"A"?→A
"B"?→B
"C"?→C
"A×B×C="
7→X:4→Y:ABC→Z
Prog "3DS"

"A×B×C="
0→X:4→Y:ABC→Z
Prog "3DS"


追加分は、右寄せで3桁区切り出力させるために 0→X と設定しています。

実行して、A=12、B=45、C=78 を入力し、以下の画面まで進みます。

 45
 C?
 78
 A×B×C=42,120


命令で一旦停止しているので、[EXE] で次に進むと、

 C?
 78
 A×B×C=42,120
 A×B×C=   42.120


と表示されます。乗算結果 ABC が右寄せで3桁区切り出力されています。


大きな桁の出力

上で最後に作ったプログラムに下記のような追加(赤文字で示す)を行います。

"A"?→A
"B"?→B
"C"?→C
"AxBxC="
7→X:4→Y:ABC→Z
Prog "3DS"

"AxBxC="
0→X:4→Y:ABC→Z
Prog "3DS"


"AxBxC="
" "
0→X:4→Y:ABC→Z
Prog "3DS"


そして、A=1234、B=4567、C=7891 を入力してみると、画面は先ず

 4567
 C?
 7891
 A4.44711351
X1010


となり、一旦停止を解除するために [EXE] を押すと

 C?
 7891
 A4.4411351
X1010   
← 指数表示が右寄せになっている
 A×44,471,135,098  
← 3桁区切り出力が右寄せになっている


となります。3DS の仕様により出力が右に溢れないように、左にずらして出力されており、仕様通りです。但し出力結果は見づらいものです。

さらに [EXE] を押すと、

 A4.44711351X1010
 A×44,471,135,098

 A×B×C=
    44,471,135,098


と、改行&右寄せが適していることが分かります。

0→X と設定した時に右寄せ出力する機能を追加したのは、このような出力が有効だと考えたからです。


大きな桁の出力を試すプログラム

上記のプログラムの最後にコードをさらに追加して、もっと大きな桁で出力するサンプルプログラムを作ってみます。

ちなみに上のプログラムでは、実行を一旦停止するために 旧来の命令 を使い、文字列出力のために " " 命令(出力文字無し)を使っています。この場合 " " は内部カーソル行を改行し、その次に実行される出力命令 " " は改行された位置に出力します。ところが内部カーソル行が4行目になると、内部カーソル行は常に4行目になるので、" "  命令での出力位置は常に4行目となります。

内部カーソル行が4行目になっているときに 4→Y: Prog "3DS" を実行すると、4行目の表示の上に3桁区切り出力が上書きされます。上書きせず改行して出力したい時は、画面を1行上にスクロールさせるために " " 命令 (出力文字なしで改行のみ)を利用しています。

これは、Casio Basic の旧来の命令 " "Locate コマンドを併用する時のチョットしたコツです。

3DS TEST Src for fx-5800P 

これを実行し、A=123、B=345、C=7891 を入力すると、

 456
 C?
 7891
 A×B×C=442590408


[EXE] を押すと、

 C?
 7891
 A×B×C=442590408
 A×B×C442,590,408


[EXE] を押すと、

 A×B×C=442590408
 A×B×C442,590,408
 A×B×C=
     442,590,408


さらに [EXE] を押すと、Cls で画面消去し、

 A×B×C=
     442,590,408


さらに [EXE] を押せば、

 A×B×C=
     442,590,408
 4×A×B×C=
    1,770,361,632




さらに、[EXE] を押して、

 4×A×B×C=
   1,770,361,632
 16×A×B×C=
   7,081,446,528


最後にもう一度 [EXE] を押すと、

 16×A×B×C=
    7,081,446,528
 256×A×B×C=

  113,303,144,447

と表示されます。改行して右寄せで出力すると、大きな桁が見やすくなると思います。

色々と試してみてください。


入力ボックスINPIと3桁区切り3DS の組み合わせ - 3DS DEBUG2 [2017/11/05 追記]
前回 Casio Basic入門57 (Chapter 10-3) で、デバッグ用プログラム 3DS DEBUG2 を紹介していますが、これは入力ボックス INPI と 3桁区切り 3DS を組み合わせて使っています。

INPI3DS は共に 出力位置 (X, Y) と入出力値 Z の意味で、変数 X, Y, Z をサブルーチンに渡す仕様なので、X, Y Z をうまく共有して使えます。改めてプログラムソースを紹介します。

3DS DEBUG2 Src for fx-5800P 


入力ボックスと3桁区切り3DS の組み合わせ - COMPINT [2017/11/11 修正]
Casio Basic入門51 (複利計算プログラム) で入力ボックスの使いこなしを紹介し、さらに3桁区切りサブルーチンを作り組み合わせました。今回の汎用サブルーチン 3DS の原点となったプログラムです。

そこで、[最終版] 複利計算プログラム (3桁区切り) のプログラムを示します。
入力ボックス2INPI 2.0INP 2.1 を利用します。

CompInt src for fx-5800P 




fx-5800P版 高速3桁区切り出力・汎用サブルーチン - 3DS

完成した fx-5800P 版 3桁区切り・汎用サブルーチンを改めて示します。

※ ダウンロード: 3DS for fx-5800P ソースファイル (pdfファイル)

3DS_src_fx5800P.jpg 




次回は、3DS を fx-9860GII と fx-CG50 に移植します。


つづく...

Casio Basic入門59Casio Basic入門G01 / 目次



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ






keywords: fx-5800PCasioBasic、入力ボックス, プログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ



関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

コメントの投稿

非公開コメント

最新記事
検索フォーム
最新コメント
カテゴリ
C# (3)
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム電卓は、プログラムを作って、使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています。

なお管理人はカシオ計算機の関係者ではなく、Casio Basicが面白いと感じる1ユーザーです。


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR