- •Предисловие
 - •Глава 1. Основные понятия
 - •1.1. Элементы языка программирования
 - •1.2. Процесс создания программы
 - •1.3. Первая программа
 - •1.4. Состав программы
 - •Глава 2. Средства разработки на C++
 - •2.1. Системы Turbo C++ 3.0/Borland C++ 3.1
 - •2.2. Система C++ Builder
 - •Глава 3. Работа с числовыми данными
 - •3.1. Целые типы
 - •3.2. Числа с плавающей точкой
 - •3.3. Ввод и вывод чисел
 - •3.4. Логический тип и логические операции
 - •3.5. Математические функции
 - •Глава 4. Операторы. Ключевые слова
 - •4.1. Операторы
 - •4.2. Приоритеты операторов
 - •4.3. Ключевые слова
 - •4.4. Структура программы
 - •4.5. Константы
 - •Задачи - . Простейшие вычисления
 - •Глава 5. Управление и циклы
 - •5.1. Условный оператор
 - •5.2. Операторы цикла
 - •5.3. Переключатель
 - •5.4. Операторы break и continue
 - •Задачи -. Выбор и циклы
 - •Глава 6. Массивы
 - •6.1. Одномерные массивы
 - •6.2. Двумерные массивы
 - •Задачи -. Одно- и двумерные массивы
 - •Глава 7. Функции
 - •7.1. Определение функции
 - •7.2. Формальные параметры и фактические аргументы
 - •7.3. Автоматические и статические переменные
 - •7.4. Прототипы функций
 - •7.5. Массивы как аргументы функций
 - •7.6. Внешние переменные
 - •7.7. Рекурсия
 - •7.8. Перегруженные имена функций
 - •7.9. Аргументы функций по умолчанию
 - •Задачи -. Функции
 - •Глава 8. Символы и строки
 - •8.1. Символы
 - •8.2. Строки символов
 - •Задачи -. Символы и строки
 - •Глава 9. Препроцессор
 - •9.1. Директивы препроцессора
 - •9.2. Макросы
 - •Задачи -. Макросы
 - •Глава 10. Указатели и ссылки
 - •10.1. Указатели и адреса
 - •10.2. Указатели и массивы
 - •10.3. Адресная арифметика
 - •10.4. Символьные указатели
 - •10.5. Массивы указателей
 - •10.6. Указатели на функции
 - •10.7. Ссылки
 - •10.8. Операторы new и delete
 - •Задачи -. Указатели и ссылки
 - •Глава 11. О файлах и командной строке
 - •11.1. Знакомство с файлами
 - •11.2. Командная строка
 - •11.3. Перенаправление стандартного ввода и вывода на файл
 - •11.4. Аргументы командной строки
 - •Задачи -. Файлы и командная строка
 - •Глава 12. Работа с экраном дисплея
 - •12.1. Текстовый режим
 - •12.2. Графический режим
 - •Задачи -. Работа с экраном
 - •Глава 13. Внутреннее представление чисел
 - •13.1. Двоичная система счисления
 - •13.2. Беззнаковые целые
 - •13.3. Двоичный дополнительный код
 - •13.4. Двоичный код с избытком
 - •13.5. Побитовые операторы
 - •13.6. Дробные числа в двоичной системе
 - •13.7. Внутреннее представление плавающих типов
 - •13.8. Преобразование типов
 - •Задачи -. Побитовые операторы
 - •Глава 14. Структуры, перечисления, объединения
 - •14.1. Объявление структур
 - •14.2. Структуры и функции
 - •14.3. Указатели на структуры
 - •14.4. Массивы структур
 - •14.5. Перечисления
 - •14.6. Объединения
 - •14.7. Битовые поля
 - •14.8. О бинарных файлах
 - •Задачи -. Структуры
 - •Глава 15. Классы
 - •15.1. Структуры в C++. Инкапсуляция
 - •15.2. Встроенные функции
 - •15.3. Классы. Скрытие данных
 - •15.4. Конструкторы
 - •15.5. Статические члены класса
 - •15.6. Друзья класса
 - •15.7. Копирование объектов класса
 - •15.8. Управление доступом
 - •15.9. Ссылка на себя
 - •15.10. Деструкторы
 - •Задачи -. Работа с классами
 - •Глава 16. Программы из нескольких файлов
 - •16.1. Работа с проектами
 - •16.2. Область действия имен
 - •16.3. Заголовочные файлы
 - •16.4. Пространства имен
 - •Задачи -. Работа со стеком
 - •Глава 17. Перегрузка операторов
 - •17.1. Правила перегрузки операторов
 - •Задачи -. Перегрузка операторов
 - •Глава 18. Конструктор копирования и оператор присваивания
 - •18.1. Проблемы при копировании
 - •Задачи -. Конструктор копирования
 - •Глава 19. Ввод и вывод
 - •19.1. Вывод
 - •19.2. Ввод
 - •19.3. Ввод и вывод определяемых пользователем типов
 - •19.4. Работа с файлами
 - •Глава 20. Взаимоотношения классов
 - •20.1. Объекты как члены класса
 - •20.2. Конструкторы встроенных типов
 - •20.3. Наследование
 - •20.4. Виртуальные функции
 - •20.5. Абстрактные классы
 - •20.6. Совместимость типов
 - •20.7. Множественное наследование
 - •Задачи -. Наследование классов
 - •Глава 21. Шаблоны, исключения
 - •21.1. Шаблоны
 - •21.2. Шаблоны функций
 - •21.3. Классы и шаблоны
 - •21.4. Обработка исключений
 - •21.5. Стандартная библиотека шаблонов
 - •Литература
 - •Предметный указатель
 
