Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема_2_6_FoxМодульность.doc
Скачиваний:
4
Добавлен:
05.05.2019
Размер:
92.67 Кб
Скачать

6. Модульность программ

В FoxPro предусмотрена широкая возможность использования процедур, которые могут быть как внешними (в виде отдельных программных файлов), так и внутренними (внутри программы). Частным случаем процедуры является процедура-функция.

Эти средства удобно использовать для реализации некоторых одинаковых процессов обработки данных. Тогда такой процесс программируется один раз в виде одного из перечисленных выше средств и вызывается в системе по мере необходимости.

Кроме того, модульное программирование позволяет разработчику гораздо лучше ориентироваться в своей системе, а также сделать более эффективным процесс ее написания и отладки.

Встречая обращение к процедуре, FoxPro ищет ее в следующей последовательности:

1. В текущей процедуре;

2. В процедурном файле, если он подключен;

3. Снизу вверх в старших процедурах относительно текущей, если они есть;

4. На диске в виде отдельной программы. Рассмотрим средства структурирования.

Внешние процедуры

Внешняя процедура - это совокупность команд, осуществляющих обычно какие-то законченные действия по обработке данных и образующих отдельный командный файл, т.е. отдельную программу (модуль).

Обращение к процедуре выполняется командой DO:

DO <имя командного файла> [WITH <список параметров>] [IN <файл>]

Если не указано расширение имени файла, процедура ищется СУБД на диске в следующей последовательности: сначала в ЕХЕ, затем в АРР, FXP и, наконец, в PRG-файле. Процедура вообще может находиться внутри другого IN <файла> как его внутренняя процедура.

В процедуру могут быть переданы и из нее получены некоторые величины, указанные в списке параметров после слова WITH. Этими величинами могут быть не только переменные и константы, но любые разрешенные выражения. В таком случае первой командой в вызываемой процедуре должна быть команда, воспринимающая их:

PARAMETERS <список параметров>

Параметры, указанные в команде DO после слова WITH в вызывающей программе, как принято в алгоритмических языках, называются фактическими, а соответствующие им параметры в вызываемой процедуре (в команде PARAMETERS) - формальными. Программист должен заботиться о том, чтобы передаваемые параметры по типу соответствовали друг другу. Число формальных и фактических параметров может и не совпадать. Если формальных параметров больше, избыточные параметры получают значения .F., если меньше, последует сообщение об ошибке.

Распознать число фактических параметров можно с помощью функции

PARAMETERS()

Завершаются файлы-процедуры одним из следующих образов:

1. Достижением последней команды файла - осуществляется возврат в старшую вызвавшую программу или на командный уровень, если это самый старший модуль;

2. Командой RETURN - возврат в старшую программу;

3. Командой CANCEL - выход на командный уровень;

4. Командой QUIT - выход из FoxPro в DOS.

Команда RETURN может содержать опции

RETURN [ТО MASTER/<Пpoцeдypa>/<выp>]

Здесь фраза RETURN TO MASTER указывает на переход к самому верхнему уровню вызывающих процедур, a RETURN TO <Процедура> - возврат на процедуру с указанным именем. Элемент <выр> применяется для передачи в вызывающую программу результата, если процедура используется как процедура-функция.

В первом и втором случаях возврат в старшую программу выполняется на команду, следующую за той, от которой произошел вызов подпрограммы. Однако, при некоторых обстоятельствах бывает желательно вернуться именно на команду вызова. Это можно сделать командой

RETRY

Подчиненность модулей в общем довольно условна. В FoxPro допускаются даже рекурсии, т.е. обращение процедуры к самой себе.