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

Контрольные вопросы Задачи

1. Спецификация литерного типа данных

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

2. Спецификация натурального типа данных

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

3. Спецификация целого типа данных

Построить спецификацию целого типа данных. Предусмотреть среди прочих операции: создания «пустого» значения типа, преобразования строки в целое, образования диапазона целых чисел.

4. Спецификация вещественного типа данных

Построить спецификацию вещественного типа данных. Предусмотреть среди прочих операции: создания «пустого» значения типа, конструктора значения типа, преобразования целого в вещественное, образования диапазона вещественных чисел.

5. Спецификация символьного типа данных

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

6. Спецификация строки символов

Построить спецификацию строки символов.

7. Спецификация спецификации имени

Построить тип данных «спецификация имени». Данный тип определяет множество спецификаций имен, каждая из которых является парой идентификатор, тип. Предусмотреть операции: создания спецификации имени, выделения имени, выделения типа.

8. Спецификация константы

Построить спецификацию константы. Тип констант определяет множество констант, каждая из которых является тройкой идентификатор, тип, значение. В языках программирования константа задается обычно в виде: const a = 5. Предусмотреть операции: создания константы, поиска описания константы, получения идентификатора, типа, значения из описания константы. В качестве усложнения задачи можно рассмотреть отдельно спецификации: типовой константы, константы-переменной, константы-функции и константы-процедуры.

9. Спецификация типа данных «последовательность»

Построить спецификацию типа данных «последовательность». Последовательность является наиболее распространенным типом данных языков программирования, но редко оформляемым формально.

9. Спецификация типа данных «блок спецификаций»

Построить спецификацию типа данных «блок спецификаций». Тип определяет множество значений, каждое из которых образуется последовательностью спецификаций имен.

10. Спецификация типа данных «запись»

Построить спецификацию типа запись.

11. Спецификация типа данных «оператор»

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

12. Спецификация типа данных «программа»

Построить спецификацию типа «программа». В отношении этого типа данных справедлив комментарий к задаче 11.

Глоссарий

алгебра слов

алгебра термов

атрибут типа данных

базисный терм

выражение

генератор типов

динамическая переменная

импортный атрибут типа

исходный родовой тип

константа

конструкторы выражений

многоосновная алгебра

носитель алгебры

ограниченный тип типов

одноосновная алгебра

определение имени

параметризованный тип

переменная

подтип типов

полиморфные функции и процедуры

приращение алгебры

приращение сигнатуры

расширение алгебры

расширение сигнатуры

реализация сигнатуры

редукт алгебры

редукт сигнатуры

родовой тип

родовые функции и процедуры

сигнатура

статическая переменная

схема типов

типовая функция

экспортный атрибут типа

I – индексированное семейство множеств

1 Для обозначения этой операции используются также термины «кластер», «класс»

2 Заметим, что в спецификации параметра «родительский_тип» знак «*» обозначает тот тип, который будет подставляться в качестве аргумента при конкретизации типа «отрезок»

3 См. сноску в этом разделе

4 См. там же

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