プチコン3号 SmileBASIC コミュニティ投稿まげ MAGE_LOVEMARINE2015/02/02 22:03:58CLS:GOSUB @A @A:PRINT"TEST":RETURN 実行すると、TESTと2回表示されてから、RETURN witout GOSUBエラーと出ます。でも、 CLS:SAMPLE DEF SAMPLE:GOSUB @A @A:PRINT"TEST":RETURN END なら、TESTと1回だけ表示して終わります。 わかってるんですよ? わかってるんですけど…なんか不安(^^;)。1そうだね 11返信プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿otta777 otta777a2015/2/2 22:45サブルーチン群の手前にENDを入れる癖を付けるとかどうでしょう?0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿コータ[quota] W.D.WE2015/2/3 0:23確かに、思わぬところでユーザ定義命令やユーザ定義関数から戻ってしまうことを考えると心配ですね。でも、私は、ユーザ定義命令の中でGOSUBを使わなければならないほど、処理能力を要求されるプログラムを書いたりしないので、気になりません。0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿コータ[quota] W.D.WE2015/2/3 0:52訂正します。「書いたりしない」は、正確には「書けない」なのですが、少し見栄を張りました。0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿でんぺん DENPEN2015/2/3 1:02ユーザー定義命令内でのGOSUBは命令表によると一応NGって事になってるんで、公式のOKが出るまではちょっと使うのは怖いですね…。0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿コータ[quota] W.D.WE2015/2/3 1:23暫定仕様となりましたが、このような、問題を認識されておられるため、どこかの時点で、変更したいと考えて、将来変更されるとの回答をされたのだと思います。0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿まげ MAGE_LOVEMARINE2015/2/3 11:27>otta777さん 問題はその「癖」で、実は最初、DEF SAMPLE:GOSUB @A:END:@A...で実行し、「Undefined label」って怒られて(^^;)、それでオヤッ!?と思った次第です。 >でんぺんさん その命令表のその件の前に、「DEF境界をまたがるGOTO/GOSUBはできない」って記述もありますよね。「またがなければできる」的なな。それに矛盾めいたことを感じ、試したらこんな結果でした。 >コータさん なるほどスロット指定ならDEFから外に飛べるんだ…って、結果は2!? A=1シカト!?(^^;) いや〜…言語つくるのって大変ですね。0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿でんぺん DENPEN2015/2/3 11:31確かに矛盾がありますよね〜。その後には「関数およびユーザー定義ステートメント内部では、GOSUBやON GOSUBは使用できない。」ともありますし…。 とりあえず総合した僕の認識では、DEF境界をまたがないGOTOなら使用できる(GOSUBはNG)、という事になってます(^^; 0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[8]親投稿まげ MAGE_LOVEMARINE2015/2/3 11:48>でんぺんさん ですね(^^)。そもそもは、「TEST "A"なら円を描き、TEST"B"なら四角を描く」的な動作をするDEFで、なるべくIFを使わない方向で考えて、行き着いてしまった現象でした。0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿でんぺん DENPEN2015/2/3 11:55なるほど〜。 そういう場合に、ちょっとSWITCH CASEっぽい書き方で以下のようなパターンもありますよ。 DEF TEST C$ REPEAT GOTO "@CASE_"+C$ @CASE_A 円を描く BREAK @CASE_B 四角を描く BREAK UNTIL 0 END 1そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿まげ MAGE_LOVEMARINE2015/2/3 11:59>でんぺんさん BREAKって、地味に重宝しますよね(^^)。ありがとうございます♪0そうだね プレイ済み2017/11/03 23:50:53に取得
プチコン3号 SmileBASIC コミュニティ返信[11]親投稿でんぺん DENPEN2015/2/3 12:04GOTOで飛んでもいいんですがBREAKにはループを抜け出すという意味があるんで、わかりやすいんですよね。 上記で言えばGOTOで終わりに飛ぶことも出来ますが、その場合は終わりに飛ぶとわかっていればいいですが、もしかしたら変なところに飛ぶかもしれないし、そういう意味ではBREAKはループを抜けるわけなので、その前のREPEATの範囲(UNTILまで)から抜けるというのが明確で良いというか。 てかまげさんはわかってるかもしれませんが、一応なんでGOTOじゃなくてBREAKなの?って人もいるかもしれないので、一応補足しておきました〜。1そうだね プレイ済み2017/11/03 23:50:53に取得