Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Алгоритмы и программы на C++Builder

Покупка
Артикул: 616121.01.99
В книге подробно рассмотрены синтаксис, семантика, техника процедурного и объектно-ориентированного программирования на C++Builder. Язык C++ и базовые алгоритмы обработки данных всех типов изучаются параллельно с визуальным программированием. Книга будет также полезна тем, кто имеет определённый опыт в программировании, однако желает расширить и углубить свои знания. Она может служить надёжной платформой для изучения и других языков программирования, поскольку она основывается на парадигме разработки современных приложений, к которой специалисты продвигались более пяти десятилетий. Издание предназначено для студентов, преподавателей, инженеров, научных сотрудников, лицеистов и старшеклассников, желающих самостоятельно изучить C++Builder «с нуля». К книге прилагается компакт-диск, на котором записаны примеры программ для среды С++ Builder 5 и C++ Builder 6.
Федоренко, Ю. П. Алгоритмы и программы на C++Builder [Электронный ресурс] / Ю. П. Федоренко. - Москва : ДМК Пресс, 2010. - 544 с.: ил. - ISBN 978-5-94074-607-2. - Текст : электронный. - URL: https://znanium.com/catalog/product/408647 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Федоренко Ю.

Алгоритмы и
программы на
 C++Builder

Москва, 2010

УДК
004.4

ББК
32.973.26-018.2
Ф33

Ф33
Федоренко Ю. П.
Алгоритмы и программы на C++Builder. – М.: ДМК Пресс, 2010. –  544с.: ил.

ISBN 978-5-94074-607-2

В книге подробно рассмотрены синтаксис, семантика, техника процедурного

и объектноориентированного программирования на C++Builder. Язык C++ и базовые алгоритмы обработки данных всех типов изучаются параллельно с визуальным программированием. Книга будет также полезна тем, кто имеет определённый опыт в программировании, однако желает расширить и углубить свои
знания. Она может служить надёжной платформой для изучения и других языков
программирования, поскольку она основывается на парадигме разработки современных приложений, к которой специалисты продвигались более пяти десятилетий.

Издание предназначено для студентов, преподавателей, инженеров, научных

сотрудников, лицеистов и старшеклассников, желающих самостоятельно изучить
C++Builder «с нуля».

К книге прилагается компактдиск, на котором записаны примеры программ

для среды С++ Builder 5 и C++ Builder 6.

УДК 004.4
ББК 32.973.26-018.2

      Федоренко Юрий Петрович

Алгоритмы и программы на C++Builder

Главный редактор      Мовчан Д. А.

    dm@dmkpress.ru

              Корректор    Синяева Г. И.

                         Верстка    Паранская Н. В.

Дизайн обложки     Мовчан А. Г.

Подписано в печать 16.12.2009. Формат 70х100 1/16 .

Гарнитура «Петербург». Печать офсетная.

Усл. печ. л. 36. Тираж 1000 экз.

Webсайт издательства: www.dmkpress.ru

Internetмагазин: www.alianskniga.ru

     © Федоренко Ю. П., 2010

ISBN 9785940746072
 © Оформление, ДМК Пресс, 2010

Содержание

Благодарности....................................................... 11

Предисловие ......................................................... 12

Урок 1. Первая программа ....................................... 20

1.1. Внешний вид и назначение приложения Умножитель ......................... 20
1.2. Знакомство с визуальным программированием ................................. 21

1.2.1. Форма ......................................................................................... 22
1.2.2. Тип объекта ................................................................................. 23
1.2.3. Правильный идентификатор ........................................................ 24
1.2.4. Поле ввода .................................................................................. 25
1.2.5. Поле вывода ................................................................................ 27
1.2.6. Командная кнопка ....................................................................... 28

1.3. Разработка кода программы ............................................................... 28

1.3.1 Что такое алгоритм ....................................................................... 28
1.3.2. Алгоритм программы .................................................................. 29
1.3.3. Способы порождение заготовки функции ................................... 30
1.3.4. Заголовок функции ...................................................................... 30
1.3.5. Задание переменных ................................................................... 32
1.3.6. Однострочный комментарий ....................................................... 33
1.3.7. Инициализация переменных ....................................................... 33
1.3.8. Конфигурация компьютера.......................................................... 34
1.3.9. Оператор присваивания .............................................................. 34
1.3.10. Текстовая константа .................................................................. 35
1.3.11. Многострочный комментарий и преобразование текстовых
переменных в переменные вещественного типа ................................... 35
1.3.12. Преобразование переменных вещественного типа в переменные
текстового типа..................................................................................... 36
1.3.13. Форматирование текста программы ......................................... 37

1.4. Сохранение и отладка ......................................................................... 38

1.4.1. Сохранение проекта .................................................................... 38
1.4.2. Компиляция и сборка проекта ..................................................... 39
1.4.3. Предупреждения и подсказки...................................................... 43
1.4.4. Запуск проекта ............................................................................ 43

1.5. Задача для программирования ........................................................... 44
1.6. Вариант программного решения ......................................................... 45

Содержание
Содержание
Содержание
Содержание
Содержание

Урок 2. Модернизация программы ............................ 47

2.1. Открытие проекта ............................................................................... 47
2.2. Округление результата ........................................................................ 47

Приложение 2.1. Возможности функции FloatToStrF()........................... 48

2.3. Борьба с ошибками пользователя ....................................................... 49

2.3.1. Исключительные ситуации .......................................................... 49
2.3.2. Молчаливые исключения ............................................................. 54

2.4. Улучшение интерфейса ....................................................................... 55