Федеральное агентство по образованию Нижегородский государственный университет им. Н.И. Лобачевского
Национальный проект «Образование» Инновационная образовательная программа Нижегородского университета: Образовательно-научный центр «Информационно-телекоммуникационные системы: физические основы и математическое обеспечение»
В.Л. Тарасов
Программирование на C++
Учебное пособие
Нижний Новгород
Издательство Нижегородского госуниверситета 2006
УДК 004.43 ББК В185 Т19
Тарасов В.Л. Программирование на С++: Учебное пособие.– Н. Новгород: Изд-во ННГУ, 2006.– 310 с.
ISBN 5-85746-942-2
Описываются основные конструкции языка программирования C++, приводятся примеры их применения в виде готовых к выполнению программ, демонстрируются типовые алгоритмы и методы программирования, даются задачи для самостоятельного решения.
Пособие не предполагает какой-либо предварительной подготовки по программировании и может использоваться студентами для самостоятельного изучения языка C++, преподавателями как материал для курса лекций и как задачник при проведении лабораторных и практических занятий.
ISBN 5-85746-942-2
Издано в рамках Инновационной образовательной программы ННГУ:
Образовательно-научный центр «Информационно-телекоммуникационные системы: физические основы и математическое обеспечение»
ББК В185
©Тарасов В.Л., 2006
©Нижегородский госуниверситет
им. Н.И. Лобачевского, 2006
  | 
	5  | 
Содержание  | 
	
  | 
ПРЕДИСЛОВИЕ...................................................................................................  | 
	12  | 
ГЛАВА 1. ОСНОВНЫЕ ПОНЯТИЯ...................................................................  | 
	14  | 
1.1. ЭЛЕМЕНТЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ.................................................................  | 
	14  | 
Алфавит........................................................................................................  | 
	14  | 
Лексемы........................................................................................................  | 
	14  | 
Выражения...................................................................................................  | 
	15  | 
Функции.......................................................................................................  | 
	16  | 
Комментарии................................................................................................  | 
	16  | 
1.2. ПРОЦЕСС СОЗДАНИЯ ПРОГРАММЫ..........................................................................  | 
	17  | 
1.3. ПЕРВАЯ ПРОГРАММА............................................................................................  | 
	18  | 
Программа 1. Приветствие....................................................................  | 
	18  | 
1.4. СОСТАВ ПРОГРАММЫ...........................................................................................  | 
	18  | 
ГЛАВА 2. СРЕДСТВА РАЗРАБОТКИ НА C++................................................  | 
	21  | 
2.1. СИСТЕМЫ TURBO C++ 3.0/BORLAND C++ 3.1....................................................  | 
	21  | 
Установка Turbo C++ 3.0 на компьютере...................................................  | 
	21  | 
Загрузка........................................................................................................  | 
	23  | 
Меню.............................................................................................................  | 
	24  | 
Работа с окнами............................................................................................  | 
	24  | 
Настройка среды..........................................................................................  | 
	26  | 
Указание каталогов библиотек.............................................................  | 
	27  | 
Подключение графической библиотеки...............................................  | 
	28  | 
