Основную программу можно направить на выполнение подпрограммы с помощью операторов GOSUB и ON...GOSUB. Подпрограмма возвращается в основную программу с помощью оператора RETURN, который возвращает программу туда, откуда она ушла по оператору GOSUB.
Пример:
SCREEN 12
algus:
PRINT "1. Рисуем круг"
PRINT "2. Рисуем прямоугольник"
PRINT "3. Рисуем круг и прямоугольник"
PRINT "4. Выйди из программы"
INPUT I
CLS
IF I = 1 THEN GOSUB ring 'запускаем процедуру круг
IF I = 2 THEN GOSUB kast 'запускаем процедуру прямоугольник
IF I = 3 THEN GOSUB molemad 'запускаем процедуру круг и прямоугольник
IF I = 4 THEN END 'программа закончена
GOTO algus
ring:
CIRCLE (320, 200), 100
RETURN 'возврат в основную программу
kast:
LINE (200, 200)-(300, 250),, B
RETURN ' возврат в основную программу
molemad:
GOSUB ring ''запускаем процедуру круг
GOSUB kast ''запускаем процедуру прямоугольник
RETURN ''' возврат в основную программу
|
Заметим, что оператор GOSUB не может быть без RETURN. Иначе будет ошибка. Отметим также, что одна процедура может вызывать другую. Например в процедуре- molemad).
Используем в последней программе оператор ON...GOSUB:
SCREEN 12
algus:
PRINT "1. Рисуем круг"
PRINT "2. Рисуем прямоугольник"
PRINT "3. Рисуем круг и прямоугольник"
PRINT "4. Выход из программы"
INPUT I
CLS
'процедура выбирается в зависимости от значения I
ON I GOSUB ring, kast, molemad, lopp
GOTO algus
ring:
CIRCLE (320, 200), 100
RETURN 'возврат в основную программу
kast:
LINE (200, 200)-(300, 250),, B
RETURN ''возврат в основную программу
molemad:
GOSUB ring
GOSUB kast
RETURN ''возврат в основную программу
lopp:
END
RETURN
|
Значения переменной I могут быть 1, 2, 3 или 4.