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

C _Учебник_МОНУ

.pdf
Скачиваний:
198
Добавлен:
12.05.2015
Размер:
11.12 Mб
Скачать

За ред. канд. техн. наук, доцента

О.Г. Трофименко

Теорія та практика

Рекомендовано Міністерством освіти і науки України як навчальний посібник для студентів напряму підготовки «Телекомунікації» вищих навчальних закладів

Ректорська серія

ББК 32.973(076) УДК 004.43

Гриф надано Міністерством освіти і науки України, лист № 1/11-2645 від 04.04.2011 р.

Р е ц е н з е н т и:

В. М. Тонконогий, д.т.н., професор, зав. каф. інформаційних технологій проектування в машинобудуванні Одеського національного політехнічного університету;

М. П. Мусієнко, д.т.н., професор кафедри інформаційних технологій і програмних систем Чорноморського державного університету ім. Петра Могили; С. Л. Ємельянов, к.т.н., доцент, зав. каф. правової інформатики Національ-

ного університету “Одеська юридична академія”; І. В. Стрелковська, д.т.н., професор, декан факультету інформаційних мереж

Одеської національної академії зв‟язку ім. О. С. Попова

А в т о р с ь к и й к о л е к т и в:

Трофименко О. Г., Прокоп Ю. В., Швайко І.Г., Буката Л. М., Шаповаленко В. А., Леонов Ю. Г., Ясинський В. В.

С++. Теорія та практика : Навч. посібник / [О. Г. Трофименко, Ю. В. Прокоп, І. Г. Швайко, Л. М. Буката та ін.] ; за ред. О. Г. Трофименко. – 587 с.

Навчальний посібник містить опис мови програмування С++ стандарту ANSI у поєднанні із засобами візуального програмування та об‟єктно-орієнтованого підходу C++ Builder. Розглянуто засоби програмування як базових алгоритмів, так і опрацювання структурованих типів, робота з покажчиками, засоби динамічного керування пам‟яттю тощо. Значну увагу приділено опрацюванню динамічних структур даних, програмуванню списків, дерев, автоматів. Окремий розділ присвячено засобам об‟єктно-орієнтованого програмування. Кожна з розглянутих тем супроводжується значною кількістю прикладів програм.

Начальний посібник підготовлено до видання на кафедрі “Інформаційні технології” в ОНАЗ ім. О.С. Попова. Призначено для студентів технічних вузів і може бути корисною для кола читачів, які бажають навчатися програмуванню мовою С++.

ISBN 978-966-7598-59-4

О. Г. Трофименко, Ю. В. Прокоп, І. Г. Швайко, Л. М. Буката, В. А. Шаповаленко, Ю. Г. Леонов, В. В. Ясинський, 2011

3

ЗМІСТ

Передмова ...........................................................................................................

8

Розділ 1. Апаратні та програмні засоби ЕОМ ...................................

11

1.1

Основні відомості про будову ЕОМ...........................................................

11

1.2

Програмне забезпечення..............................................................................

13

1.3

Файлова система...........................................................................................

14

1.4

Системи числення ........................................................................................

15

1.4.1

Різновиди систем числення...................................................................

15

1.4.2

Одиниці інформації................................................................................

16

1.4.3

Основні позиційні системи числення ..................................................

17

1.4.4

Переведення чисел з однієї системи числення до іншої....................

18

1.4.5 Арифметичні операції в різних системах числення ...........................

23

1.5

Етапи розв‟язування обчислювальних задач на комп‟ютері ...................

24

1.6

Алгоритм, його властивості й засоби описування.

 

 

Поняття програми.........................................................................................

25

 

 

Розділ 2. Середовище програмування C++ Builder..........................

29

2.1

Технологія створювання інтерфейсних програм ......................................

29

2.1.1

Засоби середовища C++ Builder ...........................................................

29

2.1.2

Структура С++ Builder-проекту............................................................

46

2.1.3

Послідовність створювання програмного проекту в C++ Builder ....

