Перегрузка префиксной и постфиксной операций инкремента . <...> Основные терминологические проблемы возникают вокруг трех понятий: - operator (в переводе встречаются варианты: «оператор» и «операция»); - expression («выражение»); - statement (в переводе встречаются варианты: «инструкция» и «оператор»). <...> Текст этой программы на языке С++ выглядит следующим образом: #include <iostream> int main(){ std::cout << "Hello, world!" << std::endl; return 0; } Первая строка содержит директиву препроцессора: #include <iostream> В языке С++ используются специальные файлы заголовков (header), которые содержат информацию, необходимую компилятору. <...> В старых (до стандарта 1998 г.) версиях компиляторов языка С++ заголовочные файлы стандартной библиотеки имеют расширение .h, которое употреблялось ранее в языке С. <...> В этом случае директива препроцессора будет выглядеть так: #include <iostream.h> Подключение файла <iostream> необходимо для того, чтобы можно было использовать для вывода объект cout. <...> Наиболее просто организовать ввод-вывод в программах на С++, используя стандартные потоковые объекты cin и cout. <...> Поскольку имена cin и cout в приводимой программе не описаны, необходимо указать пространство имен, в котором они определены. <...> В противном случае, чтобы не загромождать текст программы, лучше выносить объявление необходимого пространства имен, используя оператор using namespace. <...> Тогда текст программы «Hello, world!» будет выглядеть так: #include <iostream> using namespace std; int main() { cout << "Hello, world!" << endl; return 0; } Использование пространств имен позволяет не заботиться о возможности употребления одинаковых имен для разных объектов при организации больших программ. <...> Манипулятор endl (определен в пространстве имен std) очищает буфер вывода и добавляет в поток cout символ новой строки. <...> Функция main() должна вернуть управление операционной системе после своего завершения и сообщить код возврата. <...> Например, он будет выглядеть следующим образом: // FindMax.cpp #include <iostream> using namespace std; int main() { int n, max; cout<<"Input n"<<endl; cin>>n; cout<<"Input "<<n<<" elements"<<endl; cin>>max; for ( int i=1;i<n;i++) { int x; cin <...>
С++__как_второй_язык_в_обучении_приемах_и_технологиях_программирования.pdf
УДК 004.43
ББК 32.973.2
Р 88
Рецензенты:
ст. преподаватель ЮФУ В. Н. Брагилевский,
к.ф.-м.н., доцент ЮФУ М. Э. Абрамян,
д.т.н., профессор РГУПС М. А. Бутакова
Русанова Я. М.
Р 88 С++ как второй язык в обучении приемам и технологиям программирования /
Я. М. Русанова, М. И. Чердынцева. – Ростов н/Д : Изд-во ЮФУ, 2010. – 200 с.
ISBN 978-5-9275-0749-8
В данном учебном пособии внимание уделяется языку С++ и использованию объектно-ориентированного
подхода. Оно состоит из трех модулей и проектных заданий
к ним. Для закрепления знаний к каждому модулю даны вопросы для рубежного контроля,
а также задания для самостоятельной работы. Адресовано студентам, обучающимся
по бакалаврской программе по направлению «Прикладная математика и информатика».
ISBN
978-5-9275-0749-8
УДК 004.43
ББК 32.973.2
© Русанова Я. М., Чердынцева М. И., 2010
© Южный федеральный университет, 2010
© Оформление. Макет. Издательство
Южного федерального университета, 2010
Стр.2
СОДЕРЖАНИЕ
ПРЕДИСЛОВИЕ ....................................................................................................................... 5
ВВЕДЕНИЕ ............................................................................................................................. 6
МОДУЛЬ 1. НАЧАЛЬНЫЕ СВЕДЕНИЯ О ПРОГРАММИРОВАНИИ НА ЯЗЫКЕ С++8
1.1. Используемые термины ................................................................................................ 8
1.2. Первые шаги .................................................................................................................. 9
1.3. Функции как строительные блоки программы......................................................... 14
1.4. Многофайловый проект, включение заголовочных файлов ................................... 21
1.5. Заголовочные файлы и библиотеки в С++ ................................................................ 28
1.6. Целочисленные типы данных .................................................................................... 34
1.7. Типы данных для вещественных значений .............................................................. 40
1.8. Указатели ..................................................................................................................... 45
1.9. Выражения и операции ............................................................................................... 49
1.10. Операторы (управляющие инструкции) ................................................................... 55
Вопросы для рубежного контроля ........................................................................................ 59
Задания для самостоятельной работы ................................................................................... 60
Проектные задания к модулю ................................................................................................ 62
МОДУЛЬ 2. СТРУКТУРЫ ДАННЫХ И ФУНКЦИИ ....................................................... 65
2.1. Одномерные массивы ................................................................................................. 65
2.2. Массивы в динамической памяти .............................................................................. 68
2.3. Связь массивов и указателей ...................................................................................... 70
2.4. Статическое определение двумерных массивов ...................................................... 72
2.5. Двумерные массивы в динамической памяти .......................................................... 74
2.6. Описание и инициализация строк ............................................................................. 77
2.7. Обработка строк в стиле языка C .............................................................................. 83
2.8. Обработка строк в стиле языка C++ .......................................................................... 87
2.9. Встраиваемые функции .............................................................................................. 89
2.10. Перегрузка функций ................................................................................................... 90
2.11. Аргументы по умолчанию .......................................................................................... 95
2.12. Шаблоны функций ...................................................................................................... 97
2.13. Указатели на функции .............................................................................................. 102
2.14. Ввод/вывод и работа с файлами .............................................................................. 105
2.15. Работа с текстовыми файлами в стиле С++ ............................................................ 107
2.16. Работа с бинарными файлами в стиле С++............................................................. 117
2.17. Работа с файлами в стиле языка С ........................................................................... 120
Вопросы для рубежного контроля ...................................................................................... 124
Проектные задания к модулю .............................................................................................. 125
МОДУЛЬ 3. КЛАССЫ И ОБЪЕКТЫ ................................................................................ 130
3.1. Основы создания классов ......................................................................................... 130
3.2. Конструкторы и деструкторы .................................................................................. 134
3.3. Перегрузка операций ................................................................................................ 140
3.4. Дружественные функции .......................................................................................... 142
3.5. Перегрузка префиксной и постфиксной операций инкремента ........................... 145
3.6. Реализация преобразования типов .......................................................................... 147
3.7. Коллекции и итераторы ............................................................................................ 154
3.8. Обработка исключений ............................................................................................. 163
3
Стр.3
3.9. Шаблоны классов ...................................................................................................... 166
3.10. Наследование классов ............................................................................................... 171
3.11. Открытое наследование ............................................................................................ 172
3.12. Позднее связывание и виртуальные функции ........................................................ 177
3.13. Отношения включения и подобия ........................................................................... 183
Вопросы для рубежного контроля ....................................................................................... 191
Проектные задания к модулю .............................................................................................. 192
ЛИТЕРАТУРА ....................................................................................................................... 199
4
Стр.4