- •Предисловие
- •Глава 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, непереносимы в другие средства разработки, так как используют нестандартные графические функции.