2.4.1. Выбор пиктограммы для приложения .......................................... 55
2.4.2. Местоположение интерфейса ..................................................... 55
2.4.3. Плавное перетаскивание и протягивание .................................... 55
2.4.4. Горизонтальное и вертикальное выравнивание ........................... 56
2.4.5. Выравнивание по сетке ............................................................... 57
2.4.6. Уравнивание габаритов ............................................................... 58
2.4.7. Одинаковые интервалы ............................................................... 59
2.4.8. Симметрирование объектов относительно центра ...................... 59
2.4.9. Порядок перехода между объектами управления ........................ 60

2.5. Подробнее об отладке программы ...................................................... 60

2.5.1. Предупреждения и подсказки...................................................... 60
2.5.2. Точки остановки и всплывающая подсказка ................................. 62
2.5.3. Пошаговое выполнение программы ............................................ 64

2.6. Полноценный исполняемый файл ....................................................... 65
2.7. Задача для программирования ........................................................... 68
2.8. Вариант программного решения ......................................................... 68

Урок 3. Операции, математические функции и операторы
выбора ................................................................. 70

3.1. Использование математических функций и констант .......................... 70

3.1.1. Условие задачи и интерфейс программы Дальность .................. 70
3.1.2. Препроцессорная обработка ....................................................... 71
3.1.3. Файл реализации ........................................................................ 72
3.1.4. Описание программы .................................................................. 72

3.2. Основные стандартные математические функции .............................. 74
3.3. Операции и порядок их выполнения .................................................... 76

3.3.1. Операции отношения .................................................................. 76
3.3.2. Круглые скобки ............................................................................ 76
3.3.3. Логические операции .................................................................. 77
3.3.4. Арифметические операции ......................................................... 78
3.3.5. Операции присваивания.............................................................. 79
3.3.6. Порядок вычислений ................................................................... 80

3.4. Условный оператор if ........................................................................ 80
3.5. Оператор множественного выбора switch.......................................... 85
3.6. Дополнительные возможности командной кнопки .............................. 88
3.7. Задача для программирования ........................................................... 89
3.8. Вариант решения задачи..................................................................... 89

Содержание
Содержание
Содержание
Содержание
Содержание

Урок 4. Все о циклах................................................ 90

4.1. Зачем нужны циклы? ........................................................................... 90
4.2. Оператор цикла for ........................................................................... 96
4.3. Оператор цикла while .......................................................................103
4.4. Оператор цикла do_while..................................................................105
4.5. Вложенные циклы ............................................................................. 106
4.6. Задачи для программирования ......................................................... 112
4.7. Варианты решений задач .................................................................. 113

Урок 5. Графики зависимостей ............................... 117

5.1. Построение одномерных зависимостей ............................................ 117
5.2. Построение серии одномерных графиков ......................................... 127
5.3. Модернизируем интерфейс .............................................................. 130

5.3.1. Кнопка для выхода из приложения ............................................ 130
5.3.2. Показ стандартних мультфильмов ............................................. 132
5.3.3. Стандартне кнопки Windows .....................................................134
5.3.4. Размещение картинок на кнопках .............................................. 135
5.3.5. Размер формы и граничные пиктограммы ................................. 135

5.4. Задачи для программирования ......................................................... 136
5.5. Варианты решений задач .................................................................. 137

Урок 6. Одномерные массивы ................................ 139

6.1. Зачем нужны массивы? ..................................................................... 139

6.1.1. Интерфейс приложения............................................................. 140
6.1.2. Задание массива ....................................................................... 141
6.1.3. Суммирование элементов массива ........................................... 143
6.1.4. Определение экстремума ......................................................... 144
6.1.5. Счетчик ...................................................................................... 145
6.1.6. Функция PyskClick в законченном виде ...................................... 146
6.1.7. Компактный вариант функции PyskClick ....................................147
6.1.8. Общие определения .................................................................. 148
6.1.9. Глобальные переменные и константы ........................................ 149
6.1.10. Страж кода .............................................................................. 150

6.2. Метод линейной сортировки ............................................................. 152

6.2.1. Сущность метода....................................................................... 152
6.2.2. Алгоритм метода ....................................................................... 153
6.2.3. Ручная трассировка алгоритма .................................................. 154
6.2.4. Иллюстрация метода ................................................................. 156
6.3. Сортировка методом пузырька..................................................... 159

6.4. Другие методы упорядочивания элементов массива ........................ 162

6.4.1. Применение трёх массивов ....................................................... 162
6.4.2. Применение одного массива ..................................................... 163
6.4.3. Упорядочивание массива методом Ларионова .........................166

6.5. Схемы алгоритмов ............................................................................ 167
6.6. Задачи для программирования ......................................................... 172
6.7. Варианты решений задач .................................................................. 172

Содержание
Содержание
Содержание
Содержание
Содержание

Урок 7. Многомерные массивы ............................... 178

7.1. Примеры многомерных массивов ..................................................... 178
7.2. Описание многомерных массивов .................................................... 179
7.3. Доступ к элементам массива ............................................................ 181
7.4. Главная и побочная диагонали........................................................... 182
7.5. Примеры обработки матриц .............................................................. 183
7.6. Задачи для программирования ......................................................... 189
7.7. Варианты решений задач .................................................................. 189

Урок 8. Функции ................................................... 194

8.1. Важный инструмент структурирования программ ............................. 194
8.2. Что уже известно о функциях ............................................................ 195
8.3. Описание и объявление функций ...................................................... 196

