- •О.Ф.Тарасов, о.В.Алтухов
- •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
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Питання для контролю і самостійної роботи
Дайте визначення поняттям: об'єкт, клас, дані-члени класу, функції-члени класу.
У чому відмінність між класом і об'єктом класу ?
Чи можна визначити функцію усередині класу ?
Чи можна використовувати в різних класах однакові імена даних і функцій-членів, поясніть чому так чи ні ?
Які класи пам'яті можна використовувати при оголошенні об'єктів ?
Чи можна використовувати класи пам'яті при оголошенні членів класу, які і чому ?
Що означає термін інкапсуляція ?
Як виконується керування доступом до елементів класу ?
Що означають специфікатори доступу: public, protected, private ?
Назвіть специфікатор доступу за умовчанням до членів класу і структури.
Чи обмежується кількість і порядок розташування розділів у класі ?
Назвіть особливості використання статичних (static) членів класу.
Для чого використовується оператор дозволу області видимості (::) ?
Чи можуть структури містити функції як елементи ?
Чи можуть структури і класи бути вкладеними ?
Яка область дії членів класу ?
Як одержати доступ до статичних членів класу з програми ?
Як одержати доступ до приватних членів класу з програми ?
Як одержати доступ до відкритих членів класу з програми ?
Чи можна оголосити тип у тілі класу при оголошенні класу ?
Заняття№21 Використання конструкторів і деструкторів у класах
(2 години)
Ціль роботи: вивчити і навчитися використовувати механізм роботи з конструкторами і деструкторами.
Теоретичні відомості
Конструктори і деструктори
Існує кілька спеціальних функцій-членів, що визначають, яким чином об'єкти класу створюються, ініціалізуються, копіюються і руйнуються. Конструктори і деструктори є найбільш важливими з них. Вони мають більшість характеристик звичайних функцій-членів: оголошуються в класі і визначаються в межах класу чи поза ним. Однак, вони володіють і деякими унікальними властивостями:
Вони мають ім'я, що збігається з ім'ям класу (деструктори із символом тильди ~ )
Конструкторів може бути декілька, у тому числі конструктор за умовчанням, деструктор може бути тільки один.
Вони не мають оголошень типів значень, що повертаються, навіть void.
Вони не можуть бути успадкованими, хоча похідний клас може викликати конструкторы і деструктор базового класу.
Конструктори, як і більшість функцій мови С++, можуть мати аргументи за умовчанням чи використовувати списки ініціалізації аргументів.
Деструктори можуть мати атрибут virtual, але конструктори не можуть.
Не можна працювати з адресами цих функцій.
Приклад
void *ptr = base::base( ); //Неприпустимо, base( ) - функція-конструктор
//класу base, а також не повертає значення
Викликати конструктор тим же чином, що і звичайну функцію, не можна. Виклик деструктора допустимий тільки з цілком уточненим ім'ям.
Приклади
X *p; // Покажчик на клас Х
X x; // Оголошення об'єкта х класу Х
p = &x; // Покажчик p зберігає адресу об'єкта х
p -> X:: ~X( ); // Припустимий виклик деструктора
X::X( ); // Неприпустимий виклик конструктора
При оголошенні об'єктів компілятор викликає один з конструкторів автоматично.
Аналогічно при знищенні об'єктів компілятор автоматично викликає деструктор.
Конструктори і деструктори при необхідності динамічного виділення пам'яті для об'єкта можуть виконувати виклики операторів new і delete.
Конструктор створює об'єкт х і виконує ініціалізацію його даних-членів. При копіюванні об'єкта даного класу відбувається неявний виклик відповідного конструктора. Дані-члени об'єкта класу, у якого всі елементи загальнодоступні (public) і без конструкторів базових класів (звичайно це структура) можуть виконувати ініціалізацію за допомогою списку ініціалізаторів. Деструктор руйнує об'єкт класу, створений конструктором, коли цей об'єкт виходить з області видимості. Конструктори глобальних об'єктів викликаються до виклику функції main( ). Локальні об'єкти створюються, як тільки стає активною область дії (видимості) об'єкта. При цьому конструктор викликається щораз.
Приклад
class Х
{...public:
X( ); // Конструктор класу Х за умовчанням
Х(const X&); // Конструктор копіювання, в нього передається
// посилання на Х
~X( ); // Деструктор класу Х
};
Формальні параметри конструктора при його оголошенні можуть бути будь-якого типу, за винятком класу, елементом якого є даний конструктор. Конструктор копіювання приймає як параметр посилання на свій власний клас. Конструктор, що не приймає параметрів, називається конструктором за умовчанням: Х::Х( ).
Як і усі функції-члени, конструктори можуть мати аргументи, які використовуються за умовчанням. Наприклад, можливі наступні оголошення конструкторів у класі (таблиця 21.1).
Таблиця 21.1- Приклади оголошення класу і визначення конструкторів
Оголошення класу |
Визначення конструкторів поза класом |
class X { int і, j; // За умовчанням private public: X( ); // Конструктор за умовчанням X(int ); // Перевантажені конструктори X(int, int ); // можуть викликатися c одним // X(int) чи двома X(int, int) аргументами X(int а = 5, int у= 6); //Може викликатися без //аргументів, з одним чи двома аргументами X(const Х&); // Конструктор копіювання }; |
Х::Х ( ) { і = 0; j = 0; }
Х::Х(int a ) { і = a; j = 0; } Х::Х(int a, int b) { i = a; j = b; }
Х х; //Оголошення //об'єкта х, викликається //конструктор за //умовчанням |