Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota_17.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
42.77 Кб
Скачать

Лабораторная работа 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

Внутренние переменные подпрограмм по умолчанию явля­ются локальными, то есть существуют только в пределах дан­ных программных единиц.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]