Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Аверкин, Бобровский, Веснич, Радушинский - Программирование на C++ - 2003

.pdf
Скачиваний:
160
Добавлен:
13.08.2013
Размер:
13.64 Mб
Скачать

Под ред. проф. А. Д. Хомоненко

ПРОГРАММИРОВАНИЕ НА C++

Авт.: В.П.Аверкин, А.И.Бобровский, В.В.Веснич, В.Ф.Радушинский, А.Д.Хомоненко

Содержит систематическое изложение основных приемов программирования на языке C++: описание типов данных, объявление переменных, организация разветвлений и циклов, описание и использование массивов, указателей, функций. Рассматриваются понятия и приемы объектно-ориентированного программирования: определение классов и объектов, конструкторы и деструкторы, инкапсуляция, полиморфизм, наследование, шаблоны, обработка исключений, пространство имен, динамическая идентификация типов. Описывается технология разработки программ в среде Borland C++ Builder. Приводятся контрольные вопросы и задания.

Для студентов и преподавателей высших и средних учебных заведений. Содержание

Предисловие

3

Часть I. Основные приемы программирования

 

1. Введение в C++

7

1.1. Общая характеристика языка

7

1.2. Технология разработки программ

8

1.3. Пример программы

10

2. Типы данных и выражения

15

2.1. Алфавит и идентификаторы

15

2.2. Операции, выражения и операторы

17

2.3. Классификация типов данных

21

2.4. Объявление переменных

22

2.5. Задание констант

25

2.6. Время существования и область видимости переменных

27

3. Разветвления и циклы

31

3.1. Программирование разветвлений

31

3.2. Типы операторов циклов

33

3.3. Вложенные циклы

36

3.4. Рекомендации по выбору циклов

36

3.5. Управляющие операторы в циклах

38

4. Массивы и указатели

41

4.1. Массивы

41

4.2. Инициализация массивов

42

4.3. Применение указателей

42

4.4. Ссылки

43

4.5. Указатели и массивы

46

4.6. Указатели и многомерные массивы

47

4.7. Динамические массивы

47

4.8. Пример использования указателей и массивов

50

5. Функции

53

5.1. Общие сведения о функциях

53

5.2. Получение нескольких результатов

56

5.3. Функции с переменным числом параметров

57

5.4. Рекурсивные и подставляемые функции

60

5.5. Области действия переменных

62

5.6. Библиотечные функции

63

6. Массивы в качестве параметров функций

67

6.1. Одномерные массивы

67

6.2. Многомерные массивы

70

6.3. Динамические массивы

72

7. Использование препроцессора

77

7.1. Общие сведения

77

7.2. Определение и обработка макросов

77

7.3. Включение файлов

79

7.4. Условная компиляция

79

Часть II. Объектно-ориентированное программирование

 

8. Введение в объектно-ориентированное программирование

83

8.1. Структурный подход в программировании

83

8.2. Концепции объектно-ориентированного программирования

87

8.3. Этапы объектно-ориентированного программирования

92

9. Классы и инкапсуляция

95

9.1. Описание класса

95

9.2. Создание и использование объектов

97

9.3. Конструкторы и деструкторы

99

9.4. Пример создания и использования класса

101

10. Наследование

105

10.1. Управление доступом производных классов

105

10.2. Одиночное наследование

107

10.3. Множественное наследование

110

11. Полиморфизм

115

11.1. Перегрузка функций

115

11.2. Выбор экземпляра функции

117

11.3. Перегрузка стандартных операций

118

11.4. Виртуальные функции

130

12. Основы организации ввода-вывода

:135

12.1. Классификация средств ввода-вывода

135

12.2. Принципы работы с потоками и файлами

136

12.3. Форматированный ввод-вывод базовых типов

142

12.4. Манипуляторы

147

12.5. Флаги состояния потока

150

12.6. Связывание потоков

151

13. Дополнительные возможности ввода-вывода

153

13.1. Форматированный ввод-вывод пользовательских типов

153

13.2. Файловый ввод-вывод

155

13.3. Неформатированный ввод-вывод

160

13.4. Обмен со строкой в памяти

163

13.5. Использование библиотеки stdio

165

14. Шаблоны

177

14.1. Параметризованные функции

177

14.2. Параметризованные классы

180

14.3. Стандартная библиотека шаблонов

181

15. Дополнительные возможности C++

187

15.1. Пространство имен

187

15.2 Обработка исключений

191

15.3. Динамическая идентификация типов

198

15.4. Приведение типов

203

16. Разработка приложений в Borland C++ Builder

207

16.1. Общая характеристика системы

207

16.2. Библиотека классов системы

209

16.3. Интегрированная среда разработки

214

16.4. Создание приложений

218

Приложение

228

Ключевые слова

228

Предметный указатель

243

Литература

249

Предметный указатель Символы

#define 77 #else 80 #endif 80 #if 79 #ifdef 80 #ifndef 80 #include 79 #undef 77 & 42 * 43 -> 89

. 89 :: 188

<< 142, 154 >> 142, 153

A

ASCII-код 15 auto 27

B

badbit 150 before() 200

bool 23

Borland C++ Builder 207 break 32, 38

