MOD( - コマンドリファレンス

Casio Basicプログラミング - コマンドリファレンス
<コマンドリファレンス・トップ>

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

2018/08/17
追記修正 2018/08/18


[純正 / C.Basic] [FX / CG]


MOD(




整数の剰余を計算する。

(書式) MOD(A,N)
整数 A を 整数 N で割った余りを返す。

(キープレス) [OPTN] [F6](▷) [F4](NUM) [F6](▷) [F4](MOD)

(例)
 MOD(7,3)
※ 7 を 3 で割った余り 1 を返す。

(例)
  14→A
  5→N
  MOD(A,N)→M
  Locate 1,1,"M="
  Locate 3,1,M
  ※ 14 を 5 で割った余り M = 4 を出力する。

(注意) A や N が負の整数の場合は、AN で割った余りにならない。
MOD_Schematic2  
AN が負の整数の場合は、上表から分かるように 0, 1, 2 が繰り返すような計算結果になる。

※ 取扱説明書には "除算を行った際の余りを求める関数" とあるが、必ずしも正しくない。
※ この仕様は Casio Basic 特有のもので、特定の処理では役立つが、自然数に限定して使うのが良いかも知れない。



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


 



keywords: プログラム関数電卓、Casio Basic、C.Basic、プログラミング



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

Casio Basic: Cls

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

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



fx-5800P / fx-9860GII / fx-CG20 / fx-CG50
Cls / ClrText

◆ 概 要: テキスト画面を消去する。

◆ 書 式: Cls (fx-5800P) / ClrText (fx-9860GII, fx-CG20/CG50)

◆ 引 数:なし

◆ 戻り値:なし


fx-5800P と fx-9860GII や fx-CG20/50 では Cls コマンドの機能が異なる。

<fx-5800P >
Cls は画面全体 (テキスト画面全体) を消去する。同時に内部カーソル行を1行目にリセットする。

<fx-9860GII / fx-CG20/50>
  • fx-9860GII や fx-CG20/CG50 の Cls は、グラフィックス画面の消去を行う。
  • fx-9860GII や fx-CG20/CG50 は、出力先にグラフィックス画面とテキスト画面の2つを持つ。
テキスト画面の消去には ClrText を使う。fx-5800P の Cls と同様に、テキスト画面の消去と同時に、内部カーソル行を1行目にリセットする。
グラフィックス画面の消去には、Cls  と ClrGraph が用意されていて、これらは動作の詳細が異なる。ClrGraph は単にグラフィックス画面の消去するだけでなく、座標系をデフォルトの論理座標に設定し、さらに目盛間隔を 1 に設定する。Cls は座標系や目盛間隔の設定変更を行わず、単にグラフィックス画面を消去する。



< fx-5800P の Cls と fx-9860GII や fx-CG20/50 の ClrText の動作 >
内部カーソル行リセットは、以下のプログラムから確認できる。

""
"LINE"◢
Cls
"LINE"◢


これを実行すると、"" により内部カーソル行は2行目になるので、2行目に

LINE

と表示され、プログラムが一時停止する。[EXE] キーでプログラムを再開すると、Cls が実行される際に内部カーソル行が1行目にリセットされる。従って、次は1行目に

LINE

と表示される。


< fx-9860GII や fx-CG20/50 の Cls の動作 >
以下のプログラムで、テキスト画面での Cls と ClrText のテスト、そしてグラフィックス画面での Cls のテストを行います。

Locate 1,2,"bra-bra-bra"
Locate 1,3,"Cls Test"
"Hit any number key"?→A
Cls
"Cls does NOT delete text."
"Press [EXE] key"◢
""
""
"Try ClrText test"
""
"bra-bra-bra"
"Hit [EXE] key"◢
ClrText
"It works!"
""
"Internal cursor reset back to the 1st line."
"Hit [EXE] key"◢

ViewWindow 0,126,0,0,62,0
PlotOn 10,10
Text 1,1,"Dot drawn by PlotOn 10,10"
Text 7,1,"Cls test"
Text 13,1,"Press [EXE]"◢
Cls
Text 1,1,"It works!"
Text 7,1,"Try again"◢
PlotOn 10,10
Text 13,1,"Dot drawn again at same position!"


テキスト画面では、Cls で消去できないこと、ClrText は消去と同時に内部カーソルが1行目にリセットされることが分かります。
さらに、グラフィックス画面で、Cls を実行すると、画面消去されますが、座標系設定の変更は行われないことが分かります。




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


 


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

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

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

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

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

Casio fx-5800P と fx-9860GII、fx-CG20、fx-CG50 で確認をとっています。Casio fx-FD10 Pro では互換性はあると考えられますが、実機で確認していないので「可能性」としてご覧ください。
※随時拡充してゆきます
最終:2017/10/20


目 次


◆ 入力
      ? 
      Getkey

◆ 出力
     
      "  "

◆ 代入
     

◆ 画面表示
      Locate
      Cls
      ClrText



◆ 条件分岐
      If文: If ~ Then (~ Else) ~ IfEnd

◆ ジャンプ
      Goto / Lbl
      Dsz命令
      Isz命令
      ⇒命令

◆ ループ(繰り返し)
      Lbl / Goto
      Do文 (Do ~ LpWhile)
      While文 (While ~ WhileEnd)
      For文 (For ~ To (~ Step) ~ Next)

◆ 関係演算
  = / ≠ / > / ≧ / < / ≦

◆ 論理演算
  Or / And / Not (/Xor)

配列変数 (fx-5800Pのみ)

◆ リスト
  List [  ]

◆ 行列計算 

◆ 実行制御
  Prog
  Break
  Return
  Stop

◆ 各種関数
  Int / Frac
  
log()

◆ 計算結果の出力設定 
  EngOn / EngOff / Eng
  Norm 

グラフィックスコマンド [fx-9860GII / fx-CG20 / fx-CG50]
  ※ 探索集のグラフィックスコマンドをまとめたもの
  ※ コマンドリファレンス作成中




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


 


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

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

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

Casio Basic: ◢ (出力命令)

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

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

fx-5800P / fx-9860GII / fx-CG20 / fx-CG50
◢ (出力命令)

◆概 要: プログラムを一時停止し、数字、文字列、式や関数の計算結果、コマンドの戻り値を出力する。

◆書 式: [出力内容]◢


出力命令 ◢ は、CasioBasic 独特のコマンド。

この出力命令は、プログラムを一時停止して出力を行い、[EXE] で一時停止を解除する一連の動作を行う。
プログラムの一時停止をせずに出力したい場合は、"   " (文字列出力)、や Locateコマンドを用いる。

※ 出力命令 でプログラムが一時停止した時の画面出力が、fx-9860GII と fx-5800P で違いがある。
・ fx-9860GII や fx-CG20/50現在の内部カーソル行に - DISP - (右から8桁使用) が上書き表示される。
 [EXE] キーを押せば - DSIP - 表示は消える。

・ fx-5800P: 画面最上部のステータス表示部に  DISP  アイコンが表示され、プログラム実行画面には特に何も表示されない。

(参考) " "  命令に関連した内部カーソル行について ⇒ Casio Basic コマンドリファレンス - " " (出力命令)






変数Aに5が代入されている時、
A◢
と記述すると、画面に5が表示される。


5→A◢
と記述すると、画面に5が表示される。


Aに1234が、Bに5678が代入されている時、
AxB◢
と記述すると、画面に 7006652 と表示される。


"OUTPUT TEST"◢
と記述すると、画面に OUTPUT TEST が表示される。


fx-9860GII や fx-CG20/50 での - DISP - 表示について
一時停止する時表示される - DISP - は、右から8桁を使用して、右橋に表示される。表示される行は、現在の内部カーソル行になる。内部カーソル行は プログラム起動後の出力命令 "  "  の実行回数で決まる。起動直後および "  " が実行されない時は1行目、1回実行されるたびに改行されて1つ下の行になる。" " が6回実行されると内部カーソル行が7行目になり、それ以降は " " が何回実行されても内部カーソル行は7行目のままとなる。

現在のカーソル行が1行目のの時、

Locate 1,1, "LINE"

を実行すると、LINE と表示されるが、

Locate 1,1,"LINE"◢

を実行すると、LINE の表示の上に、ー DISP ーが上書きされるので、LINE の表示が消える。

従って、"" を利用して内供カーソル行を所定の位置にしてから Locate コマンドを使うか、" " を一切使わずに内部カーソル行を1行目に固定した上で、Locate コマンドを2行目以下で使うように、プログラム上で考慮すると良い。

"":"":"":"":"":""
Locate X,Y,"LINE"


とすると、最初に "" を6回実行することで内部カーソル行を7行目にしいる。その後 Locate コマンドでの表示では、Y は 1~6 の範囲で使えば、- DISP - に表示を妨害されない。

(参考) ⇒ fx-9860GII への移植 - ピタゴラス数




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


 



keywords: fx-5800PCasioBasic出力命令プログラミング入門プログラム関数電卓

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

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

Casio Basic: ⇒命令(条件ジャンプ)

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

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

fx-5800P / fx-9860GII / fx-CG20 / fx-CG50
⇒命令 (条件ジャンプ)

◆概 要: 条件ジャンプを行う。

◆書 式: [条件][処理]


⇒命令は、CasioBasic特有の命令。

[条件]「真」の場合は[処理]を実行、そうでない場合([条件]「偽」の場合)は[処理]を飛ばして(ジャンプして)、次へ進む。

[条件]⇒[処理]まで は、改行なしで1行に書かないとエラーとなる。さらに⇒の前後にスペースが入ると、これもエラーになる。



If 文との類似性

[条件][処理]

は、

If [条件]
Then [処理]
IfEnd


と同等です。


複数条件分岐への応用

CasioBasicには、switch~case (C言語)やSelect~Case (VisualBasic)のような多条件分岐コマンドが用意されていません。
しかし、⇒命令を工夫すると、複数条件分岐処理ができます。この記法の利点は、Fall Through (フォールスルー)が実現できる点にあります。

[2014/02/23 補足] If Else と言う記法を使えば、複数条件分岐をスッキリと書くことができます。
CasioBasicコマンドリファレンス If文 参照>

Lbl 0
"N"?→N
N=1⇒Goto 1
N=2⇒Goto 2
N=3⇒Goto 3

N=4⇒Goto 4
Goto Z

Lbl 1
[処理1]
      例えば Locate 1,2,"ONE  " (スペース2個)
(Goto 0)

Lbl 2

[処理2]      例えば Locate 1,2,"TWO  " (スペース2個)
(Goto 0)

Lbl 3
[処理3]
      例えば Locate 1,2,"THREE" (スペースなし)
(Goto 0)

Lbl 4
[処理4]
      例えば Locate 1,2,"FOUR " (スペース1個)
(Goto 0)

Lbl Z


この記法には、重要な注意点があります。

※ 重要な注意点: 赤文字で示した Goto Z Lbl Z は絶対に省略しないこと!
※ 応用上の注意点: (Goto 0) は省略可能です。但し必要な時のみ省略すること。

この記法には、Goto を正しく使うことが条件で、1つ利点があります。青文字出示した (Goto 0) を省略すると Else If の記法では実現しない機能が得られます(Fall Through、フォールスルーが可能になります)。

(Goto 0) を省略すると、下のラベルの処理を連続して行えます。ラベルの並び順を工夫することで処理の効率化が可能になります。

柔軟で有名なC言語での以下のような記法と同等なことがCasioBasicで実現できるわけです。そのため、敢えて Goto を使った記法を紹介しています。

switch (E) {
    case 4:
        [処理4]
        break;
    case 3:

        [処理3]  // フォールスルー
    case 2:
        [処理2]
        break;
    case 1:
        [処理1]
        break;
}


ここで、break; は Goto 0 に相当します。Eが3の時、case 3: へジャンプし、ここには break; が無いので、続いて case 2 の処理を実行します。

これを CasioBasicの上の記法を用いると以下のようになります。

Lbl 0
E=4⇒Goto 4
E=3⇒Goto 3
E=2⇒Goto 2
E=1⇒Goto 1
Goto Z


Lbl 4
[処理4]
Goto 0

Lbl 3

[処理3]

Lbl 2
[処理2]
Goto 0

Lbl 1
[処理1]
Goto 0


Lbl Z


[2014/12/14 修正: (Goto Z) を (Goto 0) に変更]



If文と⇒命令の処理速度比較

If ~Then~IfEndを使った以下のプログラムの処理時間は21秒。
0→L:0→H
1000→C
Lbl 0
Ic C>500
Then Isz H
IfEnd

Dsz C
Goto 0
"DONE"


⇒命令を使った以下のプログラムの処理時間は20秒
0→L:0→H
1000→C
Lbl 0
C>500⇒Isz H
Dsz C
Goto 0
"DONE"



命令は If 文よりも僅かに処理速度が速く、表記が分かりやすいので利用価値の高い命令です。


一方、Elseを用いたIf文では、事情が少し異なります。
If ~Then~Else~IfEndを使った以下のプログラムの処理時間は28.5秒。
0→L:0→H
1000→C
Lbl 0
Ic C>500
Then Isz H
Else Isz L
IfEnd

Dsz C
Goto 0
"DONE"


⇒命令を使った以下のプログラムの処理時間は32秒
0→L:0→H
1000→C
Lbl 0
C>500⇒Isz H
C≦500≦Isz L

Dsz C
Goto 0
"DONE"


従って、2者択一の条件分岐は、If文を使った方が速いことが分かります。

fx-5800P の場合、処理速度の絶対値が変動するようなので、相対比較しか出来ません。



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


 




keywords: fx-5800PCasioBasic命令プログラミング入門プログラム関数電卓

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

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

Casio Basic: Locate

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

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

fx-5800P / fx-9860GII / fx-CG20 / fx-CG50
Locate

◆概 要:
数字や文字を画面内の指定した座標に出力する。

◆書 式: Locate [x 座標],[y 座標],[出力内容]

◆引 数:
[x 座標] (左端からの1から始まる桁数)
  fx-5800P: 1 ~ 16 のいずれかの整数値。
   - これ以外の数値を設定するとエラーになる。
   - 正数、変数、式、この範囲の正数を返す関数やコマンドも設定可能。
  fx-9860GII や fx-CG20/50: 1 ~ 21 のいずれかの整数値。
   - これ意義亜の数値を設定するとエラーになる。
   - 正数、変数、式、この範囲の正数を返す関数やコマンドを設定可能。
   ※ 画面の左上が原点(1,1) 、x座標は右へ行くほど大きくなる。

[y 座標] (上端からの1から始まる行数)
  fx-5800P: 1 ~ 4 のいずれかの整数値。
   - これ以外の数値を設定するとエラーになる。
   - 正数、変数、式、この範囲の正数を返す関数やコマンドを設定可能。
  fx-9860GII や fx-CG20/50: 1 ~ 7 のいずれかの整数値。
   - これ以外の数値を設定するとエラーになる。
   - 正数、変数、式、この範囲の正数を返す関数やコマンドを設定可能。
   ※ 画面の左上が原点(1,1)、y座標は下へ行くほど大きくなる。

[出力内容]: 数値、変数、式、文字、文字列、値を返す関数やコマンドを設定可能。
    文字および文字列は "   "で括る

◆戻り値: なし



ENGモードが On になっている時は、Locate による表示で、空白が付加されることがあるので、要注意です。
 ⇒ Casio Basic コマンドリファレンス: EngOn / EngOff / Eng




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


 




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

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

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

Casio Basic: Prog

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

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

最終更新 2017/01/03

fx-5800P / fx-9860GII / fx-CG20 / fx-CG50


Prog


◆ 概 要: サブルーチン呼出コマンド (プログラム呼出コマンド)

◆ 書 式: Prog "[プログラム名]"

◆ 引 数: プログラム名

◆ 戻り値: なし


Prog はプログラムを呼び出しすコマンドです。

プログラム中でプログラムを呼び出すので、サブルーチン呼び出しに使えます。

メインルーチンとサブルーチンは、いずれも独立したプログラムであって、メインルーチンとサブルーチンの違いは呼出関係で決まります。呼出元のプログラムをメインルーチンと呼び、呼び出されるプログラムをサブルーチンと呼びます。サブルーチンとして作成したプログラムも、それだけで独立して動作します。



呼び出されたサブルーチンの実行が終了すると、メインルーチン内の呼出元の位置へ戻ります。サブルーチンが Returnコマンド で終了した場合も、メインルーチンの呼出元の位置へ戻ります。

サブルーチンが実行されている間は、メインルーチンの動作は一時停止します。サブルーチンとメインルーチンが同時に動作することはありません。



サブルーチンからサブルーチンを階層的に呼び出すこと(ネスティング)ができます。ネスティングの階層(レベル)には限度があり、10階層(レベル)が最大です。

PROG 1
Prog "ROUTINE 1"

ROUTINE 1
Prog "ROUTINE 2"

ROUTINE 2
Prog "ROUTINE 3"

    :
    :
    :

ROUTINE 9
Prog "ROUTINE 10"

階層呼出(ネスティング)で、10階層を超えて呼出を行うと「ネスティング エラー(Ne ERROR)」が発生します。





大域変数

サブルーチンで使用する変数とメインルーチンで使用する変数は共有されます(大域変数 / グローバル変数)。
メインルーチンとサブルーチンで共用されている変数がサブルーチンで変更されると、メインルーチンへ戻った時には、その変数の内容が変更されています。

MAIN
0→A
Prog "SUB"


SUB
5→A

この MAIN プログラムを実行すると、プログラム SUB が呼び出されます。SUBプログラムでは、Aに5を代入していて、この時点で MAIN で使われている変数 A  は MAIN と共用されているので、 5 が格納されます。つまり、SUBの実行が終了してMAINへ戻った時には、既にプログラム MAIN の変数A は5に変更されています。
 


ラベルの範囲

Goto / Lbl で使用するラベルは、メインルーチンとサブルーチンで共有されません。サブルーチンで Goto 1 を実行すると、そのサブルーチンにある Lbl 1 にジャンプしますが、メインルーチンにある Lbl 1 へはジャンプしません。Goto / Lbl は1つのプログラム内だけで使えて、他のプログラムへジャンプすることはありません。




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


 




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

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

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

Casio Basic: Return

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

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

fx-5800P / fx-9860GII / fx-CG20 / fx-CG50
Return

◆ 概 要: サブルーチンを強制終了させ、呼出元のメインルーチン内の、呼び出された位置に復帰するコマンド

◆ 書 式: Return

◆ 引 数:なし

◆ 戻り値:なし


実行中のサブルーチン強制終了させ、メインルーチン内にある、そのサブルーチンを呼び出した位置へ復帰する。

メインルーチンで Return コマンドを実行すると、メインルーチンを終了させる。


Returnコマンドは、サブルーチンで実行すると実行されたサブルーチンのみを終了させ、メインルーチンは終了させない。




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


 




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

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

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

Casio Basic: 配列変数

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

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

fx-5800P
配列変数 Z[ ] 

◆ 概 要:
インデックス付き変数。多くの高級言語でいう 配列 と似ている。Z[ ] の [ ] 内に1以上の整数のインデックスを入れて使う。 インデックスに0(ゼロ)や負の整数を指定するとエラーとなる。配列変数は、通常の変数と同様に数値のみを代入可能 (文字列には対応していない)。

変数領域を確保してから使用する必要があり、変数の数を指定して領域確保する。メモリが許す限りの領域を確保できるが、配列変数を多く確保すると、その分プログラム領域が減る。


◆ 領域確保 
50→DimZ

DimZ[SHIFT] [・] と入力する。
この例では、50個の配列変数を確保し、Z[1]、Z[2]、・・・ Z[49]、Z[50] を使える 
※ 領域確保を行うと、各配列変数は0で初期化されます。


◆ 領域解放
0→DimZ

0個の領域確保をすれば、領域解放となる。


◆ インデックス
数値や変数を使える。1以上の整数を返す式も使える。配列変数をインデックスにすることもできる。


※ fx-9860GII や fx-CG20/CG50 の場合、搭載 Casio Basic には配列変数が無いので、配列変数の代わりに行列かリストを使う。リストよりも行列の方が処理が速いので、行列の使用を勧める。



プログラム事例

fx-5800P では、インデックス付き変数という配列変数の特性を活かした使い方があります。

参照テーブル(但し1次元)としての使い道が最もふさわしいと思われます。但し、配列変数を使う場合は、アクセス速度が非常に遅いことを十分に留意する必要があります。実行速度が必要な場合は配列変数の利用は最小限にすべきです。


キーコードに対応するテンキーの値を返す事例 [2015/04/30 修正]

87→DimZ
1→Z[35]:2→Z[36]
3→Z[37]:4→Z[21]
5→Z[22]:6→Z[23]
7→Z[31]:8→Z[32]
9→Z[33]:0→Z[25]


Do
Getkey→K
Locate 1,1,"  "
Locate 1,1,Z[K]
LpWhile K=0
0→DimZ

これを実行すると、押したテンキーの値が表示されます。「入力命令: ?」 以外の方法で、テンキー入力を得る一例です。
この方法の利点は、入力を自在に操れる点にあります。入力のエコーバックをさせたくない、入力のエコーバックを自由な位置に表示したい、テンキーを入力させ ONE、TWO、・・・と対応する内容を表示させる...など、自在な入力機能を実現可能です。



フィボナッチ数列の1項から50項までの総和を計算する事例

フィボナッチ数列は、
・1項と2項がそれぞれ1
・3項目以降は、「1つ前」と「2つ前」の項の和になる

1 1 2 3 5 8 13 21 34 55 ...と続く

100→DimZ
1→Z[1]:1→Z[2]
2→S
For 3→I To 50
Z[I-2]+Z[I-1]→Z[I]
S+Z[I]→S

Next
0→DimZ
S◢


これを実行すると、正解の 2147483646 が表示されます。




配列変数へのアクセス速度

配列変数へのアクセスは、通常変数に比べて大変遅いことがわかっています。

通常変数を使ったプログラム
0→A
1000→C
Lbl 0
A+C→A
Dsz C
Goto 0
A◢


これを実行すると、約15秒で結果A (500500) が表示されます。


配列変数を使ったプログラム
1→DimZ
1000→C
Lbl 0
Z[1]+C→Z[1]
Dsz C
Goto 0
Z[1]◢


これを実行すると、約50秒で結果 Z[1] (500500) が表示されます。

この実験結果では、配列変数への入出力は、通常変数に比べて3倍近く時間がかかります。従って配列変数へのアクセスが頻繁なプログラムは動作が非常に遅くなることに留意すべきです。




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


 




keywords: fx-5800PCasioBasic配列変数プログラミング入門プログラム関数電卓

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

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

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プログラミング入門プログラム関数電卓

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

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

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

やす (Krtyski)

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


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

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

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


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR