Программные модули

End.

Begin

ClrScr;

Assign(out_sort,’d:\User\out_sort.txt’);

ReWrite(out_sort); открытие текстового файла для записи

Init(n, m_min, m_max, a); инициализация массива

Writeln(out_sort, ‘Исходный вектор:’);

For i:=1 To n Do

Write(out_sort, a[i]:5);

WriteLn(out_sort);

Sort_Hoar(n, 1, n, a); сортировка элементов массива

Writeln(out_sort, ‘Отсортированный вектор:’);

For i:=1 To n Do

Write(out_sort, a[i]:5);

WriteLn(out_sort);

Close(out_sort); закрытие текстового файла

ReadLn;

Результат работы программы:

Исходный вектор:

-62 18 -48 46 -44 -58 -95 76 4 -65

Отсортированный вектор:

-95 -65 -62 -58 -48 -44 4 18 46 76

Метод К.Хоара считается одним из самых быстрых методов сортировок.

 

 

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

В Паскале есть замечательный инструмент для преодоления этих неприятностей – программные модули.

Прежде чем приступить к рассмотрению модульного программирования, разберемся, как происходит обработка исходного текста программы (кода программы) в системе программирования Turbo Pascal (Borland Pascal).

Программа, написанная на любом языке программирования, перед выполнением должна быть приведена к виду, пригодному для исполнения на компьютере, то есть переведена с конкретного языка программирования на машинный язык компьютера.

Машинный язык – это система команд, которую понимает и может выполнить процессор.

Другими словами, исходный код (текст) программы перед выполнением должен быть преобразован в исполняемый код. Это перевод английского слова executable , от него же и произошло известное расширение имен исполняемых файлов – .exe. Исходный же текст программы на Паскале имеет расширение имени - .pas. Обратное преобразование невозможно – из исполняемых файлов уже нельзя восстановить исходный текст программы на Паскале, поэтому все исходные тексты должны сохраняться для их последующей доработки.

При работе в Turbo Pascal исполняемый код формируется в оперативной памяти и без записи его на диск сразу выполняется. При работе в среде BorlandPascal исполняемый файл формируется автоматически, поэтому файл с расширением .exe появляется в текущем каталоге после первого удачного запуска программы.

 

Процесс преобразования исходного кода в исполняемый происходит в два этапа:

1. компиляция,

2. компоновка (линковка).

На этапе компиляции исходная программа преобразуется в машинный код, но он пока не пригоден для исполнения, так как в него не включены коды стандартных процедур и функций, которые находятся в отдельном файле Turbo.tpl (это библиотека Turbo Pascal). Код программы, полученной после компиляции, называют объектным кодом. Библиотека Turbo Pascal тоже является объектным кодом. На этапе компоновки к объектному коду программы добавляется объектный код стандартных процедур и функций из библиотеки Turbo Pascal. В результате он превращается в полноценный исполняемый код.

Компиляция и компоновка – это два различных процесса. Первый из них выполняет программа-компилятор (compiler). Ее основное назначение – проверка программы на наличие синтаксических ошибок и, в случае их отсутствия, формирование объектного кода. Процесс же компоновки выполняет программа-компоновщик (редактор связей, linker). Ее назначение – добавить к программе весь недостающий код из других файлов, скомпоновав полноценный исполняемый код.

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

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

В этом и заключается один из наиболее фундаментальных принципов современных технологий программирования – принцип модульности. На практике реализация данного принципа предполагает выполнение двух условий:

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

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

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

Преимущества такого подхода к созданию программ очевидны:

1. программа получается понятнее, ее легче совершенствовать в дальнейшем,

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

3. написанные модули могут быть использованы и в других программах,

4. модули, включаемые в исходный код программы, хранятся на диске в откомпилированном виде. Поэтому процесс подготовки всей программы к выполнению займет меньше времени – компилироваться будет только основная программа,

5. при выполнении программы в среде Turbo Pascal исполняемый код модулей размещается в отдельных сегментах памяти, что дает возможность создавать программы большого размера (более 64К).

В Паскале используются стандартные и пользовательские модули.

Стандартные модули: SYSTEM, CRT, GRAPH, DOS, PRINTER, OVERLAY образуют системную библиотеку Паскаля Turbo.tpl (Turbo Pascal Library).Модуль SYSTEM подключается к программе пользователя автоматически, остальные модули указываются в операторе Uses:

Uses CRT, GRAPH;

Пользовательские модули создаются самими программистами.