Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С++_навч_пос14_new.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.86 Mб
Скачать

Міністерство освіти і науки України

Івано-Франківський національний технічний

університет нафти і газу

Кафедра програмного забезпечення автоматизованих систем

Кафедра технології нафтогазового машинобудування

Відкритий міжнародний університет розвитку людини "Україна"

Івано-Франківська філія

Кафедра інформаційних технологій та програмування

Р.В.Скальський

Програмування на С++.

Приклади програм з коментаріями

Навчальний посібник

Для студентів спеціальностей

"Програмне забезпечення автоматизованих систем"

"Технологія машинобудування"

Івано-Франківськ

2008

МВ 02070855-2071-2008

Копей В.Б., Лютак І.З., Сторож Я.Б. Програмування на С++. Приклади програм з коментаріями: Навчальний посібник. – Івано-Франківськ: Факел, 2008. – 170 с.

Навчальний посібник містить довідкові матеріали по мові програмування С++: термінологічний словник термінів програмування та приклади програм на мові С++ з детальними коментаріями. Пропонується для самостійного опрацювання студентами спеціальностей "Програмне забезпечення автоматизованих систем" та "Технологія машинобудування". Може бути корисним усім, хто вивчає та програмує на С++.

Рецензенти:

Канд. техн. наук, доцент кафедри комп’ютеризованого машинобудівного виробництва ІФНТУНГ О.Р. Онисько

Доктор техн. наук, зав. кафедри програмного забезпечення автоматизованих систем ІФНТУНГ В.М. Юрчишин

Канд. техн. наук, проректор з наукової роботи Відкритого міжнародного університету розвитку людини "Україна" К.О. Кольченко

Канд. техн. наук, доцент кафедри комп’ютерних інформаційних технологій Тернопільського національного економічного університету М.Я. Шпінталь

Канд. техн. наук, доцент кафедри інформатики Прикарпатського національного університету ім. Василя Стефаника В.О. Горелов

Дане видання – власність ІФНТУНГ. Забороняється тиражування та розповсюдження без відома автора.

Зміст

с.

Передмова 10

1 Програмування: термінологічний словник 11

1.1 Алгоритм, програма, мови програмування 11

1.2 Елементи мови програмування 13

1.3 Основи об’єктно-орієнтованого програмування 22

1.4 Сучасні об’єктно-орієнтовані технології 27

2 Основи програмування мовою C++ 33

2.1 Найпростіша програма 33

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

2.3 Основні типи даних С++ 34

2.4 Граничні значення і розмір змінних різних типів 35

2.5 Приведення (перетворення) типів 35

2.6 Арифметичні оператори С++ 35

2.7 Стандартні математичні функції 36

2.8 Команди потокового вводу-виводу 36

2.9 Стандартні функції вводу-виводу мови С 37

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

2.11 Оператор умовного переходу if-else 38

2.12 Оператор switch 38

2.13 Тернарний оператор ?: 39

2.14 Цикл з лічильником for 39

2.15 Оператор циклу з передумовою while 39

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

2.17 Оператори break і continue 40

2.18 Вказівники і адреси даних 41

2.19 Оператори динамічного розподілу пам’яті new і delete 41

2.20 Масиви 41

2.21 Динамічні масиви 42

2.22 Перерахований тип enum 43

2.23 Створення функцій С++ 43

2.24 Глобальні, локальні і статичні змінні 44

2.25 Масив як параметр функції 45

2.26 Рядки і функції обробки рядків 45

2.27 Структури 46

2.28 Обробка виключних ситуацій 47

3 Об’єктно-орієнтоване програмування мовою C++ 48

3.1 Простий клас 48

3.2 Структура 49

3.3 Об’єднання 49

3.4 Конструктор 49

3.5 Деструктор 50

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

3.7 Динамічне створення об’єктів типу класу 51

3.8 Вкладені класи (1) 52

3.9 Вкладені класи (2) 53

3.10 Вкладені класи (3) 53

3.11 Вкладені класи (4) 54

3.12 Вкладені класи (5) 55

3.13 Дружні функції (1) 55

3.14 Дружні функції (2) 56

3.15 Успадкування 56

3.16 Статичний поліморфізм, перевантаження методів 57

3.17 Перевантаження операторів 58

3.18 Динамічний поліморфізм, віртуальні функції (1) 58

3.19 Динамічний поліморфізм, віртуальні функції (2) 60

3.20 Успадкування множинне 60

3.21 Діамантове успадкування 61

3.22 Діамантове віртуальне успадкування 62

3.23 Динамічне приведення і ідентифікація типів (dynamic_cast і typeid) 63

