(первая часть книги *.doc - 400kb) Г.Шилдт Р А Б О Т А С ТУРБО ПАСКАЛЕМ г. Москва, 1990 г. ================================================================= Работа с Турбо Паскалем #1/2 Оглавление Предисловие.....................................................4 Введение........................................................5 ГЛАВА 1. СОРТИРОВКА И ПОИСК.....................................7 СОРТИРОВКА......................................................7 Классы алгоритмов сортировки....................................7 Оценка алгоритмов сортировки....................................8 Сортировка пузурьковым методом..................................9 Сортировка выбором.............................................13 Сортировка вставкой............................................14 Усовершенствованные алгоритмы сортировки.......................16 Сортировка Шелла...............................................17 ГЛАВА 2. ОЧЕРЕДИ, СТЕКИ, СВЯЗАННЫЕ СПИСКИ И ДЕРЕВЬЯ............32 ОЧЕРЕДИ........................................................33 Циклическая очередь............................................36 СТЕКИ..........................................................43 СВЯЗАННЫЕ СПИСКИ...............................................47 Связанные списки с одиночной связью............................47 Списки с двойной связью........................................55 Список адресов почтовых корреспонденций, построенный в виде списка с двумя связями........................................61 ДВОИЧНЫЕ ДЕРЕВЬЯ...............................................68 ГЛАВА 3. ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ.....................76 ФУНКЦИЯ New...................................................78 ФУНКЦИЯ Dispose...............................................79 ФУНКЦИИ Mark и Release........................................80 ОБРАБОТКА РАЗРЕЖЕННЫХ МАССИВОВ.................................82 Использование связанного списка для организации разреженного массива.........................................83 Использование двоичного дерева для организации разреженных массивов......................................................87 Применение массива указателей для организации разреженных массивов......................................................90 ХЕШИРОВАНИЕ....................................................94 Анализ хеширования............................................100 Выбор метода реализации разряженных матриц....................100 БУФЕРИЗАЦИЯ...................................................102 ФРАГМЕНТАЦИЯ..................................................111 Динамическое распределение памяти и задачи искусственного интеллекта...................................................113 ГЛАВА 4. ИНТЕРФЕЙС С ПРОГРАММАМИ НА АССЕМБЛЕРЕ И СВЯЗЬ С ОПЕРАЦИОННОЙ СИСТЕМОЙ........................................123 ИНТЕРФЕЙС С АССЕМБЛЕРОМ.......................................123 ВНУТРЕННИЕ ФОРМАТЫ ДАННЫХ И СОГЛАШЕНИЯ О СВЯЗЯХ В ЯЗЫКЕ ТУРБО ПАСКАЛЬ................................................125 Параметры-значения............................................126 Параметры-переменные..........................................127 Передача результата функции...................................128 Сохранение регистров..........................................128 Работа с Турбо Паскалем #1/2 Создание внешней программы на ассемблере......................128 Встроенный код ассемблера.....................................130 Когда следует применять ассемблер.............................132 СВЯЗЬ С ОПЕРАЦИОННОЙ СИСТЕМОЙ.................................134 Доступ к системным ресурсам в операционной системе PC-DOS.....135 Применение процедуры MsDos....................................136 Таблица 1 Системные подпрограммы, вызываемые посредством прерываний...................................................138 Использование кодов клавиш сканирования.......................148 Заключительные замечания относительно связи с операционной системой.....................................................151 ГЛАВА 5. СТАТИСТИЧЕСКИЙ АНАЛИЗ................................152 ВЫБОРКИ, ГЕНЕРАЛЬНЫЕ СОВОКУПНОСТИ, РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ И ПЕРЕМЕННЫЕ....................................153 Основные статистические оценки................................154 Среднее значение..............................................154 Медианы.......................................................155 Мода..........................................................156 Применение среднего значения, медианы и моды..................158 Дисперсия и стандартное отклонение............................160 Вывод на экран простых графиков...............................162 Прогнозирование и уравнение регрессии.........................168 ПОЛНАЯ ПРОГРАММА ПО СТАТИСТИЧЕСКОМУ АНАЛИЗУ...................173 Применение программы статистического анализа..................183 ЗАКЛЮЧИТЕЛЬНЫЕ ЗАМЕЧАНИЯ......................................184 (вторая часть книги *.doc - 402kb) + примеры на 193 кб ГЛАВА 6. ШИФРОВАНИЕ И СЖАТИЕ ДАННЫХ.............................4 КРАТКАЯ ИСТОРИЯ КРИПТОГРАФИИ....................................4 ТИПЫ ШИФРОВ.....................................................5 ШИФРЫ ЗАМЕНЫ....................................................7 ШИФРЫ ПЕРЕСТАНОВКИ.............................................16 ШИФРЫ ПОБИТОВОЙ ОБРАБОТКИ......................................22 СЖАТИЕ ДАННЫХ..................................................27 Восемь в семь..................................................27 Шестнадцатибуквенный алфавит...................................30 ДЕШИФРАЦИЯ.....................................................36 ГЛАВА 7. ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ И МОДЕЛИРОВАНИЕ.............40 ГЕНЕРАТОРЫ СЛУЧАЙНЫХ ЧИСЕЛ.....................................41 Определение качества генераторов...............................44 Использование нескольких генераторов...........................50 МОДЕЛИРОВАНИЕ..................................................54 Моделирование очередей обслуживания............................55 Управление портфелем акций методом случайного поиска...........64 ГЛАВА 8. СИНТАКСИЧЕСКИЙ РАЗБОР И ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЙ..........68 Разбор выражения...............................................71 СИНТАКСИЧЕСКИЙ РАЗБОР..........................................75 ПРОСТАЯ ПРОГРАММА СИНТАКСИЧЕСКОГО РАЗБОРА ВЫРАЖЕНИЙ............77 Добавление переменных к синтаксическому анализатору............87 ПРОВЕРКА СИНТАКСИСА В ПРОГРАММЕ РЕКУРСИВНОГО НИСХОДЯЩЕГО СИНТАКСИЧЕСКОГО РАЗБОРА.......................................96 ГЛАВА 9. ИНСТРУМЕНТАРИЙ БАЗ ДАННЫХ ТУРБО ПАСКАЛЯ...............97 TURBO ACCESS...................................................97 Необходимые файлы..............................................98 Файлы данных и индексные файлы.................................98 Константы В-дерева в Turbo Access..............................99 Зарезервированные имена переменных и коды ошибок...............99 ClearKey......................................................101 DeleteKey.....................................................101 DeleteRec.....................................................101 FileLen.......................................................102 FindKey.......................................................102 GetRec........................................................102 InitIndex.....................................................102 MakeFile MakeIndex............................................102 NextKey.......................................................103 OpenFile и OpenIndex..........................................103 PrevKey.......................................................104 PutRec........................................................104 SearchKey.....................................................104 UsedRec.......................................................104 ПРИМЕР ПРОСТОГО ПОЧТОВОГО СПИСКА..............................106 ПРИМЕР ПРОГРАММЫ ИНВЕНТАРИЗАЦИИ...............................117 TurboSort.....................................................122 InP, OutP и Less..............................................122 Работа с Турбо Паскалем #2/2 GINST.........................................................124 ГЛАВА 10. ГРАФИЧЕСКИЙ ИСТРУМЕНТАРИЙ ТУРБО ПАСКАЛЯ.............126 ТРЕБОВАНИЯ К АППАРАТНОМУ ОБЕСПЕЧЕНИЮ..........................127 СИСТЕМЫ КООРДИНАТ.............................................127 ТРЕБОВАНИЯ ПО ИНИЦИАЛИЗАЦИИ...................................129 БАЗОВЫЕ ГРАФИЧЕСКИЕ ЭЛЕМЕНТЫ..................................130 ГРАФИЧЕСКИЕ ТЕКСТОВЫЕ ПРОЦЕДУРЫ...............................133 Машинно-независимый набор символов............................133 DrawText и DrawTextW..........................................134 ОКНА..........................................................135 Увеличение масштаба изображения...............................137 ГИСТОГРАММЫ И КРУГОВЫЕ ДИАГРАММЫ..............................140 РИСОВАНИЕ ГРАФИКОВ............................................146 ГЛАВА 11. ЭФФЕКТИВНОСТЬ, МОБИЛЬНОСТЬ И ОТЛАДКА................147 ЭФФЕКТИВНОСТЬ.................................................147 Предотвращение дублирования кода..............................147 ЭФФЕКТИВНОСТЬ.................................................148 Предотвращение дублирования кода..............................149 Использование процедур и функций..............................151 Предложение Case против цепочки if/then/elso..................153 МОБИЛЬНОСТЬ ПРОГРАММ..........................................154 Применение констант...........................................154 Зависимость от операционной системы...........................155 Расширение Турбо Паскаля......................................156 ОТЛАДКА.......................................................157 Проблема указателей...........................................157 Переопределение встроенных процедур и функций.................160 Неожиданные синтаксические ошибки.............................162 Ошибки if/then/if/else........................................164 Забывание о параметрах var в процедурах и функциях............164 Общие соображения по отладке..................................166 ЗАКЛЮЧИТЕЛЬНЫЕ ЗАМЕЧАНИЯ......................................167 ПРИЛОЖЕНИЕ А. ПРЕОБРАЗОВАНИЕ ПРОГРАММ С ЯЗЫКОВ СИ И БЕЙСИК В ТУРБО ПАСКАЛЬ..............................................168 Сравнение Си и Турбо Паскаля..................................171 Преобразование циклов Си в циклы Турбо Паскаля................173 Пример трансляции.............................................175 Использование компьютера для помощи в преобразовании из Си в Турбо Паскаль..............................................178 ПРЕОБРАЗОВАНИЕ ИЗ БЕЙСИКА В ТУРБО ПАСКАЛЬ.....................188 Преобразование циклов Бейсика в циклы Турбо Паскаля...........188 Преобразование IF/THEN/ELSE...................................191 Создание подпрограмм Турбо Паскаля из программ Бейсика........193 Избавление от глобальных переменных...........................195 ЗАКЛЮЧИТЕЛЬНЫЕ СООБРАЖЕНИЯ ПО ТРАНСЛЯЦИИ......................196 ПРИЛОЖЕНИЕ В. РАЗЛИЧИЯ МЕЖДУ ТУРБО ПАСКАЛЕМ И СТАНДАРТНЫМ ПАСКАЛЕМ.....................................................197 НОВЫЕ КЛЮЧЕВЫЕ СЛОВА..........................................198 Работа с Турбо Паскалем #2/2 absolute......................................................198 external......................................................198 implementation................................................199 inline........................................................199 interface.....................................................200 interrupt.....................................................200 shr и shl.....................................................200 Тип string....................................................201 uses..........................................................202 XOR...........................................................202 НОВЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ.....................................203 Экранные и графические процедуры..............................203 Строковая функция.............................................203 Процедуры взаимодействия с операционной системой..............204 ДОПОЛНИТЕЛЬНЫЕ РАЗЛИЧИЯ МЕЖДУ ТУРБО ПАСКАЛЕМ И СТАНДАРТНЫМ ПАСКАЛЕМ.....................................................205 ПРИЛОЖЕНИЕ С. ИСПОЛЬЗОВАНИЕ БЛОКОВ ТУРБО ПАСКАЛЯ.............206 СОЗДАНИЕ БЛОКА................................................206 ИСПОЛЬЗОВАНИЕ БЛОКОВ..........................................208 КОРОТКИЙ ПРИМЕР...............................................209 ПРИМЕР СТЕКА..................................................212