В чем разница между базовым утверждением GOTO и gosub

в чем разница между операторами GOTO и GOSUB на базовом языке программирования?

3 ответов


GOTO просто переходит на другую строку,GOSUB отслеживает, откуда он пришел (предположительно, в стеке), поэтому, когда интерпретатор встречает RETURN, он возвращается к последнему месту GOSUB называлась.

что мне больше интересно, хотя почему вы используете BASIC для чего-либо?


другие ответы дают хорошее объяснение о том, как использовать GOTO и GOSUB, но есть важная разница в том, как они обрабатываются. Когда GOTO выполняется, он начинается в верхней части стека и перелистывает все строки кода, пока не найдет строку, которую он должен перейти. Затем, если вы используете другой оператор GOTO, чтобы вернуться, он снова идет в верхнюю часть стека и перелистывает все, пока не доберется до следующего местоположения.

GOSUB делает почти то же самое, что и Гото, но он помнит, где это было. Когда вы используете оператор RETURN, он просто прыгает назад, не заходя сначала в верхнюю часть стека и снова просматривая все, поэтому это намного быстрее. Если вы хотите, чтобы ваш код работал быстро, вы должны поместить свои наиболее называемые подпрограммы в верхнюю часть стека и использовать GOSUB/RETURN вместо GOTO.


при вызове GOTO программа перейдет к соответствующей строке и продолжит выполнение.

Если вы используете GOSUB, он будет делать то же самое, однако в какой-то момент Вы можете закодировать оператор RETURN, и код вернется в строку сразу после GOSUB.

Итак, Гото идет к X, в то время как ГОСУБ идет к X, но помните, где вы сейчас, и поэтому вы можете вернуться позже.