Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634794)
Контекстум
.

Объектно-ориентированное программирование в С++: лекции и упражнения (3000,00 руб.)

0   0
Первый авторАшарина И. В.
ИздательствоМ.: Горячая линия – Телеком
Страниц337
ID695243
АннотацияНа доступном для начинающего программиста уровне изложены концепция объектно-ориентированного программирования (ООП) и сведения необходимые для быстрого освоения языка программирования С++. Информация в книге расположена в порядке усложнения: от способов написания простейших программ, имеющих линейную структуру, до достаточно сложных, с использованием библиотеки STL. Большое внимание уделено вопросам работы с функциями, которые являются основой для перехода к ООП. Приведены многочисленные примеры, контрольные вопросы и практические задания.
Кем рекомендованоУМО вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки дипломированных специалистов «Информатика и вычислительная техника» и по направлению подготовки бакалавров «Информатика и вычислительная техника»
Кому рекомендованоДля студентов, изучающих язык программирования С++, преподавателей соответствующих специальностей и всех, кто хочет самостоятельно освоить программирование на языке С++.
ISBN978-5-9912-0423-1
УДК004.43
ББК32.973.26-018.1
Ашарина, И.В. Объектно-ориентированное программирование в С++: лекции и упражнения : учеб. пособие для вузов / И.В. Ашарина .— 2-е изд., перераб. и доп. — Москва : Горячая линия – Телеком, 2017 .— 337 с. : ил. — ISBN 978-5-9912-0423-1 .— URL: https://rucont.ru/efd/695243 (дата обращения: 25.04.2024)

Предпросмотр (выдержки из произведения)

