<<
>>

Контрольные вопросы и упражнения 1.

Предположим, что объявление массива M задано с использованием некоторого перечисляемого типа в качестве набора индексов. Например:

ExamsMark = (Math, Programming, Prog_Languages, Computers, Philosophy);

M: array [ExamsMark] of real;

■ Предложите подходящий способ представления в памяти массива M (включая дескриптор) и выведите адресную формулу доступа для вычисления местоположения элемента M[ i ].

■ Покажите, как изменятся способ представления и формула доступа, если M будет объявлен следующим образом:

M: array [Prog_Languages .. Philosophy] of real;

2. Рассмотрим представление множества через битовые строки. Предположим, что максимальное количество элементов в множестве должно быть меньше, чем

Контрольные вопросы и упражнения

281

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

3. Для языка, в котором допускаются вариантные записи без полей тегов (свободное объединение), как, например, в языке Pascal, напишите процедуру

procedure Example (i: integer; var r: real;)

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

4. Положим, что имеется версия языка Pascal, в которой имена полей в записях (не вариантных) могут быть целыми числами, а при выборке полей разрешается вычислять целые значения имен полей, так что, например, для выборки компонента записи можно использовать выражение r.(i + 2).

■ Объясните, почему в такой версии представление записей в памяти, описанное в разделе «Записи», перестанет быть адекватным.

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

5. Повторите упражнение 4, но для записей с вариантными полями.

<< | >>

Еще по теме Контрольные вопросы и упражнения 1.:

  1. Контрольные вопросы
  2. Контрольные вопросы
  3. Контрольные вопросы
  4. Контрольные вопросы
  5. Контрольные вопросы
  6. Контрольные вопросы
  7. Контрольные вопросы
  8. Контрольные вопросы
  9. Контрольные вопросы
  10. Контрольные вопросы
  11. Контрольные вопросы
  12. Контрольные вопросы
  13. Контрольные вопросы
  14. Контрольные вопросы
  15. Контрольные вопросы