
- •Издано в рамках Инновационной образовательной программы ннгу: Образовательно-научный центр «Информационно-телекоммуникационные системы: физические основы и математическое обеспечение»
- •Глава 1. Основные понятия 13
- •Глава 3. Работа с числовыми данными 42
- •Глава 4. Операторы. Ключевые слова 52
- •Глава 5. Управление и циклы 64
- •Глава 6. Массивы 77
- •Глава 7. Функции 84
- •Глава 8. Символы и строки 102
- •Глава 9. Препроцессор 113
- •Глава 10. Указатели и ссылки 119
- •Глава 11. О файлах и командной строке 133
- •Глава 12. Работа с экраном дисплея 145
- •Глава 13. Внутреннее представление чисел 157
- •Глава 14. Структуры, перечисления, объединения 179
- •Глава 15. Классы 204
- •Глава 16. Программы из нескольких файлов 233
- •Глава 21. Шаблоны, исключения 321
- •Предисловие
- •Глава 1.Основные понятия
- •1.1.Элементы языка программирования
- •Алфавит
- •Лексемы
- •Выражения
- •Функции
- •Комментарии
- •1.2.Процесс создания программы
- •1.3.Первая программа Программа 1. Приветствие
- •1.4.Состав программы
- •Загрузка
- •Работа с окнами
- •Настройка среды
- •Указание каталогов библиотек
- •Подключение графической библиотеки
- •Назначение текущего каталога
- •Работа с блоками текста в редакторе
- •Выполнение программы
- •Отладка программ
- •Программа 2. Деление чисел
- •Синтаксические ошибки
- •Ошибки в процессе работы программы
- •Трассировка программ
- •Просмотр текущих значений выражений
- •Разработка консольных приложений
- •Программа 3. Hello
- •Выполнение и отладка программы
- •Файлы проекта
- •Автоматическая генерация кода
- •Особенности ввода и вывода
- •Глава 3.Работа с числовыми данными
- •3.1.Целые типы
- •Целые константы
- •Программа 4. Операции над целыми
- •3.2.Числа с плавающей точкой
- •Плавающие константы
- •3.3.Ввод и вывод чисел
- •Программа 5. Точность плавающих чисел
- •3.4.Логический тип и логические операции
- •3.5.Математические функции
- •Глава 4.Операторы. Ключевые слова
- •4.1.Операторы
- •Унарные операторы
- •Бинарные операторы
- •Оператор запятая
- •Условное выражение
- •Операторы присваивания
- •4.2.Приоритеты операторов
- •4.3.Ключевые слова
- •Продолжение таблицы 23. Ключевые слова стандарта языка Cи
- •4.4.Структура программы
- •Объявления переменных
- •Объявления и определения
- •Инструкции и блоки
- •4.5.Константы
- •Задачи 1-17 . Простейшие вычисления
- •Глава 5.Управление и циклы
- •5.1.Условный оператор
- •Программа 6. Максимальное из двух чисел
- •5.2.Операторы цикла
- •Цикл с предусловием while
- •Программа 7. Суммирование цифр целого
- •Цикл for
- •Программа 8. Поиск максимума и минимума
- •Цикл do-while
- •Программа 9. Вычисление квадратного корня
- •5.3.Переключатель
- •Программа 10. День недели
- •5.4.Операторы break и continue
- •Программа 11. Сумма положительных чисел
- •Задачи 18-52. Выбор и циклы
- •Глава 6.Массивы
- •6.1.Одномерные массивы
- •Программа 12. Проверка упорядоченности массива
- •6.2.Двумерные массивы
- •Программа 13. Подсчет выручки
- •Задачи 53-69. Одно- и двумерные массивы
- •Глава 7.Функции
- •7.1.Определение функции
- •7.2.Формальные параметры и фактические аргументы
- •Пpограмма.14. Степени целых чисел
- •7.3.Автоматические и статические переменные
- •Программа 15. Автоматические и статические переменные
- •7.4.Прототипы функций
- •7.5.Массивы как аргументы функций
- •7.6.Внешние переменные
- •Программа 16. Сортировка массива
- •7.7.Рекурсия
- •Программа 17. Рекурсивная печать целого
- •7.8.Перегруженные имена функций
- •Программа 18. Перегрузка функций
- •7.9.Аргументы функций по умолчанию
- •Программа 19. Аргументы по умолчанию
- •Задачи 70-96. Функции
- •Глава 8.Символы и строки
- •8.1.Символы
- •Символьные константы
- •Программа 20. Представления символов
- •Ввод и вывод символов
- •Программа 22. Печать текста по словам
- •8.2.Строки символов
- •Строковые константы
- •Ввод и вывод строк
- •Средства работы со строками
- •Программа 23. Реверсирование строк
- •Задачи 97-121. Символы и строки
- •Глава 9.Препроцессор
- •9.1.Директивы препроцессора
- •9.2.Макросы
- •Программа 24. Возможности препроцессора
- •Задачи 122-124. Макросы
- •Глава 10.Указатели и ссылки
- •10.1.Указатели и адреса
- •Программа 25. Расчет треугольника
- •10.2.Указатели и массивы
- •10.3.Адресная арифметика
- •10.4.Символьные указатели
- •10.5.Массивы указателей
- •Программа 26. Названия месяцев
- •10.6.Указатели на функции
- •Программа 27. Поиск максимума функции
- •10.7.Ссылки
- •Программа 28. Использование ссылок
- •10.8.Операторы new и delete
- •Программа 29. Выделение и освобождение памяти
- •Задачи 125-134. Указатели и ссылки
- •Глава 11.О файлах и командной строке
- •11.1.Знакомство с файлами
- •Программа 30. Копирование файлов
- •11.2.Командная строка
- •11.3.Перенаправление стандартного ввода и вывода на файл
- •11.4.Аргументы командной строки
- •Программа 31. Эхо аргументов командной строки
- •Программа 32. Печать строк, содержащих образец
- •Задачи 135-147. Файлы и командная строка
- •Глава 12.Работа с экраном дисплея
- •12.1.Текстовый режим
- •Программа 33. Российский флаг
- •12.2.Графический режим
- •Графические драйверы и режимы
- •Инициализация графики
- •Функции рисования
- •Программа 34. Звезда
- •Задачи 148-158. Работа с экраном
- •Глава 13.Внутреннее представление чисел
- •13.1.Двоичная система счисления
- •13.2.Беззнаковые целые
- •13.3.Двоичный дополнительный код
- •13.4.Двоичный код с избытком
- •13.5.Побитовые операторы
- •Программа 35. Побитовые операторы
- •13.6.Дробные числа в двоичной системе
- •13.7. Внутреннее представление плавающих типов
- •13.8.Преобразование типов
- •Значения логических выражений
- •Арифметические преобразования
- •Преобразование при присваивании
- •Явное приведение типа
- •Задачи 159-166. Побитовые операторы
- •Глава 14.Структуры, перечисления, объединения
- •14.1.Объявление структур
- •14.2.Структуры и функции
- •14.3.Указатели на структуры
- •Программа 36. Точки и прямоугольники на экране
- •14.4.Массивы структур
- •Программа 37. Подсчет ключевых слов
- •14.5.Перечисления
- •Программа 38. Использование перечислений
- •14.6. Объединения
- •Программа 39. Внутреннее представление float
- •14.7.Битовые поля
- •14.8.О бинарных файлах
- •Программа 40. Анализ успеваемости
- •Задачи 167-174. Структуры
- •Глава 15.Классы
- •Программа 41. Время как структура
- •15.2.Встроенные функции
- •15.3.Классы. Скрытие данных
- •Программа 42. Класс дат
- •15.4.Конструкторы
- •Программа 43. Конструкторы в классе дат
- •15.5.Статические члены класса
- •Программа 44. Размер класса и объектов класса
- •15.6.Друзья класса
- •Программа 45. Статические члены и друзья класса
- •15.7.Копирование объектов класса
- •Программа 46. Копирование объектов
- •15.8.Управление доступом
- •Структуры и классы
- •Правила доступа
- •15.9.Ссылка на себя
- •Программа 47. Модификация дат
- •15.10.Деструкторы
- •Программа 48. Деструктор в классе дат
- •Программа 49. Многоугольники
- •Задачи 175-185. Работа с классами
- •Глава 16.Программы из нескольких файлов
- •16.1.Работа с проектами
- •16.2.Область действия имен
- •Программа 50. Глобальные и локальные имена
- •Статические имена
- •Программа 51. Сумматор чисел
- •16.3.Заголовочные файлы
- •Страж включения
- •Понятие стека
- •Программа 52. Реализация стека в виде массива
- •16.4.Пространства имен
- •Стандартные пространства имен
- •Задачи 186-189. Работа со стеком
- •Глава 17.Перегрузка операторов
- •Программа 53. Обыкновенные дроби
- •17.1.Правила перегрузки операторов
- •Программа 54. Комплексные числа
- •Задачи 190-196. Перегрузка операторов
- •Глава 18.Конструктор копирования и оператор присваивания
- •18.1.Проблемы при копировании
- •Программа 55. Вектора на плоскости
- •Задачи 197-198. Конструктор копирования
- •Глава 19.Ввод и вывод
- •19.1.Вывод
- •19.2.Ввод
- •19.3.Ввод и вывод определяемых пользователем типов
- •Программа 56. Перегрузка операторов ввода/вывода
- •19.4.Работа с файлами
- •Программа 57. Сравнение текстового и бинарного файлов
- •Задачи 199-202. Ввод и вывод
- •Глава 20.Взаимоотношения классов
- •20.1.Объекты как члены класса
- •20.2.Конструкторы встроенных типов
- •Программа 58. Личные данные
- •20.3.Наследование
- •Пример наследования
- •Программа 59. Наследование
- •Управление доступом при наследовании
- •Наследование и конструкторы
- •Программа 60. Производный класс личных данных
- •20.4. Виртуальные функции
- •Программа 61. Невиртуальные функции
- •Программа 62. Виртуальные функции
- •20.5.Абстрактные классы
- •Программа 63. Абстрактный класс фигур
- •Вызов виртуальных функций
- •20.6. Совместимость типов
- •20.7.Множественное наследование
- •Программа 64. Системы уравнений Класс алгебраических векторов Vector
- •Класс прямоугольных матриц
- •Объявление класса Matrix
- •Реализация класса Matrix
- •Класс систем линейных уравнений
- •Пример использования классов
- •Задачи 203-212. Наследование классов
- •Глава 21.Шаблоны, исключения
- •21.1.Шаблоны
- •21.2.Шаблоны функций
- •Программа 65. Объявление и определение шаблона функции
- •21.3.Классы и шаблоны
- •Программа 66. Шаблон классов векторов
- •Программа 67. Шаблон классов динамических массивов
- •21.4.Обработка исключений
- •Программа 68. Расчет нод
- •21.5.Стандартная библиотека шаблонов
- •Программа 69. Использование шаблона векторов
- •Литература
- •Предметный указатель
- •603950, Н. Новгород, пр. Гагарина, 23
- •603000, Н. Новгород, ул. Б. Покровская, 37.
Предметный указатель
acos 50
asin 50
atan 50
atan2 254
atof 173
atoi 173
atol 173
begin() 330
bool 48
break 72
catch 326
char 42, 172
CharToOem 40
circle 151
class 207
closegraph 150
clrscr 146
conio.h 231
const 61
cos 50
cosh 50
count() 329
cout 272
default 71
delete 129
DETECT 149
DOS 136
dos.h 212
double 45
empty() 329
end() 330
endl 168
equal() 329
Errors 31
exp 50
fabs 71
false 48
find() 329
float 45, 171
for 67
fstream 274
getbkcolor 151
getch 147, 231
getcolor 151
getdate 212
getmaxx 152
getmaxy 152
good 278
gotoxy 146
graphresult 150
if 64
ifstream 134, 274
initgraph 150
int 42
ios\
\
app 275
binary 198
in 198, 275
out 198, 275
iostream 271
iostream.h 271
isalnum 174
isalpha 174
isapper 174
isdigit 174
isspace 174
istream 271
iterator 330
leapyear 214
LIFO 241
line 151
log 50
long 42
long double 45
lower 173
ltoa 227
main 18
math.h 50
max_size() 329
namespace 245
new 129
ofstream 274
og10 50
operator << 272
ostream 271
outtextxy 227
pop 242
pow 50
pragma 114
pragma argused 39
pragma hdrstop 39
public 208
push 242
putpixel 151
rand 92
RAND_MAX 92
random 226
randomize 92
read 198
resize() 329
return 18
Rus 40
search() 329
seek_dir 199
seekg 198
seekp 198
setbkcolor 151
setcolor 151
sin 50
sinh 50
size_t 107
size() 329
sizeof 214
sort() 329
sqrt 50
srand 325
std 247
stdio.h 271
stdlib.h 92
STL 329
strcmp 107
strlen 107
strrev 166
struct date 212
switch 71
tan 50
tanh 50
textbackground 146
textcolor 146
this 219
throw 326
time 325
tolower 174
toupper 174
true 48
try 326
typedef 107, 166
unsigned 42
char 42
int 42
long 42
using 246
using namespace 246
Warnings 31
wherex 197, 278
wherey 197
while 65
window 146
windows.h 40
write 198
константа
строковая 106
переменные
автоматические 88
внешние 91
статические 88
адрес 119
аргументы по умолчанию 97
бинарный поиск 190
виртуальные функции 295
восьмеричные константы 43
встроенные функции 207
глобальная переменная 59, 235
двоичный дополнительный код 159
двоичный код с избытком 162
деструктор 223
десятичные константы 43
директива using 246
директивы препроцессора 113
драйвер
графический 149
друзья класса 214
заголовочные файлы 240
зона видимости 235
идентификатор 14
инициализация объектов 217
инкапсуляция 204
инструкция 60
исключение 326
итератор 330
класс 204
базовый 288
инкапсуляция 204
производный 288
ключевые слова 56
командная строка 137
компилятор 17
компиляция 31
константа
символьная 103
константная функция 305
константы 61
конструктор копирования 263, 265
конструктор по умолчанию 210
конструкторы 210
конструкторы встроенных типов 281
контейнер 329
лексема 13
макрос 114
манипулятор 168
dec 197
hex 196
мантисса 46, 171
массив 121
динамический 129
указателей 124
массивы 77
мвссивы
двумерные 79
метод 205
множественное наследование 304
модуль 242, 252
20.3. наследование 288
множественное 288
объявление 60
функции 90
объявление using 246
оператор
delete 129
new 129
оператор \ 180, 182
оператор запятая 54
оператор присваивания 266
оператор разрешения зоны видимости 236
операторы 52
бинарные 52
унарные 52
операторы присваивания 54
определение 60
отладка 30
ошибка усечения 47
перегрузка
операторов 249
операторов ввода/вывода 273
функций 96
переключатель 71
переменные 15
перенаправление ввода/вывода 138
пиксель 149
побитовое
И 163
ИЛИ 163
исключающее ИЛИ 164
отрицание 165
побитовые операторы 162
порядок 171
порядок числа 46
поток 133, 271
бинарный 133
текстовый 133
правила доступа 219
препроцессор 16, 113
признак конца строки 106
приоритеты операторов 55
проект 38
проекты 233
пространство имен 244
прототип функции 90
процедурное программирование 204
размер
класса 213
объекта класса 214
реверсирование 107
редактор связей 17
рекурсия 94
свойства 205
сдвиг влево 165
сдвиг вправо 166
симмвольная константа 102
сортировка 92
ссылка 127
ссылка на себя 219
стандартное пространство имен 246
статические имена 236
15.5. статические члены 213
объявление 214
определение 216
статическое связывание 296
стек 241
страж включения 241
строки 106
строковая константа 106
текстовый режим 145
текущий каталог 27
точность числа 46
трассировка 32, 37
указатель 119
указатель на функцию 125
условное выражение 54
условный оператор 64
утечка памяти 262
фактические аргументы 85
формальные параметры 85
функции-члены 208
функция 84
определение 84
цветовые константы 145
цикл
do-while 69
for 67
while 65
с постусловием 69
с предусловием 65
числа с плавающей точкой 45
21.1. шаблон 321
векторов 323
динамичеких массивов 324
класса 323
функции 321, 322
шестнадцатеричные константы 43
Владимир Леонидович Тарасов
Программирование на C++
Учебное пособие
Формат 60×84 1/16. Бумага офсетная. Печать офсетная.
Усл. печ. л. 17,9. Уч.-изд. л. 22,8
Тираж 1000 экз. Заказ
Издательство Нижегородского госуниверситета
им. Н.И. Лобачевского