Контрольные вопросы и упражнения 1.
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, но для записей с вариантными полями. |