3.24 Шаблони функцій (1) 64

3.25 Шаблони функцій (2) 64

3.26 Шаблони класів 65

3.27 Шаблони класів і віртуальні методи 66

3.28 Застосування флагів форматування при потоковому вводу-виводі 66

3.29 Установка флагів за допомогою функцій-маніпуляторів 67

3.30 Створення функції-маніпулятора 67

3.31 Перевантаження операторів потокового вводу-виводу 68

3.32 Клас рядкових потоків 69

3.33 Бінарні файли 69

3.34 Бінарні файли прямого доступу 70

3.35 Шаблон структури "пара" бібліотеки STL 71

3.36 Використання бібліотеки STL 72

4 Приклади використання компонентів VCL 75

4.1 Поради для вивчення компонентів: 75

4.2 Простий проект типу Win32 Application у C++ Builder 75

4.3 Класи 78

AnsiString (String) – тип рядків 78

TApplication - додаток 79

TScreen – стан екрану 81

Set – шаблон класу множина 81

TList – список вказівників, TObject – базовий клас VCL 82

TComponent – базовий клас компонентів, TControl – базовий клас візуальних компонентів 82

TWinControl – базовий клас віконних компонентів, TGraphicControl – базовий клас графічних компонентів 83

TStrings – базовий клас списку рядків, TStringList – список рядків 84

TStream – базовий клас потокових об’єктів, TMemoryStream – потік в динамічній пам’яті 84

TThread – потік керування 85

TForm - форма 86

4.4 Компоненти Standard 90

TFrame – кадр, контейнер компонентів 90

TMainMenu – головне меню, TPopupMenu – контекстне меню, TActionList – список дій 90

TLabel – мітка, надпис 91

TButton - кнопка 91

TRadioButton - перемикач 92

TCheckBox - прапорець 92

TEdit – поле редагування 93

TMemo – багаторядкове поле редагування 93

TListBox – список рядків 93

TComboBox – випадаючий список рядків 94

TScrollBar – смуга прокручування 94

TPanel - панель 94

4.5 Компоненти Additional 95

TBitBtn – кнопка з піктограмою 95

TSpeedButton – кнопка з піктограмою і фіксацією 96

TMaskEdit – поле редагування з шаблонами 96

TStringGrid - таблиця 96

TDrawGrid – таблиця зображень 97

TImage – контейнер графічних зображень, TPicture – графічне зображення 97

TShape – геометрична форма, TBrush - пензель, TPen - перо 98

TScrollBox – контейнер прокручування 98

TCheckListBox – список рядків з індикаторами 98

TSplitter - розділювач 99

TControlBar – контейнер інструментальних панелей 99

TApplicationEvents – перехоплювач подій додатку 99

TValueListEditor – компонент редагування списків, які містять пару ім’я/значення 100

TLabeledEdit – поле редагування з надписом 101

TColorBox – вікно вибору кольору, TColor - колір 101

TChart - діаграма 101

4.6 Компоненти Win32 102

TTabControl - вкладки 102

TPageControl - сторінки 102

TImageList – список зображень, TBitmap – зображення, бітова матриця 102

TRichEdit – багаторядкове поле редагування з розширеним форматуванням 103

TTrackBar - повзунок 104

TProgressBar – індикатор прогресу 104

TUpDown – спарені кнопки вверх-вниз, лічильник 104

THotKey – клавіша гарячого виклику 105

TAnimate – анімація відеозаписів 105

TDateTimePicker – вибір дати/часу, TDateTime – дата/час 106

TMonthCalendar - календар, TDate - дата 106

TTreeView – деревовидний список 107

TListView – табличний список елементів 107

THeaderControl - заголовки 108

TStatusBar – рядок стану 109

TToolBar – панель інструментів 110

TCoolBar – панель зі шторками 111

TPageScroller – панель з прокручуванням 111

TComboBoxEx – комбінований список зі значками 111

4.7 Компоненти System 111

TTimer - таймер 112

TPaintBox – область рисування, TCanvas - канва, TBrush - пензель, TPen - перо 112

TMediaPlayer – мультимедіа плейер 113

TOleContainer – контейнер OLE 114

TDdeServerConv, TDdeServerItem, TDdeClientConv, TDdeClientItem – компоненти для динамічного обміну даними 115

4.8 Діалогові вікна 117

TOpenDialog – відкриття файлу, TSaveDialog – збереження файлу 117

4.9 Робота з базами даних 118

Робота з базами даних у C++ Builder за допомогою BDE 118

Інший варіант доступу до бази даних (за допомогою TDatabase) 124

