Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C2013.pdf
Скачиваний:
552
Добавлен:
03.03.2016
Размер:
8 Мб
Скачать
☆

Министерство образования и науки Украины Государственное высшее учебное заведение Донецкий национальный технический университет

Алексеев Е.Р., Чеснокова О.В.

Самоучитель

по программированию на 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