Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методы программирования.docx
Скачиваний:
7
Добавлен:
20.09.2019
Размер:
2.14 Mб
Скачать
  1. Объединения. Операции, представление. Сложность операций.

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

В Си – 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);

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

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

В языке Паскаль множество — составной тип данных, хранящий информацию о присутствии в множестве объектов любого счетного типа.

T: set of Tbase

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

1)Мощность множества – количество множеств, котрое можно построить на основе базового типа .

Например, множество (1, 2) : можно построить пустое множество, (1), (2), (1,2) – всего 4.

2)Размер – один бит на элемент sizeof set = (#Tbase)/8.

Т. е. представление одного элемента множества – один бит, имеем дело с битовыми строками

Операции:

1)Индексации нет;

2)Присваивание А=В

3) Сравнение ==, !=,

а так же включение A <= B;

4)Проверка на вхождение a in B – истина, если а есть в В; ложь, если элемента а в И не было;

5)Объединение (+), Пересечение (*), Вычитание (-).

Примеры множеств – множество, куда записывается алфавит входного сообщения или множество для обработки команд (см. конспект).

Представление в памяти – стр. 46.

Когда размерность битовой строки не превышает длинны машинного слова, представление в виде множеств будет максимально эффективно.