Назначение текущего каталога.............................................................  | 
	28  | 
Помощь.........................................................................................................  | 
	29  | 
Работа с блоками текста в редакторе..........................................................  | 
	30  | 
Выполнение программы..............................................................................  | 
	30  | 
Отладка программ........................................................................................  | 
	31  | 
Программа 2. Деление чисел.................................................................  | 
	32  | 
Синтаксические ошибки.......................................................................  | 
	32  | 
Ошибки в процессе работы программы...............................................  | 
	33  | 
Трассировка программ..........................................................................  | 
	34  | 
Просмотр текущих значений выражений.............................................  | 
	34  | 
2.2. СИСТЕМА C++ BUILDER......................................................................................  | 
	35  | 
Разработка консольных приложений..........................................................  | 
	35  | 
Программа 3. Hello................................................................................  | 
	37  | 
Выполнение и отладка программы.............................................................  | 
	38  | 
Файлы проекта.............................................................................................  | 
	39  | 
Автоматическая генерация кода.................................................................  | 
	40  | 
Особенности ввода и вывода......................................................................  | 
	41  | 
ГЛАВА 3. РАБОТА С ЧИСЛОВЫМИ ДАННЫМИ........................................  | 
	43  | 
6 Содержание  | 
	
  | 
3.1. ЦЕЛЫЕ ТИПЫ......................................................................................................  | 
	43  | 
Целые константы.........................................................................................  | 
	44  | 
Программа 4. Операции над целыми....................................................  | 
	45  | 
3.2. ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ.............................................................................  | 
	46  | 
Плавающие константы................................................................................  | 
	47  | 
3.3. ВВОД И ВЫВОД ЧИСЕЛ..........................................................................................  | 
	47  | 
Программа 5. Точность плавающих чисел...........................................  | 
	48  | 
3.4. ЛОГИЧЕСКИЙ ТИП И ЛОГИЧЕСКИЕ ОПЕРАЦИИ...........................................................  | 
	49  | 
3.5. МАТЕМАТИЧЕСКИЕ ФУНКЦИИ................................................................................  | 
	51  | 
ГЛАВА 4. ОПЕРАТОРЫ. КЛЮЧЕВЫЕ СЛОВА.............................................  | 
	52  | 
4.1. ОПЕРАТОРЫ........................................................................................................  | 
	52  | 
Унарные операторы.....................................................................................  | 
	52  | 
Бинарные операторы....................................................................................  | 
	53  | 
Оператор запятая.........................................................................................  | 
	53  | 
Условное выражение...................................................................................  | 
	54  | 
Операторы присваивания............................................................................  | 
	54  | 
4.2. ПРИОРИТЕТЫ ОПЕРАТОРОВ....................................................................................  | 
	55  | 
4.3. КЛЮЧЕВЫЕ СЛОВА...............................................................................................  | 
	56  | 
4.4. СТРУКТУРА ПРОГРАММЫ.......................................................................................  | 
	59  | 
Объявления переменных.............................................................................  | 
	59  | 
Объявления и определения.........................................................................  | 
	60  | 
Инструкции и блоки....................................................................................  | 
	60  | 
4.5. КОНСТАНТЫ.......................................................................................................  | 
	61  | 
ЗАДАЧИ - . ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ........................................................................  | 
	61  | 
ГЛАВА 5. УПРАВЛЕНИЕ И ЦИКЛЫ................................................................  | 
	64  | 
5.1. УСЛОВНЫЙ ОПЕРАТОР..........................................................................................  | 
	64  | 
Программа 6. Максимальное из двух чисел.........................................  | 
	65  | 
5.2. ОПЕРАТОРЫ ЦИКЛА..............................................................................................  | 
	65  | 
Цикл с предусловием while.........................................................................  | 
	65  | 
Программа 7. Суммирование цифр целого..........................................  | 
	66  | 
Цикл for........................................................................................................  | 
	67  | 
Программа 8. Поиск максимума и минимума.....................................  | 
	68  | 
Цикл do-while...............................................................................................  | 
	69  | 
Программа 9. Вычисление квадратного корня....................................  | 
	69  | 
5.3. ПЕРЕКЛЮЧАТЕЛЬ.................................................................................................  | 
	71  | 
Программа 10. День недели..................................................................  | 
	72  | 
5.4. ОПЕРАТОРЫ BREAK И CONTINUE.............................................................................  | 
	72  | 
