- •О.Ф.Тарасов, о.В.Алтухов
- •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
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
8.4 Питання для контролю і самостійної роботи
Дайте визначення покажчику.
Який синтаксис оголошення покажчика ?
З якими модифікаторами може бути використаний покажчик ?
Скільки пам’яті займають покажчики ?
Чим відрізняється ( * ) в оголошенні покажчика й у виразу, де він використовується ?
Що таке операція звертання за адресою або разадресація ?
Що таке операція узяття адреси ?
Чи можливо і як привласнити адресу речовинної перемінної salary покажчику на тип int з ім'ям psal ?
Чи обов'язково виконувати ініціалізацію покажчика при його оголошенні?
У чому особливості використання покажчика на тип void ?
Для чого застосовується константа NULL ?
Який тип має ім’я масиву і яку адресу воно вміщує ?
Чи може покажчик адресувати масив символів ?
Чи можливо виконувати ініціалізацію покажчика рядком символів ?
Чи можливо привласнювати покажчики одного типу ?
Чи можуть відніматись покажчики одного типу і який тип має результат ?
З перемінними якого типу можливо складати покажчики ?
Як здійснити явне приведення типу покажчика ?
Поясніть приклади, приведені в теоретичній частині, які значення мають перемінні ?
Що таке динамічне виділення пам'яті, де вона виділяється і за допомогою яких функцій ?
Який синтаксис оголошення функцій динамічного виділення пам'яті ?
Який синтаксис функції звільнення динамічно виділеної пам'яті і для чого це треба робити ?
9 Заняття № 9
Масиви. Селективна обробка масивів
(2 години)
Ціль роботи: вивчити роботу з масивами як складеними типами даних, ознайомитися з прийомами введення і виведення даних, обробки одномірних масивів.
9.1 Теоретичні відомості
Масив - це набір об'єктів (елементів) однакового типу, доступ до яких здійснюється за індексом в масиві. Звертання до масивів та їх елементів у С реалізовано за допомогою покажчиків (pointers).
Масив у С можна оголосити в такий спосіб:
[ <Клас_пам'яті ] Тип_даних Ім'я_масиву> [ <Розмір_масиву> ]
Розмір_масиву може бути заданий константним виразом.
Доступ до елементів масиву відбувається в такий спосіб:
<Ім'я_масиву> [ <Значення_індексу> ]
Використовуючи ім'я масиву й <Значення_індексу> від 0 до значення Розмір_масиву - 1, тобто на одиницю менше, ніж максимальне значення індексу, можна звернутися до необхідного елементу масиву.
Приклади оголошення масивів:
char name[20];
int grad[125];
float b[30];
Масив має ім'я (<Ім'я_масиву>), що є покажчиком на тип елементів масиву й адресує перший елемент з індексом (). Ім'я масиву фактично є константним покажчиком, що посилається на початкову адресу даних, з якої послідовно розташовані елементи масиву, і може бути використане як покажчик. Звертання до елементів може здійснюватися в такий спосіб: name[0] -1-й елемент масиву, name[1]- 2-й елемент, name[19] – останній 20-й елемент.
При трансляції програми компілятор відводить місце під оголошений масив статично, тобто в області даних. Ділянка пам'яті, яка виділена для масиву, не може динамічно змінюватись. Розмір виділеної для масиву пам'яті Розмір_пам'яті можна визначити в байтах за наступною формулою:
Розмір_пам'яті = sizeof( <Тип_елементу> ) * Розмір_масиву
Елементи масиву розміщуються в пам'яті послідовно, тобто кожна наступна комірка пам’яті розташована відразу після попередньої.
Ініціалізація елементів масиву може бути явною. Якщо декілька елементів не ініціалізовані, то останні елементи масиву дорівнюють 0. Ініціалізація масиву символів може виконуватись рядком символів і показана раніше у занятті № 8.
У С не включені оператори, що здійснюють роботу з масивами, як стандартними типами даних. Щоб скопіювати дані з одного масиву в інший, необхідно організувати функцію з циклом, тіло якого повинно мати наступний вигляд:
# define rasm 20 //rasm - розмір масивів
іnt mas2[rasm];
іnt mas1[rasm] = {15, 37, 10, -20, -10, 25, 22}; //Явна ініціалізація
//елементів масиву з 0 по 6, з 7 по 19 всі дорівнюють 0
…
for( i = 0; i < rasm; i++ ) mas2[ i ] = mas1[ i ];
