Оглавление Введение 1
Что такое компьютер 1
Как в компьютере хранится информация 1
Как компьютер обрабатывает информацию 3
Аппаратное обеспечение 4
Оперативная память 5
Центральный процессор 5
Устройства ввода-вывода и внешние запоминающие устройства 6
Программное обеспечение 7
Программы и языки программирования 9
Глава 1. Элементы языка Object Pascal 13
1.1. Пример программы 13
1.2. Понятие типа данных 17
1.2.1. Символы языка 20
1.3. Правила оформления программ 24
1.4. Программа в Delphi 26
1.5. Структура программы 30
1.6. Разделы описания 31
1.6.1. Раздел описания переменных 31
1.6.2. Раздел описания типов 31
1.6.3. Раздел описания констант 31
1.7. Исполняемые операторы 32
1.8. Выражение. Оператор присваивания 33
1.8.1. Арифметические функции и процедуры 34
1.8.2. Выражения 36
1.8.3. Задания для самостоятельной работы 39
1.9. Операции 41
1.9.1. Арифметические операции 41
1.9.2. Логические операции 42
1.9.3. Операторы отношения 44
1.9.4. Операторы для строк 45
Глава 2. Структура программы, процедуры, функции и модуля 47
2.1. Структура программы 47
2.2. Структура функции 47
2.3. Структура процедуры 49
2.4. Структура модуля 50
2.5. Список параметров 52
2.5.1. Область видимости 52
2.5.2. Формальные и фактические параметры 52
2.5.3. Параметры-значения, параметры-переменные, нетипизированные параметры 53
Глава 3. Типы данных 55
3.1. Совместимость типов 56
3.2. Целые типы и логический тип 57
3.3. Вещественные типы 58
3.4. Перечислимый тип 59
3.4.1. Логическая структура 59
3.4.2. Машинное представление 60
3.4.3. Операции 61
3.5. Диапазоны 61
3.5.1. Логическая структура 61
3.5.2. Операции 62
3.6. Символьные типы 63
3.7. Строковые типы 65
3.7.1. Логическая структура строки 65
3.7.2. Процедуры и функции для строк 67
Глава 4. Операторы 71
4.1. Оператор if 71
4.1.1. Задания для самостоятельной работы 74
4.2. Операторы цикла 76
4.2.1. Оператор цикла while 76
4.2.2. Оператор for 80
4.2.3. Оператор цикла repeat 81
4.2.4. Примеры решения задач на строковый тип данных 84
4.2.5. Задания для самостоятельной работы 86
4.3. Оператор выбора case 89
Глава 5. Формы, компоненты, события 93
5.1. Пример проекта "2*2" 93
5.2. Обзор компонентов 96
5.2.1. Линейка Standard 97
5.2.2. Линейка Additional 98
5.2.3. Линейка Win32 99
5.2.4. Линейка System 100
5.2.5. Линейка Dialogs 100
5.3. Компоненты для ввода и вывода информации 106
5.3.1. Типичные свойства визуальных компонентов 106
5.3.2. События 109
5.3.3. Основные свойства других компонентов 111
5.4. Пример "Перевод в двоичную систему счисления" 112
Глава 6. Структурные типы данных 117
6.1. Способы представления в памяти 117
6.2. Массивы 117
6.2.1. Статические массивы 117
6.2.2. Операции 118
6.2.3. Компоненты Grid 119
6.2.4. Пример 1. Умножение матрицы на строку 120
6.2.5. Динамические массивы 124
6.2.6. Пример 2. Неповторяющиеся элементы массива 127
6.2.7. Задания для самостоятельной работы 129
6.3. Множества 134
6.3.1. Понятие множества 134
6.3.2. Представление множеств 136
6.3.3. Числовые множества 137
6.3.4. Символьные множества 138
6.3.5. Множество из элементов перечислимого типа 138
6.3.6. Множество от интервального типа 139
6.3.7. Операции над множествами 140
6.3.8. Пример 3. Словарь неповторяющихся слов 141
6.4. Записи (структуры) 144
6.4.1. Запись 144
6.4.2. Запись с вариантной частью 145
6.4.3. Оператор присоединения with 146
6.4.4. Представление записей 147
6.4.5. Пример 4. Поиск ближайшей точки 149
6.4.6. Пример 5. Интерполяционный многочлен Лагранжа 150
6.4.7. Задания для самостоятельной работы 154
6.5. Файлы 157
6.5.1. Текстовые файлы 162
6.5.2. Пример 6. Рисование на канве 166
6.5.3. Пример 7. Частотный словарь 169
6.5.4. Типизированные файлы 172
6.5.5. Нетипизированные файлы 173
6.5.6. Пример 8. База данных "Студенты" 174
6.5.7. Другие функции для работы с файлами 187
6.5.8. Доступ к файлам через дескрипторы 189
6.6. Задания для самостоятельной работы 193
Глава 7. Сортировки и поиск 197
7.1. Сортировка простым выбором 198
7.2. Сортировка включениями 200
7.2.1. Сортировка простыми включениями 200
7.2.2. Сортировка бинарными включениями 201
7.3. Сортировка обменом 202
7.3.1. Сортировка простым обменом 202
7.3.2. Шейкер-сортировка 203
7.4. Сортировка Шелла 204
7.5. Сортировка подсчетом 206
7.6. Поиск 207
7.6.1. Поиск в неупорядоченном массиве. Поиск с барьером 207
7.6.2. Поиск в упорядоченном массиве. Бинарный поиск 208
7.6.3. Хеширование 209
7.7. Задания 215
Глава 8. Динамические структуры данных 217
8.1. Указатели 217
8.1.1. Типизированные и нетипизированные указатели 217
8.1.2. Операции над указателями 218
8.1.3. Действия с указателями 219
8.1.4. Операторы для указателей (Pointer) 222
8.2. Динамические переменные 223
8.2.1. Динамические структуры данных 223
8.2.2. Указатели и ссылки 224
8.2.3. Линейные списки. Основные операции 226
Глава 9. Списки, стеки, очереди 233
9.1. Упорядоченный список 233
9.1.1. Частотный словарь 236
9.1.2. Слияние двух упорядоченных списков 240
9.1.3. Двусвязный список 245
9.1.4. Кольцевой список 247
9.2. Стеки 249
9.2.1. Динамическая реализация стека 249
9.2.2. Стек, реализованный с помощью массива 253
9.3. Очереди 257
9.3.1. Динамическая реализация очереди 258
9.3.2. Очередь, реализованная с помощью массива 261
9.4. Задания для самостоятельной работы 266
Глава 10. Рекурсия 269
10.1. Рекурсивные определения и рекурсивные алгоритмы 270
10.2. Когда рекурсия необходима 273
10.3. Примеры рекурсивных программ 274
10.3.1. Ханойские башни 274
10.3.2. Быстрая сортировка 279
10.4. Алгоритмы с возвратом 283
10.4.1. Расстановка ферзей 284
10.4.2. Задача оптимального выбора 290
10.5. Задания 294
Глава 11. Нуль-терминированные строки 297
Глава 12. Процедурные типы 299
Глава 13. Алгоритмы на деревьях 303
13.1. Понятия и определения 304
13.2. Основные операции с бинарными деревьями 305
13.2.1. Упорядоченные деревья. Поиск по дереву с включением 309
13.2.2. Поиск по дереву с включением 315
13.2.3. Удаление из упорядоченного дерева 316
13.3. Сбалансированные деревья 320
13.3.1. Включение в сбалансированное дерево 322
13.3.2. Удаление из сбалансированного дерева 329
13.4. Сортировки на деревьях 334
13.4.1. Турнирная сортировка 334
13.4.2. Сортировка частично упорядоченным деревом 342
13.5. Основы работы интерпретатора 353
13.5.1. Задания на деревья 366
13.6. Интерпретатор для простых операторов 366
13.7. Задания для самостоятельной работы 384
Глава 14. Алгоритмы на графах 385
14.1. Проект для алгоритмов на графах 389
14.1.1. Структура данных 391
14.1.2. Изображение графов 395
14.1.3. Чтение и запись графов 397
14.2. Поиск в графах 399
14.2.1. Поиск в глубину 399
14.2.2. Поиск в ширину 408
14.2.3. Остов графа 410
14.3. Кратчайшие пути 412
14.3.1. Волновой алгоритм 412
14.3.2. Алгоритм Дейкстры 414
14.3.3. Алгоритм Форда—Мура—Беллмана 418
14.3.4. Алгоритм Флойда 421
14.4. Циклы на графах 422
14.4.1. Эйлеровы циклы 422
14.4.2. Гамильтонов цикл. Алгоритмы с возвратом 424
14.5. Гамильтоновы циклы и задача коммивояжера 427
14.5.1. Метод перебора 428
14.5.2. Кратчайший незамкнутый путь 428
14.5.3. Алгоритм штрафов вершин 429
14.6. Комбинаторные задачи на графах 429
14.6.1. Минимальная раскраска графа. Переборный алгоритм 429
14.6.2. Приближенные алгоритмы раскраски графа, основанные на понятии соцветных веpшин 432
14.7. Алгоритмы о связности графа 437
14.7.1. Топологическая сортировка 437
14.7.2. Остовное дерево наименьшей стоимости. Алгоритмы Прима и Краскала 439
14.7.3. Выделение компонент связности 446
14.8. Триангуляция боковой поверхности слоя 447
14.8.1. Структура данных 449
14.8.2. Алгоритм определения номеров граничных точек 450
14.8.3. Построение треугольников боковой поверхности 457
14.9. Задания для самостоятельной работы 458
Глава 15. Оболочка для экспертной системы 461
15.1. Введение в экспертные системы 461
15.2. Структура экспертной системы 461
15.3. Постановка задачи 463
15.4. Структура данных на диске 468
15.5. Вспомогательные функции 470
15.5.1. Работа с файлами в локальной сети 470
15.5.2. Чтение данных 472
15.5.3. Построение графа объектов 476
15.5.4. Бинарные логические операции 478
15.6. Структура проекта 481
15.7. Механизм вывода 485
Глава 16. Специальные вопросы 489
16.1. Обработка исключительных ситуаций 489
16.2. Защитные конструкции языка Object Pascal 496
16.2.1. Блок try..except 496
16.2.2. Блок try..finally 499
16.3. Использование исключительных ситуаций 501
16.4. Справочная информация по классам ИС 504
16.5. Исключительная ситуация EAbort 507
16.6. Использование DLL в Delphi 507
16.6.1. Создание и структура DLL 508
16.6.2. Экспорт из DLL 510
16.6.3. Директивы вызова 512
16.6.4. Инициализация и завершение работы DLL 513
16.6.5. Вызов DLL 515
Глава 17. Графика 521
17.1. Структура классов 522
17.1.1. Класс TFont 522
17.1.2. Класс TPen 525
17.1.3. Класс TBrush 529
17.1.4. Класс TCanvas 530
17.1.5. Примитивы TСanvas 532
17.1.6. Вывод строки под любым углом 541
17.1.7. Рисование на экране 548
17.2. График функции в 3D 549
17.3. Растровый редактор 555
17.4. Векторный редактор 566
17.4.1. Структура данных 568
17.4.2. Кривые Безье 570
17.4.3. Создание объектов 571
17.4.4. Перемещение объектов 575
17.4.5. Поворот объектов 580
17.4.6. Перемещение точек 581
17.4.7. Прорисовка объектов 582
17.5. Работа с канвой принтера 584
17.5.1. Печать в текстовом режиме 584
17.5.2. Печать формы 585
17.5.3. Графическая печать 585
17.6. Задания для самостоятельной работы 587
Глава 18. Объектно-ориентированное программирование 593
18.1. Классы и объекты 593
18.2. Принципы ООП 594
18.2.1. Области видимости 594
18.2.2. Инкапсуляция 595
18.2.3. Наследование 597
18.2.4. Полиморфизм 603
18.2.5. События 608
18.2.6. Описание нового класса 611
18.2.7. Подключение нового класса 616
18.3. Инструменты для работы с компонентами 616
18.3.1. Пункт меню New Component 617
18.3.2. Пункт меню Install Component 618
18.3.3. Пункт меню Import ActiveX Control 621
18.3.4. Пункт меню Сreate Сomponent Тemplate 621
18.3.5. Пункт меню Install Packages 622
18.3.6. Пункт меню Configure Palette 624
18.4. Регистрация нового компонента 625
18.5. Создание редактора свойств 625
18.5.1. Дерево классов стандартных редакторов свойств 625
18.5.2. Класс TPropertyEditor 626
18.5.3. Пример редактора свойств 630
18.5.4. Регистрация редактора свойств 632
18.6. Задания для самостоятельной работы 633
ПРИЛОЖЕНИЯ 637
Приложение 1. Часто используемые процедуры и функции Delphi 639
Приложение 2. Математическая библиотека Math 643
Приложение 3. Описание компакт-диска 646
Список литературы 647
X Оглавление XI Оглавление