e-Gadget - プログラム関数電卓 2015年09月

Casio Basic: EngOn/EngOff

Casio Basic
コマンドリファレンス

Casio fx-5800P、fx-9860GII、fx-CG20 で確認をとっています。Casio fx-FD10 Pro では互換性はあると考えられますが、実機で確認していないので「可能性」としてご覧ください。
2015/10/24 更新

fx-5800P / fx-9860GII / fx-CG20
EngOn / EngOff / Eng

◆ 概 要:数の表示の際、3桁毎のエンジニアリング記号[k(キロ)やm(ミリ)など]を使うENGモードの設定/解除を行うコマンド

◆ 書 式:
  ・EngOn: ENGモードを設定 [ fx-5800P / fx-9860GII / fx-CG20]
  ・EngOff: ENGモードを解除 [ fx-5800P / fx-9860GII / fx-CG20]
  ・Eng: ENG モードが On なら Off に、Off なら On に切り替える [fx-9860GII / fx-CG20 ]
       ※ Eng コマンドは fx-5800P には無い。

◆ 引 数:なし

◆ 戻り値:なし


ENGモードで使われる記号一覧
・P:1012
・G:109
・M:106
・k:103
・m:10-3
・μ:10-6
・n:10-9
・p:10-12
・f:10-15



EngOn が Locate コマンドに及ぼす影響:

ENGモードがONに設定されている時は、数字を表示する際に必ず末尾(一番右の桁)に1文字追加される。3桁の整数や0.99999などで記号が追加されない場合はスペースが追加されます。

Locate コマンドを使って数字を表示する際(特に上書きする時)、このスペースが追加される仕様に留意が必要です。これを忘れていると、原因の分からない悩ましいバグとなってしまいます。ENGモードの影響を受けないようなプログラムを書くべきです。


例えば、

サンプルプログラム(1) [fx-5800P / fx-9860GII共通]
EngOn
Locate 1,1,"ABCDEFGH"
Locate 1,1,N


を実行する場合、

N=1234の場合は、1.234k が上書きされるから、以下のように表示されます:

1.234kGH

N=999の場合は、上書きされた結果が以下のように表示されます。
999 EFGH

9 と E の間にスペースが追加されていることが分かります。



サンプルプログラム(2) [fx-5800P / fx-9860GII 共通]
EngOn
123→A
Locate 4,1,"456"
Locate 1,1,A


これを実行すると、

123 56

と表示される。4 と表示されるところ、空白で上書きされることが分かる。



サンプルプログラム(3) [fx-9860GII のみ]
Eng
123→A
Locate 4,1,"456"
Locate 1,1,A


これを実行するたび ENGモードの On と Off が切り替わるので、画面表示が以下の2パターンで切り替わる。

123456

123 56




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


 


keywords: fx-5800PCasioBasicEngOn/EngOffプログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ
関連記事

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

Casio Basic入門G10

Casio Basic入門
<目次>

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

2015/09/22

 5. Casio Basic でグラフィックス

前回: Casio Basic入門G09

Chapter G10
Circle コマンド


前回 ViewWindow による座標系設定で動作確認した以下のグラフィックス描画を行うコマンドは、[SHIFT] [F4] (Sketch) に続くメニューの中にあり、これらをSketch描画コマンドと呼ぶことにします。
  • Plot
  • PlotOn
  • PlotOff
  • PlotChg
  • Line
  • F-Line
  • Circle
  • Vertical
  • Horizontal
  • Text
  • PxlOn
  • PxlOff
  • PxlChg
  • PxlTest( )
今回は、Circle について、詳細動作を調べます。


Circle コマンド

fx-9860GII Ver 2.04 のソフトウェアマニュアル の 8-24 ページには、以下の Circle コマンドの説明があります。

Circle <中心のX座表値>,<中心のY座標値>,<半径Rの値>

説明はこれだけです。


では、実際に円の描画を行ってみます。

まず、座標軸とスケール(座標の目盛)を設定し、円の中心に点をプロット後、円を描画します。
座標軸は、
  • 左端: -63
  • 右端: 63
  • X軸目盛: 10
  • 下端: -31
  • 上端: 31
  • Y軸目盛: 1
を設定し、円は、中心座標(-10, 20)、半径 30 とします。

Circle の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F3] (Crcl)


ファイル名: CIRCLE1
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow -63,63,10,-31,31,10
PlotOn -10,20
Circle -10,20,30


ダウンロード: CIRCLE1


これを実行すると、以下のようになります。

Circle1 

座標(-10, 20)に点がプロットされ、この点を中心として半径 30 の円が描画されていることが確認できます。

ところで、PlotOn は、点が描画されると、その点の座標値が (A, B) とすると、変数 X に A が、変数 Y に B が自動的に代入される仕様です。
楽屋裏 - 酔っ払いの虫

そこで、Circle でも同様な詳細動作があるかどうかを調べるために、変数 XY の値を確認するプログラムを CIRCLE1 を改造して作ります。


ファイル名: CIRCLE2
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow -63,63,10,-31,31,10
PlotOn -10,20
0→X:0→Y
PlotOn -10,20
Text 1,1,X
Text 7,1,Y◢
Text 1,1,"  " (スペース3個)
Text 7,1,"  " (スペース3個)
Circle -10,20,30
Text 1,1,X
Text 7,1,Y
Plot X,Y


ダウンロード: CIRCLE2

円を描画する前に、変数 XY をそれぞれ 0 で初期化した上で、円の中心座標 (-10, 20)PlotOn で点を描画し、XY の値を Text コマンドで表示し、 命令でプログラムの実行を一旦停止しています。

Circle2-1 

座標 (-10, 20) に点が描画され、左上に x 座標値とy 座標値が表示されています。PlotOn で座標 (-10, 20) に点が描画されると、描画点の x 座表値と y 座標値がそれぞれ変数 XY に自動的に代入される仕様が、ここでも確認できます。

[EXE] キーで一旦停止を解除して続く処理を実行させると、左上の -1020 をスペースで上書きして表示を消去した上で、Circle -10,20,30 を実行し、再び 変数 XY の値を Text コマンドで表示します。最後に、Plot X,Y で、座標 (X, Y) に十字カーソルを表示します。