48

2.1.4

Створення проектів з декількома формами.........................................

57

2.2

Робота у консолі ...........................................................................................

59

2.2.1

Основні функції роботи у консольному режимі .................................

59

2.2.2

Послідовність створювання консольного програмного додатка .....

63

 

 

Розділ 3. Елементи мови С++.....................................................................

67

3.1

Історія С++ ....................................................................................................

67

3.2

Алфавіт мови С++ ........................................................................................

69

3.3

Типи даних ....................................................................................................

70

3.4

Константи ......................................................................................................

75

3.5

Правила записування арифметичних виразів............................................

76

3.5.1

Операнди і вирази ..................................................................................

76

3.5.2

Арифметичні операції............................................................................

77

3.5.3

Оператори присвоювання ....................................................................

79

3.5.4

Зведення типів .......................................................................................

80

3.5.5

Математичні функції .............................................................................

82

3.6

Поширені функції перетворювання числових

 

 

типів даних у С++ Builder............................................................................

83

3.7

Функції С++ генерування випадкових чисел ............................................

85

4

Розділ 4. Програмування базових алгоритмів ..................................

87

4.1

Види базових алгоритмів.............................................................................

87

4.2

Програмування лінійних алгоритмів..........................................................

87

4.3

Програмування розгалужених алгоритмів.................................................

96

4.3.1

Розгалужені алгоритми..........................................................................

96

4.3.2

Оператор безумовного переходу goto..................................................

96

4.3.3

Операції відношення та логічні операції.............................................

96

4.3.4

Пріоритет логічних операцій ..............................................................

100

4.3.5

Пріоритети операцій і порядок обчислень ........................................

100

4.3.6

Умовний оператор if ............................................................................

101

4.3.7

Тернарна умовна операція ?:..............................................................

111

4.3.8

Оператор вибору варіантів switch ......................................................

113

4.4

Програмування циклічних алгоритмів.....................................................

120

4.4.1

Циклічні алгоритми .............................................................................

120

4.4.2

Оператор циклу з параметром for ......................................................

120

4.4.3

Вкладені цикли ....................................................................................

140

4.4.4

Оператори циклу з передумовою while та післяумовою do-while ..

145

4.4.5

Оператори переривання виконання ...................................................

159

 

 

Розділ 5. Масиви в С++ ..............................................................................

163

5.1

Поняття масиву...........................................................................................

163

5.2

Одновимірні масиви...................................................................................

163

5.2.1

Оголошення одновимірних масивів...................................................

163

5.2.2

Введення-виведення одновимірних масивів .....................................

166

5.2.3

Програмування базових алгоритмів

 

 

 

опрацювання одновимірних масивів..................................................

168

5.2.4

Опрацювання одновимірних масивів у функціях.............................

176

5.3

Двовимірні масиви .....................................................................................

185

5.3.1

Організація двовимірних масивів.......................................................

185

5.3.2

Введення-виведення двовимірних масивів .......................................

188

5.3.3

Програмування базових алгоритмів

 

 

 

опрацювання двовимірних масивів ....................................................

190

5.3.4

Опрацювання двовимірних масивів у функціях ...............................

198

 

 

Розділ 6. Вказівники. Динамічна пам’ять..........................................

207

6.1

Вказівники...................................................................................................

207

6.2

Вказівники на одновимірні масиви ..........................................................

209

6.3

Арифметика вказівників ............................................................................

210

6.4

Вказівники на багатовимірні масиви .......................................................

212

6.5

Динамічна пам‟ять .....................................................................................

215

6.6

Динамічні одновимірні масиви.................................................................

217

6.7

Динамічні двовимірні масиви (матриці) ..................................................

225

5

Розділ 7. Символи і рядки .........................................................................

231

7.1

Символьний тип даних ..............................................................................

231

7.2

Рядки ............................................................................................................

235

7.2.1 Масиви символів ...................................................................................

236

7.2.2 Клас AnsiString (String).........................................................................

255

