Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpora_po_programmirovaniyu_k_ekzamenu_33_1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
573.95 Кб
Скачать

Билет 22. Представления множеств.

Множества представляются в памяти машины массивом логических значений, i-ая компонента которого означает наличие или отсутствие i-ого значения базового типа множества

S = [1,4,8,9] в памяти FTFFTFFFTT

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

Максимальное число элементов массива – 256, следовательно, множество может занимать не более чем 32 байта – 16 слов. Число байтов, занимаемых конкретным множеством вычисляется следующим образом:

ByteSize = (Max div 8) – (Min div 8) + 1; Min и Max – нижнее и верхнее значение множества

Номер байта

Byte Number = (E div 8) – (Min div 8) E – порядковый номер

Номер бита внутри этого байта BitNumber = E mod 8: Е – порядковый номер элемента.

Такое представление множеств позволяет осуществить операции объединения, пересечения и разности множеств с помощью элементарных логических операций. Для любого элемента i, принадлежащего базовому типу множеств X и Y имеют место следующие эквивалентности между операциями над множествами и логическими операциями.

i in (x + y) ≡ (i in x) v (i in y) i in (x * y) ≡ (i in x) ^ (i in y) i in (x - y) ≡ (i in x) ^ ­­­­­­­­­­¬ (i in y)

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

Пример. Найти простые числа, лежащие в диапазоне от 2 до n, где n>=2

Алгоритм "Решето Эратосфена"

1.Поместим все числа между 2 и n.

2.Выберем и "вынем" из решета наименьшее из чисел, оставшихся в решете.

3.Поместим это число среди простых.

4.Переберем и "вынем" из решета все числа, кратные данному.

5.Если решето не пустое, то повторим шаги со второго по пятый.

Program Eratosphen;

Const n = 255;

Var sieve, primes: set of 2 .. n;

Next: byte; i: word;

Begin sieve := [2 .. n]; primes:= [ ]; Next:= 2;

Repeat {поиск очередного простого числа}

While not (next in sieve) do inc(next); {поиск наименьшего в "sieve"}

Primes:= primes + [next]; {поместим число среди простых}J:= next;

While j<= n do begin

Sieve:= sieve – [ j ];{удаляет из решета числа, кратные очередному};

J:=j + next; end;

Until sieve = [ ];

For j:= 2 to n do

If j in primes then write( j );

End.

Билет 23 Файловые типы

Cлово file в Pascal употребляется для объектов, состоящих из последовательностей всех компонентов одного типа.

Последовательность устанавливает естественный порядок компонент и в любой момент непосредственного доступа только одна компонента. Другие компоненты становятся доступными по мере продвижения по файлу. Число компонент , называемое длиной файла, в определении файлового типа не фиксируется. Эта особенность явно отличает понятие "файл" от понятия "массив".

Файловый тип

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

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

B Pascal существует 3 класса файлов: -типизированные, -текстовые, - нетипизированные.

Структура текстовых файлов отличается от структуры обычных файлов (линейная последовательность элементов одного типа) тем, что содержимое текстового файла рассматривается как последовательность символьных строк произвольной длины, разделенных комбинацией "конец строки"((13-10) 2 кода: возврат CR#13 LF#10). В конце файла используется код конца файла - #26.

Type Sequence = file of char;

Var f1,f2 : Sequence;

Table : file of string [20];

DataBase : file of person;

InputData : file of real;

DataFile : file; {нетипизированный}

TextInf : text;

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