Casio Basic入門57

Casio Basic入門
<目次>

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

 2017/11/04
追記 2017/11/05


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

Chapter 10 - 中級

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

前回: Casio Basic入門56 を見る


前回までに作った3桁区切りサブルーチンは以下です。

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

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

X→D:X→W         
=======
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


今回は、右寄せ出力ができるオプションを追加します。




Chapter 10-3
3桁区切りサブルーチン fx-5800P版 右寄せ出力機能の追加

先ず最初に、簡単なサンプルプログラムを作って 3DS の動作を見てみます。

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

かけ算プログラム:3DS TEST
"A"?→A
"B"?→B
"C"?→C
"A×B×C="
ABC


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

実行すると、

 A?

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

 A?
 12
 B?


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

 12
 B?
 45
 C?


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

 45
 C?
 78
 A×B×C=
         42120


旧来の出力命令 は、改行して右寄せで出力しますが、慣れると見やすくて便利です。そこで、3桁区切り出力にも右寄せ出力をオプションで設定できるようにします。


右寄せで3桁区切り出力

右寄せ出力を指定する方法として、Prog "3DS" の直前の設定で、X0 を設定することにします。

赤文字で示す1行を追加するだけで、うまくゆきます。

右寄せ機能を追加した "高速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


エラー処理ブロックでは、X の値を変数 DW に一旦コピーして、DW で必要な条件判定を行い X の値を変更せずにエラー時の出力を実行するようにしています。今回追加したのは、X=0 の時に単に X の値 (出力開始桁) を変更するだけなので、エラー処理ルーチンに何の影響も与えません。従って、上記の1行を追加するだけで右寄せ機能を実装できます。



検証します。

上のかけ算プログラムの最後の2行を3桁区切りするように変更します。

かけ算プログラム:3DS TEST
"A"?→A
"B"?→B
"C"?→C
"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


乗算結果 A×B×C が右寄せで3桁区切り出力されています。


デバッグ用プログラムを改造 - 3DS DEBUG2
以下のようなデバッグしやすいプログラム 3DS DEBUG2 を作りました。表示開始桁 X と 出力数値 Z のどちらかを変更すると、画面スクロールせずに4行目に結果が出力されるようにしています。条件を変えて色々と検証して、管理人はこれを使って問題ないことを確認しています。

3DS DEBUG2 Src for fx-5800P 

入力ボックス INPI を利用して画面構成を壊さないようにしているので、出力位置が1桁ずれてもスグに分かって便利です。




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

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

3DS_src_fx5800P.jpg 




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


つづく...

Casio Basic入門58 / Casio 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