Circle2-2 

この結果から、変数 X には 20 、変数 Y には 20 が代入されていて、カーソルが円の右端に表示されています。
この結果から、Circle x,y,r が実行されると、変数 XY には、以下の値が自動的に代入されていると推測できます。
  • X = x + r
  • Y = y
変数 XY への自動代入の仕様を確認するために、変数 A を 1 から 10 まで変化させながら Circle 10A,5A,2A を実行して、円の座標と半径を次々に変化させて描画し、その時の中心座標の座標値 x (=10A) と y (=5A)、そして半径 r (=2A) の値を表示し、さらに x + r の値を表示させるような以下のプログラムを作ります。このプログラムでは、円描画の後に変数 XY を使って Plot X,Y で十字カーソルを表示させ、XY の値の表示も行います。


ファイル名: CIRCLE3
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow 0,126,10,0,62,10

For 1→A To 10
PlotOn 10A,5A
Circle 10A,5A,2A
Text 1,1,"r="
Text 1,10,2A
Text 7,1,"x= "    (スペース1個)
Text 7,10,10A
Text 13,1,"y= "   (スペース1個)
Text 13,10,5A
Text 19,1,"x+r= " (スペース1個)
Text 19,20,X
Text 48,71,"Plot X,Y"
Text 54,71,"X=  "  (スペース4個)
Text 54,105,"Y=  " (スペース4個)
Text 54,81,X
Text 54,115,Y
Plot X,Y◢
Next


ダウンロード: CIRCLE3

ここで、赤文字で書いた Text 19,20,X に注目してください。rx の値を表示した上で、x + r の値として 変数 X の値を表示しています。
もし、X = x + r が正しいなら、表示された xr の値の和が、x + r の値として正しく表示されることが確認できます。

CIRCLE3 を実行すると、

Circle3-1 

左上に、r=2, X=10, y=5 と表示されます。そして、x+r= 12 となっていますが、この 12 は変数 X の値を表示しています。つまり、X = x + r および Y = y が成立しています。右下には、変数 XY の値が、それぞれ X= 12, Y=5 と表示され、十字カーソルが座標 (12, 5) に表示されています。

この画面は、Plot X,Y◢ で実行が一旦停止した状態なので、[EXE] キーで一旦停止を解除すると、

Circle3-2 

左上に、
r=4
x=20
y=10
x+r=24


右下に、
Plot X,Y
X= 24   Y= 10


と表示され、十字カーソルが (24, 10) に有ることが確認できます。

ここでも、X = x + r と Y = y が成立しています。

さらに、[EXE] でプログラムを進めると、

Circle3-3 

左上に、
r=6
x=30
Y=15
x+r= 36


右下に、
Plot X,Y
X= 36   Y= 15


と表示され、X = x + r そして Y = y が成立していて、十字カーソルが座標 (36, 15) に表示されています。カーソルの位置 (36, 15) は円の外接垂直線と円との接点になっていることが分かります。そして、PlotOn 10A,5A で円の中心に点が描画されていることも確認できます。 

さらに [EXE] を押してゆくと、

Circle3-4 

Circle3-5 

Circle3-6 

Circle3-7 

Circle3-8 

Circle3-9 

Circle3-10 

ここまでは、いずれも X = x + rY = y が成立していて、Plot X,Y によりカーソルが円の右端(外接垂直線と円の接点)に表示されています。もう一度 [EXE] を押すと、プログラムが終了します。

以上から、Circle x,y,r を実行すると、変数 XY には、X = x + rY = y となるように、自動的に値が代入されることが確認できました。



変数 XY に、自動的に値が代入されることが分かったので、XY 以外の変数はどうなっているのか、調べるために、先ず変数 AZ を 0 で初期化し、次にCIRCLE3 を実行・終了させ、最後に変数 AZ の値を確認します。


変数の初期化

[MENU]
MAIN MENU を表示して、

MENU 

MEMORY を選んで [EXE] キーを押し、

Memory 

[F1] (F1:Main Memory) を押し、ALPHA MEM にカーソルを合わせてから、

Mainmemory_AlphaMem 

[F1] (SEL) で、ALPHA MEM の左端に マークが付き、

MainMemorySelected

[F6] (DEL) を押すと、ポップアップが現れ、

MainMemoryPopup 

Delete All The
  Selected Data?
  Yes:[F1]
  No :[F6]


と表示されるので、ここで [F1] を押してアルファベットメモリ、つまり変数 AZ を初期化して、値を全て 0 にします。

[MENU] キーで MAIN MENU に戻ります。


CIRCLE3 の実行

プログラムモードへ移行して、CIRCLE3 を実行・終了させます。


各変数の確認

[MENU] キーで MAIN MENU に戻り、[1] を押すか、RUN・MAT アイコンを選び [EXE] を押すかして、電卓モードへ移行します。

Menu[1] 

[ALPHA] [X,θ,T] (A) [EXE] で、変数A の値を確認します。A = 10 になっているのは、プログラム CIRCLE3 の動作通りで正しい値です。同様に、変数 BC の値を確認します。

Check_A-C 

アルファベット順に、全ての変数の値を確認してゆき、最後の X から Z は、以下のようになります。

Check_X-Z 

結果として、変数 AXY のみに値が代入されていることが分かります。 変数 A はプログラムで使ったので、For 文最後で代入される 10 になっているのは、正常です。それ以外は、XY のみの値が変更されているわけです。変数 R に半径の値が代入される可能性も考えられましたが、実際は R の値は更新されません。

円の中心座標は (10A, 5A)、半径は |2A| なので、A = 10 になっていることから中心座標 (x, y) = (100, 50)、半径 20 です。
従って変数 XY の値は、X = x + r = 120Y = y = 50 に従って自動更新されていることが確認できました。

つまり、Circle x,y,r  を実行すると、変数 XY のみに値が自動的に更新され、

X = x = r
Y = y 


となることが確実です。



上のプログラムでは、Circle x,y,rx, y, r は全て正の値なので、これらが負の時は、どうなるのかを調べてみるために、次のプログラムを実行してみます。CIRCLE3 とは座標系を変更し、変数 A の値を -5 から 5 まで For文で変更して、CIRCLE3 と全く同様に
PlotOn 10A,5A
Circle 10A,5A,2A
Plot X,Y