8.3.1. Тип возвращаемых значений ..................................................... 196
8.3.2. Если функция не имеет параметров .......................................... 198
8.3.3. Прототип функции ..................................................................... 198
8.3.4. Переменное число параметров функции ................................... 199
8.3.5. Параметры со значениями по умолчанию.................................. 200
8.3.6. Чем функции отличаются от программ ...................................... 200
8.3.7. Операция расширения области видимости ............................... 200
8.3.8. Выход из функции...................................................................... 201
8.3.9. Запрет и разрешение доступа к функции .................................. 201

8.4.Различные способы передачи параметров в функции........................ 202

8.4.1. Передача параметра по значению ............................................. 202
8.4.2. Передача параметра по ссылке ................................................. 203
8.4.3. Передача параметра по адресу ................................................. 204
8.4.4. Применение спецификатора const в ссылочных параметрах ..... 205
8.4.5. Применение спецификатора const в параметрахуказателях .... 205

8.5. Перегрузка функций .......................................................................... 206
8.6.Шаблоны функций ............................................................................. 207

8.6.1. Параметры одинакового типа .................................................... 208
8.6.2. Параметры разного типа ........................................................... 208
8.6.3. Параметры разного формального типа и конкретного типа....... 208
8.6.4. Необходимость применения всех типов объявленных
параметров ......................................................................................... 209
8.6.5. Другие возможности и ограничения шаблонов.......................... 209
8.6.6. Пример практического применения шаблона ............................ 210

8.7. Иллюстрация применения пользовательских функций...................... 212
8.8. Задача для программирования ......................................................... 219
8.9. Вариант решения задачи................................................................... 219

Урок 9. Файлы ..................................................... 224

9.1. Назначения файлов ........................................................................... 224

9.1.1. Устройства для долговременного хранения информации.
История вопроса................................................................................. 224
9.1.2. Что называется файлом............................................................. 225

Содержание
Содержание
Содержание
Содержание
Содержание

9.1.3. Что содержится в файлах .......................................................... 226
9.1.4. Типы файлов .............................................................................. 227
9.1.5. Работа с файлами на физическом уровне ................................. 227

9.2. Простые приложения с текстовыми файлами ................................... 229

9.2.1. Многострочные окна редактирования Memo и RichEdit..............229
9.2.2. Невизуальный объект типа TStringList .......................................231

9.3. Обработка массивов в текстовых файлах .......................................... 234

9.3.1. Чтение из файла и запись в файл одномерного массива ........... 234
9.3.2. Чтение из файла и запись в файл двумерных массивов ............. 236

9.4. Двоичные файлы ............................................................................... 240

9.4.1. Простое приложение с двоичным файлом ................................. 243
9.4.2. Одномерный массив в двоичном файле .................................... 243
9.4.3. Матрица в двоичном файле ....................................................... 244
9.4.4. Приложение Квадрат числа ......................................................245

9.5. Улучаем интерфейс приложения ....................................................... 247

9.5.1. Создаём меню ........................................................................... 248
9.5.2. Создаём горячие клавиши ......................................................... 251
9.5.3. Создаём кнопки быстрого доступа ............................................ 251

9.6. Задачи для программирования ......................................................... 256
9.7. Варианты решений задач .................................................................. 256

Урок 10. Указатели и динамические переменные....... 261

10.1. Вводные замечания и основные определения................................. 261
10.2. Иллюстрация применения указателей............................................. 265
10.3. Указатели на различные типы данных.............................................. 266

10.3.1. Виды указателей...................................................................... 266
10.3.2. Операции с однотипными и разнотипными указателями ......... 267
10.3.3. Указатель на указатель ............................................................ 268
10.3.4. Константный указатель на константные данные ...................... 269
10.3.5. Неконстантый указатель на константные данные..................... 269
10.3.6. Константный указатель на неконстантные данные ................... 270

10.4. Адресная арифметика с массивами ................................................ 270
10.5. Адресная арифметика с указателями на массивы ........................... 272
10.6. Массивы указателей ....................................................................... 274
10.7. Динамические массивы................................................................... 279

10.7.1. Одномерные динамические массивы ...................................... 279
10.7.2. Двумерные динамические массивы......................................... 282

10.8. Указатели на функции ..................................................................... 285
10.9. Функции, возвращающие указатель на массив ............................... 289
10.10. Важная рекомендация ................................................................... 290
10.11. Задачи для программирования ..................................................... 291
10.12. Варианты решений задач .............................................................. 291

Урок 11. Ссылки ................................................... 294

11.1. Основные свойства ......................................................................... 294
11.2. Использование модификатора const ..............................................297

Содержание
Содержание
Содержание
Содержание
Содержание

11.3. Ссылка на функцию ......................................................................... 297
11.4. Функции, возвращающие ссылку .................................................... 299
11.5. Ссылки на объекты динамических переменных ............................... 300
11.6. Осваиваем новые объекты интерфейса .......................................... 301

11.6.1. Переключатели ........................................................................ 301
11.6.2. Индикаторы ............................................................................. 304
11.6.3. Диалоговое окно ..................................................................... 307
11.6.4. Диаграммы длительных процессов ......................................... 310
11.6.5. Непослушная кнопка................................................................ 315
11.6.6. Модальные и немодальные формы.......................................... 316

11.7. Задачи для программирования ....................................................... 326
11.8. Варианты решений задач ................................................................ 326

Урок 12. Символы и строки .................................... 329

12.1. Символьные переменные ................................................................ 329

