Рекомендуем

С++. Бархатный путьМарченко А.Л. С++. Бархатный путь
Проектирование интерактивных Web-приложенийГанеев Р.М. Проектирование интерактивных Web-приложений
Программирование микропроцессорных систем на языке C-51Микушин А.В., Сединин В.И. Программирование микропроцессорных систем на языке C-51

Книга

От С к С++

Учебное пособие для вузов
2-е изд., стереотип. –
2012 г.
334 стр.
Тираж 300 экз.
Формат 60х90/16 (145x215 мм)
Исполнение: в мягкой обложке
ISBN 978-5-9912-0259-6
ББК 32.973
УДК 681.33
Гриф УМО
Допущено учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности «Программное обеспечение вычислительной техники и автоматизированных систем»
Аннотация
Учебное пособие содержит необходимые теоретические сведения и набор упражнений и задач различной степени сложности, позволяющих приобрести навыки практического программирования на алгоритмических языках С и С++ (Си и Си++) и проконтролировать усвоение материала. Практические задания для программирования на С++ имеют "сквозную" структуру - распределены по мере изложения разделов. Материал книги успешно апробирован авторами в высших технических учебных заведениях. Для студентов высших и средних учебных заведений, может быть использована начинающими программистами при изучении алгоритмических языков С и С++.

Оглавление

ПРЕДИСЛОВИЕ 3

ГЛАВА 1. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ 5
1.1. ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА ЭВМ 5
1.2. РАЗРАБОТКА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ 9
1.2.1. Понятие алгоритма 9
1.2.2. Алгоритмизация 11
1.2.3. Схемы алгоритмов 12
1.3. ПОСТРОЕНИЕ ПРОСТЕЙШИХ ПРОГРАММ 15
1.3.1. Структура программы 16
1.3.2. Идентификаторы 17
1.3.3. Константы 18
1.3.4. Арифметические операции 20
1.3.5. Математические функции 22
1.3.6. Операция присваивания 23
1.3.7. Функции ввода и вывода 24
1.3.8. Основные типы данных 26
1.4. СТИЛЬ ЗАПИСИ ПРОГРАММ НА ЯЗЫКЕ С 27
1.5. ПРИМЕР СОСТАВЛЕНИЯ ЛИНЕЙНОЙ ПРОГРАММЫ 28
Вопросы для самоконтроля 30
Упражнения 31

ГЛАВА 2. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ 35
2.1. ПОНЯТИЕ РАЗВЕТВЛЯЮЩЕГОСЯ АЛГОРИТМА 35
2.2. ОПЕРАЦИИ ЛОГИЧЕСКОГО ТИПА 36
2.3. УСЛОВНЫЙ ОПЕРАТОР 37
2.4. ОПЕРАЦИЯ УСЛОВИЯ 40
2.5. ОПЕРАТОР-ПЕРЕКЛЮЧАТЕЛЬ 41
2.6. ПРИМЕР СОСТАВЛЕНИЯ РАЗВЕТВЛЯЮЩЕЙСЯ ПРОГРАММЫ 43
Упражнения 44
2.7. ПОБИТОВЫЕ ОПЕРАЦИИ 48
Вопросы для самоконтроля 49
Дополнительные упражнения 50

ГЛАВА 3. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ 52
3.1. ПОНЯТИЕ ЦИКЛИЧЕСКОГО АЛГОРИТМА 52
3.1.1. Определение цикла 52
3.1.2. Структурограммы 54
3.1.3. Циклы с известным числом повторений 55
3.1.4. Итерационные циклы 58
3.1.5. Вложенные циклы 59
3.2. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ С ИЗВЕСТНЫМ ЧИСЛОМ ПОВТОРЕНИЙ 61
3.2.1. Оператор цикла с параметром 61
3.2.2. Табулирование функции 62
3.2.3. Вычисление конечных сумм и произведений 63
Вопросы для самоконтроля 65
Упражнения 66