Объектно-ориентированное_программирование_в_С++_лекции_и_упражнения._Учебное_пособие_для_вузов._-_2-е_изд.,_перераб._и_доп..pdf
УДК 681.3 ББК 32.97 А98 Рецензент : канд. техн. наук, доцент В. А. Мартынюк Ашарина И. В. А98 Объектно-ориентированное программирование в С++: лекции и упражнения. Учебное пособие для вузов. – 2-е изд., перераб. и доп. – М.: Горячая линия – Телеком, 2017. – 336 c.: ил. ISBN 978-5-9912-0423-1. На доступном для начинающего программиста уровне изложены концепция объектно-ориентированного программирования (ООП) и сведения необходимые для быстрого освоения языка программирования С++. Информация в книге расположена в порядке усложнения: от способов написания простейших программ, имеющих линейную структуру, до достаточно сложных, с использованием библиотеки STL. Большое внимание уделено вопросам работы с функциями, которые являются основой для перехода к ООП. Приведены многочисленные примеры, контрольные вопросы и практические задания. Для студентов, изучающих язык программирования С++, преподавателей соответствующих специальностей и всех, кто хочет самостоятельно освоить программирование на языке С++. ББК 32.97 Адрес издательства в Интернет www.techbook.ru Все права защищены. Любая часть этого издания не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения правообладателя © ООО «Научно-техническое издательство «Горячая линия – Телеком» www.techbook.ru © И. В. Ашарина
Стр.2
ОГЛАВЛЕНИЕ ПРЕДИСЛОВИЕ................................................................................................... 3 ГЛАВА 1. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ ЯЗЫКА С++............................................. 5 1.1. Алфавит языка ...................................................................................... 5 1.2. Структура программы на языке С++ .................................................. 6 ГЛАВА 2. СТАНДАРТНЫЕ ТИПЫ ДАННЫХ........................................................ 11 2.1. Переменные целого типа ................................................................... 11 2.2. Переменные вещественного типа ..................................................... 12 2.3. Переменные логического типа .......................................................... 12 2.4. Константы ........................................................................................... 12 2.5. Выражения .......................................................................................... 13 2.6. Операции ............................................................................................. 14 2.7. Преобразование типов ....................................................................... 19 2.8. Манипулятор setw .............................................................................. 20 ГЛАВА 3. ЛИНЕЙНЫЕ И РАЗВЕТВЛЕННЫЕ АЛГОРИТМЫ.................................. 21 3.1. Линейные алгоритмы ......................................................................... 21 3.2. Разветвленные алгоритмы ................................................................. 25 3.2.1. Условный оператор if.................................................................. 25 3.2.2. Оператор if – else ......................................................................... 27 3.2.3. Вложенные ветвления ................................................................. 28 3.2.4. Условная операция ...................................................................... 30 3.2.5. Оператор множественного выбора ............................................ 30 ГЛАВА 4. ОРГАНИЗАЦИЯ ЦИКЛОВ В ЯЗЫКЕ С++ ............................................ 35 4.1. Оператор цикла с предварительным условием................................ 35 4.2. Оператор цикла с последующим условием...................................... 37 4.3. Оператор цикла с параметром........................................................... 39 4.4. Оператор break.................................................................................... 41 4.5. Оператор continue ............................................................................... 42 4.6. Оператор goto...................................................................................... 43 4.7. Останов программы с помощью оператора exit .............................. 44 4.8. Область видимости переменных внутри блока ............................... 44 ГЛАВА 5. ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ ЦИКЛА ДЛЯ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ................................................................ 46 5.1. Вычисление суммы бесконечного ряда с заданной точностью..... 46 5.2. Понятие о рекуррентных формулах.................................................. 47 5.3. Использование операторов цикла для решения задач численными методами .............................................................................. 48 5.3.1. Вычисление с заданной точностью ε корня уравнения F(x)=0 методом простых итераций.................................... 48
Стр.330
Оглавление 331 5.3.2. Решение уравнения f(x) = 0 с заданной точностью ε методом деления отрезка пополам ...................................................... 49 5.4. Использование операторов цикла для вычисления определенных интегралов......................................................................... 51 5.4.1. Вычисление значения ∫f(x)dx с заданной точностью методом прямоугольников ................................................................... 51 b 5.4.2. Вычисление ∫ f(x)dx по формуле Симпсона........................... 52 a ГЛАВА 6. МАССИВЫ И СТРОКИ...................................................................... 56 6.1. Одномерные массивы......................................................................... 56 6.2. Инициализация массива..................................................................... 59 6.3. Методы сортировки массивов ........................................................... 59 6.3.1. Сортировка простым выбором................................................... 59 6.3.2. Метод пузырьковой сортировки ................................................ 60 6.3.3. Метод пузырьковой сортировки с оптимизацией .................... 62 6.4. Двумерные массивы ........................................................................... 63 6.5. Обработка матриц............................................................................... 65 6.5.1. Работа с матрицей в целом ......................................................... 65 6.5.2. Работа со строками/столбцами матрицы................................... 66 6.5.3. Диагональные элементы матриц................................................ 66 6.6. Строка как массив символов ............................................................. 69 6.6.1. Ввод и вывод строк ..................................................................... 69 6.6.2. Функции для работы со строками.............................................. 72 ГЛАВА 7. ТИПЫ ДАННЫХ, СОЗДАВАЕМЫЕ ПОЛЬЗОВАТЕЛЕМ (СТРУКТУРЫ, ОБЪЕДИНЕНИЯ, ПЕРЕЧИСЛЕНИЯ)............................................... 77 7.1. Структуры ........................................................................................... 77 7.1.1. Присваивание значений структурным переменным ................ 78 7.1.2. Псевдонимы структур ................................................................. 79 7.1.3. Операции, допустимые над переменными структурного типа ................................................................................. 80 7.1.4. Вложенные структуры ................................................................ 80 7.1.5. Массивы структур ....................................................................... 81 7.1.6. Структуры с битовыми полями.................................................. 83 7.2. Объединения ....................................................................................... 84 7.3. Перечисления...................................................................................... 85 ГЛАВА 8. МАГНИТНЫЕ НОСИТЕЛИ ДАННЫХ. ПОНЯТИЕ О ФАЙЛОВЫХ СИСТЕМАХ....................................................................................................... 89 8.1. Структура диска.................................................................................. 89 8.2. Файловая система DOS. Таблица размещения файлов .................. 90 8.3. Файловая система NTFS .................................................................... 93 8.3.1. Структура раздела ....................................................................... 93
Стр.331
332 Объектно-ориентированное программирование в С++ 8.3.2. Структура MFT............................................................................ 94 8.3.3. Файлы и потоки ........................................................................... 95 8.3.4. Каталоги ....................................................................................... 95 ГЛАВА 9. ОРГАНИЗАЦИЯ ВВОДА И ВЫВОДА. ФАЙЛОВАЯ СИСТЕМА............... 97 9.1. Стандартные файлы ввода и вывода................................................. 97 9.2. Текстовые файлы................................................................................ 98 9.3. Основные методы обработки текстовых файлов........................... 100 9.4. Двоичные файлы............................................................................... 103 9.5. Последовательный доступ к элементам двоичных файлов ......... 104 9.6. Организация произвольного доступа к элементам двоичных файлов....................................................................................................... 107 ГЛАВА 10. ОБОБЩЕННАЯ АРХИТЕКТУРА ПРОЦЕССОРА IBM PC................... 113 10.1. Понятие об адресном пространстве .............................................. 113 10.2. Система адресации в MS-DOS ...................................................... 114 10.3. Понятие о моделях памяти ............................................................ 115 ГЛАВА 11. ФУНКЦИИ В ЯЗЫКЕ С++ .............................................................. 118 11.1. Объявление и определение функций ............................................ 118 11.2. Понятие о параметрах функций .................................................... 120 11.3. Локальные и глобальные переменные.......................................... 122 11.4. Отсутствие прототипов функций.................................................. 123 11.5. Строки, массивы и структуры в качестве параметров функций.................................................................................................... 124 11.6. Рекурсия .......................................................................................... 128 11.7. Встраиваемые функции.................................................................. 130 11.8. Перегрузка функций....................................................................... 131 11.9. Использование аргументов по умолчанию .................................. 133 ГЛАВА 12. ПОНЯТИЕ ОБ УКАЗАТЕЛЯХ И ССЫЛКАХ. РЕЗЕРВИРОВАНИЕ ПАМЯТИ ........................................................................... 137 12.1. Объявление указателей .................................................................. 137 12.2. Разыменование указателей ............................................................ 138 12.3. Нулевые указатели и указатели на тип void................................ 140 12.4. Ссылки............................................................................................. 142 12.5. Резервирование памяти в куче ...................................................... 142 ГЛАВА 13. УКАЗАТЕЛИ И СТРУКТУРЫ ДАННЫХ............................................ 147 13.1. Указатели и массивы...................................................................... 147 13.2. Указатели и многомерные массивы.............................................. 152 13.3. Cтроковые указатели...................................................................... 153 13.4. Указатели и структуры................................................................... 154 13.5. Указатели и модификатор const .................................................... 157 ГЛАВА 14. УКАЗАТЕЛИ И ФУНКЦИИ ............................................................ 160 14.1. Способы передачи параметров...................................................... 160 14.2. Передача массивов посредством указателей................................ 161
Стр.332
Оглавление 333 14.3. Строки как аргументы функций.................................................... 162 14.4. Передача структур по указателю и по ссылке ............................ 163 14.5. Ссылка в качестве возвращаемого значения функции............... 165 14.6. Функции, возвращающие указатели ............................................. 166 14.7. Константные ссылки и константные указатели в качестве параметров функций ............................................................................... 167 14.8. Указатели на функции.................................................................... 168 ГЛАВА 15. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ ....................................... 172 15.1. Понятие о самоссылочных структурах......................................... 172 15.2. Формирование очереди.................................................................. 172 15.3. Формирование стека....................................................................... 175 15.4. Добавление и удаление элементов в односвязных списках....... 177 15.5. Двусвязные списки......................................................................... 180 15.6. Бинарные деревья ........................................................................... 185 ГЛАВА 16. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ ................................................................................... 189 ГЛАВА 17. СИСТЕМА ВВОДА-ВЫВОДА В С++ ............................................... 195 17.1. Основные понятия.......................................................................... 195 17.2. Форматируемый ввод-вывод ......................................................... 195 17.3. Функции установки ширины поля, точности и символа заполнения ............................................................................................... 199 17.4. Манипуляторы ввода-вывода ........................................................ 200 ГЛАВА 18. КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ................................................ 202 18.1. Понятие о конструкторах и деструкторах.................................... 202 18.2. Конструкторы с параметрами........................................................ 203 18.3. Конструкторы по умолчанию........................................................ 204 18.4. Указатели на объекты .................................................................... 206 18.5. Перегрузка конструкторов............................................................. 206 18.6. Присваивание объектов ................................................................. 208 18.7. Конструктор копирования ............................................................. 210 ГЛАВА 19. ФУНКЦИИ И ОБЪЕКТЫ ................................................................. 214 19.1. Указатели на объекты .................................................................... 214 19.2. Передача объектов в функции....................................................... 215 19.2.1. Передача объектов по значению ............................................ 215 19.2.2. Передача объектов по указателю ........................................... 216 19.2.3. Передача объектов по ссылке................................................. 218 19.3. Объекты в качестве возвращаемых значений .............................. 218 19.4. Дружественные функции............................................................... 220 ГЛАВА 20. ПЕРЕГРУЗКА ОПЕРАТОРОВ........................................................... 224 20.1. Перегрузка унарных операторов................................................... 224 20.2. Перегрузка бинарных операторов................................................. 226 20.3. Перегрузка операторов отношения и логических операторов .. 229
Стр.333
334 Объектно-ориентированное программирование в С++ 20.4. Перегрузка оператора индексирования ........................................ 230 20.5. Перегрузка оператора присваивания ............................................ 231 20.6. Перегрузка операторов управления памятью .............................. 233 20.6.1. Перегрузка оператора new...................................................... 233 20.6.2. Перегрузка оператора delete ................................................... 234 20.7. Использование дружественных оператор-функций .................... 235 20.8. Перегрузка операторов вставки и извлечения ............................. 237 20.9. Перегрузка оператора вызова функции........................................ 239 ГЛАВА 21. НАСЛЕДОВАНИЕ .......................................................................... 242 21.1. Введение в наследование............................................................... 242 21.2. Простое наследование.................................................................... 243 21.3. Режимы доступа к элементам базового класса ............................ 243 21.4. Поведение конструкторов и деструкторов при наследовании .. 247 21.5. Множественное наследование....................................................... 249 21.5.1. Создание иерархии классов .................................................... 249 21.5.2. Прямое наследование нескольких базовых классов............. 250 ГЛАВА 22. ВИРТУАЛЬНЫЕ ФУНКЦИИ ............................................................ 253 22.1. Понятие о виртуальных функциях................................................ 253 22.2. Указатели на базовый и производные классы ............................. 253 22.3. Виртуальные функции и наследование ........................................ 255 22.4. Абстрактные классы и чисто виртуальные функции ................. 256 22.5. Виртуальные деструкторы............................................................. 258 22.6. Виртуальные базовые классы........................................................ 260 ГЛАВА 23. ОБЪЕКТЫ И ФАЙЛОВЫЕ ПОТОКИ. ТЕКСТОВЫЕ ФАЙЛЫ............... 263 23.1. Потоковый ввод-вывод дисковых файлов.................................... 263 23.2. Текстовые файлы............................................................................ 264 23.2.1. Создание и запись.................................................................... 264 23.2.2. Посимвольное чтение файла .................................................. 265 23.2.3. Посимвольная запись файла................................................... 265 23.2.4. Построчное чтение файла ....................................................... 266 23.2.5. Построчная запись файла........................................................ 266 23.3. Признак конца файла ..................................................................... 267 ГЛАВА 24. ОБЪЕКТЫ И ДВОИЧНЫЕ ФАЙЛЫ................................................... 269 24.1. Сохранение данных в двоичных файлах ...................................... 269 24.1.1. Сохранение в двоичных файлах данных стандартных типов .............................................................................. 269 24.1.2. Сохранение в двоичных файлах данных, имеющих тип, создаваемый пользователем ............................................................... 271 24.2. Произвольный доступ к элементам двоичных файлов .............. 272 24.2.1. Файловый указатель................................................................ 272 24.2.2. Организация доступа к элементам двоичных файлов.......... 272
Стр.334
Оглавление 335 ГЛАВА 25. ШАБЛОНЫ. РОДОВЫЕ ФУНКЦИИ. РОДОВЫЕ КЛАССЫ ................. 276 25.1. Понятие шаблона и родовой функции.......................................... 276 25.2. Определение более чем одного родового типа данных .............. 278 25.3. Родовые классы (шаблоны классов) ............................................. 280 ГЛАВА 26. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ................................................... 284 ГЛАВА 27. ДИНАМИЧЕСКАЯ ИДЕНТИФИКАЦИЯ ТИПА .................................. 288 27.1. Оператор dynamic_cast................................................................... 288 27.2. Оператор typeid............................................................................... 291 27.3. Структура класса type_info ............................................................ 295 27.4. Операторы приведения типа.......................................................... 295 ГЛАВА 28. СТАНДАРТНАЯ БИБЛИОТЕКА ШАБЛОНОВ. КОНТЕЙНЕРЫ, ИТЕРАТОРЫ, АЛГОРИТМЫ.............................................................................. 297 28.1. Основные определения .................................................................. 297 28.2. Контейнеры..................................................................................... 298 28.2.1. Векторы .................................................................................... 300 28.2.2. Списки ...................................................................................... 302 28.3. Итераторы ....................................................................................... 304 28.4. Алгоритмы ...................................................................................... 304 ГЛАВА 29. СТРОКОВЫЙ КЛАСС ..................................................................... 309 29.1. Ввод и вывод строк ........................................................................ 309 29.2. Поиск в строке ................................................................................ 310 29.3. Модификация строки ..................................................................... 311 29.4. Сравнение строк ............................................................................. 312 29.5. Получение информации об объекте класса string........................ 314 ПРИЛОЖЕНИЕ А. СВЕДЕНИЯ О СИСТЕМАХ СЧИСЛЕНИЯ .............................. 317 A-1. Десятично-двоичные и двоично-десятичные преобразования.... 317 А-2. Восьмеричная и шестнадцатеричная системы счисления ........... 319 А-3. Таблицы истинности логических схем.......................................... 321 А-4. Примеры использования двоичной арифметики.......................... 321 ПРИЛОЖЕНИЕ Б. СХЕМЫ АЛГОРИТМОВ ........................................................ 323 СПИСОК ЛИТЕРАТУРЫ................................................................................... 329
Стр.335

Облако ключевых слов *


* - вычисляется автоматически
.