Программа 11. Сумма положительных чисел......................................  | 
	73  | 
ЗАДАЧИ -. ВЫБОР И ЦИКЛЫ........................................................................................  | 
	73  | 
ГЛАВА 6. МАССИВЫ...........................................................................................  | 
	77  | 
6.1. ОДНОМЕРНЫЕ МАССИВЫ......................................................................................  | 
	77  | 
Программа 12. Проверка упорядоченности массива...........................  | 
	78  | 
6.2. ДВУМЕРНЫЕ МАССИВЫ.........................................................................................  | 
	79  | 
Содержание  | 
	7  | 
Программа 13. Подсчет выручки..........................................................  | 
	80  | 
ЗАДАЧИ -. ОДНО- И ДВУМЕРНЫЕ МАССИВЫ..................................................................  | 
	82  | 
ГЛАВА 7. ФУНКЦИИ...........................................................................................  | 
	84  | 
7.1. ОПРЕДЕЛЕНИЕ ФУНКЦИИ.......................................................................................  | 
	84  | 
7.2. ФОРМАЛЬНЫЕ ПАРАМЕТРЫ И ФАКТИЧЕСКИЕ АРГУМЕНТЫ...........................................  | 
	85  | 
Пpограмма.14. Степени целых чисел...................................................  | 
	86  | 
7.3. АВТОМАТИЧЕСКИЕ И СТАТИЧЕСКИЕ ПЕРЕМЕННЫЕ.....................................................  | 
	88  | 
Программа 15. Автоматические и статические переменные..............  | 
	88  | 
7.4. ПРОТОТИПЫ ФУНКЦИЙ.........................................................................................  | 
	90  | 
7.5. МАССИВЫ КАК АРГУМЕНТЫ ФУНКЦИЙ....................................................................  | 
	90  | 
7.6. ВНЕШНИЕ ПЕРЕМЕННЫЕ ......................................................................................  | 
	91  | 
Программа 16. Сортировка массива.....................................................  | 
	91  | 
7.7. РЕКУРСИЯ..........................................................................................................  | 
	94  | 
Программа 17. Рекурсивная печать целого..........................................  | 
	94  | 
7.8. ПЕРЕГРУЖЕННЫЕ ИМЕНА ФУНКЦИЙ........................................................................  | 
	96  | 
Программа 18. Перегрузка функций....................................................  | 
	96  | 
7.9. АРГУМЕНТЫ ФУНКЦИЙ ПО УМОЛЧАНИЮ.................................................................  | 
	97  | 
Программа 19. Аргументы по умолчанию...........................................  | 
	97  | 
ЗАДАЧИ -. ФУНКЦИИ.................................................................................................  | 
	98  | 
ГЛАВА 8. СИМВОЛЫ И СТРОКИ...................................................................  | 
	102  | 
8.1. СИМВОЛЫ........................................................................................................  | 
	102  | 
Символьные константы.............................................................................  | 
	102  | 
Программа 20. Представления символов...........................................  | 
	103  | 
Ввод и вывод символов.............................................................................  | 
	104  | 
Программа 22. Печать текста по словам............................................  | 
	104  | 
8.2. СТРОКИ СИМВОЛОВ...........................................................................................  | 
	105  | 
Строковые константы................................................................................  | 
	106  | 
Ввод и вывод строк....................................................................................  | 
	106  | 
Средства работы со строками...................................................................  | 
	106  | 
Программа 23. Реверсирование строк................................................  | 
	107  | 
ЗАДАЧИ -. СИМВОЛЫ И СТРОКИ................................................................................  | 
	109  | 
ГЛАВА 9. ПРЕПРОЦЕССОР.............................................................................  | 
	112  | 
9.1. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА..............................................................................  | 
	112  | 
9.2. МАКРОСЫ........................................................................................................  | 
	113  | 
Программа 24. Возможности препроцессора.....................................  | 
	115  | 
ЗАДАЧИ -. МАКРОСЫ...............................................................................................  | 
	116  | 
ГЛАВА 10. УКАЗАТЕЛИ И ССЫЛКИ.............................................................  | 
	118  | 
10.1. УКАЗАТЕЛИ И АДРЕСА......................................................................................  | 
	118  | 
Программа 25. Расчет треугольника...................................................  | 
	118  | 
10.2. УКАЗАТЕЛИ И МАССИВЫ...................................................................................  | 
	121  | 