12.1.1. Перевод символов DOS в символы Windows ............................331
12.1.2. Перевод символов Windows в символы DOS ............................333

12.2. Массивы символов .......................................................................... 335

12.2.1. Задание и инициализация ....................................................... 335
12.2.2. Функции для обработки ........................................................... 336

12.3. Переменные типа String .................................................................339

12.3.1. Сравнение строк ...................................................................... 342
12.3.2. Стандартные функции для обработки строк ............................ 343
12.3.3. Иллюстрация обработки строк ................................................ 347

12.4. Задачи для программирования ....................................................... 356
12.5. Варианты решений задач ................................................................ 356

Урок 13. Перечисления, множества, объединения и
структуры ........................................................... 363

13.1. Перечислимый тип переменных ...................................................... 363
13.2. Множества ...................................................................................... 365

13.2.1. Операции над однотипными множествами .............................. 368
13.2.2. Внутреннее представление множеств ..................................... 370
13.2.3. Пример применения множеств ................................................ 372

13.3. Объединения................................................................................... 374
13.4. Структуры........................................................................................ 375

13.4.1. Простые структуры .................................................................. 375
13.4.2. Вложенные структуры.............................................................. 378
13.4.3. Массивы структур .................................................................... 379
13.4.4. Структуры с вариантными полями ........................................... 380
13.4.5. Методы структур ..................................................................... 381
13.4.6. Пример обработки базы данных .............................................. 382
13.4.7. Наследование структур ........................................................... 390
13.4.8. Защита полей и методов структур ........................................... 392
13.4.9. Двунаправленный список структур .......................................... 394

Содержание
Содержание
Содержание
Содержание
Содержание

13.5. Задачи для программирования ....................................................... 405
13.6. Варианты решений задач ................................................................ 405

Урок 14. Классы ................................................... 414

14.1. Вводные замечания......................................................................... 414
14.2. Инкапсуляция и наследование ........................................................ 415
14.3. Новый вариант приложения ............................................................ 422
14.4. Полиморфизм ................................................................................. 425

14.4.1 Совместимость объектных типов.............................................. 425
14.4.2. Полиморфизм, виртуальные методы, раннее и позднее
связывание ......................................................................................... 426
14.4.3. Чисто виртуальные методы, абстрактные классы и
полиморфные функции ....................................................................... 429
14.4.4. Применение виртуальных и чисто виртуальных методов,
правила их описания и использования ................................................ 429
14.4.5. Преимущества и недостатки виртуальных методов ................. 431

14.5. Клиенты и дружественные функции класса ..................................... 431
14.6. Статические поля и статические константы класса ......................... 432
14.7. Конструкторы класса ....................................................................... 435

14.7.1. Конструкторы простых классов ............................................... 436
14.7.2. Конструкторы производных классов........................................ 439
14.7.3. Свойства конструкторов и правила их разработки................... 443

14.8. Деструктор класса........................................................................... 444

14.8.1. Обычные деструкторы ............................................................. 444
14.8.2. Виртуальные деструкторы ....................................................... 448
14.8.3. Свойства деструкторов и правила их разработки .................... 451

14.9. Создание копий объектов................................................................ 452

14.9.1. Побитовое копирование .......................................................... 452
14.9.2. Запрет неявного преобразования типов.................................. 454
14.9.3. Конструктор копирования........................................................ 454

 14.10. Указатель this ..............................................................................457

14.10.1. Назначения и возможности указателя this .............................457
14.10.2. Программное порождение визуальных объектов ................... 459

14.11. Локальные классы ......................................................................... 463
14.12. Шаблоны классов .......................................................................... 463
14.13. Отличие структур и объединений от классов ................................. 467
14.14. Задача для программирования ..................................................... 469
14.15. Вариант решения задачи ............................................................... 469

Урок 15. Графика и мультипликация ........................ 472

15.1. Основные определения ................................................................... 472
15.2. Логотип приложения ....................................................................... 474
15.3. Приложение для просмотра графических файлов ........................... 477
15.4. Типы графических файлов ............................................................... 478
15.5. Объекты для хранения изображений, открытие, сохранение и
переименование файлов ......................................................................... 480

10
10
10
10
Содержание
Содержание
Содержание
Содержание
Содержание

15.6. Графические примитивы и инструменты для их построения ........... 484

15.6.1. Карандаш и кисть .................................................................... 484
15.6.2. Прямоугольник ........................................................................ 486
15.6.3. Эллипс ..................................................................................... 488
15.6.4. Дуга ......................................................................................... 489
15.6.5. Сектор ..................................................................................... 489
15.6.6. Линия ...................................................................................... 490
15.6.7. Ломаная линия ........................................................................ 491
15.6.8. Многоугольник ........................................................................ 492
15.6.9. Текст ........................................................................................ 493

15.7. Приложение Пособие ....................................................................495
15.8. Мультипликация с использованием графических примитивов ........ 500
15.9. Мультипликация с применением битовых образов .......................... 504

15.9.1. Использование файлов типа bmp............................................504
15.9.2. Применение ресурсов программы .......................................... 508

15.10. Разработка мультфильма Аквариум ..............................................513
15.11. Вариант мультфильма Аквариум, разработанный на основе
применения пользовательских классов ................................................... 520
15.12. Задачи для программирования ..................................................... 524
15.13. Варианты решения задач .............................................................. 525

Урок 16. Запуск чужих программ из вашего
приложения......................................................... 527

16.1. Технология OLE..............................................................................527

