Модульная структура программы
Модульность программ
Модуль - это кусок программы, компилируемый отдельно от остальных ее частей. Именно возможность раздельной компиляции и является основным преимуществом модулей.
Простейшая модульность программы может достигаться за счет применения процедур и функций, однако этого не всегда достаточно. Если все подпрограммы содержатся в одном файле, то исправление единственной ошибки в какой-либо подпрограмме приведет к неизбежной перекомпиляции всего кода. А при современных размерах программ компиляция может длиться даже не минуты, а часы.
Кроме того, если коллектив программистов пишет одну большую программу (а именно в таких условиях работают сегодня все производители программного обеспечения), то каждому из них нужно обеспечить более или менее независимый "фронт работ". Даже два человека не могут одновременно исправлять один и тот же файл, иначе конфликт обновлений будет гарантирован. Что уж тут говорить о проектах, над которыми работают десятки и даже сотни человек! В такой ситуации модули, которые хранятся каждый в отдельном файле и могут быть отредактированы, откомпилированы и протестированы независимо от остальных частей программы, являются наилучшим решением этой проблемы.
Несколько модулей, являющихся составными частями одной программы, объединяются в библиотеку. Например, вместе с компилятором языка Pascal поставляются стандартные библиотеки, содержащие важнейшие подпрограммы обработки данных.
Стандартные модули языка Pascal
Перечислим самые распространенные модули, входящие в состав стандартных библиотек языка Pascal. Подробное описание этих библиотек можно найти в любом справочном издании1Например, "Справочник по процедурам и функциям Borland Pascal with Objects 7.0" (сост. И.И. Дериев, С.В. Токарь. Киев: Диалектика, 1993) или "Программирование на языке Turbo Pascal (версии 6.0 и 7.0). Справочник по процедурам, функциям, диагностическим сообщениям" (сост. В.С. Зубов, М., 1997)..
System
Модуль System является основным: в нем содержатся все изученные нами стандартные процедуры и функции обработки арифметических выражений, множеств, строк и т.п. Специального подключения этот модуль не требует: его содержимым можно пользоваться по умолчанию.
Напомним, что этот модуль содержит следующие типы подпрограмм:
- подпрограммы для обработки величин порядковых типов данных ( dec, inc, odd, pred, succ );
- арифметические функции ;
- функции преобразования типов данных ( chr, ord, round, trunc );
- процедуры управления процессом выполнения программы ( break, continue, exit, halt );
- подпрограммы обработки строк ( concat, copy, delete, insert, length, pos, str, val );
- подпрограммы файлового ввода и вывода ;
- подпрограммы динамического распределения памяти ( dispose, freemem, getmem, new );
- функции для работы с указателями и адресами ( addr );
- а также некоторые другие подпрограммы (например, exclude, include, random, randomize, upcase ).
Crt
Модуль Crt служит для организации "хорошего" вывода на экран. Подробнее о содержимом этого модуля мы расскажем в следующей лекции.
Wincrt
Модуль WinCrt предназначен для создания программ, поддерживающих простейший оконный интерфейс.
Printer
Модуль Printer позволяет производить вывод информации не на консоль, а на принтер (под операционной системой DOS).
Winprn
Модуль WinPrn является аналогом модуля Printer для операционной системы Windows.
Dos
Модуль Dos позволяет обмениваться информацией с операционной системой. Системное время, прерывания, состояния параметров окружения, процедуры обработки процессов, работа с дисковым пространством - всем этим занимается модуль Dos.
Windos
Модуль WinDos является аналогом модуля Dos для операционной системы Windows.
Strings
Модуль Strings позволяет перейти от стандартных строк языка Pascal к строкам, ограниченным нулем. В отличие от обычных строк, чья длина не может превышать 255 символов, эти строки могут состоять из 65 535 символов, причем конец каждой такой строки помечен символом #0.
Graph
Модуль Graph содержит разнообразнейшие подпрограммы, которые позволяют создавать на экране различные рисунки из многоцветных геометрических фигур. Модуль управляет также палитрами, фактурами фона и шрифтами.
Overlay
Модуль Overlay предоставляет возможность делать большие программы оверлейными (многократно использующими одну и ту же область памяти).
Winapi
Модуль WinApi отвечает за создание динамических библиотек. Этот модуль свойственен лишь поздним версиям языка Pascal (например, Turbo Pascal 7.0).