10.3. АДРЕСНАЯ АРИФМЕТИКА..................................................................................  | 
	122  | 
8 Содержание  | 
	
  | 
10.4. СИМВОЛЬНЫЕ УКАЗАТЕЛИ.................................................................................  | 
	122  | 
10.5. МАССИВЫ УКАЗАТЕЛЕЙ....................................................................................  | 
	123  | 
Программа 26. Названия месяцев.......................................................  | 
	123  | 
10.6. УКАЗАТЕЛИ НА ФУНКЦИИ.................................................................................  | 
	124  | 
Программа 27. Поиск максимума функции.......................................  | 
	124  | 
10.7. ССЫЛКИ.........................................................................................................  | 
	126  | 
Программа 28. Использование ссылок...............................................  | 
	127  | 
10.8. ОПЕРАТОРЫ NEW И DELETE...............................................................................  | 
	128  | 
Программа 29. Выделение и освобождение памяти..........................  | 
	129  | 
ЗАДАЧИ -. УКАЗАТЕЛИ И ССЫЛКИ..............................................................................  | 
	130  | 
ГЛАВА 11. О ФАЙЛАХ И КОМАНДНОЙ  | 
	
  | 
СТРОКЕ..............................................................................................  | 
	132  | 
11.1. ЗНАКОМСТВО С ФАЙЛАМИ................................................................................  | 
	132  | 
Программа 30. Копирование файлов..................................................  | 
	133  | 
11.2. КОМАНДНАЯ СТРОКА.......................................................................................  | 
	135  | 
11.3. ПЕРЕНАПРАВЛЕНИЕ СТАНДАРТНОГО ВВОДА И ВЫВОДА НА ФАЙЛ.............................  | 
	137  | 
11.4. АРГУМЕНТЫ КОМАНДНОЙ СТРОКИ......................................................................  | 
	139  | 
Программа 31. Эхо аргументов командной строки...........................  | 
	140  | 
Программа 32. Печать строк, содержащих образец..........................  | 
	141  | 
ЗАДАЧИ -. ФАЙЛЫ И КОМАНДНАЯ СТРОКА..................................................................  | 
	143  | 
ГЛАВА 12. РАБОТА С ЭКРАНОМ ДИСПЛЕЯ..............................................  | 
	144  | 
12.1. ТЕКСТОВЫЙ РЕЖИМ.........................................................................................  | 
	144  | 
Программа 33. Российский флаг.........................................................  | 
	147  | 
12.2. ГРАФИЧЕСКИЙ РЕЖИМ......................................................................................  | 
	148  | 
Графические драйверы и режимы.............................................................  | 
	148  | 
Инициализация графики............................................................................  | 
	149  | 
Функции рисования...................................................................................  | 
	150  | 
Программа 34. Звезда..........................................................................  | 
	151  | 
ЗАДАЧИ -. РАБОТА С ЭКРАНОМ..................................................................................  | 
	154  | 
ГЛАВА 13. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ЧИСЕЛ.............................  | 
	156  | 
13.1. ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ......................................................................  | 
	156  | 
13.2. БЕЗЗНАКОВЫЕ ЦЕЛЫЕ.......................................................................................  | 
	157  | 
13.3. ДВОИЧНЫЙ ДОПОЛНИТЕЛЬНЫЙ КОД....................................................................  | 
	158  | 
13.4. ДВОИЧНЫЙ КОД С ИЗБЫТКОМ............................................................................  | 
	160  | 
13.5. ПОБИТОВЫЕ ОПЕРАТОРЫ..................................................................................  | 
	161  | 
Программа 35. Побитовые операторы................................................  | 
	164  | 
13.6. ДРОБНЫЕ ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ.............................................................  | 
	166  | 
13.7. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ПЛАВАЮЩИХ ТИПОВ.............................................  | 
	167  | 
13.8. ПРЕОБРАЗОВАНИЕ ТИПОВ..................................................................................  | 
	169  | 
Тип char.......................................................................................................  | 
	169  | 
Значения логических выражений..............................................................  | 
	172  | 
Арифметические преобразования.............................................................  | 
	173  | 
Преобразование при присваивании..........................................................  | 
	174  | 
Содержание  | 
	9  | 
Явное приведение типа..............................................................................  | 
	174  | 
ЗАДАЧИ -. ПОБИТОВЫЕ ОПЕРАТОРЫ...........................................................................  | 
	174  | 
