LW4_ауд1_Об'єднання та їх використання
Об'єднання та їх використання
Мета роботи. Метою роботи є формування практичних навичок використання об’єднань (union) у мові програмування С, ознайомлення з особливостями їх оголошення, ініціалізації та використання, а також аналіз відмінностей між структурами та об’єднаннями при роботі з пам’яттю.
Теоретичні відомості
У мові програмування С для організації складних типів даних широко використовуються структури (struct) та об’єднання (union).
Структури (struct) дозволяють об’єднувати різні типи даних, при цьому кожен елемент має власне місце в пам’яті.
Як і звичайними масивами простих типів, так само можна оперувати масивами структур, елементи якого мають структурований тип. Розглянемо наочний зразок, який ілюструє оголошення масиву структур:
typedef struct Date {
int d; /* день */
int m; /* мiсяць */
int y; /* рiк */
} Date;
Date arr[100];
Вище було оголошено масив arr, що складається із 100 елементів, кожний з яких має тип Data. Кожний елемент масиву - це окрема змінна типу Data, що складається із трьох цілих елементів - d, m, y.
Доступ до полів структури аналогічний доступу до звичайних змінних, плюс використання індексу номеру елементу у квадратних дужках:
arr[25].d=24;
arr[12].m=12;
Можна оголосити одну структуру в іншій структурі.
Приклад:
struct Dot{
float x;
float y; };
struct Rectan{
Dot a;
Dot b;
char color[10];
};
Використати такі структури можна наступним чином:
Rectan r;
strcpy(Rectan.color,"red");
r.a.x = 10;
r.a.y = 20;
r.b.x = 100;
r.b.y = 200;
Об'єднання
Об’єднання (union) — це складний тип даних, який дозволяє зберігати різні типи даних в одній області пам’яті. На відміну від структури, де кожен елемент має власну область пам’яті, усі поля об’єднання займають спільну область пам’яті, а отже в один момент часу може зберігатися лише одне значення.
Приклад оголошення об’єднання:
union Data {
int i;
float f;
char str[20];
};
Розмір об’єднання дорівнює розміру найбільшого з його полів.
Ключова відмінність:
- struct → кожне поле має свою пам’ять;
- union → всі поля використовують одну пам’ять.
Бітові поля
Бітові поля дозволяють ефективно використовувати пам’ять, задаючи кількість бітів для зберігання значення.
Приклад:
struct Flags {
unsigned int isActive : 1;
unsigned int isVisible : 1;
unsigned int priority : 3;
};
Тут:
isActiveзаймає 1 біт;priority- 3 біти.
Бітові поля широко застосовуються в:
- системному програмуванні;
- вбудованих системах;
- роботі з апаратними регістрами.
Хід виконання роботи
1 Ознайомитися з теоретичними відомостями.
2. Завдання 1. Робота зі структурами та об’єднаннями
Пошук за датою. Створити масив з 10 елементів типу Date. Заповнити масив датами. Реалізувати функцію, яка знаходить і виводить усі дати, які припадають на певний місяць, заданий користувачем.
- Оголосити структуру
Date, що містить:- день;
- місяць;
- рік.
- Створити масив із 10 елементів типу
Date. - Реалізувати функцію, яка:
- приймає масив;
- виводить всі дати, що відповідають заданому місяцю.
2. Завдання 2. Розробити програму з використання об’єднань
Бібліотека книг. Створити масив структур Book, які містять назву, рік видання та тип даних union для зберігання або кількості сторінок, або рейтингу книги (на вибір користувача). Вивести книги, у яких рік видання після 2000-го..
- Оголосити об’єднання:
union Info {
int pages;
float rating;
};
- Створити структуру
Book:- назва;
- рік;
- об’єднання
Info.
- Створити масив книг.
- Вивести книги, видані після 2000 року.
Приклад виконання.
Каталог товарів. Створити структуру Товари (Prod) з полями: name, price, category (використати enum - наприклад, - їжа , електротовари, одяг) та union для зберігання ваги (в кг), потужності (в Вт) або розмір, в залежності від категорії. Ввести дані про товари, і реалізувати пошук найдешевших товарів у кожній категорії.
#include <stdio.h>
#include <string.h>
#define N 7 //Кількість товарів можна задавати довільно
Оголошення основних типів даних та формування власної функції для виводу:
![]() |
![]() |
![]() |

Головна програма починається з вибору варіанту вводу:
Формування блоку вводу даних:

Формування блоку пошуку найдешевших товарів у категоріях:
Виведення отриманих результатів:
Результат виконання:



Контрольні питання та вправи для самоперевірки
- Що таке об’єднання (union) у мові С?
- У чому різниця між struct та union?
- Як визначається розмір union?
- Що таке enum і як він використовується?
- Як працює спільна пам’ять у union?
- Які переваги та недоліки union?
При захисті роботи студенти відповідають на контрольні запитання, наведені в кінці кожної роботи.
Критерії оцінювання: Аудиторна робота – 5 балів.
✔ 5 балів – повністю виконані всі завдання, код працює без помилок, є аналіз
✔ 4 бали – незначні помилки або неповний аналіз
✔ 3 бали – виконано частково
✔ 2 бали – значні помилки
✔ 1 бал – мінімальне виконання
✔ 0 балів – робота не виконана
- 17 березня 2026, 10:40
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу


