2012-10-10 47 views

答えて

14

GOTOは単にGOSUBは、それが(おそらく、スタック上の)どこから来たのかを追跡し、そのインタプリタがRETURNに遭遇したとき、それが戻ってGOSUBが呼び出された最後の場所に戻り、別の行にジャンプします。

私はもっと興味があるのですが、なぜBASICを何かに使っていますか?

+0

Basicがまだ使用されています。 VB.NETはまだ基本的です。 –

+1

何ですか? VB.NETはまったく異なる言語です。確かにBasicと呼ばれていますが、基本的ではありません – Collin

+0

@Colin - あなたはその点を見逃しています。 VB.NETはまだ基本的です。はい、それは多くのオブジェクト指向拡張を持っていますが、それは基本的に基本です。確かにそれは解釈されませんが、それは言語の関心事ではない実行戦略です。 –

1

GOTOを呼び出すと、プログラムは問題の行にジャンプし、実行を続けます。

GOSUBを使用すると同じことが起こりますが、ある時点でRETURN文をコーディングすることができ、コードはGOSUBの直後の行に戻ります。

GOSUBはXに移動しますが、GOSUBはXに移動しますが、現在の場所を覚えているので、後で戻ることができます。

+0

ありがとうございます;しかし、私は、意図した実行可能命令がGOTOステートメントに続く次の行に終わったところでコマンドの別の転送を組み込むことができると思います。しかし、最初の制御転送の行より上の制御文を別の転送コードは通常のGOSUBよりも1回戻ります。例えば10 GOTO 30. 15コード。 20コード。 25 GOTO 45. 30コード。 35コード。 40 GOTO 15. 45 ENDこれはうまくいき、決して終わらないループにはなりません。 –

+0

あなたのコメントを読むことができません。あなたの質問を編集してください。 –

+0

あなたの答えは正しいです!私はより多くのコードを含む別の方法を記述しようとしています。答えられた質問ありがとうございます。私はあなたの答えにすでに投票しました –

2

他の回答は、GOTOとGOSUBの使い方をよく説明していますが、処理方法には大きな違いがあります。 GOTOが実行されると、GOTOはスタックの先頭から開始し、GOTOとみなされる行が見つかるまで、すべてのコード行を反転させます。その後、別のGOTO文を使って戻ると、スタックの先頭に戻り、次の場所に到達するまですべてを反転します。

GOSUBはGOTOとほぼ同じことをしますが、どこにあったのかを覚えています。 RETURNステートメントを使用すると、最初にスタックの先頭に移動せずにすべてを再びフリップすることなく、ジャンプするだけです。したがって、はるかに高速です。コードを速く実行したい場合は、スタックの最上部に最もよく呼ばれるサブルーチンを置き、GOTOの代わりにGOSUB/RETURNを使用する必要があります。

関連する問題