Языки программирования - концепции и принципы

Упаковывает ваш компилятор поля записи


 

1. Упаковывает ваш компилятор поля записи или выравнивает их на грани­цы слова?

2. Поддерживает ли ваш компьютер команду блочного копирования, и ис­пользует ли ее ваш компилятор для операций присваивания над массивами и записями?

3. Pascal содержит конструкцию with, которая открывает область види­мости имен так, что имена полей записи можно использовать непосред­ственно:

 

type Rec =

       record

Paskal



             Field 1: Integer;

             Field2: Integer;

       end;

 R: Rec;

with R do Field 1 := Field2;               (* Правильно, непосредственная видимость *)

Каковы преимущества и недостатки этой конструкции? Изучите в Ada конструкцию renames и покажите, как можно получить некоторые аналогичные функциональные возможности. Сравните две конструк­ции.

4. Объясните сообщение об ошибке, которое вы получаете в языке С при попытке присвоить один массив другому:

C

inta1[10],a2[10]:

а1 =а2;

5. Напишите процедуры sort на языках Ada и С и сравните их. Убедитесь, что вы используете атрибуты в процедуре Ada так, что процедура будет обрабатывать массивы с произвольными индексами.

6. Как оптимизирует ваш компилятор операции индексации массива?

7. В языке Icon имеются ассоциативные массивы, называемые таблицами, в которых строка может использоваться как индекс массива:

count["begin"] = 8;

Реализуйте ассоциативные массивы на языках Ada или С.

8. Являются следующие два типа одним и тем же?

Ada

type Array_Type_1 is array(1 ..100) of Float;

type Array_Type_2 is array(1 ..100) of Float;

Языки Ada и C++ используют эквивалентность имен: каждое объявление типа объявляет новый тип, так что будут объявлены два типа. При струк­турной эквивалентности (используемой в языке Algol 68) объявления типа, которые выглядят одинаково, определяют один и тот же тип. Каковы преимущества и недостатки этих двух подходов?


Содержание раздела