С, С++

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Алгоритмічні мови та програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра САПР Звіт до лабораторної роботи №10 на тему «СТРУКТУРИ ТА ОБ’ЄДНАННЯ В МОВІ ПРОГРАМУВАННЯ С» з курсу «Проблемно-орієнтовані мови програмування» ЛЬВІВ 2011 Мета роботи Навчитися використовувати структури та об’єднання для програмування на мові С. Теоретичні відомості Структури Структура - це набір з однієї або більше змінних, можливо різних типів, згрупованих під одним ім'ям для зручності обробки. (У деяких мовах, наприклад Паскаль, структури називаються “записами”). Розглянемо приклад. Уявіть собі, що на календарі сьогодні 1 січня 2009 року. Дата складається з складових таких, як день, рік та назва місяця. Ці три змінні можна об’єднати в одну структуру вигляду: struct DATE { int day; int year; char mon_name[4]; }; Опис структури, що складається з взятого в фігурні дужки списку полів, починається з ключового слова struct. Після слова struct пишеться ім'я, так звана Мітка структури (тут це DATE). Ім’я може бути відсутнє. Така мітка іменує структури цього виду і може використовуватися надалі як скорочений запис детального опису. Елементи або змінні, згадані в структурі, називаються членами (полями, компонентами). Мітки і члени структур можуть мати такі ж імена, що і звичайні змінні (тобто ті, що не є членами структур), оскільки їх імена завжди можна розрізнити по контексту. Звичайно однакові імена присвоюють тільки тісно пов'язаним об'єктам. Точно так само, як у разі будь-якого іншого базового типу, за правою фігурною дужкою, що закриває список членів, може записуватись список змінних. Оператор struct { } x, y, z; // описує struct { } синтаксично аналогічний int x, y, z; // описує int в тому сенсі, що кожен з операторів описує x, y та z в якості змінних відповідних типів і приводить до виділення для них пам’яті. Опис структури, за яким не має списку змінних, не приводить до виділення пам'яті (немає змінної); він тільки визначає шаблон або форму структури. Але, якщо в такому опису є мітка, то ця мітка може бути використана пізніше при визначенні фактичних примірників структур. Наприклад, якщо дано приведений вище опис Date, то struct DATE d; визначає змінну d як структура типу Date. Ініціалізація структур При визначенні структурних змінних можна ініціалізувати їхні поля. Ця можливість подібна ініціалізації масиву й слідує тим же правилам: ім'я_шаблона ім'я_змінної_структури = {значення1., значення2, . . .}; Компілятор присвоює значення1 першій змінній в структурі, значення2 - другій змінній й т.д., і тут необхідно додержуватися деяких правил: 1. значення, що присвоюються, повинні співпадати по типу з відповідними полями структури; 2. можна оголошувати кількість значень, що присвоюються, меншу, ніж кілкість полів. Компілятор присвоїть нулі іншим полям структури; 3. список ініціалізації послідовно присвоює значення полям структури, вкладених структур і масивів. Наприклад: struct date { іnt day, month, year; } d[5] = { {1, 3, 1980), {5, 1, 1990}, {1, 1, 1983} }; /* Проініціалізовані перші три елементи масиву */ struct person bguіr[20]={ {"Бурба","Дмитро", "Леонідович", 75., 185, 15, 1, 1980}, {"Таболич", "Юрій", "Олександрович", 70., 180, 25, 8, 1983}}; /* Проініціалізовані 2 елементи масиву структур */ Об'єднання Об’єднання подібне структурі, але в кожен момент часу може використовуватись (або є активним) тільки один з його компонентів. Тип об’єднання може задаватися записом виду union МІТКА { опис компонента а1; опис компонента а2; ……………………. опис компонента аn; }; Для кожного з цих компонентів виділяється одна і та ж область пам’яті, тобто вони перекриваються. Хоча доступ до цієї області пам’яті можливий через використання будь-якого з компонентів. Компонент для цієї мети повинен вибиратися так, щоб отриманий результат не був беззмістовним. Як вже зазначалось, об’єднання подібні структурам. Доступ до компонент об’єднання відбувається тим самим способом, що і для структур. Об’єднання застосовуються: для мінімізації об’єму пам’яті, що використовується, якщо в кожний момент часу тільки один об’єкт з багатьох є активним; для інтерпретації основного представлення об’єкта одного типу, так ніби цьому об’єкту був присвоєний другий тип. Роль об’єднання аналогічна ролі опису еквівалентності (equivalence) в Фортрані. Компоненти в об’єднанні взаємозв’язані точно так, як два об’єкта, зв’язані відношенням еквівалентності в Фортрані. В якості прикладу визначення об’єкта типу union розглянемо об’єднання shape, яке визначається наступним чином: struct position { int x; // 2 байти int y; // 2 байти }; union { float radius; // коло 4 байти float a[2]; // прямокутник 4*2=8 байт int b[3]; // трикутник 2*3=6 байт struct position p; // координата точки 2+2=4 байти } shape; Розмір об’єднання shape дорівнює не суммі всіх байтів, як у випадку структури, а розміру найбільшого поля (компоненти), тобто 8 байт. В цьому прикладі є сенс використовувати тільки той компонент, який отримав останнім своє значення. Індивідуальне завдання Знайти найхолодніший і найтепліший день квітня. В метеорологічній інформації міститься: день місяця, температура, опади. Текст програми #include <stdio.h> #include <math.h> struct temp{ int day; float temper; }; int main() { struct temp d[3]; float max,min; int i; printf("Meteorological information for April:\n"); printf("Enter day and temperature:\n"); for(i=0;i<3;i++) scanf("%d%f",&d[i].day,&d[i].temper); max=d[0].temper; min=d[0].temper; for(i=0;i<3;i++) if (max<d[i].temper) max=d[i].temper; for(i=0;i<3;i++) if (min>d[i].temper) min=d[i].temper; printf("Meteorological information for April:\n"); printf("Day Temperature\n"); for(i=0;i<3;i++) printf("%d %2.2f\n",d[i].day,d[i].temper); printf("Max temperature=%2.2f\n",max); printf("Min temperature=%2.2f\n",min); return 0; } Результати обчислень  Висновок: Я навчився використовувати структури та об’єднання для програмування на мові С.
Антиботан аватар за замовчуванням

29.05.2013 13:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!