- •Сведения об авторах
- •1. Знакомство с языком С++
- •1.1 Первая программа на С++
- •1.2 Среда программирования Qt Creator
- •2. Общие сведения о языке С++
- •2.1 Алфавит языка
- •2.2 Данные
- •2.2.1 Символьный тип
- •2.2.2 Целочисленный тип
- •2.2.3 Вещественный тип
- •2.2.4 Логический тип
- •2.2.5 Тип void
- •2.3 Константы
- •2.4 Структурированные типы данных
- •2.5 Указатели
- •2.6 Операции и выражения
- •2.6.1 Операции присваивания
- •2.6.2 Арифметические операции
- •2.6.3 Логические операции
- •2.6.4 Операции отношения
- •2.6.5 Условная операция
- •2.6.6 Операция преобразования типа
- •2.6.7 Операция определения размера
- •2.6.8 Операции с указателями
- •2.7 Стандартные функции
- •2.8 Структура программы
- •2.9 Ввод и вывод данных
- •2.9.1 Функции ввода - вывода
- •2.10 Задачи для самостоятельного решения
- •2.10.2 Операции целочисленной арифметики.
- •2.10.3 Встроенные математические функции
- •3. Операторы управления
- •3.1 Основные конструкции алгоритма
- •3.2 Составной оператор
- •3.3 Условные операторы
- •3.3.1 Условный оператор
- •3.3.2 Оператор варианта
- •3.4 Операторы цикла
- •3.4.1 Оператор цикла с предусловием
- •3.4.2 Оператор цикла с постусловием
- •3.4.3 Оператор цикла с параметром
- •3.4.4 Операторы передачи управления
- •3.5 Решение задач с использованием циклов
- •3.6 Задачи для самостоятельного решения
- •3.6.1 Разветвляющийся процесс. Вычисление значения функции.
- •3.6.2 Разветвляющийся процесс. Попадание точки в плоскость.
- •3.6.3 Разветвляющийся процесс. Пересечение линий и решение уравнений.
- •3.6.4 Циклический процесс. Вычисление значений функции
- •3.6.6 Циклический процесс. Последовательности произвольных чисел
- •3.6.7 Циклический процесс. Работа с цифрами в числе
- •3.6.8 Вложенные циклы
- •4. Использование функций при программировании на С++
- •4.1 Общие сведения о функциях. Локальные и глобальные переменные
- •4.2 Передача параметров в функцию
- •4.3 Возврат результата с помощью оператора return
- •4.4 Решение задач с использованием функций
- •4.5 Рекурсивные функции
- •4.6 Перегрузка функций
- •4.7 Шаблоны функций
- •4.8 Область видимости переменных в функциях
- •4.9 Функция main(). Параметры командной строки
- •4.10 Задачи для самостоятельного решения
- •4.10.1 Применение функций при работе с последовательностями чисел
- •4.10.2 Применение функций для вычислений в различных системах счисления
- •4.10.3 Применение функций для решения нелинейных уравнений
- •5. Массивы
- •5.1 Статические массивы в С(С++)
- •5.1.1 Описание статических массивов
- •5.1.2 Основные операции над массивами
- •5.2 Динамические массивы в С(С++)
- •5.2.1 Функция malloc
- •5.2.2 Функция calloc
- •5.2.3 Функция realloc
- •5.2.4 Функция free
- •5.2.5 Операторы new и delete
- •5.3 Основные алгоритмы обработки массивов
- •5.3.2 Вычисление суммы элементов массива
- •5.3.3 Вычисление произведения элементов массива
- •5.3.4 Поиск максимального элемента в массиве и его номера
- •5.3.5 Удаление элемента из массива
- •5.3.6 Сортировка элементов в массиве
- •5.3.6.1 Сортировка методом «пузырька»
- •5.3.6.2 Сортировка выбором
- •5.3.6.3 Сортировка вставкой
- •5.4 Указатели на функции
- •5.5 Совместное использование динамических массивов, указателей, функций в сложных задачах обработки массивов
- •5.6.1 Основные операции при работе с массивами
- •5.6.2 Применение функций для обработки массивов.
- •5.6.3 Работа с группами элементов в массиве
- •5.6.4 Сортировка элементов массива
- •6. Статические и динамические матрицы
- •6.1 Статические матрицы С(С++)
- •6.2 Динамические матрицы
- •6.2.1 Использование указателей для работы с динамическими матрицами
- •6.2.2 Использование двойных указателей для работы с динамическими матрицами
- •6.3 Обработка матриц в С(С++)
- •6.4 Решение некоторых задач линейной алгебры
- •6.5 Задачи для самостоятельного решения
- •6.5.1 Основные операции при работе с матрицами
- •6.5.2 Работа со строками и столбцами матрицы
- •6.5.3 Решение задач линейной алгебры
- •7. Организация ввода-вывода в C++
- •7.1.2 Использование манипуляторов форматирования
- •7.2 Работа текстовыми файлами в C++
- •7.2.1 Запись информации в текстовый файл
- •7.2.2 Чтение информации из текстового файла
- •7.3 Обработка двоичных файлов
- •8. Строки в языке С++
- •8.1 Общие сведения о строках в С++
- •8.2 Операции над строками
- •8.3 Тип данных string
- •8.4 Задачи для самостоятельного решения
- •9. Структуры в языке С++
- •9.1 Общие сведения о структурах
- •9.2 Библиотеки для работы с комплексными числами
- •9.3 Задачи для самостоятельного решения
- •9.3.1 Структуры. Операции над комплексными числами
- •9.3.2 Работа с библиотекой комплексных чисел
Министерство образования и науки Украины Государственное высшее учебное заведение Донецкий национальный технический университет
Алексеев Е.Р., Чеснокова О.В.
Самоучитель
по программированию на C/C++
ДОНЕЦК 2013
УДК 004
Рецензенты: Аноприенко А.Я. — кандидат технических наук, профессор, декан факультета компьютерных наук и технологий Донецкого национального технического университета.
Кононов Ю.Н. — доктор физико-математических наук, профессор кафедры прикладной механики и компьютерных технологий Донецкого национального университета.
А 95 |
Алексеев Е.Р., Чеснокова О.В. Самоучитель по |
|
программированию на C/C++. - Донецк.: ДонНТУ, 2013. - 289 с. |
||
|
Печатается по решению Ученого совета факультета компьютерных наук и технологий Донецкого национального технического университета.
Ответственный за выпуск: заведующий кафедрой вычислительной математики и программирования Донецкого национального технического университета, доктор
технических наук, профессор Павлыш В.Н.
Книга является пособием по программированию на основе языка C++ для начинающих. Описана среда программирования Qt Creator и редактор Geany. При чтении книги не требуется предварительного знакомства с программированием. В книге на большом количестве примеров даны методы построения программ на языке С++, особое внимание уделено построению циклических программ, программированию с использованием функций, массивов, указателей. К каждой теме приведены задания для самостоятельного решения.
Издание предназначено для студентов, аспирантов и преподавателей вузов, а также для всех, кто изучает программирование на С++. Книга может быть использована в качестве учебника для студентов младших курсов математических, технических и инженерных специальностей вузов.
Материалы, составляющие данную книгу, распространяются на условиях лицензии GNU FDL.
ãАлексеев Е.Р., Чеснокова О.В., 2013
Сведения об авторах
Алексеев Евгений Ростиславович —
кандидат технических наук, доцент, профессор кафедры «Вычислительная математика и программирование» Донецкого национального технического университета. Преподавательский стаж Алексеева Е.Р. Более 20 лет. Евгений Ростиславович – автор пятнадцати книг, вышедших в Москве и Донецке, общий тираж которых превышает 65 тыс. экземпляров. Е.Р. Алексеев – автор более 100 научных и методических работ. Область его научных интересов — программирование, вычислительная математика, Интернет-технологии, использование свободно распространяемого программного обеспечения.
Чеснокова Оксана Витальевна — старший преподаватель кафедры «Вычислительная математика и программирование» Донецкого национального технического университета. Преподавательский стаж Чесноковой О.В. — 18 лет. Оксана Витальевна — автор десяти книг, общий тираж которых превышает 40 тыс. экземпляров, а также более 50 научных и методических работ. Область ее научных интересов — программирование, вычислительная математика.
|
Содержание |
|
1.Знакомство с языком С++............................................................................................................... |
7 |
|
1.1 |
Первая программа на С++...................................................................................................... |
7 |
1.2 |
Среда программирования Qt Creator................................................................................... |
10 |
2.Общие сведения о языке С++....................................................................................................... |
15 |
|
2.1 |
Алфавит языка...................................................................................................................... |
15 |
2.2 |
Данные.................................................................................................................................... |
15 |
2.2.1 Символьный тип............................................................................................................. |
16 |
|
2.2.2 Целочисленный тип....................................................................................................... |
16 |
|
2.2.3 Вещественный тип......................................................................................................... |
17 |
|
2.2.4 Логический тип.............................................................................................................. |
18 |
|
2.2.5 Тип void.......................................................................................................................... |
18 |
|
2.3 |
Константы.............................................................................................................................. |
18 |
2.4 |
Структурированные типы данных....................................................................................... |
18 |
2.5 |
Указатели............................................................................................................................... |
19 |
2.6 |
Операции и выражения......................................................................................................... |
20 |
2.6.1 Операции присваивания................................................................................................ |
21 |
|
2.6.2 Арифметические операции........................................................................................... |
22 |
|
2.6.3 Логические операции.................................................................................................... |
25 |
|
2.6.4 Операции отношения..................................................................................................... |
25 |
|
2.6.5 Условная операция........................................................................................................ |
25 |
|
2.6.6 Операция преобразования типа.................................................................................... |
25 |
|
2.6.7 Операция определения размера................................................................................... |
26 |
|
2.6.8 Операции с указателями............................................................................................... |
26 |
|
2.7 |
Стандартные функции.......................................................................................................... |
28 |
2.8 |
Структура программы.......................................................................................................... |
29 |
2.9 |
Ввод и вывод данных............................................................................................................ |
31 |
2.9.1 Функции ввода - вывода................................................................................................ |
31 |
|
2.9.2 Объектно-ориентированные средства ввода-вывода.................................................. |
35 |
|
2.10 Задачи для самостоятельного решения............................................................................. |
37 |
|
2.10.1 Ввод-вывод данных. Операция присваивания........................................................... |
37 |
|
2.10.2 Операции целочисленной арифметики...................................................................... |
38 |
|
2.10.3 Встроенные математические функции...................................................................... |
39 |
|
3.Операторы управления.................................................................................................................. |
42 |
|
3.1 |
Основные конструкции алгоритма...................................................................................... |
42 |
3.2 |
Составной оператор.............................................................................................................. |
43 |
3.3 |
Условные операторы............................................................................................................. |
43 |
3.3.1 Условный оператор....................................................................................................... |
43 |
|
3.3.2 Оператор варианта........................................................................................................ |
60 |
|
3.4 |
Операторы цикла................................................................................................................... |
63 |
3.4.1 Оператор цикла с предусловием.................................................................................. |
64 |
|
3.4.2 Оператор цикла с постусловием.................................................................................. |
65 |
|
3.4.3 Оператор цикла с параметром...................................................................................... |
66 |
|
3.4.4 Операторы передачи управления................................................................................. |
68 |
|
3.5 |
Решение задач с использованием циклов............................................................................ |
68 |
3.6 |
Задачи для самостоятельного решения............................................................................... |
84 |
3.6.1 Разветвляющийся процесс. Вычисление значения функции...................................... |
84 |
|
3.6.2 Разветвляющийся процесс. Попадание точки в плоскость........................................ |
88 |
|
3.6.3 Разветвляющийся процесс. Пересечение линий и решение уравнений..................... |
91 |
Алексеев Е.Р., Чеснокова О.В. Самоучитель по программированию на C/C++. |
5 |
|
3.6.4 Циклический процесс. Вычисление значений функции.................................... |
93 |
|
3.6.5 Циклический процесс. Последовательности натуральных чисел.................... |
94 |
|
3.6.6 Циклический процесс. Последовательности произвольных чисел.................. |
95 |
|
3.6.7 Циклический процесс. Работа с цифрами в числе............................................ |
96 |
|
3.6.8 Вложенные циклы................................................................................................ |
98 |
|
4.Использование функций при программировании на С++............................................... |
100 |
|
4.1 |
Общие сведения о функциях. Локальные и глобальные переменные................... |
100 |
4.2 |
Передача параметров в функцию............................................................................. |
103 |
4.3 |
Возврат результата с помощью оператора return.................................................... |
105 |
4.4 |
Решение задач с использованием функций.............................................................. |
106 |
4.5 |
Рекурсивные функции............................................................................................... |
121 |
4.6 |
Перегрузка функций................................................................................................. |
124 |
4.7 |
Шаблоны функций..................................................................................................... |
125 |
4.8 |
Область видимости переменных в функциях......................................................... |
126 |
4.9 |
Функция main(). Параметры командной строки..................................................... |
127 |
4.10 Задачи для самостоятельного решения................................................................. |
129 |
|
4.10.1 Применение функций при работе с последовательностями чисел.............. |
129 |
|
4.10.2 Применение функций для вычислений в различных системах счисления. . |
131 |
|
4.10.3 Применение функций для решения нелинейных уравнений........................ |
132 |
|
5.Массивы.............................................................................................................................. |
134 |
|
5.1 |
Статические массивы в С(С++)................................................................................ |
134 |
5.1.1 Описание статических массивов...................................................................... |
135 |
|
5.1.2 Основные операции над массивами.................................................................. |
135 |
|
5.2 |
Динамические массивы в С(С++)............................................................................. |
136 |
5.2.1 Функция malloc.................................................................................................. |
136 |
|
5.2.2 Функция calloc................................................................................................... |
137 |
|
5.2.3 Функция realloc.................................................................................................. |
137 |
|
5.2.4 Функция free....................................................................................................... |
137 |
|
5.2.5 Операторы new и delete..................................................................................... |
137 |
|
5.3 |
Основные алгоритмы обработки массивов............................................................. |
138 |
5.3.1 Ввод-вывод элементов массива........................................................................ |
139 |
|
5.3.2 Вычисление суммы элементов массива........................................................... |
141 |
|
5.3.3 Вычисление произведения элементов массива................................................ |
142 |
|
5.3.4 Поиск максимального элемента в массиве и его номера............................... |
144 |
|
5.3.5 Удаление элемента из массива......................................................................... |
155 |
|
5.3.6 Сортировка элементов в массиве..................................................................... |
162 |
|
|
5.3.6.1 Сортировка методом «пузырька»............................................................. |
163 |
|
5.3.6.2 Сортировка выбором................................................................................. |
165 |
|
5.3.6.3 Сортировка вставкой................................................................................. |
166 |
5.4 |
Указатели на функции.............................................................................................. |
169 |
5.5 Совместное использование динамических массивов, указателей, функций в |
||
сложных задачах обработки массивов............................................................................ |
172 |
|
5.6 |
Задачи для самостоятельного решения\.................................................................. |
179 |
5.6.1 Основные операции при работе с массивами.................................................. |
179 |
|
5.6.2 Применение функций для обработки массивов.............................................. |
183 |
|
5.6.3 Работа с группами элементов в массиве.......................................................... |
184 |
|
5.6.4 Сортировка элементов массива........................................................................ |
185 |
|
6.Статические и динамические матрицы............................................................................ |
187 |
Алексеев Е.Р., Чеснокова О.В. Самоучитель по программированию на C/C++. |
6 |
|
6.1 |
Статические матрицы С(С++).................................................................................. |
187 |
6.2 |
Динамические матрицы............................................................................................. |
188 |
6.2.1 Использование указателей для работы с динамическими матрицами.......... |
188 |
|
6.2.2 Использование двойных указателей для работы с динамическими матрицами |
||
....................................................................................................................................... |
|
189 |
6.3 |
Обработка матриц в С(С++)..................................................................................... |
189 |
6.4 |
Решение некоторых задач линейной алгебры.......................................................... |
200 |
6.5 |
Задачи для самостоятельного решения................................................................... |
222 |
6.5.1 Основные операции при работе с матрицами.................................................. |
222 |
|
6.5.2 Работа со строками и столбцами матрицы...................................................... |
226 |
|
6.5.3 Решение задач линейной алгебры..................................................................... |
228 |
|
7.Организация ввода-вывода в C++..................................................................................... |
232 |
|
7.1 |
Форматированный ввод-вывод в C++...................................................................... |
232 |
7.1.1 Использование флагов форматного ввода-вывода......................................... |
232 |
|
7.1.2 Использование манипуляторов форматирования........................................... |
234 |
|
7.2 |
Работа текстовыми файлами в C++......................................................................... |
236 |
7.2.1 Запись информации в текстовый файл............................................................ |
237 |
|
7.2.2 Чтение информации из текстового файла....................................................... |
239 |
|
7.3 |
Обработка двоичных файлов................................................................................... |
243 |
8.Строки в языке С++........................................................................................................... |
248 |
|
8.1 |
Общие сведения о строках в С++............................................................................ |
248 |
8.2 |
Операции над строками............................................................................................ |
249 |
8.3 |
Тип данных string....................................................................................................... |
251 |
8.4 |
Задачи для самостоятельного решения................................................................... |
253 |
9.Структуры в языке С++..................................................................................................... |
255 |
|
9.1 |
Общие сведения о структурах.................................................................................. |
255 |
9.2 |
Библиотеки для работы с комплексными числами................................................ |
262 |
9.3 |
Задачи для самостоятельного решения................................................................... |
273 |
9.3.1 Структуры. Операции над комплексными числами....................................... |
273 |
|
9.3.2 Работа с библиотекой комплексных чисел...................................................... |
275 |
|
10.Использование компилятора командной строки и текстового редактора Geany...... |
277 |