を実行します。Text コマンドでの各変数表示は、少し変更します。


ファイル名:CIRCLE4
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow -63,63,10,-31,31,10

For -5→A To 5
PlotOn 10A,5A
Circle 10A,5A,2A
Text 1,1,"(x,y,r)=( "  (スペース個)
Text 1,35,10A
Text 1,50,",  "       (スペース4個)
Text 1,55,5A
Text 1,70,"  "        (スペース4個)
Text 1,75,2A
Text 1,90,")  "       (スペース4個)
Text 7,1,"X=x+r, Y=y"

Text 13,1,"X=  "     (スペース4個)
Text 13,30,"Y=   "    (スペース個)
Text 13,10,X
Text 13,40,Y
Plot X,Y◢
Next


ダウンロード: CIRCLE4


これを起動すると、Plot X,Y◢ で実行が一旦停止し、[EXE] で解除し、それを繰り返すことで、位置と大きさの異なる円を次々に描画します。

Circle4-1 

Circle4-2 

Circle4-3 

Circle4-4 

Circle4-5 

Circle4-6 

Circle4-7 

Circle4-8 

Circle4-9 

Circle4-10 

Circle4-11 

以上から、Circle x,y,r で設定する半径 r が負の数でも、正の数に自動的に変換されて描画されることが分かります。

そして、X = x + r , Y = y が成立することも分かります。

そして、Circle 実行後の 変数 XY で決まる座標 (X, Y)、つまり Plot X,Y で表示されるカーソルの位置は、原点の左下に円がある時は、円の右端でなくて左端になっています。

X = x + r が成立していることは確認できているので、この計算の結果が反映されているだけのことですが、この式をよく見て考えると、r が負になっている時に、カーソルが円の左端に来ることが分かります。

x の値は円の中心の X 座標値です。
従って、r が正の時は、X = x + r によって、Xx よりも大きな値になるので、X から右へ 半径 r だけ進んだ位置、つまり円の右端になります。

一方、r が負の時は、X = x + r によって、Xx よりも小さな値になり、X から左へ(つまり負の方向へ) 半径 r だけ進んだ位置、つまり円の左端になります。



なんだかピンと来ないかも知れませんが、実際にプログラムを変更してみると、確認できます。CIRCLE4 の2カ所の 2A (= r) を Abs 2A ( = |r| )に変更して、r を常に正の値になるようにして、表示をみてみましょう。

ここで、Abs は絶対値を求める関数です。

Abs

書式Abs x
  • x の絶対値 ( |x| )を求める( | | は絶対値の数学的表現)。
入力方法[OPTN] [F6] (▷) [F4] (NUM) [F1] (Abs)



ファイル名:CIRCLE5
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow -63,63,10,-31,31,10

For -5→A To 5
PlotOn 10A,5A
Circle 10A,5A,Abs 2A
Text 1,1,"(x,y,r)=( "  (スペース個)
Text 1,35,10A
Text 1,50,",  "       (スペース4個)
Text 1,55,5A
Text 1,70,"  "        (スペース4個)
Text 1,75,Abs 2A
Text 1,90,")  "       (スペース4個)
Text 7,1,"X=x+r, Y=y"

Text 13,1,"X=  "     (スペース4個)
Text 13,30,"Y=   "    (スペース個)
Text 13,10,X
Text 13,40,Y
Plot X,Y◢
Next


ダウンロード: CIRCLE5

変更した2カ所を赤文字で示しています。

これを実行してみると、以下のようになります。

Circle5-1 

Circle5-2 

Circle5-3 

Circle5-4 

Circle5-5 

Circle5-6 

Circle5-7 

Circle5-8 

Circle5-9 

Circle5-10 

Circle5-11 

この描画結果から、Circle x,y,r のパラメータ x, y, r は正でも負でも良く、r に負を指定しても正の値として半径が設定されます。
変数 X と Y のみが、X = x + r、Y = y で算出される値が、自動更新されます。

その結果として、r が正の場合は、Plot X,Y は、円の右端にカーソル表示し、r が負の場合は左端にカーソル表示します(X = x + r が正しい証拠となります)。


今回明かになった、Circle コマンドの仕様は以下の通りです;

Circle コマンド

書式Circle x,y,r
  • x, y, r は任意の実数。
  • デフォルトの論理座標系あるいはViewWindow座標系で使う。
  • 座標 (x, y) を中心とし、半径 |r| の円を描画する。
  • 描画実行後、変数 XY には、X = x + rY = y の値が自動的に代入される。
入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F3] (Crcl)






今回のまとめ
  • Cirrcle x,t,r は、デフォルトの論理座標系或いはViewWindow座標系において、座標 (x, y) を中心とし、半径 |r| の円を描画する。ここで、x, y, r は任意の実数。
  • Circle x,y,r を実行すると、変数 XY は、X = x + rY = y となる値が自動的に代入される。


今回使ったグラフィックス コマンド

  • ClrGraph
  • CoordOff
  • GridOff
  • AxesOn
  • LabelOff
  • ViewWindow
  • Circle
  • PlotOn
  • Text
  • Plot
  • Text
  • Abs




つづく...

Casio Basic入門 G11 / 目次



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


 




keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

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


関連記事

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

Casio Basic グラフィックス - 目次

Casio Basic グラフィックス

目 次


2015/08/15
追記 2015/10/25


Casio Basic グラフィックスコマンドは、取扱説明書での説明が簡易すぎて、具体的な使い方のみならず、その仕様が明記されていません。従って、期待しない動作をした時、それが仕様なのかバグなのか、簡単には分かりません。さらに、プログラミング経験者ほど却って勘違いする仕様も多くあります。

実際に細かく調べて分かったことを、連載記事として公開しています。
 ⇒ Casio Basic入門G01 から (詳しくは Casio Basic入門 - 目次 - を参照)

そこで、グラフィックスのコマンドリファレンスとしてまとめてゆきます。現在は fx-9860GII について調べていますが、fx-CG20 / fx-CG10 では、PxlOn, PxlOff, PxlChg, PxlTest( ), Text 以外およびカラー設定コマンド以外は、fx-9860GII と互換です。



