楽屋裏 - 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 を使って進める予定です。手元で完成しているプログラムでも多重ループを使わなければ異常動作は発生していません。




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


 


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

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

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

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

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


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR