
Лабораторная работа 17
Программирование с использованием подпрограмм
Цель работы - ознакомление с особенностями разработки программ с использованием подпрограмм и функций пользователя в системах программирования Turbo Basic и Turbo Pascal.
Необходимые исходные сведения
Система Turbo Basic. Структура программы может быть существенно упрощена использованием подпрограмм и функций. Подпрограмма - это набор инструкций, заключенных между операторами gosub-return или sub-end sub. Функция - это набор команд в операторе def (однострочная функция) или между операторами def-end def (многострочная функция), результатом выполнения которых является значение переменной с именем функции.
Различают внутренние и внешние функции и подпрограммы. Внутренние являются частью программного модуля, из которого они вызываются, внешние - реализуются в виде отдельных процедур. Внешние функции в системе Turbo Basic отсутствуют.
Переменные, содержащиеся в списке параметров при описании функции или подпрограммы, называются формальными параметрами. Они служат только для определения функции и, как правило, никак не связаны с переменными с такими же именами в основной программе.
Синтаксис внутренней однострочной функции
DEF FN<identifier> [(<parameter list>)] = <expression>
где <identifier> - это заданное пользователем специфическое имя выражения, <parameter list> - список формальных параметров (не более 16 для одной функции); <expression> - определяет математическое выражение для получения значения функции.
В качестве примера рассмотрим программу для преобразования температуры в градусах Фаренгейта в температуру в градусах Цельсия.
'Задание однострочной функции
DEF FNC_to_F(degreesC) = (1.8 * degreesC) + 32
'Основная программа
Gradys=20
PRINT FNC_to_F(Gradys)
END
Возможности задания однострочных функций ограничены длиной всего лишь одной программной строки, поэтому для более сложных случаев используются многострочные функции. Синтаксис многострочной функции:
DEF FN<identifier> [(<parameter list>)] <Операторы>
[FN <identifier>= <expression>]
END DEF
Рассмотрим вычисление факториала с помощью многострочной функции.
'Задание многострочной функции
DEF FNFactorial(п)
total = 1
FOR i = 1 ТО n
total,= total * i NEXT i
FNFactorial = total
END DEF 'Конец задания многострочной функции
'Основная программа
Х=5
PRINT FnFactorial(X)
END
Внутренние переменные однострочной и многострочной функций по умолчанию являются глобальными, т.е. они доступны в любом месте основной программы.
Внутренние подпрограммы состоят из группы операторов и заканчиваются оператором return (ВОЗВРАТ). Для выполнения подпрограммы используется оператор gosub с меткой, указывающей на первый оператор подпрограммы. При достижении в подпрограмме оператора return управление передается оператору, непосредственно следующему за оператором gosub. Например, вычисление факториала с помощью внутренней подпрограммы выглядит так ».
'Основная программа п=5
GOSUB Factorial PRINT Rezult END
Factotial: 'Задание внутренней подпрограммы
Rezult= 1
FOR i = 1 TO n
Rezult = Rezult * i
NEXT i
RETURN 'Конец задания внутренней подпрограммы
Внешние подпрограммы содержат операторы, заключенные между операторами sub и end sub. Формальный синтаксис их описания следующий:
SUB <имя подпрограммы> [(<список формальных
параметров>) ]
<операторы>
END SUB
Имя идентифицирует подпрограмму и может содержать до 31 знака; список формальных параметров - это необязательный список переменных, передаваемых при ее вызове (не более 16), а также результатов ее работы.
Вычисление факториала с помощью внешней подпрограммы:
'Задание внешней подпрограммы SUB Factorial (n, factorial) factorial = 1 FOR i = 1 TO n
factorial = factorial * i NEXT i
END SUB 'Конец задания подпрограммы
'Основная программа Х=5
CALL factorial (X, У)
PRINT Y END
Внутренние переменные подпрограмм по умолчанию являются локальными, то есть существуют только в пределах данных программных единиц.