next up previous contents
След.: Справочные функции Выше: Функции для работы с Пред.: Функции поиска в массиве   Содержание


Преобразование массивов

MERGE(TSOURCE,FSOURCE,MASK) -- поэлементная функция; параметры любого (но одного) типа, маска -- логическая. Результат равен $ T$ если маска истинна и $ F$ в противном случае. Основной смысл функции в применении ее к массивам: тогда на истинных позициях (в смысле маски) будут стоять элементы $ T$ , а в ложных -- элементы $ F$ .

MOVE_ALLOC(FROM,TO) -- стерильная подпрограмма переноса размещаемого массива. Первый аргумент -- размещаемый массив любого типа и ранга, второй -- исходящий, массив того же ранга и совместимый по типу. Массив, размещенный в FROM становится размещен в TO, а FROM становится неразмещенным; все указатели, связанные с FROM, связываются с TO при условии, что он имеет атрибут TARGET.

PACK(ARRAY,MASK[,VECTOR]) -- функция упаковки массива в одномерный массив в порядке следования элементов массива под управлением маски: берутся только истинные (в смысле маски, то есть стоящие в тех же позициях, что и истинные элементы маски) элементы. Маска должны быть согласована с массивом, то есть иметь ту же конфигурацию или быть скаляром. Необязательный одномерный массив VECTOR задает элементы, которым нужно дополнить конструируемый массив, чтобы он был того же размера, что и VECTOR. Иными словами, первые элементы VECTOR замещаются истинными в смысле маски элементами массива.

UNPACK(VECTOR,MASK,FIELD) -- функция распаковки массива из одномерного. По существу, элементы FIELD замещаются истинными (в смысле маски) элементами VECTOR в порядке следования.

RESHAPE(SOURCE,SHAPE[,PAD,ORDER]) -- функция изменения конфигурации массива. Аргумент SOURCE -- массив любого типа. Если третий аргумент опущен или нулевого размера, размер не менее произведения элементов SHAPE -- такой размер имеет и результат функции. Аргумент SHAPE -- целый массив ранга один, размера не более 15, с положительными элементами. Аргумент PAD необязательный, массив того же типа (вкючая разновидность), что и SOURCE. Аргумент ORDER необязательный, целый, той же конфигурации, что и SHAPE. Его значение -- перестановка чисел от $ 1$ до $ n$ , где $ n$ -- размер SHAPE. Если опущен, по умолчанию принимается набор $ 1,\dots,n$ . Результат -- массив конфигурации SHAPE того же типа, что и SOURCE. Его элементы, после перестановки индексов согласно ORDER, суть элементы SOURCE в обычном порядке, дополненные при необходимости элементами PAD.

SPREAD(SOURCE,DIM,NCOPIES) -- копирует массив вдоль заданного (нового) измерения NCOPIES раз.

NULL([MOLD]) -- возвращает пустой указатель или неразмещенный массив. Аргумент, если есть -- указатель и размещаемый. Тип -- любой, в том числе и процедурный указатель. Статус указателя может быть неопределен, не связан или связан. Размещаемый аргумент может быть размещен или не размещен. Если аргумент присутствует, результат имеет те же характеристики, что и аргумент -- тип, ранг и т.п. Если аргумент опущен, характиристик определяются по объекту, который связывается с результатом функции (присваивание указателю, инициализация при объявлении или значение по умолчанию поля производного типа, конструктор структуры, фактический аргумент, в операторе DATA). В другом контексте аргумент обязателен. Обязателен он и в случае, если функция является фактическим аргументом родовой процедуры -- чтобы выбрать конкретную процедуру по характеристикам аргумента.



Ilya A. Chernov 2012-12-19
X