3.3. КОНСТРУИРОВАНИЕ ПРОГРАММ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ С НЕИЗВЕСТНЫМ ЧИСЛОМ ПОВТОРЕНИЙ 69
3.3.1. Оператор цикла с предусловием 69
3.3.2. Оператор цикла с постусловием 71
3.3.3. Операция «запятая» 75
3.3.4. Пример циклической программы 75
Вопросы для самоконтроля 77
Дополнительные упражнения 77
3.3.5. Итерационные циклы. Вычисление суммы ряда 79
3.3.6. Метод итерации для уточнения корней 82
Вопросы для самоконтроля 84
Упражнения 84
3.4. ПРОЕКТИРОВАНИЕ АЛГОРИТМОВ И ПРОГРАММ СО СТРУКТУРОЙ ВЛОЖЕННЫХ ЦИКЛОВ 88
3.4.1. Табулирование функций от нескольких переменных 89
3.4.2. Вычисление кратных сумм и произведений 91
Вопросы для самоконтроля 93
Упражнения 93

ГЛАВА 4. МАССИВЫ И УКАЗАТЕЛИ 96
4.1. МАССИВЫ 96
4.1.1. Описание массива 96
4.1.2. Одномерные массивы 97
4.1.3. Двумерные массивы 101
4.1.4. Ввод-вывод массивов 103
4.1.5. Примеры программирования задач
с использованием массивов 105
4.1.6. Инициализация массивов 110
Вопросы для самоконтроля 111
Упражнения 112
4.2. УКАЗАТЕЛИ 114
4.2.1. Описание указателей 114
4.2.2. Адресные операции 114
4.2.3. Инициализация указателей 115
4.2.4. Особенности использования массивов и указателей в программе 116
4.2.5. Ввод-вывод данных с помощью указателей 117
4.2.6. Пример программирования задачи с использованием
указателей 119
Вопросы для самоконтроля 121
Упражнение 121

ГЛАВА 5. ФУНКЦИИ 122
5.1. ОСНОВНЫЕ ПОНЯТИЯ 122
5.1.1. Вспомогательные, или подчиненные, алгоритмы 122
5.1.2. Понятие функции 124
5.1.3. Определение функции 125
5.1.4. Описание функции 126
5.1.5. Вызов функции 129
5.2. ОБМЕН ИНФОРМАЦИЕЙ МЕЖДУ ФУНКЦИЯМИ 131
5.2.1. Оператор возврата 131
5.2.2. Передача адреса в функцию 131
5.2.3. Библиотечные функции 134
5.2.4. Примеры программ с функциями 134
Упражнения 138
5.3. ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ МАССИВОВ И УКАЗАТЕЛЕЙ
В ФУНКЦИЯХ 140
5.3.1. Пример составления программы 145
Упражнения 148
5.4. ФУНКЦИИ РАБОТЫ С ТЕКСТОВЫМИ СТРОКАМИ И ФРАГМЕНТАМИ ОПЕРАТИВНОЙ ПАМЯТИ 151
5.4.1. Пример программы с массивами и указателями в функциях 153
Вопросы для самоконтроля 155
Упражнения 155
Дополнительные упражнения 157
5.5. РЕКУРСИИ 159
5.5.1. Понятие рекурсии 159
5.5.2. Техника построения рекурсивных алгоритмов 161
5.5.3. Формы рекурсий 164
5.5.3.1. Простая линейная рекурсия 164
5.5.3.2. Параллельная рекурсия 165
5.5.3.3. Взаимная рекурсия 165
5.5.3.4. Рекурсия более высокого порядка 167
5.5.4. Рекурсия и итерация 167
5.5.5. Пример составления программы 169
Вопросы для самоконтроля 172
Упражнения 173

ГЛАВА 6. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ 175
6.1. ОПРЕДЕЛЕНИЕ СТРУКТУРЫ 175
6.1.1. Пример составления программы 177
Упражнения 181
6.2. СТРУКТУРА ТИПА ПОЛЯ БИТОВ 184
6.3. ОБЪЕДИНЕНИЕ 184
6.4. ОПЕРАЦИИ НАД СТРУКТУРАМИ И ИХ ЭЛЕМЕНТАМИ 185
6.5. СТРУКТУРЫ И ФУНКЦИИ 186
6.6. ПЕРЕМЕННЫЕ СТРУКТУРЫ 187
6.7. ПРИМЕР ПРОГРАММЫ СО СТРУКТУРАМИ 189
Вопросы для самоконтроля 192
Упражнения 193

