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

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 допускаются даже рекурсии, т.е. обращение процедуры к самой себе.