随時<書きかけ>としながら少しづつ公開してゆきます.

[2015/08/23 追記]
簡潔なリファレンスは インサイドCasio Basic として書いてゆくことにし、必要な追記を加える予定です。


グラフィックス全般

 Casio Basic のグラフィックス描画エリア

 グラフィックス画面とテキスト画面


座標系

 多様なグラフィックス座標系

 座標系の比較と内部動作: [1] 

 ViewWindow (直交座標系)[1] [2] [3] [4] [5] [6] 

 Xdot[1] [2] 

 Xmin / Xmax / Ymin / Ymax[1] [2] [3] 

 Xscl / Yscl[1] [2] 

 Xfct / Yfct[1] [2] 

 StoV-Win / RclV-Win[1] [2] 


グラフ設定

 CoordOn / CoordOff[1] [2] [3] [4] 

 GridOn / GridOff[1] [2] 

 AxesOn / AxesOff[1] [2] 

 LabelOn / LabelOff[1] [2] 


クリア

 Cls [1] [2] [3] 

 ClrGraph[1] [2] [3] [4] 

 ClrText[1] [2] 




 Plot[1] [2] [3] [4] 

 PlotOn / PlotOff / PlotChg [1] 

 PxlOn[1] [2] [3] 

 PxlOff
[1] [2] [3] 

 PxlChg: [1] [2] [3] 

 PxlTest( )[1] [2] 




 Line[1] [2] [3] 

 F-Line[1] [2] [3] [4] [5] 

 Vertical[1] [2] 

 Horizontal[1] [2] [3] 




 Circle[1] [2] [3] 


テキスト

 Text[1] [2] [3] 


スタイル

 SketchDot[1] [2] 

 SketchBroken[1] 

 SketchThick[1] [2] 

 SketchNormal[1] 

 SketchThin [fx-CG20/10 のみ]

 S-L-Dot[1] 

 S-L-Broken[1] 

 S-L-Thick[1] 

 S-L-Normal[1] 

 S-L-Thin [fx-CG20/10 のみ]


画面呼び出し / コピー

 StoPict / RclPict[1] [2] 

 RclCapt[1] 




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


 




keywords: fx-9860GIICasioBasic、グラフィックス, プログラミング入門プログラム関数電卓

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


関連記事

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

Casio Basic入門G09

Casio Basic入門
<目次>

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

追加・更新 2015/09/10

 5. Casio Basic でグラフィックス

前回: Casio Basic入門G08

Chapter G09
ViewWindowと設定変数


ViewWindow は、Casio Basic のグラフィック描画の中心となる重要な設定だと分かってきました。今回は、ViewWindow の設定変数について調べ、さらに線描画の詳細をもう少し調べてみます。


ViewWindow の書式

前回と同様に、fx-9860GII のソフトウェア バージョン 2.04 取扱説明書の 8-24 ページに書かれている、ViewWindow の書式を紹介します。

ViewWindow <Xminの値>,<Xmaxの値>,<Xscaleの値>,
          <Yminの値>,<Ymaxの値>,<Yscaleの値>,
          <Tθminの値>,<Tθmaxの値>,<Tθpitchの値>


今のところ直交座標系のみについて調べているので、当面3行目は無視しておきます。

<...の値> とは、それぞれ専用の変数の値を指しているので、間違いではありません。と言うのも、変数 Xmin, Xmax, Xscl, Ymin, Ymax, Yscl , Ysc に値を代入するだけで、ViewWindow 設定とほぼ同じであり、これらの変数を変更すれば座標系の設定を変えられるのです。但し、XscaleYscale という変数はなく、それぞれ Xscl, Yscl が正しい変数名なのは要注意です。

ViewWindow の間にスペースが入っている点も含めて、Xscal、Yscale の記述は改訂すべきだと思います。

実は、取扱説明書の記述には、さらに大きな問題があると思っています。Xminの値、Xmaxの値、Yminの値、Ymaxの値 との記述は、実に誤解を招く表記だと思います。

本来は、以下の意味です。
・ Xmin = 画面左端の X の値
・ Xmax = 画面右端の X の値
・ Ymin =
画面下端の Y の値
・ Ymax =
画面上端の Y の値


書式と入力方法
 ⇒ ViewWindow の性質
 ⇒ ViewWindow に関連する変数



座標系を設定する場合、ViewWindow コマンドの実行と、Xmin, Xmax, Xscl, Ymin, Ymax, Yscl での各変数設定は同じ効果だと分かっています。そこで、以下のプログラムを作ってみます。

ファイル名: VLINE1
Cls
CoordIff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,62,0
For 0→X To 126
X→Xmin
126+X→Xmax
Vertical 126
Whle Getkey
WhileEnd
Next


⇒ ダウンロード: VLINE1


プログラム冒頭のグラフィックス画面消去は、ViewWindow で座標系を設定するので、論理座標系に自動設定する機能を含んだ ClrGraph を使わず Cls にしても問題はありません。

ViewWindow 0,126,0,0,62,0 で座標値とピクセル位置が、四捨五入による誤差が発生しない座標系にしています(四捨五入による五歳については Casio Basic入門G07 参照)。

For 文では、座標系の設定を変更してから垂直線を描画する動作を繰り返しています。For 文内にある While ループは、何かキーを押したらループが回り、キーを離したらループを出る動作をするので、何かキーを押した時は垂直線描画の繰り返しが一時停止します。

さて、For 文をもう少し詳しく見てゆきます。

変数 X は最初 0 なので、Xmin は 0 、Xmax は 126 になります。最初の ViewWindow の設定のままとも言えます。そして 垂直線描画コマンドで Vertical 126 を実行するので、画面の右端に垂直線が描画されます。

For 文(ループ)が2回目に実行される時は X が 1 増えて 1 になるので、Xmin は 1、Xmax は 127 になります。X座標の範囲が 1 から 127 になり、座標系が 1 ずれます。すると Vertical 126 は画面右端から1ピクセル左にずれた位置に垂直線を描画します。