16.1.1. Знакомство на примере программы ........................................ 528
16.1.2. Программное внедрение OLEобъектов .................................. 535
16.1.3. Быстрый способ внедрения и связывания объектов на основе
существующих документов ................................................................. 536
16.1.4. Сохранение документов в исходных форматах ........................ 537
16.1.5. Развитие технологии OLE .......................................................538

16.2. Задача для программирования ....................................................... 540
16.3. Вариант решения задачи ................................................................. 540

Список литературы ............................................... 541

Алфавитный указатель компонентов
библиотеки VCL.................................................... 542

Алфавитный указатель функций библиотек
C++Builder, API Windows, деректив компилятору, типов
данных, операций и других ключевых слов ............... 543

Благодарности

На протяжении шести лет, пока создавалась и шлифовалась эта книга, я получал
очень доброжелательную поддержку со стороны моих друзейколлег, которые
читали главы по мере их написания и дали целый ряд важных рекомендаций, касающихся содержания и ясности изложения книги. Гаврику А.П. я благодарен
также за то, что он расширил опыт применения пособия в учебном процессе
Харьковского национального университета радиоэлектроники. Неоценимые советы и пожелания дал зубр программирования математик Милованов Ю.Б., его
замечания, аккуратно записанные на полях, я не только полностью учёл, но отдельные его советы по стилю изложения навсегда взял на вооружение при написании научных работ. Особую признательность и благодарность за ценные предложения и замечания выражаю Дорохову В.Л., добровольно взявшему на себя
столь большой труд по рецензированию и редактированию первоначального наброска книги. Все названные мои друзья, как и я, – научные сотрудники, поэтому
их мнение весьма существенно, ведь книга в первую очередь направлена на удовлетворение программистских запросов научных сотрудников и инженеров. Испытываю определённую неловкость за возложенную на них нагрузку, несмотря
на их заверения о том, что книга доставила им удовольствие. Спасибо вам, друзья.

Предисловие

Все вопросы программирования в этом пособии рассматриваются с самого начала и исчерпывающе полно. Это делает его полезным даже для тех, кто причисляет
себя к программистам с определённым опытом. Однако в первую очередь пособие предназначено для научных сотрудников, инженеров и студентов технических высших и средних учебных заведений, которым в ходе основной деятельности требуется уметь самостоятельно разрабатывать программы.

Место C++ Builder среди других языков и сред
программирования

C++ Builder – это одна из самых современных и эффективных сред программирования. Что собой представляет среда программирования и язык программирования? Для ответа на эти и другие близкие вопросы вначале кратко рассмотрим
историю развития программирования.

В конце 40х годов прошлого столетия, когда появились первые ЭВМ (электронновычислительные машины), использовалось программирование в адресах:
последовательность команд процессора в машинных кодах. Машинный код – это
совокупность операций, которые может выполнять ЭВМ. Машинный код иными
словами это язык машины. ЭВМ (а позже и персональный компьютер) воспринимает все команды только в двоичной системе счисления. При программировании в кодах команды (они значительно отличались на разных ЭВМ) для удобства записывали в восьмеричной системе счисления (получалась более короткая
вереница цифр команды). В конечном итоге программа представляла собой набор двоичных цифр. Для выполнения, например, какогото арифметического
действия над двумя числами требовалось обратиться к ячейкам (адресам), где
хранятся эти числа и применить к ним код операции (специально выделенный
номер), а затем результат операции занести в ячейку по определённому адресу
(номеру). В целом этот кошмар, подругому такой способ программирования назвать трудно, продолжался 5 – 10 лет. Хотя и в середине 70х ещё выпускались
учебники по упомянутому языку программирования, однако многие разработчики программ (но далеко не все) уже переходили на языки, более удобные для человека.

В 50е годы разработан язык Assembler (сборщик), в котором номера команд

(операций) процессора заменили словами (или частью слов) английского языка.
Этот язык программирования является языком низкого уровня, его применение
существенно упростило разработку программ (написание, проверку и отладку).
У каждого процессора имелся свой Ассемблер с разным числом команд. Assembler

13
13
13
13

используется и в настоящее время для написания очень быстродействующих и
компактных программ. Однако разрабатывать на нём большие программы практически невозможно.

Создателю программы более удобно весь ход решения задачи записать на своём человеческом языке, а не в машинных кодах (пусть даже эти коды и заменены
мнемоническими, легко запоминающимися обрывками слов). Языки программирования, где используются команды в виде слов, называются языками высокого
уровня. Поскольку ЭВМ изначально создана для проведения научных вычислений, то для удобства «перевода» формул на язык машины первым (1954–57 г.г.)
был разработан Fortran (FORmula TRANslator). Прежде всего, он предназначался
научным сотрудникам.

Для профессиональных программистов созданы языки: Algol (1958–1960

г.г.), Cobol (1959–1960 г.), C (1972 г.), C++ (1983 г.), Ada (1983–1995 г.г.),
C++ANSI (1988 г.), Object Pascal (1988 г.) и другие. Если Cobol в основном ориентирован на разработку программ обработки финансовых операций, то C изначально задуман для системного программирования, написания компиляторов и
операционных систем. Операционная система UNIX и большинство программ
для неё созданы на C. Язык C++ является результатом совершенствования и развития C, он обогащён технологией объектного программирования (см. ниже).

Для уровня школьников порождён легко усваиваемый Basic (1964 г.), а для

обучения профессиональному программированию (в основном для студентов)
разработан – строгий Turbo Pascal (1971–1990 гг.). Полагается, что Basic наиболее
пригоден для самого первого знакомства с программированием. Однако наш
опыт преподавания свидетельствует о том, что первым языком программирования, безусловно, должен быть Turbo Pascal или C++, но никак не Basic (имеет более трёхсот разновидностей), приучающий разработчиков приложений к плохим
стилю и приёмам программирования.

