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

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

0   0
Первый авторАшарина И. В.
ИздательствоМ.: Горячая линия – Телеком
Страниц319
ID202780
АннотацияНа доступном для начинающего программиста уровне изложены концепция объектно-ориентированного программирования (ООП) и сведения необходимые для быстрого освоения языка программирования С++. Информация в книге расположена в порядке усложнения: от способов написания простейших программ, имеющих линейную структуру, до достаточно сложных, с использованием библиотеки STL. Большое внимание уделено вопросам работы с функциями, которые являются основой для перехода к ООП. Приведены многочисленные примеры, контрольные вопросы и практические задания.
Кем рекомендованоУМО вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки дипломированных специалистов 654600 (230100) – «Информатика и вычислительная техника»
Кому рекомендованоДля студентов, изучающих язык программирования С++, преподавателей соответствующих специальностей и всех, кто хочет самостоятельно освоить программирование на языке С++.
ISBN978-5-9912-7001-4
УДК681.3
ББК32.97
Ашарина, И.В. Объектно-ориентированное программирование в С++: лекции и упражнения : учеб. пособие / И.В. Ашарина .— Москва : Горячая линия – Телеком, 2012 .— 319 с. : ил. — ISBN 978-5-9912-7001-4 .— URL: https://rucont.ru/efd/202780 (дата обращения: 19.04.2024)

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

