Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi / песни о паскале.pdf
Скачиваний:
59
Добавлен:
26.03.2016
Размер:
5.16 Mб
Скачать

Глава 59

Крупные проекты

uses CRT; { Из CRT импортируются процедуры Sound, NoSound, Delay, ClrScr }

procedure Beep;

{ короткий гудок }

begin

 

Sound(300);

{ включение динамика на частоте 300 Гц }

Delay(500);

{ задержка на полсекунды }

NoSound;

{ отключение динамика }

end;

 

begin {--- Главная программа ---}

ClrScr;

{ очистка экрана }

Writeln(’Привет, Мартышка!’);

Beep;

{ короткий гудок }

Readln;

 

end.

 

Здесь на предварительно очищенный экран выводится приветствие, сопровождаемое коротким гудком. В программе используется ряд процедур из библиотеки CRT, — там собраны средства для работы с экраном. Для успешной компиляции надо указать компилятору путь к файлу «CRT.TPU». При установке среды программирования фирменные библиотеки обычно попадают в папку «…\Units» (многоточием обозначена директория установки IDE). Уточнив положение библиотек, подскажите компилятору путь к месту их проживания через пункт меню Options à Directories… (рис. 151).

Путь к фирменным библиотекам

Рис. 151 – Указание пути к фирменным библиотекам

В данном примере предполагаем, что компилятор установлен в директорию «C:\BP», а библиотечные модули размещены в папке «C:\BP\UNITS».

Динамически загружаемые библиотеки (DLL)

Порой несколько разных программ используют общие для них процедуры и функции. Если при их компиляции подключить общую библиотеку, то процедуры из неё войдут в каждую из программ, увеличивая их общий «вес». Кому-то пришла в голову мысль отделить библиотеку от использующих её программ так, чтобы

494

Глава 59

Крупные проекты

библиотека загружалась в память лишь единожды в момент запуска первой из применяющих её программ. И тогда, при старте последующих программ, нужные им средства оказываются уже загруженными в память. Это уменьшает общий объём оперативной памяти, потребляемой всеми работающими программами. Динамически загружаемые библиотеки (DLL) могут разрабатываться не только на Паскале, но и на других языках (например, на Си или Ассемблере).

Итоги

В программировании принято разделение труда посредством модульной технологии: современные программы собирают из модулей, разработанных разными программистами.

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

Каждый модуль обладает именем и содержит две обязательные секции:

секцию интерфейса и секцию реализации.

Имя модуля должно совпадать с именем файла без расширения.

Секция интерфейса содержит объявления, видимые за пределами модуля.

Секция реализации содержит невидимые за пределами модуля объявления, а также тела процедур и функций.

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

Аслабо?

А) Разбейте на два модуля проект P_58_1 — обход графа в ширину. Что должно быть видимо за пределами модуля? Что поместить в секцию инициализации?

Задачи на темы предыдущих глав

Б) Императорские заботы. После постройки империи (см. главы 57 и 58) бывшие независимые государства стали провинциями и породили новые проблемы. Для доставки туда правительственных бумаг император нанял гонцов, которые для ускорения доставки следовали из столицы кратчайшими путями и лишь в одном направлении — от центра к окраинам империи. Сколько гонцов для этого нужно? — вот первый вопрос. Сколько времени потребуется для достижения самых дальних окраин, если переход из провинции в провинцию отнимает сутки?

— это второй вопрос. В конечных пунктах (на окраинах) перед возвращением гонцам нужен отдых, на каких окраинах построить гостиницы? — это третий вопрос. Подсказка: возьмите за основу программу P_58_1 — обход графа в ширину — и внесите необходимые дополнения в процедуру Expand.

495

Соседние файлы в папке delphi