For 文(ループ)が3回目に実行されるときは、X が 1 増えて 2 になるので、Xmin が 2、Xmax が 128 になり、Vertical 126 は画面右端から2ピクセルずれた位置に垂直線を描画します。

このように、垂直線が右端から1ピクセルずつ左へ繰り返し描画されてゆき、X が 126 の時が For 文(ループ)最後の繰り返し処理になります。X が 126 の時は、Xmin が 126、Xmax が 252 になり、Vertical 126 は画面左端に垂直線を描画して、For ループが終わります。

XminXmax の設定変更が、ViewWindow の再設定と完全に同一の動作をするなら、設定が変更されるたびにグラフィックス画面を消去し(ViewWindow の仕様)垂直線が右端から左端まで移動するように見えるはずです。もしグラフィックス画面消去を行わないなら、画面が垂直線で埋められ最後は画面が真っ黒になるはずです。

では、プログラムを実行して確かめてみます。

VLINE1-1 

さらに、縦線が左に移動してゆきます。移動中に何かキーを押している間は、縦線の移動が止まります。

VLINR1-2 

左端まで移動すると止まります。

VLINE1-3 

垂直線が右端から左端まで移動することから、XminXmax の値変更は、ViewWindow 設定と同様に グラフィックス画面の消去動作を伴うことが確認できました。



座標系設定変数の動作について、もう少し詳しく調べて見るために、わざとエラーが出る条件を探すために、次のプログラムを実行してみます。

ファイル名: VLINE2
Cls
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,62,0
For 60→X To 126
X→Xmin
126-X→Xmax
Vertical Xmax-1◢
Next


⇒ダウンロード: VLINE2


For 文では、ViewWindow 座標系の横幅を狭くして垂直線を描画しています。、
For ループの最初は、X=60 だから、Xmin=60、Xmax=66 になり、Vertical 65 が実行されます。
ループ2回目は、X=61、Xmin=61、Xmax=65 なので、Vertical 64 が実行されます。
3回目は、X=62、Xmin=62、Xmax=64 で、Vertical 63 が実行されます。
4回目は X=63 なので、Xmin=63、Xmax=63 となり、Vertical 62 が実行されます。

XminXmax が同じ値になると、X座標の幅が 0 となりエラーが出る可能性があるので、この時の様子を調べるのが目的です。

併せて、Vertical のパラメータに ViewWindow の設定変数を指定して正しく動作するかどうかも確かめます。
なお、Vertical Xmax-1◢ なので、垂直線を描いて一旦停止します。[EXE] で一旦停止解除です。

では、このプログラムを実行します。

起動した時;

VLINE2-1 

[EXE] を一回押すと、

VLINE2-2 

さらに、[EXE] を押すと、

VLINE2-3 

もう一度、[EXE] を押すと、エラーが発生します。

VLINE2-4 

このエラー;

Range ERROR
  Press [EXIT]


は、範囲設定のエラーという意味です。表示に従って [EXIT] を押すと、

VLINE2-5 

カーソルが、Vertical Xmax-1 の前にきています。つまり、Vretical コマンド実行前にエラーが発生していることを示しています。
[EXE] を押す回数から、XminXmax がともに 63 になっていて、やはり、X座標の幅が 0 になるとエラーが発生するようです。


ここで、VLINE2 をもう一度実行すると、面白いことが分かります。

VLINE2-6 

上と同じ Range ERROR (範囲設定のエラー) となりますが、エラーが発生している場所を確認するために、[EXIT] を押すと

VLINE2-7 

エラーが発生しているところが異なります。

もう一度、上のソースコードを見れば分かるように、Vertical コマンドに達する前の ViewWindow コマンドでエラーになっています。さらに、ViewWindow 0,126,0,0,62,0 の最後にカーソルがあるので、この ViewWindow 座標設定後にエラーが発生していて、上のエラーとは発生場所が異なっています。

ViewWindow 座標設定により、XminXmax が異なる設定になるから、Range ERROR が解消されることを期待しましたが、そうはゆかないことが分かります。

一旦 Range ERROR が発生すると、ViewWindowでは解消できないわけです。



Range ERROR を解消する方法を調べて見ると、以下の2つの方法が有効です。
  1. ViewWindow 0,126,0,0,62,0 の代わりに 0→Xmin:126→Xmax とする。
  2. 冒頭の Cls  を ClrGraph に置き換える。
エラー解消方法1から、XminXmax の優先度が ViewWindow よりも高いことが分かります。

先ず、以下のように赤文字部分を1行追加します。

ファイル名: VLINE3.1
Cls
CoordOff
GridOff
AxesOff
LabelOff
0→Xmin:126→Xmax
ViewWindow 0,126,0,0,62,0
For 60→X To 126
X→Xmin
126-X→Xmax
Vertical Xmax-1
Text 1,1,X
Text 7,1,Xmin
Text 13,1,Xmax◢
Next


⇒ ダウンロード: VLINE3.1


これを実行すると最初は正常動作しますが、XminXmax が同じ値になるとエラーになります。つまり一旦はエラーが解消されることが確認できます。


エラー解消法2として、プログラム冒頭の ClsClirGraph に置き換えます。

ファイル名: VLINE3.2
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,62,0
For 60→X To 126
X→Xmin
126-X→Xmax
Vertical Xmax-1
Text 1,1,X
Text 7,1,Xmin
Text 13,1,Xmax◢
Next


⇒ ダウンロード: VLINR3.2


ClrGraph によりエラーが解消されると最初の ViewWindow 設定は正しく動作するので、エラーは解消されていることが分かります。しかし、XminXmax が等しくなると再びエラーになります。

従って、万一の Range ERROR に備えて、プログラム冒頭のグラフィックス画面消去には ClrGraph を使うのが確実だと分かります。



さて、XminXmax が同じ値になると Range ERORR が発生することが分かったので、他に Range ERROR が発生する条件を調べて見ます。

Xmin = Xmax = 0 でエラーが発生するならば、ViewWindow 0,0,0,0,62,0 でもエラーが発生するはずです。以下のプログラムを実行してみます。

ファイル名: VW1.1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,0,0,0,62,0


⇒ ダウンロード: VW1.1


これを実行してみると、Range ERROR が発生しません。つまり ViewWindow の設定のみではエラーにならず、その後のコマンドでエラーが発生することになります。

