HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0228
ねこbutton gosub と gosub の違いについて2未解決


ねこ

リンク

2020/2/28(Fri) 21:38:42|NO.89581

以下のプログラムにおいて gosub 時と button gosub 時の挙動の違いについてご教授お願い致します。

*start
mes"a"
gosub,*test
if P=0 : stop
if P>0 : mes"d"
stop

*test
mes"b"
P+1
if P>0 : mes"c"
if p>0 : return
stop

このプログラムを実行するとabcdと順に表示されるのですが、
二列目 gosub,*test の部分を button gosub"test",*test と、おくとdだけが表示されません。
調べてみても原因がわからず困っています。どなたかよろしくお願いします。



この記事に返信する


ソラ

リンク

2020/2/28(Fri) 22:25:29|NO.89583

if P=0 : stopで止まった後にボタンをクリックしてもその下の行は実行されないのではないでしょうか?



沢渡

リンク

2020/2/28(Fri) 22:34:14|NO.89584

button gosubは「ボタンを押したらサブルーチンにジャンプするよ」という割り込み宣言でしかないので、
button gosubを実行した段階ではサブルーチンにはジャンプしません。
これを踏まえた上で流れを追っていけば”d”が表示されない理由がわかると思います。

それともう一つですが、gosubで飛んだあとは必ずreturnで戻るようにしましょう。
このコードだと、サブルーチンの中で何らかの理由でpが0以下になった場合はreturnされませんので。



ONION software Copyright 1997-2023(c) All rights reserved.