- •О.Ф.Тарасов, о.В.Алтухов
- •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
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
2.4 Питання для контролю і самостійної роботи
Як здійснюється введення і виведення інформації в мові С? Чи існують убудовані оператори введення/виведення?
Для чого необхідні оголошення функцій та перемінних?
Для чого використовується форматизоване введення/виведення даних?
У якому заголовочному файлі приведені оголошення (прототипи) функцій prinf( ) і scanf( ) ?
З якого символу починається форматний рядок цих функцій ?
Для чого встановлюються прапори у форматному рядку ?
Які символи перетворення використовуються й у яких випадках ?
Як перевести дані у восьмирічну та шістнадцятирічну систему числення за допомогою функції prinf( ) ?
Які символи та специфікатори формату є обов'язковими елементами форматного рядку ?
Які символи форматного рядку не відображаються на екрані ?
Чи відрізняються символи типу <type_char>, які застосовуються для функцій prinf( ) і scanf( ) ?
Чи відрізняються типи аргументів функцій ? Якщо відрізняються, то в чому розходження і чим воно викликано ?
Про що свідчить модифікатор const ?
Назвіть інші функції С для введення/виведення інформації.
Яке призначення і що виконують керуючі послідовності ‘\n ', ' \t ' та інші? Які ще керуючі послідовності Ви знаєте ?
3 Заняття № 3 Розробка програм зі скалярними типами даних
(2 години)
Ціль роботи: розглянути і вивчити скалярні типи даних С (int, char, float і ін.), а також їхнє використання у програмах.
3.1 Теоретичні відомості
У С перемінні повинні бути оголошені, тобто їхній тип специфікований до того, як ці перемінні будуть використані. Оголошення перемінних можуть бути зроблені в будь-якому місці програми. При оголошенні перемінних застосовується префіксний запис, при якому спочатку вказується тип, а потім ім'я перемінної.
Оголошення перемінних можуть бути глобальними з класами пам'яті extern і static ( поза функцією main( ) ) і локальними з класами пам'яті auto, register (усередині блоку, функції, наприклад, усередині функції main( ) ).
Глобальні перемінні за умовчанням мають клас пам'яті extern та ініціюються нульовим значенням при оголошенні. Локальні перемінні за умовчанням мають клас пам'яті auto і не ініціюються при оголошенні.
За умовчанням передбачається, що перемінні є знаковими ( signed ). Беззнакові перемінні описуються явно за допомогою специфікатора insigned.
Приклад
int n1, n2, n3, n4; // Множинне оголошення перемінних
n1 = 15; // Iніціалізація перемінної
float weight = 23.56; // Оголошення перемінної з ініціалізацією
unsignid int exam;
char ch = ’+’, c = ’A’;; // Iніціалізація перемінних типу char
char slash = ’/’, Slash = ’\’; // Регістр у перемінних розрізняється,
// перемінні slash та Slash є різними
char str[ ] = ’’рядок символів’’; //Ініціалізація строковою константою
char *pstr = ’’рядок символів’’; //масива та покажчика (*) на тип char
У першому оголошенні приведений список перемінних з іменами n1, n2, n3, n4. Усі вони мають тип (int - ціле). Перемінна exam - також цілого типу, але беззнакова й оголошена окремо. Якщо використовуються специфікатори unsigned, long, short, то специфікатор int можна опускати, тому що перемінні мають тип int за умовчанням. Одночасно з оголошенням перемінних може бути проведена і їхня явна ініціалізація.
У С мається досить багато визначених типів даних, включаючи кілька видів цілих, покажчиків, речовинних перемінних, масивів, об'єднань, структур і тип void (порожній). Слово void означає, наприклад, що покажчик може вказувати на будь-який тип, функція не одержує параметрів чи не повертає значення.
Скалярні типи включають символьні типи, цілі, речовинні типи, перерахування, покажчики і посилання. Цілі типи включають кілька різновидів цілих і символьних даних. Арифметичні типи поєднують цілі і речовинні. Символьні типи: окремі символи, літеральні строкові константи (символьні рядки, символічні константи). Строкові константи завжди закінчуються нулем. У строкових константах можуть бути керуючі послідовності (\n, \t, \\ і ін.), що допускаються скрізь, де можуть бути друковані символи:
’’c: \\bc \\test \\f.с”
Складені типи містять у собі масиви, структури й об'єднання.
Кожен об'єкт заданого типу займає визначене число одиниць пам'яті. За одиницю приймається один байт. Число одиниць пам'яті, необхідне для розміщення елемента даного типу, може бути обчислене з використанням операції sizeof(Тип) чи sizeof(Об'єкт_типу). Нижче приведена таблиця 3.1, що показує основні типи даних, їхній розмір і діапазон значень.
Таблиця 3.1 - Розмір і діапазон значень перемінних різних типів
-
Тип
Розмір
у байтах
Діапазон значень
signed char
1
128...127
unsigned char
1
0...255
signed int
2
-32768...32767
unsigned int
2
0...65535
signed short int
аналогічно int
unsigned short int
аналогічно unsigned int
signed long int
4
-2147483648…2147483647
unsigned long int
4
0...4294967295
float
4
3.4 е -38...3.4 e38
double
8
1.7 е -308...1.7 е308
long double
10
3.4 е -4932...3.4 е4932
Користувач має можливість зв'язати оголошення типу даних з більш простим і наочним новим ім'ям для цього типу даних (призначити псевдонім), використовуючи засіб typedef з наступним форматом оголошення типу:
typedef <Оголошення_типу> <Псевдонім>
Наприклад, визначимо нове ім'я для типу unsigned int:
typedef unsigned int NATUR; // unsigned int зв'язується з ім'ям –
// псевдонімом NATUR
NATUR i; //Оголошення перемінної з типом
// insigned int
Для заборони зміни значень перемінних використовується ключове слово-модифікатор const:
сonst int value16 = 0xf9ac;
сonst unsignid int value8 = 0234; // Перемінні в
// шістнадцятирічному (Xddd) і восьмирічному (ddd) вигляді
Для визначення іменованих констант і макровизначень (макросів) використовують директиву препроцесора:
#define <Ім'я> (Аrgument1 [, Аrgument2…]) <Текст_що_підставляється>
Директива створює тимчасові імена (іменовані константи), що препроцесор заміняє на текст, що підставляється, тому імена не є оголошеннями перемінних.
Приклад
#define STRING ’’\a\’’Hello, Wold ! \’’\n’’
#define HEX 0x7b
#define DECIMAL 136