С течением времени в ходе своего развития все языки программирования высокого уровня заимствуют друг у друга всё лучшее. Поэтому современные версии, например Basic и Turbo Pascal, по своим возможностям вполне могут использоваться для решения большинства научных и инженерных задач. Но вплотную
подойти к богатейшим возможностям C++ ещё ни одному языку не удалось.

Когда число строк кода программы более 10–100 тыс., то применяется специальная технология ООП – объектноориентированное программирование (без её
использования быстрая коллективная работа над приложением невозможна).
Эта технология подробно рассматривается в нашем пособии. Языки C++,
C++ANSI, Object Pascal ориентированы на ООПтехнологию, а Turbo Pascal лишь
поддерживает её.

Для неспециалистов кажется невероятным тот факт, что, применяя языки

программирования высокого уровня, приблизительно 90–95% времени, затрачиваемого на разработку программы, уходит на создание интерфейса (средств управления: окон ввода и вывода информации, пунктов меню, командных кнопок и
др.). И только 5 – 10% времени посвящается решению собственно основной задачи. Для успешной борьбы с такой несправедливостью фирмыразработчики проПредисловие
Предисловие
Предисловие
Предисловие
Предисловие

14
14
14
14

граммного обеспечения предложили специальные среды быстрой разработки
приложений или RADсреды (Rapid Application Development). Такими средами
являются:

Borland C++ Builder (версия 5.0–выпущена в 1998 г., версия 6.0–в 2000 г.,

версия 2006– в 2005 г., версия 2007– в 2007 г., версия 2009– в 2008 г. (выпускается фирмой Code gear));

Borland Delphi (версия 1.0– выпущена в 1995 г., версия 5.0–в 1999 г., версия 6.0– в 2001 г., версия 7.0–в 2002 г., версия 2005–в 2005 г., версия 2007–
в 2007 г., версия 2009–в 2008 г. (выпускается фирмой Code gear));

Microsoft Visual Basic (версия 1.0 выпущена–в 1991 г, версия 6.0–в 1998 г);
Microsoft Visual C++ (версия 1.0– выпущена в 1992 г., версия 6.0–в 1998 г).
При помощи большого набора специального инструментария эти среды берут на себя заботы по разработке всех удобств, облегчающих использование программприложений: полей ввода и вывода информации, наглядности форм её
представления и многое, многое другое. При этом упомянутые среды генерируют
соответствующие коды программ автоматически и практически мгновенно. В основу RADсреды Delphi положен Object Pascal, а RADсред Visual C++ и C++
Builder – язык C++. Отличия C++ Builder 2007 от C++ Builder 6 небольшие: появилась ещё одна стандартная библиотека и несколько визуальных компонентов,
усовершенствована Интегрированная Среда Разработки (ИСР). В C++ Builder
2009 улучшена комфортность работы с базами данных, добавлены библиотека и
визуальные Internetкомпоненты, на 10% ускорен запуск RADсреды. Кроме того,
в C++ Builder 2009 повышена совместимость с кодом на Delphi и появилась возможность применять компоненты Delphi. Builder 2009 можно установить в любой
из операционных систем: Windows 2000, Windows XP или Windows Vista. Вместе с
тем, ошибки компилятора, обнаруженные нами в Builder 5, Builder 6, в Builder
2009 не устранены (подробнее см. в п. 14.10.2).

Современный мир немыслим без Internet (Всемирная Глобальная Сеть Word

Wide Web была создана в 1989 г.), поэтому в настоящее время все новые среды
программирования позволяют осуществлять взаимодействие приложений во
всемирной сети (однако не все такие приложения являются платформеннонезависимыми). Для создания Webстраниц используются специальные языки разметки, позволяющие управлять форматированием и размещением элементов
страниц. Наибольшее распространение получил язык HTML (HyperText Markup
Language – язык гипертекстовой разметки, предложен в 1989 г.).

Язык HTML даёт возможность создавать документы лишь со статическими

текстами, таблицами и изображениями. Для разработки Webстраниц, на которых ведётся диалог с клиентом, выполняется анимация изображений, реализуется контекстнозависимый текстовый и графический вводвывод, вначале стали
использоваться языки высокого уровня Java (разработан в 1995 г.) и JavaScript
(разработан в 1995–1996 г.г.). Созданные с их помощью приложения являются
независимыми как от типа используемого компьютера, так и от операционной системы. Это позволяет применять такие приложения на всех HTTPсерверах и всех

Предисловие
Предисловие
Предисловие
Предисловие
Предисловие

15
15
15
15

браузерах клиента. Следует отметить, что первый браузер появился в 1991 г. (с
1994 г. браузеры начала выпускать фирма Netscape). Язык Java – объектноориентированный язык, созданные с его помощью приложения работают на различных платформах (межплатформенный язык), он унаследовал синтаксис C и C++.
JavaScript – очень похож на Java, но существенно проще его. JScript – это
JavaScript в реализации фирмы Microsoft.

Фирмыразработчики программного обеспечения, непрерывно конкурируя

друг с другом, создают всё новые и новые продукты (с интервалом 1,5 – 2 года). В
их приложениях не только реализуются новые пути решения актуальных задач,
но и даётся возможность осуществлять упомянутые решения с привлечением
уже существующих языков программирования, которые давно стали надёжным
инструментарием многих разработчиков программ. Такая политика, конечно,
весьма способствует продажам продуктов, повышает их востребованность.