ГЛАВА 14. СТРУКТУРЫ, ПЕРЕЧИСЛЕНИЯ, ОБЪЕДИНЕНИЯ..............  | 
	176  | 
14.1. ОБЪЯВЛЕНИЕ СТРУКТУР....................................................................................  | 
	176  | 
14.2. СТРУКТУРЫ И ФУНКЦИИ...................................................................................  | 
	178  | 
14.3. УКАЗАТЕЛИ НА СТРУКТУРЫ...............................................................................  | 
	179  | 
Программа 36. Точки и прямоугольники на экране..........................  | 
	180  | 
14.4. МАССИВЫ СТРУКТУР........................................................................................  | 
	184  | 
Программа 37. Подсчет ключевых слов.............................................  | 
	184  | 
14.5. ПЕРЕЧИСЛЕНИЯ...............................................................................................  | 
	189  | 
Программа 38. Использование перечислений...................................  | 
	189  | 
14.6. ОБЪЕДИНЕНИЯ...............................................................................................  | 
	190  | 
Программа 39. Внутреннее представление float................................  | 
	190  | 
14.7. БИТОВЫЕ ПОЛЯ...............................................................................................  | 
	194  | 
14.8. О БИНАРНЫХ ФАЙЛАХ......................................................................................  | 
	194  | 
Программа 40. Анализ успеваемости.................................................  | 
	195  | 
ЗАДАЧИ -. СТРУКТУРЫ.............................................................................................  | 
	198  | 
ГЛАВА 15. КЛАССЫ..........................................................................................  | 
	200  | 
15.1. СТРУКТУРЫ В C++. ИНКАПСУЛЯЦИЯ................................................................  | 
	200  | 
Программа 41. Время как структура..................................................  | 
	200  | 
15.2. ВСТРОЕННЫЕ ФУНКЦИИ....................................................................................  | 
	202  | 
15.3. КЛАССЫ. СКРЫТИЕ ДАННЫХ.............................................................................  | 
	203  | 
Программа 42. Класс дат.....................................................................  | 
	203  | 
15.4. КОНСТРУКТОРЫ...............................................................................................  | 
	206  | 
Программа 43. Конструкторы в классе дат........................................  | 
	206  | 
15.5. СТАТИЧЕСКИЕ ЧЛЕНЫ КЛАССА...........................................................................  | 
	209  | 
Программа 44. Размер класса и объектов класса...............................  | 
	209  | 
15.6. ДРУЗЬЯ КЛАССА..............................................................................................  | 
	210  | 
Программа 45. Статические члены и друзья класса..........................  | 
	210  | 
15.7. КОПИРОВАНИЕ ОБЪЕКТОВ КЛАССА.....................................................................  | 
	212  | 
Программа 46. Копирование объектов...............................................  | 
	213  | 
15.8. УПРАВЛЕНИЕ ДОСТУПОМ..................................................................................  | 
	213  | 
Структуры и классы...................................................................................  | 
	214  | 
Правила доступа.........................................................................................  | 
	214  | 
15.9. ССЫЛКА НА СЕБЯ............................................................................................  | 
	215  | 
Программа 47. Модификация дат.......................................................  | 
	215  | 
15.10. ДЕСТРУКТОРЫ...............................................................................................  | 
	218  | 
Программа 48. Деструктор в классе дат.............................................  | 
	218  | 
Программа 49. Многоугольники.........................................................  | 
	219  | 
ЗАДАЧИ -. РАБОТА С КЛАССАМИ...............................................................................  | 
	226  | 
ГЛАВА 16. ПРОГРАММЫ ИЗ НЕСКОЛЬКИХ ФАЙЛОВ...........................  | 
	227  | 
16.1. РАБОТА С ПРОЕКТАМИ......................................................................................  | 
	227  | 
Проекты в Turbo C++.................................................................................  | 
	227  | 
10 Содержание  | 
	
  | 
Проекты в C++Builder................................................................................  | 
	229  | 
16.2. ОБЛАСТЬ ДЕЙСТВИЯ ИМЕН................................................................................  | 
	229  | 
Программа 50. Глобальные и локальные имена................................  | 
	229  | 
Статические имена.....................................................................................  | 
	230  | 
Программа 51. Сумматор чисел..........................................................  | 
	231  | 
16.3. ЗАГОЛОВОЧНЫЕ ФАЙЛЫ....................................................................................  | 
	234  | 
