Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОИП.doc
Скачиваний:
5
Добавлен:
31.08.2019
Размер:
179.71 Кб
Скачать
  1. Полиморфизм виртуальных подприборов и функций. Особенности полиморфизма числовых функций.

Полиморфные ВП и функции могут подстраиваться к входным данным различного типа. Большинство структур LabVIEW являются полиморфными, таковыми являются некоторые ВП и функции.

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

Полиморфизм числовых функций

Арифметические функции получают числовые входные данные. За некоторыми исключениями, отмеченными в описании функций, выходные данные имеют то же числовое представление, что и входные данные либо, если входы имеют различное представление, выход имеет представление входа с наиболее широким представлением.

Арифметические функции работают с числами, с массивами чисел, с кластерами чисел, с массивами кластеров чисел, с комплексными числами и т.д. Формальное рекурсивное определение допустимых входных типов данных имеет следующий вид:

Numeric type = numeric scalar OR array [numeric type] OR cluster [numeric types]

Числовые скаляры могут быть числами с плавающей точкой, целыми числами или комплексными числами с плавающей точкой. В LabVIEW не предусмотрено использование массивов, элементы ко-

торых являются массивами.

Массивы могут иметь любое количество измерений (dimension) произвольной размера (длины). Кластеры могут содержать произвольное количество элементов. Тип данных на выходе функций имеет такое же числовое представление, как тип данных на их входе. Функции с одним входом осуществляют поэлементную обработку массива или кластера.

Для функций с двумя входами можно использовать следующие комбинации входов:

• Подобие (Similar) – Оба входа имеют одинаковую структуру. В этом случае выход имеет ту же структуру, что и входы.

• Один скаляр (One scalar) – Один из входов является числовым скаляром, а другой – массивом или кластером. В этом случае выходом будет массив или кластер.

• Массив (Array of) – Один из входов является числовым массивом, а другой – имеет числовой тип элементов этого массива. В этом случае выходом будет массив.

Для подобных входов LabVIEW выполняет функцию над соответствующими элементами структур. Например, LabVIEW может сложить два массива элементов поэлементно. Оба массива должны иметь одну и ту же размерность. Вы можете складывать массивы с разным числом элементов; результат такого сложения (массив) будет иметь столько элементов, сколько их у входного массива с наименьшим числом элементов. Кластеры должны иметь одинаковое число элементов, а соответствующие их элементы должны быть одинакового типа.

Нельзя использовать функцию Multiply (умножение) для выполнения матричного умножения. Если Вы примените функцию Multiply к двум матрицам, то LabVIEW возьмет первое число из первой строки первой матрицы, умножит его на первое число первой строки второй матрицы и т.д. Для операций, принимающих на одном входе скаляр, а на другом входе – структуру в виде массива или кластера, LabVIEW выполнит функцию над скаляром и соответствующими элементами этой cтруктуры. К примеру, LabVIEW может вычесть число из всех элементов массива, независимо от его размерности. Для операций, принимающих на одном входе данные числового типа, а на другом входе массив элементов того же типа, LabVIEW выполнит функцию над каждым элементом массива. Например, график представляет собой массив точек, каждая из которых задается кластером из двух чисел x и y. Чтобы сместить график на 5единиц в направлении x и на 8 единиц в направлении y, Вы можете прибавить к графику (как к массиву точек) точку (5,8). На Figure B - 1 показаны возможные комбинации полиморфизма для функции Add (сложить).