- •О.Ф.Тарасов, о.В.Алтухов
- •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
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Хід роботи
Вивчити теоретичні відомості.
Відповідно до індивідуального завдання розробити алгоритм рішення задачі. Оголосити комбіновані типи, масиви структур, покажчики на типи структур. Використовувати покажчики як дані-члени структури, а також для доступу до членів структури і роботи з ними. Оголосити об'єднання і виконати роботу з об'єднанням з використанням покажчиків. Результати ініціалізації, зміни даних-членів комбінованих типів вивести на екран.
Розробити і набрати програму на комп'ютері, усунути помилки.
Одержати результат.
Оформити звіт.
Підготуватися до захисту роботи, вивчивши контрольні питання по даній темі.
Індивідуальне завдання до заняття №15 узяти з роботи №3.
Вимоги до змісту звіту приведені в занятті №1.
Питання для контролю і самостійної роботи
Чи можна використовувати покажчики як дані-члени структур ?
Чи можна використовувати масиви і структури як дані-члени структур (вкладені оголошення) ?
Чи можна використовувати в якості вкладених структури того ж типу, що оголошуються (свого типу), а також покажчики на структури свого типу ?
Як оголосити покажчик на структуру, масив покажчиків на структури ? Чи існують різні варіанти оголошення ?
Чи можна використовувати typedef для оголошення типу структури ?
Як одержати доступ до елемента структури за допомогою покажчика ?
Як здійснюється доступ до даних-членів структури при використанні масиву покажчиків на структури ?
Чи можна використовувати різні класи пам'яті стосовно до перемінних структурного типу ?
Чи обов'язково вказувати ключове слово struct при оголошенні структурного типу, перемінних структурного типу ?
Чи можна зберігати адресу структури в самій структурі ?
З допомогою якого оператора можна виділити пам’ять у “купі” ?
Як звільнити виділену у “купі” пам’ять ?
Заняття № 16
Використання покажчиків для роботи з функціями
(2 години)
Ціль роботи: виробити практичні навички в написанні програм з функціями й у використанні покажчиків для роботи з функціями.
Теоретичні відомості
Покажчики як параметри функції
Покажчики широко використовуються при передачі аргументів у функцію і з функції, створюючи двосторонній потік даних між функцію, що викликається і функціями, які її викликають.
Для передачі аргументів у функцію використовують:
Покажчики на прості типи даних, як параметри функції.
Покажчики на масиви (передавати масиви за значенням не можна).
Покажчики на тип enum як параметри функції.
Покажчики на структури й об'єднання як параметри функції.
Покажчики на функції (передавати функції за значенням не можна).
С дозволяє використовувати покажчики на базові типи, на масиви і структури, а також покажчики на функції, як параметри, що передаються у функції і повертаються з функцій. Загальний синтаксис для оголошення покажчика на базові типи, на масиви і структури як параметри функції
[Const ] Тип * Ім'я_покажчика
При оголошенні функції ім'я покажчика як формального параметра може не вказуватися аналогічно іншим видам формальних параметрів.
Ключове слово const охороняє дані структури від зміни у функції, тоді як відсутність ключового слова const дозволяє функції змінювати значення даних-членів структури, тому що при використанні покажчиків у тілі функції відомі фізичні адреси цих перемінних.
Приклад використання покажчиків на різні типи даних як параметри функції
struct Муst //Оголошення структурного типу Муst
{
//Дані-члени структури
};
int func( float *, int * ); //Передача покажчиків на тип float і на тип int
void loadMy(Myst *pm); //Передача у функцію покажчика на
//структурний тип Муst
float *pf; int *pl; Myst *pmy; //Оголошення перемінних
…
int a = func(pf, pl); //Виклик функції func( )
loadMy( pmy ); //Виклик функції loadMy( )
C дозволяє створювати і використовувати покажчики на функції. У такому покажчику зберігається адреса функції. Покажчик на функцію можна використовувати для її виклику. Оголошення покажчика на функцію аналогічно оголошенню функцій, з якими він буде використовуватися. Загальний синтаксис для оголошення покажчика на функцію:
Тип_ що_повертається ( * Ім'я_покажчика_на_функцію) (Список_оголошень_типів_параметрів)
При ініціалізації покажчика на функцію потрібно використовувати ім'я функції, у якої тип значення, що повертається, і список типів параметрів відповідають оголошенню покажчика. Ім'я функції має тип покажчика на функцію з заданими для неї в оголошенні типами параметрів і типом значення, що повертається.
Ініціалізація покажчика на функцію
Ім'я_покажчика_на_функцію = Ім'я_функції
Загальний синтаксис для виклику функції з використанням покажчика
(*Ім'я_покажчика)(Список_фактичних_параметрів)
Приклад
void (* pfunc) (int, int); //Оголошення покажчика на функцію
Оголошено покажчик pfunc на функцію, що вимагає два параметри типу int і не повертає значення (void). Типи і кількість параметрів, а також тип значення, що повертається для функцій, які можна адресувати цим покажчиком, повинні збігатися. Для використання покажчика оголосимо функцію, привласнимо покажчику адресу функції і здійснимо її виклик за його допомогою
Приклад
void fun1(int, int); //Оголошення функції fun1( )
int linesch (char *); //Оголошення функції linesch ( )
int (*search)(char *); //Оголошення покажчика на функцію
void main( )
{ int a;
char *pstr = “Hello World!”; //Оголошення покажчика pstr на тип char
search = linech; //Привласнювання покажчику адреси функції linech( )
pfunc = fun1; //Привласнювання покажчику адреси функції fun1( )
//search = fun1; pfunc = linech; - недопустимі вирази
… //інші оператори
a = (* search)(pstr); //Виклик функції linech ( ) за допомогою покажчика
(*pfunc)(2, 4); //Виклик функції fun1( ) за допомогою покажчика
}