Страж включения.......................................................................................  | 
	235  | 
Понятие стека.............................................................................................  | 
	235  | 
Модули.......................................................................................................  | 
	236  | 
Программа 52. Реализация стека в виде массива...............................  | 
	236  | 
16.4. ПРОСТРАНСТВА ИМЕН......................................................................................  | 
	238  | 
Стандартные пространства имен..............................................................  | 
	240  | 
ЗАДАЧИ -. РАБОТА СО СТЕКОМ..................................................................................  | 
	241  | 
ГЛАВА 17. ПЕРЕГРУЗКА ОПЕРАТОРОВ......................................................  | 
	243  | 
Программа 53. Обыкновенные дроби.................................................  | 
	243  | 
17.1. ПРАВИЛА ПЕРЕГРУЗКИ ОПЕРАТОРОВ....................................................................  | 
	245  | 
Программа 54. Комплексные числа....................................................  | 
	246  | 
ЗАДАЧИ -. ПЕРЕГРУЗКА ОПЕРАТОРОВ..........................................................................  | 
	252  | 
ГЛАВА 18. КОНСТРУКТОР КОПИРОВАНИЯ И ОПЕРАТОР  | 
	
  | 
ПРИСВАИВАНИЯ............................................................................  | 
	254  | 
18.1. ПРОБЛЕМЫ ПРИ КОПИРОВАНИИ..........................................................................  | 
	254  | 
Программа 55. Вектора на плоскости.................................................  | 
	256  | 
ЗАДАЧИ -. КОНСТРУКТОР КОПИРОВАНИЯ....................................................................  | 
	262  | 
ГЛАВА 19. ВВОД И ВЫВОД..............................................................................  | 
	264  | 
19.1. ВЫВОД..........................................................................................................  | 
	264  | 
19.2. ВВОД.............................................................................................................  | 
	265  | 
19.3. ВВОД И ВЫВОД ОПРЕДЕЛЯЕМЫХ  | 
	
  | 
ПОЛЬЗОВАТЕЛЕМ ТИПОВ.............................................................................................  | 
	266  | 
Программа 56. Перегрузка операторов ввода/вывода.......................  | 
	266  | 
19.4. РАБОТА С ФАЙЛАМИ........................................................................................  | 
	267  | 
Программа 57. Сравнение текстового и бинарного файлов.............  | 
	268  | 
Задачи 19.4-19.4. Ввод и вывод...........................................................  | 
	271  | 
ГЛАВА 20. ВЗАИМООТНОШЕНИЯ КЛАССОВ...........................................  | 
	272  | 
20.1. ОБЪЕКТЫ КАК ЧЛЕНЫ КЛАССА...........................................................................  | 
	272  | 
20.2. КОНСТРУКТОРЫ ВСТРОЕННЫХ ТИПОВ..................................................................  | 
	273  | 
Программа 58. Личные данные...........................................................  | 
	273  | 
20.3. НАСЛЕДОВАНИЕ..............................................................................................  | 
	279  | 
Пример наследования................................................................................  | 
	280  | 
Программа 59. Наследование..............................................................  | 
	280  | 
Управление доступом при наследовании.................................................  | 
	281  | 
Наследование и конструкторы..................................................................  | 
	283  | 
Содержание  | 
	11  | 
Программа 60. Производный класс личных данных.........................  | 
	283  | 
20.4. ВИРТУАЛЬНЫЕ ФУНКЦИИ.................................................................................  | 
	285  | 
Программа 61. Невиртуальные функции...........................................  | 
	285  | 
Программа 62. Виртуальные функции...............................................  | 
	287  | 
20.5. АБСТРАКТНЫЕ КЛАССЫ....................................................................................  | 
	288  | 
Программа 63. Абстрактный класс фигур..........................................  | 
	288  | 
Вызов виртуальных функций....................................................................  | 
	292  | 
20.6. СОВМЕСТИМОСТЬ ТИПОВ.................................................................................  | 
	292  | 
20.7. МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ.....................................................................  | 
	293  | 
Программа 64. Системы уравнений....................................................  | 
	294  | 
Класс алгебраических векторов Vector..............................................  | 
	294  | 
Класс прямоугольных матриц.............................................................  | 
	297  | 
Объявление класса Matrix...................................................................  | 
	298  | 
Реализация класса Matrix....................................................................  | 
	299  | 
