ОПЕРАТОРИ GOSUB І RETURN

Підпрограма являє собою набір операторів програми, до якого можна звернутися за допомогою оператора GOSUB з будь-якого рядка програми Коли оператори підпрограми виконані і досягнуть оператор RETURN, управління автоматично передається назад, до оператора в рядку, безпосередньо наступної за GOSUB На рис 51 рядки з 500-й по 600-ю являють собою підпрограму, яка перший раз викликається з рядка 100 після виконання підпрограми управління повертається до рядка 110 Слідом за цим підпрограма викликається з рядка 200, і після її виконання управління повертається до рядка 210 Зверніть увагу на оператор STOP в кінці основної програми: якби він був відсутній, управління передавалося б рядку 500 і виконання програми продовжувалося б до рядка 600, при спробі виконання якої була б зафіксована помилка з видачею відповідного повідомлення, наприклад RETURN STATEMENT FOUND WITHOUT A GOSUB (виявлений оператор RETURN без попереднього GOSUB)

Робота з підпрограмами забезпечується операторами GOSUB і RETURN, що вказуються в різних місцях програми Для позначення початку підпрограми спеціального оператора немає, тому обовязково відзначайте початок підпрограми за допомогою коментаря в операторі REM Службове слово GOSUB, за яким слід номер оператора, викликає передачу управління підпрограмі, що починається оператором з цим номером Оператор RETURN, є останнім оператором підпрограми, викликає передачу управління назад, до оператора, безпосередньо наступному за оператором GOSUB, що викликав перехід до підпрограми

Насправді, ефект застосування підпрограми той же, як якби кожен оператор GOSUB був замінений на сукупність всіх операторів підпрограми Розглянемо кілька наступних операторів:

210   FOR L=1 TO N 220      PRINT&quot-" 230   NEXT L 240   PRINT

Вони забезпечують друк рядка, що складається з N знаків мінуса (-), і використовуються як підпрограми в наступній програмі:

10 КИМ ОСНОВНА ПРОГРАМА

20 PRINT ДОВГИЙ ЗАГОЛОВОК

30 N=17

40 GOSUB 200

5В PRINT ЩЕ РАЗ

60 N=7

70 GOSUB 200

88 FOR I = 1 ТО 5

90   N=I

100   GOSUB 200

110 NEXT I

120 STOP

200 REM ПІДПРОГРАМА для підкреслення N СИМВОЛІВ

210 FOR L=1 TO N

220   PRINT &quot-"

230 NEXT L

240 PRINT

250 RETURN

260 END RUN

ДОВГИЙ ЗАГОЛОВОК

—————–

ЩЕ РАЗ

END AT LINE 120

Оператори з 200-го по 250-й зображують рядок з N символів і використовуються в даному прикладі для підкреслення тексту, що видається операторами в рядках 20 і 50 Зверніть увагу на те, що значення N встановлюється перед GOSUB і доступно (поряд зі значеннями всіх інших змінних) в підпрограмі Трикутна фігура формується зверненнями до підпрограми з циклу FOR в рядку 80 Так як L використовується і змінюється в підпрограмі, то цієї змінної не можна користуватися як керуючої в циклі FOR в рядку 80

Може виявитися корисною наведена нижче підпрограма Вона здатна надрукувати N повторень символу, що має код ASCII, рівний М:

200 REM ПІДПРОГРАМА ДРУКУ

210 REM N ПОВТОРЕНЬ

220 REM СИМВОЛУ З КОДОМ ASCII M

230 FOR L=1 TO N

240   PRINT CHR$(M)

250 NEXT L

260 PRINT

270 RETURN

Оператори GOSUB і RETURN

Загальна форма запису: GOSUB s

де s номер оператора Загальна форма запису:

RETURN 147

Управління передається підпрограмі, що починається з оператора, що має номерs  Потім оператори виконуються по порядку до тих пір, поки не зустрінеться операторRETURN, Після цього управління передається рядку, наступному безпосередньо за операторомGOSUB, що викликав підпрограму

У деяких версіях Бейсика передбачений оператор вибору однієї підпрограми із сукупності підпрограм, аналогічний оператору ON-GOTO, обговорювали в підрозділ 431, в якому GOTO замінюється на GOSUB Будь-який оператор RETURN повертає управління назад до рядку, наступному безпосередньо за ON-GOSUB

При застосуванні підпрограм Бейсика дотримуйтеся наступних правил:

(А) Чітко позначайте початок і кінець кожної підпрограми Якщо це можливо, виділяйте їх шляхом відступу операторів вправо

(Б) Ніколи не користуйтеся оператором GOTO для входу в підпрограму і для виходу з неї

Кожну підпрограму треба розглядати як незалежний логічно завершений модуль

(В) Майте під рукою список глобальних вхідних змінних і вихідних результатів кожної підпрограми Найкраще оформити його коментарями до програми за допомогою операторів REM

(Г) Обовязково переконайтеся, що в підпрограмі не змінюються значення таких зовнішніх змінних, як лічильники циклів Якщо це можливо, в кожній підпрограмі вводите свій принцип іменування внутрішніх змінних

(Д) На відміну від функцій, підпрограми не зявляються в програмі до того, як ними будуть користуватися, тому корисно групувати підпрограми разом після оператора STOP, зазначеного в кінці основної програми

Джерело: Уолш Б Програмування на Бейсике: Пер з англ М: Радіо і звязок, 1988 336 с: ил

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*