Робота з базами даних у C++ Builder за допомогою ADO 125

4.10 Компоненти Indy для роботи з мережею 126

5 Створення компонентів VCL 128

6 Створення DLL 132

7 Створення і використання компонентів COM 133

8 Створення компоненту ActiveX у C++ Builder 134

9 Створення активної форми (Active Form) 135

10 Робота з компонентами-серверами COM MS Word і MS Excel 136

11 Створення компонентів CORBA 138

12 Бібліотека основних класів Microsoft MFC 142

CEdit - поле редагування (1) 142

CEdit - поле редагування (2) 143

CButton - прапорець 143

CButton - кнопка (1) 143

CButton - кнопка (2) 144

CButton - перемикач 144

CListBox - список 145

CComboBox - комбінований список 146

CString - рядок 146

CImage - рисунок, CDC - контекст пристрою 147

CClientDC - контекст пристрою, CPoint - точка 148

Створення додатків Win32 з графічним інтерфейсом 148

13 Створення додатків Win32 за допомогою Visual C++ .NET 152

14 Задачі 156

Задачі 1 Основи програмування мовою С++ 156

Задачі 2 Об’єктно-орієнтоване програмування мовою С++ 157

Задачі 3 Сучасні об’єктно-орієнтовані технології 162

Перелік рекомендованих джерел 165

Мова програмування С++ для початківців 165

Об’єктно-орієнтоване програмування 165

Мова програмування С++ 166

Стандартна бібліотека С++ 168

Програмування на Borland C++ Builder 169

Технологія COM 170

Програмування на Visual C++ MFC та .NET 170

Програмування на C# .NET 171

Передмова

Термінологічний словник містить основні терміни програмування на алгоритмічній і об’єктно-орієнтованій мові С++, а також терміни сучасних об’єктно-орієнтованих технологій у програмуванні. Приклади програм підібрані прості, загальні і завершені, які охоплюють усі основні сторони програмування на С++: імперативне, об’єктно-орієнтоване і узагальнене програмування на С++, використання стандартних бібліотек С++, використання бібліотеки VCL Borland C++ Builder 6, основи технологій DLL, COM, CORBA, MFC, .NET. Вихідні коди програм містять детальні і чіткі коментарії без будь-яких додаткових зовнішніх пояснень. Тому, посібник має довідковий характер, і бажано його використовувати паралельно з рекомендованою авторами літературою по мові С++ (с.165). Порядок подання термінів і прикладів програм відповідає класичному порядку вивчення мови С++ та сучасних об’єктно-орієнтованих технологій у програмуванні. Приклади опрацьовані в середовищі Borland C++ Builder 6 (для програмування прикладів MFC і .NET використовували Microsoft Visual C++ 8).

Пропонується для самостійного опрацювання студентами спеціальності "Програмне забезпечення автоматизованих систем" при вивченні навчальної дисципліни "Об’єктно-орієнтоване програмування" та студентами спеціальності "Технологія машинобудування" при вивченні навчальних дисциплін: "Сучасні мови програмування" (для спеціалізації "Комп’ютеризоване машинобудівне виробництво"), "Основи наукових досліджень", "Засоби програмного керування технологічними системами", "Моделювання виробничих систем в машинобудуванні" при виконанні курсового і дипломного проектування.

Може бути корисним усім, хто вивчає та програмує на С++.

1 Програмування: термінологічний словник

1.1 Алгоритм, програма, мови програмування

Комп’ютер (електронна обчислювальна машина (ЕОМ)) – цифрова обчислювальна машина, побудована на електронних компонентах, призначена для автоматизації процесу обробки інформації і обчислень, які виконуються у відповідності з заданим алгоритмом. Складається з центрального процесору, пристроїв оперативної і зовнішньої пам’яті, пристроїв вводу-виводу.