7.2.3 Рядки string ............................................................................................

261

7.3 Розширені символьні типи .........................................................................

269

7.3.1 Тип С++ wchar_t ..................................................................................

269

7.3.2 Тип С++ Builder WideString ................................................................

270

Розділ 8. Функції............................................................................................

272

8.1

Правила організації функцій .....................................................................

272

8.2

Способи передавання параметрів до функцій .........................................

278

8.3

Параметри зі значеннями за замовчуванням ...........................................

285

8.4

Функції зі змінною кількістю параметрів................................................

286

8.5

Рекурсивні функції .....................................................................................

288

8.6

Перевантаження функцій ..........................................................................

297

Розділ 9. Модульна організація програм ............................................

302

9.1

Міжфайлова взаємодія ...............................................................................

302

9.2

Заголовні файли..........................................................................................

305

9.3

Бібліотеки функцій.....................................................................................

326

9.4

Директиви препроцесора ...........................................................................

326

9.5

Область дії та простір імен........................................................................

330

Розділ 10. Типи опрацювання дати і часу...........................................

340

10.1 Тип дата-час у С++...................................................................................

340

10.2

Тип дата-час у С++ Builder......................................................................

342

Розділ 11. Типи користувача ....................................................................

361

11.1

Перейменовування типів (typedef) .........................................................

361

11.2

Структури (struct) .....................................................................................

362

11.3

Об‟єднання (union) ...................................................................................

373

11.4 Перерахування (enum) .............................................................................

375

11.5

Множини (Set) ..........................................................................................

376

6

Розділ 12. Файли.............................................................................................

381

12.1

Загальні відомості про файли..................................................................

381

12.2

Текстові файли..........................................................................................

382

12.2.1

Зчитування і записування текстових файлів

 

 

 

за допомогою компонентів С++ Builder ..........................................

382

12.2.2

Робота з текстовими файлами у стилі С ..........................................

383

12.2.3

Робота з текстовими файловими потоками у стилі С++................

400

12.2.4

Послідовне записування до файла і зчитування з файла ...............

402

12.2.5

Довільне записування до файла і зчитування з файла ...................

404

12.2.6

Опрацювання текстових файлів за допомогою дескрипторів.......

406

12.3

Бінарні файли............................................................................................

413

12.3.1

Робота з бінарними файлами у стилі С............................................

413

12.3.2

Робота з бінарними файловими потоками у стилі С++..................

422

12.3.3 Опрацювання бінарних файлів за допомогою дескрипторів ........

425

12.4 Робота з графічними файлами у С++ Builder .........................................

431

 

 

Розділ 13. Динамічні структури даних .................................................

440

13.1

Поняття списку .........................................................................................

440

13.2

Стек ............................................................................................................

444

13.3

Черга ..........................................................................................................

447

13.4

Вставлення і вилучення елементів списку ............................................

450

13.5

Різновиди списків .....................................................................................

462

13.6

Бінарні дерева ...........................................................................................

474

13.7

Автомати ...................................................................................................

484

13.7.1

Поняття автомата ...............................................................................

484

13.7.2

Синхронні автомати...........................................................................

487

13.7.3

Асинхронні автомати.........................................................................

489

13.7.4

Композиція автоматів ........................................................................

493

 

 

Розділ 14. Об’єктно-орієнтоване програмування............................

496

14.1

Модульне й об‟єктно-орієнтоване програмування...............................

496

14.2

Визначення класу .....................................................................................

498

14.3

Створення об‟єктів класу ........................................................................

500

14.4

Використання загальнодоступних та приватних елементів класу......

501

14.5

Конструктори ............................................................................................

504

14.5.1

Властивості конструкторів................................................................

504

14.5.2

Конструктор з параметрами..............................................................

505

14.5.3

Конструктор зі списком ініціалізації ...............................................

506

14.5.4

Конструктор за замовчуванням ........................................................

507

14.5.5

Конструктор копіювання...................................................................

507

14.6

Деструктори ..............................................................................................