buffer 137

C

catch 192 cerr 138 cin 138

class 96, 110 clog 138 const 22, 26 const_cast 204 continue 42 cout 138

D

delete 48, 52, 73 DETECT 113 do — while 35 double 25

dynamic_cast 203

E

endl 149 enum 22, 27 eofbit 150

exception handling 191 extern 27

F

failbit 150 flags(0) 143 float 24 flush 149 for 34 fprintf() 173 fscanf() 173 fseek() 172 fstream 139

G

gcount() 163

get() 160, 161, 163 getline() 163 gets() 171

goodbit 150 goto 42

I

IDE 208 if ...else 31

ifstream 139 initgraph 65, 113 inline 61 iomanip.h 148

iostream.h 135, 138, 148 istrstream 163

L

long double 25

M

main() 53 MFC 210

N

namespace 187, 189 new 48, 51, 73

O

ofstream 139 operator 119 ostrstream 163 OWL 210

P

printf() 166, 168 private 95, 105 protected 95, 105 public 95, 105 pure 132

put() 160 puts() 170

R

rand()%2 201 read() 160, 163 reference 43 register 27 reinterpret_cast 204 return 53

RTTI 198

S

scanf() 166, 167, 169 setf() 144, 145 signed 24

sizeof 20 sstream.h 163 static 27

std 189 stdaux 166 stderr 166 stdin 166 stdio 165 stdio.h 136 stdout 166 stdprn 166 STL 181 stream 136 strstrea.h 163 strstream 163 struct 96, 110 switch 32

T

TComboBox 218

TComponent 213 template 177 terminate() 192 TGraphicControl 213 this 91

throw 192, 195 tie() 151 TListBox 218 TObject 212 TPersistent 212 TRadioButton 218 try 192 TWinControl 213 type_info 199 typeid 199, 200 typeinfo 199 typename 177 TControl 213

U

union 96 unsetf() 145 unsigned 24 using 189

V

VCL 209, 210 virtual 90, 132 void 22, 53, 55

W

whence 172 while 34 write() 160

A

алфавит 15 аргумент 54

Б

Библиотка визуальных компонентов 209 буфер 137

В

ввод-вывод варианты организации 141

неформатированный 160 символы преобразования 168 символьный 160 синхронизации операций 151

строко-ориентированный 161, 169, 175 файловый 155 форматированный 173

вектор 50

вкладка Standard 217

возведение в степень 60 время существования 27, 29 выбор

множественный 32 операции 89

выражение 17

Г

графика инициализация 113

Д

декомпозиция 84 декремент 20 деструктор 91, 100, 108

З

защищенный 95

И

идентификатор 16 именование 16 инкапсуляция 7 инкремент 20

интегрированная среда разработки 208, 214 главного меню 208 инспектор объектов 208

палитра компонентов 208 панель инструментов 208 редактор кода 209 редактор форм 208

исключения выброс 191

генерирование исключения 194 синхронные 191

исключительные ситуации 191 итератор 182

К

кириллические символы 15

класс 86, 87, 90, 95

базовый 105 базовый наследник 90

непосредственный базовый 105 объектов 88 описание 95

параметризованный 180 потока

стандартные 139 производный 105

классы иерархия 88, 105

ключевые слова 16 кодировка 221

проблема несовместимости 222 комментарий 11, 16 компилятор 219 константа 22

литеральная 25 символическая 22, 25 символьная 23, 26 числовая 25

конструктор 91, 99, 108 контейнер 177

Л

Литерал символьный 23

М

макрос определение 77

отмена определения 79 макросредства 78 манипулятор 147

без параметров 148 пользовательский 155 с параметрами 150

массив 41 двумерный 47

как параметр функции 70 динамический 47, 72

как параметр функции 72

имя 56, 69

инициализация 42 как параметр функции 57 одномерный 67 описание 41

указателей одномерный 73 указателей на массив 71

меню 214 Component 216 Database 216 Edit 215

File 214 Project 215, 216 Run 216 Search 215 View 215

Workgroups 216 метод 89,211

внешнее описание 102, 103,108 модификатор статуса доступа 106 модуль

исполняемый 10 исходный 10 объектный 10

Н

набор символов 221 наследование 7, 89

множественное 110 наследник 105 одиночное 107

О

область видимости 27, 29 общедоступный 95 объект 86, 88

доступ к компонентам 97 иерархия 105

использование 98 объявление 97 свойства 211 уничтожение 101

ООП достоинства 92 недостатки 93

операнд 17 оператор 20

объявления 21 присваивания 21 условный 31

операции 17 вставки 142 выбора 89 извлечения 142

косвенной адресации 43 логические 20 определения адреса 42 перегрузка 119, 121 поразрядные логические 20 порядок выполнения 18 стандартные

ограничения перегрузки 120 перегрузка 118 переопределение 119

указание области видимости 188 условия ?: 32

П

память выделение 48

панель инструментов 217 параметр-индикатор 59 переменная 22

автоматическая 27 внешняя 28 глобальная 62 логическая 23 локальная 62 регистровая 28 ссылочного типа 46 статическая 28 характеристики 29

поле 89