楽屋裏 - Syntax ERROR

楽 屋 裏
e-Gadget


実は今、原因不明の Syntac ERROR に悩んでいます。

CasioBasic入門10 で作ったプログラム CH2-4 を Whle 1 と WhileEnd で挟んでループにすると、WhileEnd のところで Syntax ERROR が表示されます。

具体的には、

While 1

0→E

RanInt#(2,50)→C
Do
If C-4Int(C÷4)≦1
Then
Locate 8,2,"×"
Else
Locate 8,2,"+"
IfEnd
Getkey→K
K=57⇒1→E
Dsz C
LpWhile K≠57
Locate 8,2," "

0→C
Do
E≠0⇒Break
Isz C
LpWhile Getkey≠57
Locate 8,2,C

If E=1
Then
Locate 3,2,"FALSE START"
IfEnd


WhileEnd


プログラムCH2-4 を単に While 1 / WhileEnd で挟んだだけです。

While  1 /  WhileEnd の代わりに、Do / LpWhile 1 で挟むと、LpWhile 1 から Do までキチンと戻らず、2行を読み飛ばして3行目にジャンプすることが分かっています。

いずれの場合も、解決策としては、最後の WhileEnd あるいは LpWhile 1 の直前に Goto Z:Lbl Z を追加すれば良く、エラーは無くなり正常に動作します。

面白いことに、上で赤文字で示した If 文を、以下のように書き換えると、エラーは発生せず、正常に動作ます。

E=1⇒Goto 1
Goto Z

Lbl 1
Locate 3,2,"FALSE START"

Goto Z

Lbl Z


実は、このコードを書くとエラーが発生しないことから、Goto Z:Lbl Z を入れるとエラーが無くなることが分かったのです。
このコードは、上の If 文と同じことを If を使わずに書いたコードです。

WhileループやDoループの代わりに、Lbl / Goto でループを作ると、エラーは発生しません。

具体的には、While 1 の代わりに Lbl M、WhileEnd の代わりに Goto M を書くとエラーが発生しないのです。


そこで、原因にならない部分をそぎ落としてゆくと

While 1

20→C
Do
Dsz C
LpWhile 1

WhileEnd


といったシンプルなプログラムで、Syntac ERROR が発生し、発生部位が WhileEnd と表示されます。

このシンプルなプログラムで、WhileEnd の直前に、Goto 0:Lbl 0 を書くとエラーは消えます。

While 1

20→C
Do
Dsz C
LpWhile 1

Goro 0:Lbl0
WhileEnd



どうやら、私の fx-5800P では、While ループや Do ループで エラーが発生していることがハッキリしました。


さらに、While / WhileEndLbl / Goto に置き換えると、異常が発生しません。

Lbl M

20→C
Do
Dsz C
LpWhile 1

Goto M



以上から、今のところ言えるのは、WhileDoループの中に WhileDoループを入れる、つまり多重ループ構造にすると問題が発生するようです。



皆さんの fx-5800P でも同じことが発生するでしょうか?



私のfx-5800P特有の問題なのかどうかが分からないので、バグだと断定するのはまだ早いのですが....


ちなみに、これまで作ったプログラムを見直してみると、ループの中にループを書いたプログラムは無く、私にとっては多重ループは今回始めてのケースです。と言うのも、実行速度を早くするために、私は Lbl / GotoDsz を組み合わせたループLbl / Goto と ジャンプ命令⇒ を組み合わせたループを多用していて、WhileDo の多重ループは必要に迫られた時に使うつもりでした。


取扱説明書を見ても、多重ループに関する記述が見つかっていません(´д`)


もし、皆さんのfx-5800Pでも再現するならば、仕様なのかバグなのか、カシオに聞いて確かめようと思っています。





 [2014/02/23 追記]

CasioBasic入門では、ループには WhileDo を使わず、Lbl / Goto を使って進める予定です。手元で完成しているプログラムでも多重ループを使わなければ異常動作は発生していません。




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ


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

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

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

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

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR