- •О.Ф.Тарасов, о.В.Алтухов
- •1 Заняття № 1 Вивчення інтегрованого середовища с
- •1.1 Теоретичні відомості
- •1.2 Хід роботи
- •1.3 Вимоги до звітів
- •1.4 Питання для контролю і самостійної роботи
- •2 Заняття № 2 Функції введення/виведення даних printf( ), scanf( ). Лінійні обчислювальні процеси
- •2.1 Теоретичні відомості
- •2.2 Хід роботи
- •2.3 Індивідуальне завдання до заняття №2
- •2.4 Питання для контролю і самостійної роботи
- •3 Заняття № 3 Розробка програм зі скалярними типами даних
- •3.1 Теоретичні відомості
- •Приклад
- •3.2 Хід роботи
- •3.3 Індивідуальне завдання до заняття № 3
- •3.4 Питання для контролю і самостійної роботи
- •4 Заняття № 4 Розробка програм з циклічними обчислювальними процесами
- •4.1 Теоретичні відомості
- •Алгоритм роботи оператора циклу for ( )
- •4.2 Хід роботи
- •4.3 Індивідуальне завдання до заняття № 4
- •4.4 Питання для контролю і самостійної роботи
- •5 Заняття № 5
- •Розгалуження обчислювального процесу.
- •Оператори, які реалізують розгалуження: if... Else, switch,
- •Умовна операція ( ? : )
- •5.1 Теоретичні відомості
- •Умовна тернарна операція ( ? : )
- •Оператор варіанта switch
- •Приклад
- •5.2 Хід роботи
- •5.3 Індивідуальне завдання до заняття № 5
- •5.4 Питання для контролю і самостійної роботи
- •6 Заняття № 6 Операції с, їхні пріоритети і використання. Перетворення типів
- •Пріоритет операцій і порядок виконання (асоційованість)
- •(Новий_тип) Операнд
- •Приклад
- •6.2 Хід роботи
- •6.3 Індивідуальне завдання до заняття № 6
- •6.4 Питання для контролю і самостійної роботи
- •7 Заняття № 7
- •7.1 Теоретичні відомості
- •Оголошення функцій (створення прототипів)
- •([ Список_типів_параметрів ])
- •Синтаксис визначення функцій
- •[ Return Значення_типу_що_повертається ]
- •Використання локальних і глобальних перемінних у функціях. Виклик функції
- •Приклад
- •7.2 Хід роботи
- •7.3 Індивідуальне завдання до заняття № 7
- •7.4 Питання для контролю і самостійної роботи
- •8 Заняття № 8
- •8.1 Теоретичні відомості
- •Основні операції з покажчиками
- •Покажчики і цілі величини
- •Динамічне розміщення покажчиків у пам'яті
- •Приклад
- •Приклад
- •8.2 Хід роботи
- •8.3 Індивідуальне завдання до заняття № 8
- •8.4 Питання для контролю і самостійної роботи
- •9 Заняття № 9
- •9.1 Теоретичні відомості
- •Приклад
- •9.2 Хід роботи
- •9.3 Індивідуальне завдання до заняття №9
- •9.4 Питання для контролю і самостійної роботи
- •10 Заняття № 10
- •10.1 Теоретичні відомості
- •Приклад
- •10.2 Хід роботи
- •10.3 Індивідуальне завдання до заняття № 10
- •10.4 Питання для контролю і самостійної роботи
- •Заняття №11 Обробка символьних даних
- •Теоретичні відомості
- •Індивідуальне завдання до заняття №11
- •Питання для контролю і самостійної роботи
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Теоретичні відомості
- •Приклад
- •Індивідуальне завдання до завдання №13
- •Питання для контролю і самостійної роботи
- •Заняття № 14 Розробка програм зі складеними типами даних
- •Структури
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Заняття № 15 Використання покажчиків для роботи зі складеними типами даних (2години)
- •Теоретичні відомості
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Використання покажчиків для роботи з функціями
- •Покажчики як параметри функції
- •[Const ] Тип * Ім'я_покажчика
- •Приклад
- •Хід роботи
- •Індивідуальне завдання до заняття №16
- •Питання для контролю і самостійної роботи
- •Використання функцій високого і низького рівня для роботи з потоками (файлами)
- •Функції для роботи з файлами
- •Хід роботи
- •Індивідуальне завдання до заняття №17
- •Питання для контролю і самостійної роботи
- •Розробка програм із багатофайловою структурою. Заголовочні файли. Класи пам'яті перемінних і функцій
- •Керування многофайловими проектами
- •Використання адміністратора проектів
- •Приклад
- •Основний файл проекту
- •Заголовний файл
- •Хід роботи
- •Індивідуальне завдання до заняття №18
- •Питання для контролю і самостійної роботи
- •Графічні функції
- •Графічні примітиви
- •Хід роботи
- •Індивідуальне завдання до заняття №19
- •Питання для контролю і самостійної роботи
- •Заняття№20 Розробка програм з використанням класів
- •Теоретичні відомості
- •Оголошення і визначення класу
- •Тіло класу
- •Інкапсуляція. Керування доступом до членів класу
- •Використання даних-членів класу
- •Хід роботи
- •Індивідуальне завдання до заняття №20
- •Питання для контролю і самостійної роботи
- •Заняття№21 Використання конструкторів і деструкторів у класах
- •Теоретичні відомості
- •Ініціалізація об'єктів класу
- •Деструктори
- •Виклик деструкторів
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •"Друзі" класів (friend)
- •Хід роботи
- •Індивідуальне завдання до заняття №22
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Ініціалізація об'єктів класу
Об'єкти класів з конструкторами можуть ініціалізуватися за допомогою списку, що задається в круглих дужках (списку ініціалізаторів). Цей список використовується як список переданих конструктору аргументів. При виклику конструкторів варто уникати неоднозначностей.
Приклад
main( )
{
X one; //Викликається конструктор X::X( ) за умовчанням
//для об'єкта one класу Х
X two(1); //Викликається інший (перевантажений) конструктор X::X(int)
X three = 1; //Викликається X::X(int) – альтернативна форма зі знаком (=)
Х three(10, 8); //Використовувати не можна, неоднозначно заданий
//конструктор X(int, int ) або X::X(int а = 5, int b = 6)
X four = one; //Викликається X::X(const X&) для копіювання
//об'єкта one у four
X five(two); //Викликається X::X(cont X&) для копіювання two у five
… }
Конструктор сприймає значення як параметри і виконує присвоювання даним-членам у тілі функції конструктора. Визначення конструктора як і будь-якої функції-члена може робитися в тілі класу.
Приклад
class X
{
int i, j; //За умовчанням private
public:
X(int a, int b) { i = a; j = b; } //Визначення конструктора в класі, він має
//доступ к і и j
X(int a, int b) : a(i), b(j) { } //Альтернативна форма для ініціалізації а і b
};
В обох випадках оголошеня об'єкта х та ініціалізація X x(1, 2) привласнює значення x::i = 1 і значення x::j = 2.
Деструктори
Деструктор класу викликається для руйнування елементів об'єкта до знищення самого об'єкта. Деструктор являє собою функцію-член, ім'я якої збігається з ім'ям класу, перед яким знаходиться символ тильди (~). Деструктор не може сприймати яких-небудь параметрів, а також не повідомляє типу та не повертає значення. Якщо деструктор не оголошений для класу явно, компілятор генерує його автоматично. Необхідність деструкторів у значній мірі зв'язана з покажчиками і динамічним виділенням пам'яті.
Коли відбувається динамічне виділення пам'яті для даних в об'єкті за допомогою new і об'єкти з покажчиками-членами виходять за межі області дії, то необхідний деструктор, який звільняє пам’ять виділену у “купі” і зв’язану з покажчиком-членом об'єкту. Для цього у деструкторі використовується оператор delete.
Приклад
class X
{ char *pt;
int i;
public:
X( ) { i = 0; pt = NULL; } //Визначення конструктора в класі
X( ) { delete pt; } //Визначення деструктора в класі, він звільнить
}; //пам’ять, яка буде виділена у “купі” і зв’язана з покажчиком pt
Оператор delete також використовується для знищення тих об'єктів, для яких пам'ять розподілялася за допомогою new. Коли відбувається динамічне виділення пам'яті для об'єктів за допомогою new, вони зв'язуються з покажчиками. Коли ці об'єкти виходять за межі області дії то для знищення такого об'єкта повинний явно задаватися оператор delete.
Приклад
main( )
{ X *pointer = new X; //Пам'ять для об'єкта класу Х виділена в купі
…
delete pointer; // delete звільняє пам’ять, яка виділена у “купі”
} //для об'єкта класу Х і зв’язана з покажчиком pointer