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

Лабораторная работа №6

Тема. Модульное программирование. Рекурсия.

Цель. Иметь представление о модульном программировании. Научиться писать пользовательские модули и применять стандартные. Типы подпрограмм. Передача данных в подпрограмме. Стандартная библиотека. Понятие рекурсии. Виды рекурсивных вызовов.

Теория.

1. Модульное программирование

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

Модули можно разделить на стандартные, которые входят в состав системы программирования, и пользовательские, то есть создаваемые программистом. Чтобы подключить модуль к программе в Turbo Pascal, его требуется предварительно скомпилировать. Результат компиляции каждого модуля хранится на диске в отдельном файле с расширением .tpu.

Описание модулей:

Unit <имя_модуля>; {заголовок модуля}

Interface {интерфейсная секция модуля}

{описание глобальных элементов модуля (видимых из вне)}

Implementation {секция реализации модуля}

{ описание локальных (внутренних) элементов модуля }

Begin {секция инициализации}

{может отсутствовать}

End.

Модуль может использовать другие модули; для этого их надо перечислить в операторе Uses, который может находиться только непосредственно после ключевых слов interface или implementation.

В оболочках Borland Pascal with Objects и Turbo Pascal результат компиляции по умолчанию размещаются в оперативной памяти и на диск не записывается. Поэтому для сохранения скомпилированного модуля на диске требуется установить значение пункта Destination меню Compile в значение Disk. Компилятор создает файл с расширением .tpu, который надо переместить в специальный каталог, путь к нему указан в пункте Directories меню Options в поле Unit Directories. Кроме того, откомпилированный модуль может находиться в том же каталоге, что и использующие его программы, а также в библиотеке исполняющей системы. Поместить модуль в библиотеку исполняющей системы можно с помощью утилиты tpumover.exe, которая входит в состав системы программирования. Этот способ применяется для часто используемых и хорошо отлаженных модулей.

В интегрированной оболочке PascalABC.NET модули предназначены для разбиения текста программы на несколько файлов. В модулях описываются переменные, константы, типы, классы, процедуры и функции. Для того чтобы эти объекты можно было использовать в вызывающем модуле (которым может быть и основная программа), следует указать имя файла модуля (без расширения .pas) в разделе uses вызывающего модуля. Файл модуля (.pas) или откомпилированный файл модуля (.pcu) должен находиться либо в том же каталоге, что и основная программа, либо в подкаталоге Lib системного каталога программы PascalABC.NET.

Пример 1. Описания модуля. Вычисление среднего арифметического значения элементов массива.

Unit Arif;

Interface

Const n=10;

Type mas=array[1..n] of real;

Procedure Rarif(x:mas; var af:real);

Implementation

Procedure Rarif(x:mas; var af:real);

Var i:integer;

Begin

af:=0;

for i:=1 to n do af:=af+x[i];

af:=af/n;

end;

End.

Использование модулей

Имя модуля следует указывать в разделе Uses программы. Можно записывать несколько имен модулей через запятую.

Пример 2. Использование модуля. Найти разность средних арифметических значений двух вещественных массивов.

Program A;

Uses Arif;

Var c,b:mas;

I:integer;

Dif,av_c,av_b:real

Begin

for i:=1 to n do read(c[i]);

for i:=1 to n do read(b[i]);

Rarif(c,av_c);

Rarif(b,av_b);

Dif:=av_c-av_b;

Writeln(‘Разность значений’,dif:6:2);

End.