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

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

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

Самоучитель

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