И.В.Ашарина Объектно-ориентированное программирование в С++: лекции и упражнения Допущено УМО вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки дипломированных специалистов 654600 (230100) – «Информатика и вычислительная техника" Москва Горячая линия – Телеком 2012 УДК 681.3 ББК 32.97 А98 Р е ц е н з е н т : канд. техн. наук, доцент В. А. Мартынюк А98 Ашарина И. В. <...> Пример 1.1: # include <iostream> using namespace std; int main() { cout<<"Здравствуй, мир!\n"; return 0; } // директива препроцессора // директива using // начало программы // оператор вывода на экран Директива #include <iostream> подключает заголовочный файл iostream, который обеспечивает работу с переменной cout и операцией << путем предоставления доступа к потокам ввода-вывода; Глава 1. <...> Основные определения языка С++ 7 using namespace std; обозначает, что используется пространство имен с именем std. <...> Она необходима, чтобы избежать конфликтов идентификаторов; main ( ) – имя основной программы, оно всегда присутствует и не может изменяться; { } – скобки, ограничивающие тело программы; cout<<«Здравствуй, мир!\n»; – оператор, выводящий на экран строку, заключенную в кавычки; return 0; – пока будем считать, что этот оператор необходим для корректного завершения программы. <...> Рассмотрим программу, содержащую элементы вычислений. # include <iostream> using namespace std; int main() { int a, b, c; // объявление трех переменных целого типа a = 5; b = 10; // определение переменных a и b c = a+b; // присваивание переменной c суммы a и b cout<<"Значение с = "<<с<<'\n'; return 0; } В целом структура программы не изменилась, но добавились некоторые моменты: int a,b,c; – объявление трех целочисленных переменных a, b и с; int – признак того, что переменные имеют целый тип; общим правилом при программировании на C++ является то, что прежде, чем использовать в программе какую-либо переменную, ее необходимо объявить с указанием типа; а=5, b=10; – определение <...>
Объектно-ориентированное_программирование_в_С++_лекции_и_упражнения.pdf
Стр.1
Стр.2
Стр.3
Стр.4
Стр.313
Стр.314
Стр.315
Стр.316
Стр.317
Объектно-ориентированное_программирование_в_С++_лекции_и_упражнения.pdf
И.В.Ашарина Объектно-ориентированное программирование в С++: лекции и упражнения Допущено УМО вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки дипломированных специалистов 654600 (230100) – «Информатика и вычислительная техника" Москва Горячая линия – Телеком 2012
Стр.1
УДК 681.3 ББК 32.97 А98 Рецензент : канд. техн. наук, доцент В. А. Мартынюк Ашарина И. В. А98 Объектно-ориентированное программирование в С++: лекции и упражнения.Учебное пособие для вузов.– М.: Горячая линия – Телеком, 2012. – 320 c.: ил. ISBN 978-5-9912-7001-4. На доступном для начинающего программиста уровне изложены концепция объектно-ориентированного программирования (ООП) и сведения необходимые для быстрого освоения языка программирования С++. Информация в книге расположена в порядке усложнения: от способов написания простейших программ, имеющих линейную структуру, до достаточно сложных, с использованием библиотеки STL. Большое внимание уделено вопросам работы с функциями, которые являются основой для перехода к ООП. Приведены многочисленные примеры, контрольные вопросы и практические задания. Для студентов, изучающих язык программирования С++, преподавателей соответствующих специальностей и всех, кто хочет самостоятельно освоить программирование на языке С++. ББК 32.97 Адрес издательства в Интернет www.techbook.ru Учебное электронное издание Ашарина Ирина Владимировна Объектно-ориентированное программирование в С++: лекции и упражнения Учебное пособие Редактор А. Н. Иванов Компьютерная верстка В. Н. Панкин Обложка художника В. Г. Ситникова Подписано в печать 14.09.07. Формат 6090/16. Печать офсетная Уч.-изд. л. 20. Тираж 1000 экз. Изд. № 7285 ООО «Научно-техническое издательство «Горячая линия – Телеком» ISBN 978-5-9912-7001-4  И. В. Ашарина, 2008, 2012  Оформление издательства «Горячая линияТелеком», 2008, 2012
Стр.2
ПРЕДИСЛОВИЕ Язык С++ относится к классу универсальных языков, поскольку с его помощью можно решить очень широкий круг задач, выполняемых на ЭВМ. Среди современных алгоритмических языков язык С++ является, пожалуй, одним из самых популярных и распространенных, но наиболее эффективно его применение в написании системных программтрансляторов, операционных систем, экранных интерфейсов, в обслуживании инструментальных средств. В большинстве случаев программы, выполненные на языке С++, по быстродействию сравнимы с программами, написанными на Ассемблере. С++ – язык высокого уровня, поэтому программы, подготовленные на нем, более наглядны и просты в сопровождении. Программы на языке С++ легко переносимы с одного типа компьютера на другой. Основные особенности языка С++ следующие: • • в нем реализованы некоторые операции низкого уровня; его базовые типы данных совпадают с типами данных языка Ассемблера; • несмотря на присутствие таких составных объектов, как массивы и структуры, язык не допускает обращения с ними как с единым циклом; • широко использует указатели на переменные и функции; • удобным средством для передачи параметров являются ссылки; • считается языком для профессионалов, поэтому многое «доверяет» программисту: даже на такие важные действия, как преобразование типов, налагаются лишь незначительные ограничения; • несмотря на широкие возможности, невелик по объему за счет того, что практически все выполняемые функции оформлены в виде подключаемых библиотек. Язык С служит базовой платформой для изучения языка С++. Эти два языка имеют так много общих черт, что с методической точки зрения оказывается целесообразным первые темы данного конспекта лекций посвятить изучению языка С, а затем перейти к рассмотрению возможностей, предоставляемых языком С++. Язык С был разработан в США сотрудниками Bell Laboratories Б. Керниганом и Д. Ритчи и использован для создания ОС UNIX. Во избежание неоднозначных трактовок окончательный вариант был утвержден в качестве стандарта ANSI C. С++ обязан своим появлением сотруднику Bell Laboratories Б. Страуструппу.
Стр.3
4 Объектно-ориентированное программирование в С++ В книге приведены многочисленные и реально работающие примеры, которые позволяют начинающим программистам взять за основу программу из примера и, модифицируя ее, более качественно осваивать язык программирования. В конце каждой главы приведены контрольные вопросы. Большая часть глав имеет также практические задания, что делает книгу интересной для преподавателей, читающих курсы, связанные с программированием на языках высокого уровня. Книга предназначена для студентов и аспирантов, изучающих вопросы, связанные с программированием, и преподавателей соответствующих курсов.
Стр.4
ОГЛАВЛЕНИЕ ВВЕДЕНИЕ .........................................................................................................3 ГЛАВА 1. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ ЯЗЫКА С++.............................................5 1.1. Алфавит языка ......................................................................................5 1.2. Структура программы на языке С++ ..................................................6 ГЛАВА 2. СТАНДАРТНЫЕ ТИПЫ ДАННЫХ........................................................10 2.1. Переменные целого типа ...................................................................10 2.2. Переменные вещественного типа .....................................................11 2.3. Переменные логического типа..........................................................11 2.4. Константы ...........................................................................................11 2.5. Выражения ..........................................................................................12 2.6. Операции.............................................................................................13 2.7. Преобразование типов .......................................................................17 2.8. Манипулятор setw ..............................................................................18 ГЛАВА 3. ЛИНЕЙНЫЕ И РАЗВЕТВЛЕННЫЕ АЛГОРИТМЫ...................................20 3.1. Линейные алгоритмы.........................................................................20 3.2. Разветвленные алгоритмы .................................................................24 3.2.1. Условный оператор if..................................................................25 3.2.2. Оператор if – else .........................................................................26 3.2.3. Вложенные ветвления.................................................................27 3.2.4. Условная операция......................................................................28 3.2.5. Оператор множественного выбора ............................................29 ГЛАВА 4. ОРГАНИЗАЦИЯ ЦИКЛОВ В ЯЗЫКЕ С++............................................33 4.1. Оператор цикла с предварительным условием................................33 4.2. Оператор цикла с последующим условием......................................35 4.3. Оператор цикла с параметром...........................................................36 4.4. Оператор break....................................................................................39 4.5. Оператор continue...............................................................................39 4.6. Оператор goto......................................................................................41 4.7. Останов программы с помощью оператора exit ..............................41 4.8. Область видимости переменных внутри блока ...............................41 ГЛАВА 5. ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ ЦИКЛА ДЛЯ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ................................................................44 5.1. Вычисление суммы бесконечного ряда с заданной точностью......44 5.2. Понятие о рекуррентных формулах..................................................45 5.3. Использование операторов цикла для решения задач численными методами ..............................................................................46
Стр.313
314 Объектно-ориентированное программирование в С++ 5.3.1. Вычисление с заданной точностью ε корня уравнения F(x) = 0 методом простых итераций..................................46 5.3.2. Решение уравнения f(x) = 0 с заданной точностью ε методом деления отрезка пополам ......................................................47 5.4. Использование операторов цикла для вычисления определенных интегралов.........................................................................49 5.4.1. Вычисление значения ∫f(x)dx с заданной точностью методом прямоугольников ...................................................................49 5.4.2. Вычисление ∫ b a ГЛАВА 6. МАССИВЫ И СТРОКИ .......................................................................54 6.1. Одномерные массивы.........................................................................54 6.2. Инициализация массива.....................................................................56 6.3. Методы сортировки массивов...........................................................57 6.3.1. Сортировка простым выбором...................................................57 6.3.2. Метод пузырьковой сортировки ................................................58 6.3.3. Метод пузырьковой сортировки с оптимизацией ....................59 6.4. Двумерные массивы...........................................................................61 6.5. Обработка матриц...............................................................................63 6.5.1. Работа с матрицей в целом.........................................................63 6.5.2. Работа со строками/столбцами матрицы...................................63 6.5.3. Диагональные элементы матриц................................................64 6.6. Строка как массив символов .............................................................66 6.6.1. Ввод и вывод строк .....................................................................66 6.6.2. Функции для работы со строками..............................................70 ГЛАВА 7. ТИПЫ ДАННЫХ, СОЗДАВАЕМЫЕ ПОЛЬЗОВАТЕЛЕМ (СТРУКТУРЫ, ОБЪЕДИНЕНИЯ, ПЕРЕЧИСЛЕНИЯ).....................................................................73 7.1. Структуры ...........................................................................................73 7.1.1. Присваивание значений структурным переменным ................74 7.1.2. Псевдонимы структур.................................................................75 7.1.3. Операции, допустимые над переменными структурного типа .................................................................................76 7.1.4. Вложенные структуры ................................................................76 7.1.5. Массивы структур .......................................................................77 7.1.6. Структуры с битовыми полями..................................................79 7.2. Объединения.......................................................................................79 7.3. Перечисления......................................................................................81 f(x)dx по формуле Симпсона...........................50
Стр.314
Оглавление 315 ГЛАВА 8. МАГНИТНЫЕ НОСИТЕЛИ ДАННЫХ. ПОНЯТИЕ О ФАЙЛОВЫХ СИСТЕМАХ................................................................85 8.1. Структура диска..................................................................................85 8.2. Файловая система DOS. Таблица размещения файлов ..................86 8.3. Файловая система NTFS ....................................................................89 8.3.1. Структура раздела .......................................................................89 8.3.2. Структура MFT............................................................................90 8.3.3. Файлы и потоки ...........................................................................91 8.3.4. Каталоги .......................................................................................91 ГЛАВА 9. ОРГАНИЗАЦИЯ ВВОДА И ВЫВОДА. ФАЙЛОВАЯ СИСТЕМА...............93 9.1. Стандартные файлы ввода и вывода.................................................93 9.2. Текстовые файлы................................................................................94 9.3. Основные методы обработки текстовых файлов.............................95 9.4. Двоичные файлы.................................................................................98 9.5. Последовательный доступ к элементам двоичных файлов.......................................................................................99 9.6. Организация произвольного доступа к элементам двоичных файлов...............................................................102 9.7. Аргументы командной строки.........................................................104 ГЛАВА 10. ОБОБЩЕННАЯ АРХИТЕКТУРА ПРОЦЕССОРА IBM PC...................108 10.1. Понятие об адресном пространстве..............................................108 10.2. Система адресации в MS-DOS ......................................................109 10.3. Понятие о моделях памяти ............................................................110 ГЛАВА 11. ФУНКЦИИ В ЯЗЫКЕ С++ ..............................................................113 11.1. Объявление и определение функций............................................113 11.2. Понятие о параметрах функций ....................................................115 11.3. Локальные и глобальные переменные..........................................117 11.4. Отсутствие прототипов функций..................................................118 11.5. Строки, массивы и структуры в качестве параметров функций ...............................................................................119 11.6. Рекурсия ..........................................................................................123 11.7. Встраиваемые функции..................................................................125 11.8. Перегрузка функций.......................................................................126 11.9. Использование аргументов по умолчанию ..................................127 ГЛАВА 12. ПОНЯТИЕ ОБ УКАЗАТЕЛЯХ И ССЫЛКАХ. РЕЗЕРВИРОВАНИЕ ПАМЯТИ ...........................................................................131 12.1. Объявление указателей ..................................................................131 12.2. Разыменование указателей ............................................................132
Стр.315
316 Объектно-ориентированное программирование в С++ 12.3. Нулевые указатели и указатели на тип void................................134 12.4. Ссылки.............................................................................................136 12.5. Резервирование памяти в куче ......................................................136 ГЛАВА 13. УКАЗАТЕЛИ И СТРУКТУРЫ ДАННЫХ............................................141 13.1. Указатели и массивы......................................................................141 13.2. Указатели и многомерные массивы..............................................145 13.3. Cтроковые указатели......................................................................147 13.4. Указатели и структуры...................................................................148 13.5. Указатели и модификатор const ....................................................150 ГЛАВА 14. УКАЗАТЕЛИ И ФУНКЦИИ.............................................................154 14.1. Способы передачи параметров......................................................154 14.2. Передача массивов посредством указателей................................155 14.3. Строки как аргументы функций....................................................156 14.4. Передача структур по указателю и по ссылке .............................157 14.5. Ссылка в качестве возвращаемого значения функции....................................................................................158 14.6. Функции, возвращающие указатели.............................................159 14.7. Константные ссылки и константные указатели в качестве параметров функций.............................................................160 14.8. Указатели на функции....................................................................162 ГЛАВА 15. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ .......................................165 15.1. Понятие о самоссылочных структурах.........................................165 15.2. Формирование очереди..................................................................165 15.3. Формирование стека.......................................................................168 15.4. Добавление и удаление элементов в односвязных списках............................................................................170 15.5. Двусвязные списки.........................................................................173 15.6. Бинарные деревья...........................................................................176 ГЛАВА 16. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ ...................................................................................180 ГЛАВА 17. СИСТЕМА ВВОДА-ВЫВОДА В С++ ...............................................186 17.1. Основные понятия..........................................................................186 17.2. Форматируемый ввод-вывод.........................................................186 17.3. Функции установки ширины поля, точности и символа заполнения .............................................................................190 17.4. Манипуляторы ввода-вывода........................................................190 ГЛАВА 18. КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ................................................192 18.1. Понятие о конструкторах и деструкторах....................................192 18.2. Конструкторы с параметрами........................................................193 18.3. Конструкторы по умолчанию........................................................194
Стр.316
Оглавление 317 18.4. Указатели на объекты ....................................................................195 18.5. Перегрузка конструкторов.............................................................196 18.6. Присваивание объектов .................................................................198 18.7. Конструктор копирования .............................................................199 ГЛАВА 19. ФУНКЦИИ И ОБЪЕКТЫ .................................................................203 19.1. Указатели на объекты ....................................................................203 19.2. Передача объектов в функции.......................................................204 19.2.1. Передача объектов по значению............................................204 19.2.2. Передача объектов по указателю...........................................205 19.2.3. Передача объектов по ссылке.................................................206 19.3. Объекты в качестве возвращаемых значений ..............................207 19.4. Дружественные функции...............................................................208 ГЛАВА 20. ПЕРЕГРУЗКА ОПЕРАТОРОВ...........................................................212 20.1. Перегрузка унарных операторов...................................................212 20.2. Перегрузка бинарных операторов.................................................214 20.3. Перегрузка операторов отношения и логических операторов ........................................................................217 20.4. Перегрузка оператора индексирования ........................................218 20.5. Перегрузка оператора присваивания ............................................219 20.6. Перегрузка операторов управления памятью ..............................220 20.6.1. Перегрузка оператора new......................................................220 20.6.2. Перегрузка оператора delete ...................................................221 20.7. Использование дружественных оператор-функций....................223 20.8. Перегрузка операторов вставки и извлечения .............................225 20.9. Перегрузка оператора вызова функции........................................227 ГЛАВА 21. НАСЛЕДОВАНИЕ ..........................................................................229 21.1. Введение в наследование...............................................................229 21.2. Простое наследование....................................................................230 21.3. Режимы доступа к элементам базового класса............................230 21.4. Поведение конструкторов и деструкторов при наследовании ...234 21.5. Множественное наследование.......................................................236 21.5.1. Создание иерархии классов....................................................236 21.5.2. Прямое наследование нескольких базовых классов...................................................................................237 ГЛАВА 22. ВИРТУАЛЬНЫЕ ФУНКЦИИ............................................................239 22.1. Понятие о виртуальных функциях................................................239 22.2. Указатели на базовый и производные классы .............................239 22.3. Виртуальные функции и наследование ........................................241 22.4. Абстрактные классы и чисто виртуальные функции .................242 22.5. Виртуальные деструкторы.............................................................244 22.6. Виртуальные базовые классы........................................................245
Стр.317