Записи. Операции над ними, способы представления, сложность операций. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Записи. Операции над ними, способы представления, сложность операций.



Запись (структура) - это набор из одной или более переменных, возможно различных типов, сгруппированных под одним именем для удобства обработки.

Определяется следующим образом:

Паскаль – record

S1 of T1

S2 of T2

Sn of Tn

End

В си – struct {

T1 S1;

T2 S2;

Tn Sn;

}

T1…Tn – типы данных; S1…Sn – поля записи.

Все поля могут иметь разный тип.

Имена полей – идентификаторы полей.

Структура случайного доступа к компонентам.

Все элементы начинаются каждый со своего места в памяти.

Применяют для БД и анкет.

Характеристики:

1)Мощность #record = #T1 * #T2 *… * #Tn;

2)Размер записи – сумма размеров всех ее типов .

Операции:

1)Можем обратиться к элементу записи, но не по индексу, а по имени A.name;

2)Присваивание А=В с помощью memcpy(A, B, sizeof B);

3)Сравнение А==В с помощью memcmp(A, B, sizeof B);

4)Инициализация

A = {“Андрей”, “Иванович”, 1990, m}.

 

Хранение записей в памяти:

Записи размещаются в памяти так, что их компоненты идут последовательно друг за другом.

Если:

· sizeof(эл) кратен sizeof(word) – одновременно упакованный и неупкованный способ хранения

· – выбираем между упакованным и неупак.

· – элемент умещается в длину машинного слова

 

ОБЪЕДИНЕНИЯ. ОПЕРАЦИИ, ПРЕДСТАВЛЕНИЕ. СЛОЖНОСТЬ ОПЕРАЦИЙ.

В Паскале – нет

В Си – Union <имя> {

T1 S1;

T2 S2;

Tn Sn;

}

Все элементы начинаются с одно и того же места в памяти (если присваиваем новое значение элементу объединения, то перезаписываем любое предыдущее присваивание). Объединение может хранить значение только для одного элемента в каждый момент времени.

Пример: иллюстрирует использование объединения distance. Сначала программа присваивает значение элементу

miles и выводит это значение. Затем программа присваивает значение элементу meters. При этом значение элемента miles теряется:

union distance

{
int miles;
long meters;
} walk;

walk.miles = 5;
cout << "Пройденное расстояние в милях " << walk.miles << endl;
walk.meters = 10000;
cout << "Пройденное расстояние в метрах " << walk.meters << endl;
Объединение определяет шаблон, с помощью которого ваши программы могут позднее объявлять переменные. Когда компилятор встречает определение объединения, он распределяет количество памяти, достаточное для хранения только самого большого элемента объединения.

Характеристики:

1)Размер – максимальный из размеров компонент sizeof (union) = max(sizeof Ti);

2)Мощность – мощность максимального типа #union = #max(Ti).

Операции:

1)Индексация по имени;

2)Присваивание А=В через memcpy;

3)Сравнение А==В через memcmp(A, B, sizeof B);

Объединения применяют для записей с вариантами (если в анкете, то каждый последующий порос зависит от предыдущего ответа).

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 138; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.35.75 (0.003 с.)