В частности, фирма Microsoft предложила среду Visual Studio.Net, как конкурента среды программирования Borland C++ Builder. Visual Studio.Net выпускалась в различных версиях: версия 6.0 – в 2000 г., версия 2002 или 7.0 – в 2002 г.,
версия 2005 или 8.0 – в 2005 г., версия 2008 или 9.0 – в 2007 г. Среда программирования Visual Studio.Net является средством разработки Windowsприложений
(Windows Application) в операционных системах Windows95, 98, NT, Vista (только
в Visual Studio.Net 2008), Internetприложений (ASP.Net) и консольных Dosприложений (Consol Application). Следует заметить, что консольные приложения
можно разрабатывать всеми средами программирования. Основой обсуждаемой
среды является новый компонентноориентированный язык программирования
C# (читается – си шарп или си диез, создан в 1999–2000 г.г.), он специально разработан для технологии «.Net» (читается – дот нет). Этот самый новый язык разработки программ обеспечивает совместную работу компонентов, написанных с
использованием различных языков программирования. В среде Visual Studio.Net
можно создавать приложения при помощи следующих языков программирования: Visual Basic 6.0, Visual C++, C#, JavaScript (JavaScript имелся только в версии
6.0). Синтаксис C# похож на синтаксис C++ и Java.

Платформа или оболочка «.Net» – это многоязыковая среда, она открыта для

свободного включения новых языков (компиляторов и инструментальных
средств), созданных не только Microsoft, но и другими фирмами. Программы, написанные с использованием технологии «.Net», могут функционировать на других компьютерах, только в том случае, когда на них установлена исполняющая
(операционная) среда «.Net Framework» (запущен файл dotnet.exe), являющаяся
оболочкой, надстройкой над существующими операционными системами и языками программирования Необходимо заметить, что среда «.Net Framework» распространяется фирмой Microsoft бесплатно. Код, порождённый в среде разработки «.Net», носит название управляемого кода (manage code) в отличие от обычного
неуправляемого кода (unmanage code). Программа с управляемым кодом непрерывно контролируется средой «.Net»: операционная среда не позволяет программе выполнить действия, нарушающие концепцию безопасности «.Net» (что повышает надёжность функционирования приложений). В настоящее время, по

Предисловие
Предисловие
Предисловие
Предисловие
Предисловие

16
16
16
16

прошествию около 9 лет с момента появления «.Net», только небольшая часть
программистов (около 25%) использует эту новую весьма оригинальную технологию.

В среде разработки Borland Developer Studio 2006 (она выпущена в 2006 г, составной частью в неё входит и C++Builder 2006) помимо традиционных приложений Windows можно создавать «.Net»программы при помощи языков Delphi
Language (так стал называться Object Pascal) и C#. Заметим, всё, что можно написать на C#, можно запрограммировать и на Delphi Language для «.Net» с не меньшей эффективностью [15]. Среда разработки Borland Developer Studio 2006 (далее
– BDS) предназначена, прежде всего, для корпоративных пользователей.

Для повышения продаж (путём существенного уменьшения цены) фирма

Borland в 2006 г. «разрезала» BDS на составные части. Каждая часть включает
только один язык и платформу. В результате появилась линейка продуктов серии
Turbo: Turbo Delphi для Win32, Turbo Delphi для «.Net», Turbo C++ для Win32 (вариант C++Builder), Turbo C# для «.Net». Эти продукты предназначены для небольших групп: студентов, программистоводиночек и индивидуальных пользователей. Каждый из семейства Turbo выпускается в двух редакциях: бесплатная
Explorer (для студентов и непрофессионалов) и Professional (для профессионалов). Бесплатная лицензионная версия имеет не все возможности версии для
профессионалов, однако её разрешается использовать для разработки и коммерческих приложений.

Наш обзор не претендует на полноту, в нём упомянуты лишь наиболее популярные среды разработки программ ведущих фирм. Поэтому отметим ещё и фирму Sun Microsystems, выпустившую в 2007 г. новую версию среды разработки для
языков C, C++ и Fortran под операционные системы Solaris и Linux.

Будущее покажет, насколько перспективной окажется «.Net»технология, будет ли ей сопутствовать удача, или она погибнет (будет забыта) в результате
субъективизма, инертности программистов или появления ещё более совершенной технологии.

Мода правит бал не только на подиуме, она распространяет свои неподдающиеся логическому анализу чары даже на языки программирования. К настоящему времени создано около 3 000 языков, самые распространённые из них не обязательно являются лучшими языками программирования. Начинающему
выбрать «самыйсамый» не представляется возможным. Даже умудрённые опытом специалисты не могут это сделать, ведь требуется в совершенстве знать каждый из них. История и фирмыразработчики программного обеспечения, конечно, делают свой выбор, в результате популярным становится тот или иной язык.
При этом следует отметить [19], что за рубежом C++Builder и Delphi такой известностью, как у нас (в постсоветском пространстве) не пользуются, там царствует
Visual Basic (в котором даже нет пользовательских объектов…). Поэтому популярность имеет не только временную, но ещё и региональную составляющую.

Мы несколько отвлеклись от темы (место C++Builder среди других языков)

для того, чтобы подготовить вас к следующему заключению. В настоящее время
практически все задачи можно успешно решать при помощи целого ряда языков

Предисловие
Предисловие
Предисловие
Предисловие
Предисловие

17
17
17
17