ГЛАВА 7. ФАЙЛЫ 196
7.1. ОПРЕДЕЛЕНИЕ ФАЙЛА 196
7.2. ОТКРЫТИЕ ФАЙЛА 196
7.3. ЗАКРЫТИЕ ФАЙЛА 198
7.4. ВВОД-ВЫВОД ФАЙЛА 199
7.4.1. Ввод-вывод символа 199
7.4.2. Ввод-вывод строки 201
7.4.3. Ввод-вывод целого 201
7.4.4. Форматированный ввод-вывод 201
7.4.5. Ввод-вывод блока 202
Упражнения 202
7.5. ПРОИЗВОЛЬНЫЙ ДОСТУП К ФАЙЛУ 204
7.6. ПРИМЕР ПРОГРАММЫ С ФАЙЛАМИ 206
Вопросы для самоконтроля 210
Дополнительные упражнения 211

ГЛАВА 8. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА 213
8.1. ПРЕПРОЦЕССОР ЯЗЫКА С 213
8.2. ВКЛЮЧЕНИЕ В ТЕКСТ ПРОГРАММЫ ВНЕШНЕГО ФАЙЛА 213
8.3. ВЫПОЛНЕНИЕ МАКРОПОДСТАНОВОК 214
8.4. СТАНДАРТНЫЕ МАКРООПРЕДЕЛЕНИЯ 216
8.5. УСЛОВНАЯ КОМПИЛЯЦИЯ 216
Вопросы для самоконтроля 218
Упражнение 219

ГЛАВА 9. КЛАССЫ С++ 220
9.1. КОНЦЕПЦИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В ЯЗЫКЕ С++ 220
9.2. ПОНЯТИЕ «КЛАСС» 221
9.3. УПРАВЛЕНИЕ ДОСТУПОМ К ЭЛЕМЕНТАМ ДАННЫХ КЛАССОВ 223
9.4. ОПРЕДЕЛЕНИЕ ФУНКЦИЙ-ЧЛЕНОВ КЛАССА (МЕТОДОВ) 225
9.5. ОБЪЕКТЫ КЛАССОВ 227
9.6. ПРИМЕР ПРОГРАММЫ С КЛАССАМИ 229
Вопросы для самоконтроля 230
Упражнения 231

ГЛАВА 10. КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ 232
10.1. КОНСТРУКТОРЫ КЛАССОВ 232
10.2. ОПЕРАЦИЯ ССЫЛКИ 235
10.3. ДЕСТРУКТОРЫ КЛАССОВ 236
10.4. ПРИМЕР ПРОГРАММЫ С КОНСТРУКТОРАМИ И ДЕСТРУКТОРАМИ 237
Вопросы для самоконтроля 238
Упражнения 239

ГЛАВА 11. ПЕРЕГРУЖАЕМЫЕ ОПЕРАЦИИ 240
11.1. ПОНЯТИЕ ПЕРЕГРУЗКИ ОПЕРАЦИЙ 240
11.2. ПЕРЕГРУЗКА РАЗЛИЧНЫХ ОПЕРАЦИЙ 241
11.3. ПРИМЕР ПРОГРАММЫ С ПЕРЕГРУЗКОЙ ОПЕРАЦИЙ 242
Вопросы для самоконтроля 243
Упражнения 243

ГЛАВА 12. ПОТОКИ ВВОДА-ВЫВОДА 244
12.1. КОНЦЕПЦИЯ ПОТОКОВ 244
12.2. ОПЕРАЦИИ ВСТАВКИ В ПОТОК 244
12.3. УПРАВЛЕНИЕ ФОРМАТОМ 245
12.4. ОПЕРАЦИИ ВСТАВКИ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ 249
12.5. МАНИПУЛЯТОРЫ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ 250
12.6. ОПЕРАЦИИ ИЗВЛЕЧЕНИЯ ИЗ ПОТОКА 256
12.7. ОПЕРАЦИИ ИЗВЛЕЧЕНИЯ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ 258
12.8. ПРИМЕР ПРОГРАММЫ С ПОТОКАМИ ВВОДА-ВЫВОДА 258
Вопросы для самоконтроля 263
Упражнения 263