ViewWindow の後にグラフィックス描画コマンド(Sketch コマンド)と ViewWindowRange ERROR が発生することが分かりました。

以下のプログラムで確認できます。描画コマンドは、全て ' でコメントアウトしていあるので、1つづつコメントアウト記号を外して確認してください。

ファイル名: VW1.2
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,0,0,0,62,0
'ViewWindow 0,126,0,0,0,0


'Plot
'PlotOn 0,0
'PlotOff 0,0
'PlotChg 0,0
'Line
'F-Line 0,0,1,1
'Circle 0,0,1
'Vertical 0
'Horizontal 31
'Text 1,1,1
'PxlOn 1,1
'PxlOff 1,1
'PxlChg 1,1
'PxlText(0,1)
'ViewWindow 0,126,0,0,62,0
'126→Xmax

⇒ ダウンロード: VW1.2


Plot から PxlChg までは、Range ERROR が発生し、[EXIT] を押すと、これらコマンドの頭でカーソルが点滅しています。これらコマンドは、実行される前にエラーが発生することが確認されました。これらコマンドの内部動作として、XminXmax が等しいかどうかをチェックして、等しい時にはコマンドを実行する前にエラー表示をすることが分かります。

ところが、PxlTest(0,1) の場合は、エラー発生時に、0 の直後でカーソルが点滅しますが、コマンドが実行される前にエラー表示されます。

次に、ViewWindow 0,0,0,0,62,0 をコメントアウトし、'ViewWindow 0,126,0,0,0,0 のコメントアウトを外しても、全く同じ結果になることが分かります。


ViewWindow
 で発生するエラーについては、要注意です。
ViewWindow 0,126,0,0,0,0 をコメントアウトして、ViewWindow 0,0,0,0,62,0 を有効に変更し(元に戻し)ます。
この場合、エラー発生時には最後の 0 の直後にカーソルがきます。最終行の 126→Xmax のコメントアウトも併せて解除してから実行しても Range EROR が発生し、カーソルは最後の 0 の直後にカーソルがきます。

ところが、最終行のコメントアウトした '126→Xmax を削除して、ViewWindow が最終行になる場合は、エラー発生時のカーソルは 最後の 0 の直前にきます。

一方、ViewWindow 0,0,0,0,62,0 をコメントアウトし、'ViewWindow 0,126,0,0,0,0 のコメントアウトを外すと、エラーになりません。ViewWindow 設定で Y座標の 下端と上端の値が同じでもエラーになりません。X座標とY座標で状況が異なることに注意が必要です。この動作の内部動作については、まだよく分かりませんが、このような仕様になっています。

ViewWindow の内部動作については、まだよく分からないので、引き続き探索を続けたいと思います。



では、エラー発生の条件として、Xmin = Xmax を直接設定する場合は、以下のようになります。

ファイル名: VW1.3
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
0→Xmin:0→Xmax


⇒ ダウンロード: VW1.3

これを実行してみると、Range ERROR が発生しません。つまり 0→Xmin:0→Xmax の設定のみではエラーにならず、その後のコマンドでエラーになると考えられます。

そこで、VW1.2 と同様に以下のプログラムを実行すると、グラフィックス描画コマンド(Sketch コマンド)と ViewWindowRange ERROR が発生することが確認できます。各描画コマンドと ViewWindow を1つづつコメントアウトを外して確認してみてください。

ファイル名: VW1.4
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
0→Xmin:0→Xmax
'0→Ymin:0→Ymax


'Plot
'PlotOn 0,0
'PlotOff 0,0
'PlotChg 0,0
'Line
'F-Line 0,0,1,1
'Circle 0,0,1
'Vertical 0
'Horizontal 31
'Text 1,1,1
'PxlOn 1,1
'PxlOff 1,1
'PxlChg 1,1
'PxlText(0,1)
'ViewWindow 0,126,0,0,62,0
'126→Xmax

⇒ ダウンロード: VW1.4

エラーの発生の状況は、VW1.2 と全く同じです。ViewWindow で発生するエラー、Ymin = Ymax 時には ViewWindow でエラーが発生しないことを含めて同一の結果になります。

Xmin = XmaxViewWindowRange ERROR になるにも関わらず、Ymin = Ymax では Range ERROR が発生しない非対称な仕様は、Xdot が変数として用意されているものの、Ydot が無いことと関係があるのかも知れません。

ここまでのエラー発生条件のまとめ;
  1. XminXmax は、この変数に値を直接代入するか、ViewWindow で間接的に設定できる。
  2. 設定方法が直接か間接かは問わず、Xmin = Xmax および Ymin = Ymax になると、Sketchコマンド実行時に Range ERROR となる。
  3. ViewWindowXmin = Xmax の時に実行するとRange ERROR となるが、Ymin = Ymax の時はエラーにならない。


座標設定変数には、Xdot もあり、次のプログラムを実行すると、Xdot に 0 を代入しようとすると Range ERROR になることが分かります。

ファイル名: VW1.5
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
0→Xdot


⇒ ダウンロード: VW1.5


Range ERROR が発生し、[EXIT] を押すと、

0→|Xdot

と、Xdot の直前でカーソルが点滅しています。変数 Xdot に 0 が代入されると直ちにエラーになる点は、XminXmax は、互いに等しくなっても直後にはエラーとならず、Sketch コマンドや ViewWindow 実行時にエラーとなるので、挙動が異なります。 


Xdot は、以下の計算で求まります;[2015/09/10 修正]

Xdot = (Xmax - Xmin) / 126
 ※ Xmin と Xmax から Xdot を算出する時は、この式に従います。

但し、Xdot に直接値を代入する場合は、正の数でなければエラーになるので、以下の式のように絶対値記号を使う必要があります。

Xdot = |(Xmax - Xmin)| /126
 ※ | | は絶対値(+やーの符号を外す)演算です。 


以下のプログラム VW1.6 を実行してみると、XminXmax を変更すると上の式によって Xdot が更新されることが分かります。さらに、XminXmax を同じ値にすると、Xdot が 0 に更新されることが確認できます。