Центральний процесор ЕОМ - центральний пристрій (або комплекс пристроїв) ЕОМ, який виконує арифметичні і логічні операції, задані програмою перетворення інформації, управляє обчислювальним процесом і координує роботу периферійних пристроїв системи. Процесор виконує команди на машинній мові, які зберігаються в оперативній пам’яті. Складається з пристрою керування, арифметико-логічного пристрою і набору регістрів (комірок швидкодіючої пам'яті). Процесору характерна певна система команд.

Пам’ять ЕОМ - частина ЕОМ, призначена для запису, зберігання і видачі інформації, представленій в кодовій формі; утворюється з одного або декількох запам’ятовуючих пристроїв (ЗП). Поділяється на оперативну (або основну), зовнішню (допоміжну) і буферну.

Оперативна пам’ять ЕОМ призначена для тимчасового збереження команд і даних. Кожен елемент пам'яті, називається словом пам'яті, має унікальну адресу, а кожне слово складається з фіксованого числа бітів, зазвичай з 16, 32 або 64 бітів.

Команда ЕОМ (процесора) - вказівка, що записана на машинній мові конкретної обчислювальної машини і визначає її дії при виконанні окремої операції або частини обчислювального процесу.

Програма обчислювальної машини, опис алгоритму рішення задачі, заданий на мові програмування (на машинну мову конкретної ЕОМ переводиться автоматично за допомогою транслятора). Процес складання програм називають програмуванням.

Програмне забезпечення ЕОМ (математичне забезпечення ЕОМ) - комплекс програм, описів і інструкцій, що забезпечують автоматичне функціонування ЕОМ. Розрізняють загальне програмне забезпечення (для організації обчислювального процесу на даній ЕОМ) і спеціальне програмне забезпечення (для вирішення конкретних завдань).

Програмування - процес підготовки завдань для вирішення їх на ЕОМ, що складається з наступних етапів: складання алгоритму; складання програми на мові програмування; трансляція програми з мови програмування на машинну мову.

Системне програмування – програмування базового (загального) програмного забезпечення ЕОМ (операційних систем, трансляторів, сервісних засобів і т.д.)

Прикладне програмування – програмування спеціального програмного забезпечення прикладного характеру, яке призначене для рішення конкретних задач з різних областей (наука, техніка, виробництво, сфера обслуговування, навчання і т.д.)

Алгоритм - спосіб (програма) розв'язування обчислювальних і інших задач, який точно описує, як і в якій послідовності отримати результат, який однозначно визначається початковими даними. Алгоритм - одне з основних понять математики і кібернетики. У обчислювальній техніці для опису алгоритму використовуються мови програмування. Основними властивостями алгоритму є: зрозумілість для виконавця, дискретність, визначеність, результативність і масовість. Алгоритм може бути представлений словесно, графічно і програмно.

Мови програмування - формальні мови для опису даних (інформації) і алгоритму (програми) їх обробки на ЕОМ. Мови програмування можна розділяти на машинні, низького рівня (мови асемблера) і високого рівня (наприклад, алгоритмічні мови). За рівнем спеціалізації розрізняють спеціальні, спеціалізовані і універсальні мови програмування.

Машинна мова - мова програмування, призначена для представлення програм у формі, яка дозволяє виконувати їх на конкретній ЕОМ. Машинною мовою, також, називають систему команд ЕОМ. Наприклад, система команд процесорів Intel 8086, 386, Pentium.

Асемблер - допоміжна програма у складі операційної системи для автоматичного перекладу програми, що підлягає виконанню на ЕОМ, на машинну мову.. Один з видів транслятора.

Середовище програмування - набір програм-інструментів, які використовуються для створення програм. Може містити редактор, компілятор або інтерпретатор, бібліотекар, компонувач, завантажувач, налагоджувач, засоби тестування та ін.

Транслятор - в інформатиці, програма ЕОМ, призначена для автоматичного перекладу опису алгоритму з однієї мови програмування на іншу, зокрема на машинну мову. Процес перекладу називається трансляцією. Транслятори поділяються на компілятори і інтерпретатори.

Компілятор – транслятор, який перекладає вихідний код програми на машинну (або іншу) мову у вигляді об’єктного коду. Компілятор також знаходить в програмі помилки компіляції і оптимізує команди машинної мови, тому скомпільовані програми працюють швидше інтерпретованих.

Інтерпретатор – транслятор, який почергово виконує команди інтерпретованої програми. Як інтерпретатори працюють мови Basic, LISP, Perl, Python.

Мови високого рівня – машинно-незалежні мови, які імітують природні, використовуючи зручні для сприйняття конструкції, деякі слова розмовної мови і загальноприйняті математичні символи. Поділяються на алгоритмічні (наприклад, Pascal), логічні (наприклад, Prolog) та об’єктно-орієнтовані (наприклад, С++).

Алгоритмічна мова – формалізована мова високого рівня для однозначного запису алгоритмів. Складається з набору символів (алфавіт), синтаксичних правил і семантичних визначень. Є основою мов програмування. Наприклад: Basic, C, Pascal, Fortran, C++, Java.

Еволюція мов програмування відбувалась в такому напрямку: машинні мови і асемблери; непроцедурні алгоритмічні мови; процедурні алгоритмічні мови для структурованого програмування; мови об’єктного і об’єктно-орієнтованого програмування.