ГЛАВА 13. ПРОИЗВОДНЫЕ КЛАССЫ 264
13.1. ПРОСТОЕ НАСЛЕДОВАНИЕ 264
13.2. ДОСТУП К НАСЛЕДУЕМЫМ КОМПОНЕНТАМ 265
13.3. КОНСТРУКТОРЫ ДЛЯ ПРОИЗВОДНЫХ КЛАССОВ 268
13.4. ПРОИЗВОДНЫЕ И ОБЪЕМЛЮЩИЕ КЛАССЫ 270
13.5. ПРИМЕРЫ СВЯЗНЫХ СПИСКОВ 271
13.6. ПОЛИМОРФИЗМ 283
13.7. ПРАВИЛО ISA( ) 286
Вопросы для самоконтроля 287
Упражнения 287

ГЛАВА 14. ОСОБЕННОСТИ НАСЛЕДОВАНИЯ КЛАССОВ 288
14.1. АБСТРАКТНЫЕ КЛАССЫ 288
14.2. МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ 289
14.3. АДРЕСА БАЗОВЫХ КЛАССОВ 291
14.4. ВИРТУАЛЬНОЕ НАСЛЕДОВАНИЕ 293
Вопросы для самоконтроля 294
Упражнения 294

ГЛАВА 15. ФАЙЛЫ ПОЛЬЗОВАТЕЛЯ 295
15.1. ВВОД-ВЫВОД В ФАЙЛАХ 295
15.2. ОТКРЫТИЕ ФАЙЛОВ 295
15.3. ЗАКРЫТИЕ ФАЙЛОВ 297
15.4. ПОИСК В ПОТОКЕ 297
15.5. ПРИВЯЗКА ПОТОКОВ 298
15.6. УКАЗАТЕЛИ НА ПОТОКИ 298
15.7. ОБРАБОТКА ОШИБОК В ПОТОКАХ 299
15.8. ВВОД-ВЫВОД ДВОИЧНЫХ ФАЙЛОВ 300
15.9. ВВОД-ВЫВОД В ОПЕРАТИВНОЙ ПАМЯТИ 301
15.10. ПРИМЕР ПРОГРАММЫ С ИСПОЛЬЗОВАНИЕМ ФАЙЛА 302
Вопросы для самоконтроля 306
Упражнения 306

ПРИЛОЖЕНИЕ 1. НЕКОТОРЫЕ БИБЛИОТЕЧНЫЕ ФУНКЦИИ 307
П-1.1. ПОДПРОГРАММЫ КЛАССИФИКАЦИИ СИМВОЛОВ 307
П-1.2. ПОДПРОГРАММЫ ПРОЦЕССОВ 307
П-1.3. ПОДПРОГРАММЫ ПРЕОБРАЗОВАНИЯ СИМВОЛОВ И СТРОК 309
П-1.4. ПОДПРОГРАММЫ ВВОДА-ВЫВОДА 310
П-1.5. ПОДПРОГРАММЫ МАНИПУЛИРОВАНИЯ СТРОКАМИ 313
П-1.6. ПОДПРОГРАММЫ РАСПРЕДЕЛЕНИЯ ПАМЯТИ 314

ПРИЛОЖЕНИЕ 2. БИБЛИОТЕЧНЫЕ ФУНКЦИИ ГРАФИКИ 316
П-2.1. ФУНКЦИИ УСТАНОВКИ ГРАФИЧЕСКОЙ СРЕДЫ 316
П-2.2. ФУНКЦИИ РИСОВАНИЯ 317
П-2.3. ОСНОВНЫЕ МАКРООПРЕДЕЛЕНИЯ ГРАФИКИ 318

ПРИЛОЖЕНИЕ 3. УПРАЖНЕНИЯ ПО С++ (ОБЪЕКТЫ) 321

СПИСОК ЛИТЕРАТУРЫ 328