программирования. Язык C# и технология «.Net» весьма перспективны, однако
на подавляющем числе компьютеров не установлена оболочка «.Net Framework»,
что несколько препятствует их распространению. Вместе с тем далеко не всем
нужны Internetпрограммы, Windowsприложения пока ещё никто не отменял, а
старые платформеннонезависимые механизмы основываются на сиподобных
языках (Java, JavaScript). Поэтому выбор для изучения C++Builder позволяет
уже сейчас вооружить вас, дорогие читатели, мощнейшим инструментом разработки Windowsприложений, создаёт прочные основы для быстрого изучения
(если вам это понадобится) любого из языков: C#, Java, JavaScript. Доверьтесь
нашему опыту и примите во внимание рекомендацию: начинать обучение C++ и
визуальную технологию разработки приложений значительно комфортнее и
проще на основе C++Builder 6 (или 5), но не C++Builder 2009. Последним продуктом и его последующими популяциями (они, без сомнения, появятся спустя 2
– 3 года) вы сможете овладеть самостоятельно на основе знаний, полученных из
настоящего пособия.

Не для рекламы, а в качестве констатации факта заметим, что на C++ написаны и операционная система Windows и многие известные прикладные программы. При этом ещё раз подчеркиваем, C++ специально разрабатывался для профессиональных программистов (системных программистов и разработчиков
программного обеспечения). Поэтому для новичков в программировании он не
всегда сразу понятен. Среди программистов бытует шутка: «язык C++ был придуман только для того, чтобы программистами не становились случайные люди».
Однако, делающие в программировании первые шаги, могут не огорчаться: среда
программирования C++ Builder практически ликвидировала все сложности C++,
сделала процесс разработки программ ясным и увлекательным. Да, да – очень
увлекательным. Заверяем читателей: вы овладеете основными приёмами программирования в среде C++ Builder, научитесь совершенствовать ваши навыки
для дальнейшего расширения набора средств по программированию задач достаточной сложности.

Что собой представляет пособие

Это пособие – самоучитель. Изложение ведётся в виде беседы автора с читателем, практически все возможности языка иллюстрируются краткими примерами, закрепляются вопросами для самоконтроля и задачами для программирования. ООП освещается вначале лишь в общих чертах, в объёме, необходимом для
управления средой Builder. После овладения основными вопросами синтаксиса и
семантики C++Builder подробно излагается технология объектного конструирования программ.

Цель пособия – изучить основные возможности языка C++, реализованного

средами C++Builder 6.0 и C++Builder 5.0. Всё изложение ведётся на базе
C++Builder 6.0, а в тех случаях, когда эти операции выполняются подругому в
C++Builder 5.0, даются подробные разъяснения (но таких ситуаций менее полдесятка). Цель учебника: дать читателю такой объём глубоко осознанных знаний,

Предисловие
Предисловие
Предисловие
Предисловие
Предисловие

18
18
18
18

который позволил бы ему с применением справочной системы C++Builder или
справочников по C++[8] и C++Builder 6.0 [1–3, 20–21] самостоятельно решать и
круг вопросов, не затронутых в пособии.

Материал самоучителя излагается так, чтобы читатель не робел перед разработкой программ. Для этого изучаемые вопросы, задачи и алгоритмы расположены по нарастанию их сложности. При этом круг тем ограничен теми, которые
наиболее важны для программирования подавляющего большинства задач, возникающих при обработке и анализе данных.

Настоящее пособие не только иллюстрирует C++Builder примерами и задачами, подобранными по нарастанию их сложности. Прежде всего, оно является подробным последовательным учебником. В ходе повествования не только указываются пути решения вопросов или смысл того или иного ограничения, но и
подробно разъясняется, почему эти пути должны быть именно такими, а не другими, чем обусловлено ограничение. Это способствует как пониманию материала, так и его запоминанию.

В учебнике достаточно вопросов и заданий, с которыми можно справиться, не

имея перед собой компьютера, даже в транспорте. Это было сделано не для того,
чтобы увеличить набор литературы для путешественников или жителей спальных районов крупных городов. Дело в том, что для глубокого понимания вопросов очень полезно «прокручивать» все шаги компьютера у себя в голове, следует
уметь читать тексты программ. Однако каждую порцию прочитанного и, на первый взгляд, хорошо понятого материала необходимо закреплять его практической реализацией на компьютере. Иначе научиться программировать невозможно.

Основные рекомендации для читателей

Рекомендуется последовательно изучать урок за уроком, отвечать на вопросы для самоконтроля и выполнять задания. При этом эффективность усвоения
существенно повысится, если полностью отлаженные программы записывать на
отдельных листах бумаги. Именно записывать, а не распечатывать при помощи
принтера, поскольку в первом случае знания надолго фиксируются в вашей памяти. Этот банк задач удобно использовать при разработке новых программ, когда требуется быстро вспомнить уже применяемый ранее алгоритм или забытую
конструкцию языка.

В ходе изучения уроков вы обнаружите, что уроки, пройденные ранее, несколько подзабыты. Это вполне нормально. Невозможно всё удержать в голове.
Для борьбы с этим явлением вы создадите конспект решённых задач, есть, наконец, и настоящий учебник, который разумно перелистывать не только вперёд, но
и назад.

Настоятельно советуем читать коды программрешений задач для самостоятельного программирования. Это полезно делать, когда в вашей программе чтото не клеится, и даже когда вы самостоятельно получили правильное решение.
При этом вы много раз удостоверитесь в том, что имеется много вариантов решеПредисловие
Предисловие
Предисловие
Предисловие
Предисловие