512

7

14.7

Успадкування..........................................................................................

515

14.8

Поліморфізм ...........................................................................................

519

14.9

Класи та об‟єкти бібліотеки компонентів ...........................................

526

14.9.1

Ієрархія класів бібліотеки візуальних компонентів ......................

526

14.9.2

Побудова компонента-нащадка .......................................................

529

14.9.3

Інсталяція компонента.......................................................................

538

Розділ 15. Налагодження програм .........................................................

542

15.1

Помилки компіляції ................................................................................

542

15.2

Попередження і підказки .........................................................................

556

15.3

Компонування...........................................................................................

557

15.4

Помилки етапу виконання .......................................................................

558

 

 

Бібліографічний список ................................................................................

546

Додаток А Таблиці кодів ASCII ..................................................................

565

Додаток Б Операції мови С++.......................................................................

569

Додаток В Функції стандартної бібліотеки С++.

 

 

Вміст заголовних файлів ...........................................................

571

Алфавітний покажчик....................................................................................

577

ПЕРЕДМОВА

Найбільш поширеною мовою програмування упродовж кількох останніх десятиліть, поза жодним сумнівом, є мова С++, на підставі якої “виросло” багато сучасних мов програмування і програмних середовищ. Цьому сприяли такі її властивості, як лаконічність, потужність, гнучкість, мобільність, можливість доступу до всіх функціональних засобів системи. Програмувати на С++ можна як для Windows, так і для Unix, причому для кожної з операційних систем існує значна кількість засобів розробляння: від компіляторів до потужних інтеракти-

вних середовищ, як, приміром, Borland С++ Builder, Microsoft Visual C++ чи Visual Studio.NET.

Щоб не звужувати вибір читача щодо технічних засобів, а зосередити його мовою С++, її можливостях та особливостях, навчальний посібник подано як ґрунтовний і водночас доволі легкий для сприйняття матеріалу стосовно вивчення класичних методів програмування. Видання призначене як для початківців, які прагнуть навчатися програмувати мовою С++, так і для тих, хто має базові знання з програмування і прагне їх поглибити та освоїти більшість методів і прийомів, які має “на озброєнні” програміст. У посібнику містяться не лише тривіальні алгоритми, але й задачі з опрацювання структурованих типів даних, робота з вказівниками, засоби динамічного керування пам‟яттю тощо. Значну увагу приділено опрацюванню динамічних структур даних, а саме, програмуванню списків, дерев, автоматів. Окремий розділ присвячений засобам об‟єктно-орієнтованого програмування.

Навчальний посібник може використовуватись як джерело прикладів, вправ та програм для розглядання. Автори намагались показати специфіку основних засобів та можливостей потужної й гнучкої мови С++ на значній кількості прикладів працездатних програм і програмних фрагментів, реалізованих у середовищі Borland С++ Builder, які можуть бути використані у різних версіях С++. Автори сподіваються, що численна кількість прикладів програм викличе у читача бажання не лише реалізувати їх на комп‟ютері та перевірити їхню працездатність, але й змінити та удосконалити ці програми.

Посібник складається з п‟ятнадцяти розділів.

На початку, в розд. 1, можна ознайомитись зі структурною складовою комп‟ютера та призначенням його основних пристроїв, вивчити специфіку програмного забезпечення, особливості зберігання інформації в комп‟ютері й правила переведення чисел з однієї системи числення до іншої. Крім того, у першому розділі описані етапи розв‟язування обчислювальних задач на комп‟ютері та різновиди складання алгоритмів.

У розд. 2 описані інструментальні засоби інтерактивного середовища С++ Builder – однієї із найпотужніших систем, яка дозволяє на найсучаснішому рівні створювати як окремі прикладні програми Windows, так і розгалужені комплекси, призначені для роботи в корпоративних мережах і в Інтернеті. Середовище С++ Builder поєднує засоби мови програмування С++ та компонентноорієнтований підхід до створення програм. Поєднання простоти освоєння візу-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]