Последовательность повторяющихся в программе операторов может быть оформлена в виде подпрограммы.
Подпрограмма - это фрагмент программы, которая реализует операции, часто повторяющиеся в нескольких точках программы. Подпрограммы обычно размещаются в конце программы перед операторами DATA (если они имеются), и всегда перед оператором END.
Для обращения к подпрограмме используется оператор GOSUB.
Формат оператора
[метка] GOSUB [метка1],
где [метка1] метка некоторой строки, с которой начинается подпрограмма - точка входа в подпрограмму.
При выполнении GOSUB управление передается строке подпрограммы, метка которой указана в операторе GOSUB (напр., оператор GOSUB N010 передает управление подпрограмме, которая начинает выполняться со строки с меткой N010).
Подпрограмма может содержать любые операторы языка QB, но последним выполняемым оператором подпрограммы должен быть оператор RETURN, формат которого должен быть [метка] RETURN.
Оператор RETURN обеспечивает возврат управления на оператор, следующий за оператором GOSUB, осуществившим переход на подпрограмму.
|
|
Пример 4:
........................
GOSUB 1000
PRINT 'A='A,'B='B
........................
REM Подпрограмма 4
........................
RETURN
Оператор RETURN передает управление строке PRINT 'A='A,'B='B. QBASIC допускает использование в одной программе нескольких подпро-
грамм. Они могут помещаться одна после другой в конце программы в порядке возрастания номеров строк.
Подпрограммы могут вкладываться друг в друга, т.е внутри одной подпрограммы может осуществляться вызов другой подпрограммы. Подпрограмма может обращаться как к другой подпрограмме, так и к самой себе. Вход в подпрограмму может осуществляться в любой точке.
Для работы операторов RETURN среда программирования QBASIC организует таблицу адресов возврата. Каждый раз, когда в программе выполняется оператор GOSUB, QB помещает в таблицу адрес строки, следующей за оператором GOSUB. Таблица вмещает не более 20 адресов строк.
Подпрограмма может иметь несколько операторов RETURN - несколько выходов из подпрограммы, например, из различных ветвей программы. Первый же встреченный оператор RETURN осуществляет выход из подпрограммы.
Для условной передачи управления одной из нескольких подпрограмм или к одной из нескольких входных точек одной подпрограммы может быть использован оператор ON GOSUB.
Формат оператора:
[метка] ON [арифм.выражение] GOSUB [список],
где [список] - список меток или номеров строк, являющихся точками входов в подпрограмму.
Результат вычисления выражения может принимать значения от 0 до 255, в противном случае печатается сообщение об ошибке. В результате выполнения этого оператора происходит передача управления в зависимости от значения арифметического выражения. Если его значение равно единице, передается управление строке, номер которой в списке стоит первым Если значение арифметического выражения равно двум то строке, номер которой в списке стоит вторым, и т.д.