つまり、XminXmax の値の変化に連動して Xdot の値が 0 以下に更新されても直ちに Range ERROR にならないこと、そして、Xdot に 0 以下 を代入すれば直ちに Rnage ERROR になるのは、Casio Basic の仕様だと分かりますす。


Range ERROR を解消するために、Xdot正の値に設定しても良いかもしれません。そこで、VLINE3.10→Xmin:126→Xmax の代わりに 1→Xdot を実行させ、動作を確認してみます。


ファイル名: VLINE3.3
Cls
CoordOff
GridOff
AxesOff
LabelOff
1→Xdot
ViewWindow 0,126,0,0,62,0
For 60→X To 126
X→Xmin
126-X→Xmax
Vertical Xmax-1
Text 1,1,X
Text 7,1,Xmin
Text 13,1,Xmax◢
Next


⇒ ダウンロード: VLINE3.3


これを実行すれば、Xdot正の値に設定すると Range ERROR が解消されることが確かめられます。

[2015/09/08 追記]
ViewWindow で間接的に、あるいは XminXmax に直接値を代入して、Xmin Xmax (つまり Xdot 0) にする場合は、Sketch コマンドや ViewWindow 実行時にエラー (Range ERROR) にはなりません。 

例えば、以下の2つのプログラムは、Xmin > Xmax に設定し、画面の右上が原点となりますが、エラーにならず、正常動作します。

VW.Test1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 126,0,0,62,0,0
Text 1,1,Xdot
Text 7,1,Xmin
Text 13,1,Xmax
PlotOn 10,10



VW.Test2

ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
126→Xmin:0→Xmax:0→Xscl
62→Ymin:0→Xmax:0→Yscl

Text 1,1,Xdot
Text 7,1,Xmin
Text 13,1,Xmax
PlotOn 10,10



座標を設定する変数、XminXmaxXsclXdotYminYmaxYscl を自由に設定して、他の変数がどのように変化するのか、確かめるプログラムを作ってみます。

これまでのサンプルプログラム作成で、XsclYscl の値を変えても、他の変数への影響が無いことが経験的に分かっています。
XminXmax そして YminYmax もそれぞれ独立に変更できることも、経験的に分かっています。
このプログラムでは、XminXmaxXdot の関係を調べることが主な目的です。
但し、これら7つの変数を自由に変更できるようにしました。

ファイル名: VW1.6
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow 0,126,0,0,62,0

While 1
Cls
ClrText
Locate 1,1,"1 Xmin:       "
Locate 1,2,"2 Xmax:       "
Locate 1,3,"3 Xscl:       "
Locate 1,4,"4 Xdot:       "
Locate 1,5,"5 Ymin:       "
Locate 1,6,"6 Ymax:       "
Locate 1,7,"7 Yscl:       "

Locate 9,1,Xmin
Locate 9,2,Xmax
Locate 9,3,Xscl
Locate 9,4,Xdot
Locate 9,5,Ymin
Locate 9,6,Ymax
Locate 9,7,Yscl

Do
Getkey→K
LpWhile K=0
0→M
K=72⇒1→M
K=62⇒2→M
K=52⇒3⇒M
K=73⇒4→M
K=63⇒5→M
K=53⇒6→M
K=74⇒7→M
K=47⇒Break

If M=1:Then
9→X:1→Y:10→D:1→E
Prog "IN":Z→Xmin
Else If M=2:Then
9→X:2→Y:10→D:1→E
Prog "IN":Z→Xmax
Else If M=3:Then
9→X:3→Y:10→D:1→E
Prog "IN":Z→Xscl
Else If M=4:Then
9→X:4→Y:10→D:1→E
Prog "IN":Z→Xdot
Else If M=5:Then
9→X:5→Y:10→D:1→E
Prog "IN":Z→Ymin
Else If M=6:Then
9→X:6→Y:10→D:1→E
Prog "IN":Z→Ymax
Else If M=7:Then
9→X:7→Y:10→D:1→E
Prog "IN":Z→Yscl
IfEnd:IfEnd:IfEnd
IfEnd:IfEnd:IfEnd
IfEnd

'Plot 0,0
WhileEnd

ClrText
Locate 9,5,"bye!"


⇒ ダウンロード: VW1.6
⇒ ダウンロード: IN ver 2.1G

このプログラムでは、入力ボックス を使うのでこれを併せてダウンロードしてください。

ソースコードから分かるように、[EXIT] キーで正常終了します。

プログラム起動時は、ViewWindow 9,126,0,0,62,0 が設定され、この時の各変数の値を表示します。

XminXmax に対して、Xdot = (Xmax - Xmin) / 126Xdot が変化します。
Xdot を変更すると、Xmin は変化せず、Xmax が変化します。

なお、コメントアウトしている Plot 0,0 を実行させれば、設定変更だけではエラーにならないもののグラフィックス描画コマンド(Sketch描画コマンド)の実行によりエラーになる場合を確認できます。




今回のまとめ
  • XminXmax を設定すると ViewWindow の設定と同様にグラフィックス画面が消去される。
  • Vertical コマンドのパラメータに Xmax が使える。⇒ Xmin も使える。
  • X座標の幅が 0 になると、Range ERROR が発生する。
  • Range ERRORViewWindow 設定では解消できない。
  • Range ERROR を解消するには、ClrGraph が有効。
  • Range ERROR を解消する別の方法として、座標設定変数に直接値を設定することも有効。
  • Range ERROR を解消するために、Xdot を 0 以外の値に設定することも有効。
  • Xmin = Xmax ならびに Ymin = Ymax の時、Sketch コマンドで Rnage ERROR が発生する。
  • Xmin = Xmax の時、ViewWindowRange ERROR が発生する。 
  • Ymin = Ymax では、ViewWindowRange ERROR にならない。
  • Xdot に 0 を設定すると、この設定直後に Range ERROR となる。
  • XminXmax から Xdot が自動的に求められる。
  • Xdot を変えると、Xmin は変わらず、Xmax が変化する。

今回使ったグラフィックス コマンド

  • ViewWindow
  • XminXmax 設定
  • Plot
  • PlotOn
  • PlotOff
  • PlotChg
  • Line
  • F-Line
  • Circle
  • Vertical
  • Horizontal
  • PxlOn
  • PxlOff
  • PxlChg
  • PxlTest


