Cтраница 2
Система UCB поддерживает функцию ARGV ( N, S), которая возвращает N - й аргумент как упакованный массив типа CHAR в строке S, и функцию ARGS, возвращающую число аргументов. [16]
Для этого выполним описание типа слово. При передаче в строку нам поможет специальная форма оператора unpack: длина распакованного массива может быть больше по сравнению с длиной упакованного массива. Наша программа составляет название книги путем со единения трех строк ( каких именно, пока секрет. [17]
Можно определить, например, такой тип: файл, содержащий в качестве компонентов указатели на некоторую запись, у которой в качестве полей использованы массив целых чисел, упакованный массив литер, множество, диапазон, логический, перечисляемый и вещественные типы. При определении такого типа использованы все типы языка программирования Паскаль. Конечно, это не более чем иллюстрация взаимного использования типов. Но иллюстрация достаточно красноречивая. Она показывает большую мощь и гибкость типов языка Паскаль. Пожалуй, ни один из современных языков программирования не может похвастаться таким набором различных типов. [18]
Просматривая информацию о чертеже, записанную на выходном языке и размещенную на магнитной ленте, диспетчер определяет объем очередной подлежащей обработке порции информации, переписывает ее в оперативную память и в соответствии с кодом элемента передает управление одной из обрабатывающих программ. Производятся масштабное и аффинное преобразования элемента, после чего информация плотно упаковывается в ячейках. Упакованный массив ОС обрабатывается программой привязки, формирующей программу вычерчивания на языке чертежного автомата. При достижении определенного объема программы вычерчивания диспетчер организует ее вывод на перфоратор. [19]
![]() |
Синтаксис массива. [20] |
Элементы матрицы имеют значения булевого типа. Слово PACKED ( упакованный) указывает компилятору, что при размещении элементов матрицы можно в одно слово памяти помещать несколько элементов матрицы. Программа, написанная с использованием упакованных массивов, будет работать несколько медленнее, чем та же программа с неупакованными массивами, так как выбор из памяти неупакованного массива осуществляется быстрее. [21]
С другой стороны, не все, кажущиеся разумными вещи, оказываются допустимыми. Он также недопустим с точки зрения транслятора с языка Паскаль. Ведь транслятор с языка Паскаль не умеет разрывать на две части элементы упакованных массивов, чтобы одна часть элемента упакованного массива хранилась в одном машинном слове, а другая - в другом машинном слове. Вместо этого транслятор с языка Паскаль вынуждает оставлять неиспользованные биты и использовать для размещения 15-го байта целое слово. Комментарии, как говорится, излишни. [22]
С другой стороны, не все, кажущиеся разумными вещи, оказываются допустимыми. Он также недопустим с точки зрения транслятора с языка Паскаль. Ведь транслятор с языка Паскаль не умеет разрывать на две части элементы упакованных массивов, чтобы одна часть элемента упакованного массива хранилась в одном машинном слове, а другая - в другом машинном слове. Вместо этого транслятор с языка Паскаль вынуждает оставлять неиспользованные биты и использовать для размещения 15-го байта целое слово. Комментарии, как говорится, излишни. [23]
Элементы данных размером в полное слово, такие, как числа, ставят перед процедурой сбора мусора особые проблемы. Обычно эти данные целиком занимают элемент кучи, не оставляя дополнительных битов для маркировки. В таких случаях чаще всего элементы размером в полное слово выносят в специальную часть кучи, а все биты сбора мусора для этих элементов записывают в специальный упакованный массив ( битовый вектор), расположенный за пределами кучи. [24]
Выбор, подходящий в одной ситуации, может оказаться совершенно неприемлемым в другой. Во многих случаях дополнительное время, требуемое для работы с упакованным массивом, может быть уменьшено выполнением упаковки и распаковки компонент массива в одной операции, а не раз за разом при каждом обращении к массиву. Предположим, нужно прочесть текст из файла и запомнить слова текста в переменной слово, которая является упакованным массивом размером в 20 символов. Вместо того чтобы копировать символы из файла непосредственно в данную переменную, мы будем запоми - нать их во временном неупакованном буфере. [25]