Класс систем линейных уравнений....................................................  | 
	303  | 
Пример использования классов..........................................................  | 
	304  | 
ЗАДАЧИ -. НАСЛЕДОВАНИЕ КЛАССОВ.........................................................................  | 
	307  | 
ГЛАВА 21. ШАБЛОНЫ, ИСКЛЮЧЕНИЯ......................................................  | 
	309  | 
21.1. ШАБЛОНЫ.....................................................................................................  | 
	309  | 
21.2. ШАБЛОНЫ ФУНКЦИЙ.......................................................................................  | 
	309  | 
Программа 65. Объявление и определение шаблона функции.........  | 
	310  | 
21.3. КЛАССЫ И ШАБЛОНЫ.......................................................................................  | 
	311  | 
Программа 66. Шаблон классов векторов..........................................  | 
	311  | 
Программа 67. Шаблон классов динамических массивов................  | 
	312  | 
21.4. ОБРАБОТКА ИСКЛЮЧЕНИЙ.................................................................................  | 
	314  | 
Программа 68. Расчет НОД.................................................................  | 
	315  | 
21.5. СТАНДАРТНАЯ БИБЛИОТЕКА ШАБЛОНОВ..............................................................  | 
	316  | 
Программа 69. Использование шаблона векторов............................  | 
	318  | 
ЛИТЕРАТУРА.....................................................................................................  | 
	320  | 
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ.........................................................................  | 
	321  | 
12
Предисловие
Внастоящее время язык программирования C++ является одним из самых распространенных. Его предшественником является язык Си, разработанный Денисом Ритчи в начале 1970-х годов [1]. Си быстро завоевал популярность у программистов благодаря своей лаконичности, выразительности и эффективности. Долго время единственным руководством по языку Си была книга [2], заслужившая почетное название «Библия языка Си». В 1989 г. Международной организацией стандартов (International Standard Organization – ISO) был принят стандарт языка Си, в 1999 г. стандарт Си был переработан [3]. Если программа написана в соответствии со стандартом языка, это гарантирует, что она будет выполняться на любом компьютере и в любой среде разработки.
В1979 г. Бьярн Страуструп на основе языка Си разработал язык C+
+[4]. Главным нововведением было включение в язык понятия класса, с помощью которого реализована концепция объектно-ориентированного программирования, благодаря чему облегчилось создание программ большого объема. В 1998 г. был принят стандарт языка C++. Язык Си является, за небольшими исключениями, подмножеством языка C++, так что программа, написанная на Си, является и программой на C++.
Синтаксис языков Си и C++ использован в новейших языках программирования Java и C# (Си-шарп), таким образом, знакомство с языком C++ может служить базой для изучения других современных языков.
Языкам Си и C++ посвящена обширная литература, некоторые издания перечислены в списке литературы.
Изучить программирование можно без компьютера, потому что программа должна быть создана, прежде всего, в голове программиста, а уже затем перенесена на бумагу или в файл. Наличие под рукой компьютера просто позволяет быстро проверить возникающие идеи, убедиться, что в программе нет ошибок. Тем не менее, в книге приводится описание ряда систем разработки, использующих язык C++: Turbo C++ 3.0/Borland C++3.1, C++ Builder. Программист сам волен выбирать наиболее удобный для себя инструмент.
Примеры программ приводятся в том виде, как они выглядят в среде Turbo C++, если это не оговорено особо. Они без изменения могут выполняться в других средах разработки за двумя исключениями.
Если среда разработки – это Windows-приложение, то она использует кодовую таблицу 1251, в которой для русских букв
Предисловие 13
используются коды, не совпадающие с их кодами в среде выполнения программы – текстовом окне DOS, где применяется кодовая таблица 866. В этом случае при выводе на экран русских букв вместо них появляются непонятные значки (на самом деле это символы, которые стоят в кодовой таблице 866 на том месте, где в кодовой таблице 1251 стоят русские буквы). Выход состоит или в использовании английского языка, что очень полезно будущему программисту, или в простой замене русских букв латинскими (транслитерации), или в предварительном преобразовании русских букв в кодовую таблицу, используемую в среде выполнения программы. Как это сделать, сказано при описании работы в C++ Builder.
Второе исключение состоит в том, что программы, использующие графические возможности Turbo C++ 3.0/Borland C++3.1, непереносимы в другие средства разработки, так как используют нестандартные графические функции.
