- •О.Ф.Тарасов, о.В.Алтухов
- •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
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Тіло класу
Перемінна count у розглянутому прикладі оголошена усередині класу. Таким чином, count - це перемінна-член класу. Будь-яка перемінна, визначена в класі, має область видимості класу. Область видимості перемінноої-члена простирається від міста її оголошення в класі до кінця оголошення класу.
У С++ дані і функції-члени, оголошені усередині класу, не містять специфікацію класу пам'яті (крім static) і лексично належать області дії даного класу.
Клас має стільки перемінних, скільки необхідно. Перемінні можуть бути будь-якого типу, включаючи інші класи, об'єкти, покажчики на об'єкти класів і навіть покажчики на об'єкти, що динамічно розподіляються у пам'яті.
Клас Counter містить оголошення функцій SetValue ( ) і GetValue ( ), що називаються функціями-членами класу. Ці функції поки не визначені, вони тільки оголошені. Як і інші функції в С++, функції-члени повинні бути оголошені до використання. Оголошення повинне бути повним, включаючи тип значення, що повертається, і типи аргументів.
Приклад
void Counter :: Setvalue (long value) { count = value; // Зміна значення // перемінної-члена класу count } |
long Counter :: GetValue (void) { return count; // Повернути // значення даного-члена count } |
При визначенні функції-члена після типу значення, що повертається, указується, членом якого класу є функція. Для цього потрібно написати ім'я класу і поставити за ним дві двокрапки (::) оператор дозволу області видимості.
Визначення функцій для класу Counter звичайно здійснюється в інших модулях. Формат визначення функції-члена класу має винляд
<Тип_значення_що_повертається> <Ім'я_класу> :: <Ім'я_функції> (<Оголошення_ параметрів>) { <Тіло_функції> }
Доступ до членів класу в загальному випадку здійснюється за допомогою нотації
<Ім'я_об'єкта> . <Ім'я_члена_класу>
Для функцій-членів, що мають прямий доступ до даних і функцій-членів класу, вказувати <Ім'я_об'єкта> не треба.
Клас, оголошений усередині іншого класу, називається вкладеним класом. Його ім'я є локальним для класу, що його охоплює. Вкладений клас має область дії, що лежить усередині області дії класу, що його охоплює. Ця вкладеність є чисто лексичною. Вкладений клас не має ніяких додаткових привілеїв у доступі до елементів класу, що його охоплює, і навпаки.
Приклади:
struct outer //Структура типу outer, всі члени доступні (public)
{ typedef int tint; // Оголошення типу outer :: tint - це синонім типу int
struct inner // Вирази outer ::inner - це вкладена структура
{ static int x; …}; // Статична перемінна (член) структури типу inner
tint y;
int f( ); // Функція-член структури типу outer.
}
int outer :: f( ) // Визначення функції-члена структури типу outer
{ tint y1 = х; // х – тут доступний, тому що функції-члени
… return у1; // мають доступ до даних-членів класу (структури)
}
outer :: inner :: x = 5; // Визначення статичного даного-члену класу outer
outer :: tint у5 = 2; // Визначення перемінної типу outer :: tint у програмі
Доступ до статичного даного-члена класу здійснюється за допомогою імені класу (outer :: inner ::), а не за допомогою імені об'єкта класу.
Використання класу
Для того щоб використовувати клас, потрібно оголосити (створити) об'єкт цього класу. Об'єкти класу визначаються так само, як структурні чи скалярні перемінні. Оголошення класу повинне бути розташоване до використання класу. Користувачу надається опис класу, але не обов'язково його внутрішня реалізація. Щоб оголосити перемінну (об'єкт) people класу (типу) Counter, використовується наступний запис
Counter people; // Аналогічно оголошенню будь-якої перемінної int a;
Counter *ptr; // Аналогічно int *p;
Для виклику функції-члена класу для об'єкта використовується той же запис, що і для звертання до елемента структури: за крапкою вказують ім'я елемента people.GetValue( ). Аналогічний виклик функції і при використанні покажчиків ptr -> GetValue( ). В іншому використання функцій-членів нічим не відрізняється від використання традиційних функцій С.