Фундаментальные алгоритмы и структуры данных в Delphi | страница 7
Глава 11 сконцентрирована вокруг нескольких технологий сжатия. Подробно рассматриваются такие алгоритмы сжатия, как Шеннона-Фано, Хаффмана, с применением скошенного дерева и LZ77.
В главу 12 включено несколько дополнительных сложных тем, которые смогут удовлетворить аппетит даже самых искушенных программистов, склонных к исследованию алгоритмов и структур данных. Глава принесет несомненную пользу также и рядовым программистам.
В самом конце книги приводится список использованной литературы, который поможет быстро найти источники, содержащие дополнительную или более подробную информацию, касающуюся рассмотренных в книге алгоритмов. Список включает, помимо прочих, и чисто академические источники.
Что это за странные конструкции $ifdef в коде?
Все коды примеров, представленных в книге, за несколькими специальным образом помеченными исключениями, будут компилироваться в средах Delphi1, 2, 3, 4, 5 и 6, а также Kylix 1. (Впрочем, должны поддерживаться и будущие версии компиляторов. Дополнительную информацию по этому поводу можно найти по адресу http://www.boyet.com/dads.) Несмотря на приложенные мною усилия, некоторые отличия в коде для различных версий Delphi и Kylix все же имеют место.
Дабы решить все вопросы, связанные с этими отличиями, я решил поместить в код множество конструкций $IFDEF, которые обеспечивают условную компиляцию отдельных фрагментов кода. Компания Borland (Inprise) предлагает набор определений для официальных платформ WINDOWS, WIN32 и LINUX, а также набор определений для версий компиляторов VERnnn.
Для решения упомянутых проблем каждый файл с исходным кодом, сопровождающий данную книгу, содержит в самом начале следующее включение:
{$1 TDDefine.inc}
В этом включаемом файле находятся читабельные определения компилятора для различных версий:
DelphiN определение для конкретной версии Delphi, N = 1, 2, 3, 4, 5, 6
DelphiNPlus определение для конкретной или более поздней версии Delphi, N = 1, 2, 3, 4, 5, 6 KylixN определение для конкретной версии Kylix, N = 1
KylixNPlus определение для конкретной или более поздней версии Kylix, N = 1
HasAssert определение, поддерживает ли компилятор Assert
Кроме того, я предполагаю, что каждый компилятор, за исключением Delphi1, поддерживает длинные строки.
Типографские соглашения
Основной текст книги, то есть обсуждения, описания, постановки задач, представлен этим шрифтом.
Коды всех листингов напечатаны моноширинным шрифтом.
Базовые понятия, термины и ключевые фразы выделены курсивом.