- •О.Ф.Тарасов, о.В.Алтухов
- •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
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Пріоритет операцій і порядок виконання (асоційованість)
Пріоритет і асоційованість операцій впливають на порядок групування операндів і порядок обчислень у виразах С. Наприклад, пріоритет виконання операцій необхідно враховувати при обчисленні складних арифметичних формул. Операції, які приведені в одній групі таблиці 6.2, мають однаковий пріоритет і асоційованість. Порядок убування пріоритету в таблиці - зверху вниз.
Таблиця 6.2 - Пріоритет і асоційованість операцій
Прі-ори-тет |
Знак операції |
Тип операції |
Асоційованість (порядок виконання) |
|||
|
( ) [ ] . –> |
Первинні |
→ (зліва праворуч) |
|||
|
– ~ ! * & ++ - - sizeof( ) приведення типів ( ) |
Унарні |
← (справа ліворуч) |
|||
|
* / % |
Мультиплікативні |
→ |
|||
|
+ - |
Адитивні |
→ |
|||
|
<< >> |
Зрушення |
→ |
|||
|
< > <= > = |
Відношення |
→ |
|||
|
= = ! = |
Відношення |
→ |
|||
|
& |
Поразрядне " І " |
→ |
|||
|
^ |
Поразрядне “Або, що вилучає " |
→ |
|||
|
| |
Поразрядне “Або" |
→ |
|||
|
&& |
Логічне "І" |
→ |
|||
|
| | |
Логічне “Або" |
→ |
|||
|
? : |
Умовна (тернарна) |
← |
|||
|
= |
* = |
/ = |
% = |
Просте і складене присвоювання |
← |
+ = |
– = |
<< = |
>> = |
|||
& = |
| = |
^ = |
|
|||
|
, |
Послідовне обчислення (кома) |
→ |
Якщо кілька операцій одного пріоритету зустрічаються у виразі, то вони застосовуються відповідно до асоційованості.
Приклади:
а = b & хFF + 5; //Обчислюється як а = b & (хFF + 5);
b= а + с >> 1; //Обчислюється як b = (а +с) >> 1;
с = а + + + b/5; //Обчислюється як с = (а ++) + ( b / 5);
Мультиплікативні, аддитивні і поразрядні операції мають властивість комутативності. Компілятор обчислює вирази з урахуванням пріоритету в будь-якому порядку, навіть якщо є дужки. Визначений порядок обчислення операндів гарантують операції: послідовного обчислення ( , ), логічні «І» (&&), «Або» ( ), умовна операція ( ? : ).
Коми у викликах функцій не є операціями послідовного обчислення і не забезпечують гарантій обчислення фактичних аргументів зліва праворуч. Логічні операції обчислюють мінімальне число операндів, необхідних для визначення результатів виразу.
Приклади:
func (i + 1, i = j + 2); //Не гарантує порядок обчислення фактичних
//аргументів
i = 0; //i має тип int за умовчанням
a [++ i] = i; //Порядок обчислення лівого і правого операндів
//не гарантується a [0] = 0 чи a[1]=1
(x - 5) && ++ i //Якщо x =5, то ++ i не обчислюється
int x, y, z; int f(int x, int y);
z = x > y f(x, y); //Якщо x > y, то значення z = 1 «Істина», а
//функція f(x, y) не викликається.
//Якщо x y, то f(x, y) викликається, тоді:
// z = 0, якщо f(x, y) повертає нульове значення, чи
//z = 1, якщо f(x, y) повертає не нульове значення
printf (“%d %d \n“, ++n, f(2, n)); //У функцію f(x, y) може
//передаватися n чи n+1
Перетворення типів
У виразах С перемінні різних типів у ряді випадків можуть використовуватися спільно, наприклад, перемінні типу char можуть бути присутніми у виразах одночасно з перемінними типу int.
Приклад спільного використання цілих і символьних перемінних
char ch = 'а', ans; //Оголошення перемінних ch і ans
printf("Значення ch + 3 = %d", ch + 3); // Виведення значення ch+3
ans = ch % 3; //Визначення залишку від цілочисленого розподілу
printf("\n\n Значення ans = % d\n", ans);
Оскільки char є цілим типом, для нього можуть бути застосовані всі операції, операнди яких мають тип int. Цілі за умовчанням - це величини зі знаком signed.
З перемінними речовинного типу (float, double і ін.) можуть бути застосовані всі операції, допустимі для цілого типу int, за винятком операції залишку від розподілу ( % ).
Перетворення типів бувають явні і неявні. Синтаксис операції явного перетворення типу