つづく...

Casio Basic入門 G10 / 目次




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


 




keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

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


関連記事

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

テンキーの数字からキーコードへの変換式

これまで、色々とプログラムを作っている際、押したテンキーの数字から、そのキーのキーコードを導き出す簡単な計算式があれば良いと思いつつも、そのようなものは考えついていませんでした。

そこで、配列変数を使って、以下のように対応を付ける方法を使っています。
10→DimZ
35→Z[1]:36→Z[2]
37→Z[3]:21→Z[4]
22→Z[5]:23→Z[6]
31→Z[7]:32→Z[8]
33→Z[9]:25→Z[0]


この場合は、テンキーの数字を N とすると、キーコードZ[N] で得られます。


fx-5800P では、配列変数へのアクセスは20ms 程度の時間がかかるので、上のように10個の配列変数を初期化するのに 200ms (0.2秒) かかります。それだけでなく、プログラム中で Z[N] を使えば、そのたびに 20ms の時間がかかります。実際はこの程度の時間を許容するしかないと思っています。

もし簡潔で高速に計算できるなら、テンキーの数字からキーコードを計算して使えばよく、配列変数の遅さを解消できる可能性があるので、頭の隅っこで引っかかっていました。


ところで、PCで使う Windows プログラムを作っていて、アイディアがひらめきました。全然違うことに頭を使っていると、昔の疑問へのヒントが突然現れる...人間の脳の働きは面白いと思います。

そして、fx-5800Pテンキーの数字からキーコードを求める式ができそうな気がしたので、整理してみました。

テンキー Nキーコードキーコード計算AB共通の計算式
135= 17+N+171117+N+10A+7B
236= 17+N+171117+N+10A+7B
337= 17+N+171117+N+10A+7B
421= 17+N+0 0017+N+10A+7B
522= 17+N+0 0017+N+10A+7B
623= 17+N+0 0017+N+10A+7B
731= 17+N+7 0117+N+10A+7B
832= 17+N+7 0117+N+10A+7B
933= 17+N+7 0117+N+10A+7B

このように、3色で区別したグループ内では、それぞれ共通点があり、上の表に示したように、AB が 01 になれば、17+N+10A+7B でキーコードが計算できることが分かりました。

従って、AB を高速に求める計算方法が見つかれば、今後のプログラムで利用できます



A については、単調減少する反比例のグラフ y = a/x +b をヒントにして、x = 1, 2, 3 の時 1≦y≦1.9 となり x = 4, 5, 6, ,7, 8, 9 の時 0 < y < 1 となる条件から ab を求め、N が 1, 2, 3 の時に A が 1 で、それ以外は A が 0 となる式を決めました。

 Int(1.35÷N+ 0.55)→A



B については、x = 4, 5, 6 の時 0< y < 1 となり、x がそれ以外の時 1≦ y < 2 となる使えそうなグラフは何かと考えてみて、取りあえず三角関数くらいしかなさそうだと考え、N = 1 ~ 9 を余弦関数 (cos) の1周期としてみると、

cos [2π (N-1)/8] 

ここで、N = 3 , 7 で丁度 0 となり、N= 1, 9 で丁度 1 となります。つまり、N = 4~6 で 0 以下となり、それ以外は正の数となるので、目的に合うことが分かります。あとは、係数をあれこれ検討すればよく、以下の式が出来ました。

Int(1+0.9cos((N-1)π÷4))→B

余弦関数 cos で N=1 の時から N=9 の時を1周期となるようにして、あとは Int( ) で 0 か 1 かになるように cosの振幅係数を 0.9 とし、グラフ全体を 1 だけ持ち上げるようにしたわけです。


以上をまとめると、テンキー Nキーコード  K は、

17+N+10Int(1.35÷N+0.55)+7Int(1+0.9cos((N-1)π÷4)))→K

と、取りあえず計算で求められることが分かりました。角度には Rad (ラジアン) を指定する必要があります。以下のプログラムは、1~9までのテンキーを押すと、計算だけでキーコードを表示します。


計算でテンキーのキーコードを求めるプログラム
Rad
Lbl 0
"N"?→N
17+N+10Int(1.35÷N+0.55)+7Int(1+0.9cos((N-1)π÷4))◢
Goto 0




この計算に要する時間を簡単に測定するために、以下の2つのプログラムの処理時間を比較してみます。

プログラムA
Rad
100→C:1→N
Lbl 0
17+N+10Int(1.35÷N+0.55)+7Int(1+0.9cos((N-1)π÷4))
N=9⇒0→N:Isz N
Dsz C
Goto 0
"DONE"



プログラムB
Rad
100→C:1→N
Lbl 0
N=9⇒0→N:Isz N
Dsz C
Goto 0
"DONE"


この2つのプログラムの処理時間の差が、換算式の処理時間とします。その結果、この計算には 152ms もかかることが分かり、残念ながら配列変数を使う方がはるかに速いことになります。実用性を考えれば、この方法を採用できません。なおテンキー 0 には対応していません。


今後、AB の計算が速くできる方法が見つかれば実用可能になります。ご提案があれば、是非聞かせてください

記録に残す意味も含めて、本エントリーをアップします。




なお、If文や ⇒命令を使って A と B を決めて計算すれば、当然ながら処理速度は速くなりますが、キーコードが必要な時に一々 If文や ⇒命令を使ったロジックを採用するのは、Casio Basicプログラムが途端に見づらくなります。またこのロジックをサブルーチンにして使う方法もありますが、fx-5800P ではサブルーチンの呼び出しのオーバーヘッドが大きく、処理時間がかかるので採用しづらくなります。従って、配列変数か計算式の速い方を採用するのが現実的でしょう。




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


 

keywords: fx-5800Pプログラミングプログラム関数電卓

リンク集 | ブログ内マップ
関連記事

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

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

やす (Krtyski)

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


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

プログラム電卓を実際に使って気づいたこと、自作プログラム、電卓での Casio Basic, C.Basic そして Casio Python プログラミングについて書いています。

なお管理人はカシオ計算機の関係者ではありません。いつでもどこでもプログラミングができるプログラム電卓が好きな1ユーザーです。


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR