Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
R8_Зап_12.doc
Скачиваний:
4
Добавлен:
21.12.2018
Размер:
182.27 Кб
Скачать

ПЛАН

КОМБІНОВАНІ ТИПИ ДАНИХ 1

Поняття запису 1

Фізичне представлення запису 2

Оголошення комбінованих типів 2

Особливості обробки у мові Pascal 4

Особливості обробки у мові C 6

Комбіновані типи даних Поняття запису

Одним із найбільш гнучких і зручних механізмів побудови структур даних самої довільної природи є комбінований тип даних. Його значення, так само як і значення регулярного типу, складається з декількох компонент, але на відміну від масиву, ці компоненти можуть бути різних типів.

Значення комбінованого типу називають записом (в деяких мовах програмування - структурою). Записи є надзвичайно зручним засобом для представлення програмних моделей реальних об'єктів наочної області, бо, як правило, кожен такий об'єкт має досить складну, неоднорідну будову - набір властивостей, що характеризуються даними різних типів.

Записи найчастіше використовуються при створенні різного роду інформаційних систем, які містять різнорідні відомості. Наприклад, у інформаційній системі про успішність студентів запис може містити в собі ПІБ студента, курс, групу, оцінки по окремих предметах в кожну екзаменаційну сесію, наявність і кількість перездач по кожному предмету, а якщо необхідно, то і дати іспитів. Частина даної інформації представляється цілими числами, для деяких відомостей краще підходить представлення їх у вигляді літерних рядків, а деякі дані можуть мати логічний тип. Як видно, в такому структурному типі представлені компоненти з абсолютно різними типами значень.

Запис - це структура даних, що складається з фіксованої кількості різнотипних компонент довільної структури. Компоненти запису називають полями. Кожне поле характеризується своїм ім'ям і типом значень. Наприклад,

Іванов А.Д

ІП-11

1994

вул.Янгеля, 3, кв.11

Петров В.Л.

ІП-01

1993

просп.Перемоги, 5, кв.34

Сидоров Т.Р.

ІП-91

1992

вул.Смоленська, 23, кв.141

Компонентою запису може бути будь-яка інтегрована структура даних – масив, інший запис, тощо. Тому значення комбінованого типу може мати яскраво виражену ієрархічну структуру. При цьому областю дії імені кожного поля є внутрішня частина запису, в якому воно визначається. Всі імена полів одного запису мають бути різними, якщо вони знаходяться на одному рівні. Якщо ж одне ім'я визначене усередині області дії іншого імені або ці імена визначені в областях дії різних полів одного запису, то такі імена можуть бути однаковими. Очевидно, що різні записи можуть містити поля з однаковими іменами. У деяких мовах програмування (COBOL, Pl/1) при описі вкладених записів вказується рівень вкладеності, в інших (PASCAL, C) - рівень вкладеності визначається автоматично. На основі записів також можливе складання регулярної структури - масиву записів.

Записи використовують не тільки для поєднання різнорідних даних, а й в тих випадках, коли бажано запобігти спробам однакової обробки полів одного типу. Нехай потрібно задати деякі дії з комплексними числами а + b і, де а і b - дійсні числа, а і2 = -1. Оскільки в мовах програмування немає відповідного стандартного типу даних, то його необхідно ввести у вживання тим або іншим способом, використовуючи можливості мови. Для цього якраз зручно використати комбінований тип, що містить два поля: в одному з яких задаватиметься дійсна частина комплексного числа (значення а), а в іншому - уявна його частина (значення b). Кожне поле при цьому матиме тип real.

Бібліотеки мов високого рівня використовують записи для створення типу даних "екранні координати" в стан­дартних бібліотеках комп'ютерної графіки.

У математиці подібний складений тип називається декартовим добутком. Це пов'язано з тим, що множина значень такого типу складається з усіх можливих комбінацій окремих значень його компонент. Отже, число таких наборів з n чисел дорівнює добутку кількостей елементів усіх складових множин. Таким чином кардинальне число складеного типу дорівнює добутку кардинальних чисел всіх типів компонент, тобто card (T) = card (T1) * card(T2) *... * Card (Tn), де Ti - тип i-oї компоненти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]