Массивы. Лекция 5

Содержание

Слайд 2

Массивы Массив состоит из элементов и характеризуются размерностью. Элементы – это

Массивы

Массив состоит из элементов и характеризуются размерностью. Элементы – это данные,

из которых состоит массив. Размерность – это длина, высота или глубина массива. Массив может иметь одну или более размерностей и содержать до 2^31-1 элементов в каждом измерении, если позволяет память.
Массивы можно создавать из чисел, булевских элементов, строк, путей, сигналов и кластеров. Рассмотрим применение массивов при работе с набором однотипных данных и при выполнении повторяющихся вычислений. Массивы идеально подходят для хранения сигналов или данных, сгенерированных в циклах, в каждой итерации которых формируется один элемент массива.
Примечание: индексация массивов в LabVIEW начинается с нуля. Индекс первого элемента массива равен нулю независимо от размера массива

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 3

Массивы Ограничения при создании массива Вы не можете создать массив массивов.

Массивы

Ограничения при создании массива
Вы не можете создать массив массивов. Однако вы

можете использовать многомерный массив или создать массив кластеров, в котором каждый кластер содержит один или более массивов. Также вы не можете создать массив элементов управления субпанелями, закладками, элементов управления .NET, ActiveX, графических индикаторов типа Chart или XY c несколькими графиками.
Индексация
Элементы в массиве упорядочены. Для получения доступа к любому элементу используется индекс. Индексация начинается с нуля, то есть индекс лежит в диапазоне от 0 до n – 1, где n - число элементов в массиве. Например, для 12 месяцев в году n = 12, а индекс принимает значения от 0 to 11. Третий месяц, март, имеет индекс 2.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 4

Массивы На рисунке ниже показан пример массива чисел. Первый показанный элемент

Массивы

На рисунке ниже показан пример массива чисел. Первый показанный элемент массива

(3.00) имеет индекс 1, а второй элемент (1.00) - индекс 2. Элемент с индексом 0 не виден на рисунке, поскольку переключателем индекса выбран элемент 1. Элемент, на который указывает переключатель индекса, всегда отображается в верхнем левом углу индикатора элементов
1 – Индекс массива 2 – Элементы массива

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 5

Массивы Массивы элементов управления и индикаторов на лицевой панели создаются путем

Массивы

Массивы элементов управления и индикаторов на лицевой панели создаются путем установки

контейнера массива на лицевую панель, как показано на рисунке ниже, и перетаскивания в него объекта данных или элемента. Элемент массива может быть числом, булевским элементом, строкой, путем, ссылкой или кластером элементов управления или индикаторов. Массив на лицевой панели при этом выглядит следующим образом.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 6

Массивы Если вы попытаетесь перетащить в контейнер массива неразрешенный элемент управления

Массивы

Если вы попытаетесь перетащить в контейнер массива неразрешенный элемент управления или

индикатор, у вас это не получится. Вы должны поместить объект в контейнер массива, прежде чем сможете использовать массив на блок-диаграмме. В противном случае терминал массива останется черным, с пустыми скобками, и не будет иметь связанного с ним типа данных.
Двумерные массивы
В предыдущем примере рассматривались одномерные массивы. В двумерном массиве элементы хранятся в сетке. Для определения местоположения элементов используется индекс строки и индекс столбца, нумерация которых начинается с нуля. На рисунке показан двумерный массив из 8 столбцов по 8 строк, который содержит 64 элемента

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 7

Массивы Для создания на лицевой панели многомерного массива щелкните правой кнопкой

Массивы
Для создания на лицевой панели многомерного массива щелкните правой кнопкой по

переключателю индексов и выберите из контекстного меню Add Dimension. Вы можете также растягивать переключатель индексов, пока не получите желаемую размерность.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 8

Массивы Вы можете инициализировать массив или оставить его неинициализированным. В инициализированном

Массивы

Вы можете инициализировать массив или оставить его неинициализированным. В инициализированном массиве

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

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 9

Массивы В массиве на следующем рисунке проинициализированы 6 элементов. После инициализации

Массивы

В массиве на следующем рисунке проинициализированы 6 элементов. После инициализации элемента

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

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 10

Массивы Массивы констант Для создания на блок-диаграмме массива констант выберите в

Массивы

Массивы констант
Для создания на блок-диаграмме массива констант выберите в палитре функций

константу массива, поместите на блок-диаграмму контейнер массива и поместите строковую, числовую, булевскую или кластерную константу в контейнер. Вы можете использовать массивы констант для хранения неизменных данных или в качестве базы для сравнения с другим массивом.
Автоиндексация массива
При подключении массива ко входу или выходу цикла For или While, вы можете связать каждую итерацию цикла с элементом в этом массиве, разрешив автоиндексацию туннеля. Изображение туннеля изменится с закрашенного квадрата на показанное слева. Щелкните по туннелю правой кнопкой и выберите из контекстного меню Enable Indexing или Disable Indexing для изменения состояния туннеля.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 11

Массивы Если вы разрешите автоиндексацию массива, подключенного ко входному терминалу цикла

Массивы

Если вы разрешите автоиндексацию массива, подключенного ко входному терминалу цикла For,

LabVIEW установит счетчик задания количества итераций цикла равным размеру массива, поэтому вам не нужно подключать терминал задания количества итераций. Поскольку вы можете использовать циклы For для обработки массивов по одному элементу в каждой итерации, по умолчанию LabVIEW разрешает автоиндексацию всех массивов, подключенных к циклу For. Вы можете отключить автоиндексацию, если вам не нужно обрабатывать массив поэлементно.
На рисунке цикл For выполняется столько раз, сколько элементов в массиве.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 12

Массивы Если вы разрешите автоиндексацию для нескольких туннелей или подключите терминал

Массивы

Если вы разрешите автоиндексацию для нескольких туннелей или подключите терминал задания

количества итераций цикла Count, количество итераций будет равно наименьшему из заданных значений. Например, если в цикл входят два автоиндексированных массива с 10 и 20 элементами соответственно, а счетчик задания количества итераций цикла равен 15, цикл выполнится только 10 раз, проиндексировав все элементы первого массива и только первые 10 элементов второго.
Выходные массивы
При автоиндексации в массиве выходного туннеля новый элемент в выходной массив записывается в каждой итерации цикла. Таким образом, размер автоидексированных выходных массивов всегда равен количеству итераций. Провод, соединяющий автоиндексируемый на границе цикла выходной туннель с индикатором массива, становится толще, а выходной туннель содержит квадратные скобки, обозначающие массив, как показано на рисунке ниже

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 13

Массивы Щелкните правой кнопкой мыши по туннелю на границе цикла и

Массивы
Щелкните правой кнопкой мыши по туннелю на границе цикла и выберите

из контекстного меню Enable Indexing или Disable Indexing для разрешения или запрещения автоиндексации. По умолчанию в циклах While автоиндексация отключена. Например, вы можете отключить автоиндексацию, если вам нужно только последнее переданное в туннель значение.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 14

Массивы Вы можете использовать два вложенных цикла For для создания двумерного

Массивы
Вы можете использовать два вложенных цикла For для создания двумерного массива.

Во внешнем цикле For создаются элементы строки, а во внутреннем – столбца, как показано на рисунке

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 15

Кластеры В кластеры группируют элементы данных разных типов. Примером кластера является

Кластеры

В кластеры группируют элементы данных разных типов. Примером кластера является кластер

ошибок LabVIEW, который объединяет булевский, числовой и строковый элементы. Кластер аналогичен записи или структуре в текстовых языках программирования.
Объединение нескольких элементов данных в кластер уменьшает загромождение проводниками блок-диаграммы, а также количество терминалов панели подключения subVI. Максимальное количество терминалов панели подключения равно 28. Если на лицевой панели вашего VI находится более 28 элементов управления и индикаторов, которые вы хотите передать в другой VI, сгруппируйте часть из них в кластер и назначьте кластеру терминал на панели подключения.
Большинство терминалов кластеров и связанные с ними проводники окрашены на блок-диаграмме в розовый цвет.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 16

Кластеры Терминалы кластеров ошибок и связанные с ними проводники окрашены на

Кластеры

Терминалы кластеров ошибок и связанные с ними проводники окрашены на блок-диаграмме

в горчичный цвет Терминалы кластеров, состоящих из числовых компонентов и называемых иногда точками, а также связанные с ними проводники окрашены на блок-диаграмме в коричневый цвет. Вы можете подключить коричневые числовые кластеры к функциям обработки чисел, например, Add или Square Root, для выполнения операций одновременно над всеми элементами кластера.
Порядок элементов в кластере
Хотя и в кластере, и в массиве элементы упорядочены, вы должны разделять все элементы кластера одновременно, используя функцию Unbundle. Вы можете использовать функцию Unbundle By Name для разделения элементов кластера по имени. При использовании функции Unbundle by Name у каждого элемента кластера должна быть метка. Кластеры отличаются от массивов фиксированным размером. Подобно массиву, кластер является либо элементом управления, либо индикатором. Кластер не может содержать элементы управления и индикаторы одновременно.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 17

Кластеры Для создания на лицевой панели кластера элементов управления или индикаторов

Кластеры

Для создания на лицевой панели кластера элементов управления или индикаторов поместите

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

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

На рисунке справа показан пример кластера из трех элементов управления: строкового, булевского переключателя и числового элемента. Кластер может включать либо элементы управления, либо индикаторы, но не оба типа объектов одновременно.

Слайд 18

Кластеры Создание кластера констант Для создания на блок-диаграмме кластера констант выберите

Кластеры

Создание кластера констант
Для создания на блок-диаграмме кластера констант выберите кластер констант

в палитре функций, поместите контейнер кластера на блок-диаграмму и добавьте в нее строковую, числовую, булевскую константу или кластер констант. Вы можете использовать кластер констант для хранения постоянных данных или в качестве базы для сравнения с другим кластером. Если у вас есть кластер элементов управления или индикаторов на лицевой панели, и вы хотите создать кластер констант, содержащий такие же элементы на блок-диаграмме, вы можете или перетащить этот кластер с лицевой панели на блок-диаграмму, или щелкнуть правой кнопкой мыши по кластеру на лицевой панели и выбрать из контекстного меню Create»Constant.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 19

Кластеры Упорядочивание элементов в кластере Элементы кластера имеют логический порядок, не

Кластеры

Упорядочивание элементов в кластере
Элементы кластера имеют логический порядок, не связанный с

их местом в контейнере. Первый элемент, помещенный вами в кластер – элемент 0, второй – элемент 1, и так далее. При удалении элемента порядок перестраивается автоматически. Порядок элементов кластера определяет очередность, в котором элементы появляются как терминалы функций Bundle и Unbundle на блок-диаграмме. Вы можете просматривать и изменять порядок элементов кластера, щелкнув правой кнопкой мыши по границе кластера и выбрав из контекстного меню Reorder Controls In Cluster.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 20

Кластеры Упорядочивание элементов в кластере 1 – Кнопка подтверждения 2 –

Кластеры

Упорядочивание элементов в кластере
1 – Кнопка подтверждения 2 – Кнопка отмены 3 –

Курсор
4 – Текущий индекс 5 – Новый индекс

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 21

Кластеры Упорядочивание элементов в кластере Белое окошко на каждом элементе показывает

Кластеры

Упорядочивание элементов в кластере
Белое окошко на каждом элементе показывает текущий номер

элемента в кластере. В черном окошке показывается его новый номер. Для задания номера элемента кластера введите новый номер в текстовое окно Click to set to и щелкните по элементу. Порядковый номер этого элемента станет равным введенному, а номера других элементов подстроятся. Сохраните изменения, нажав кнопку Confirm на панели инструментов, либо вернитесь к исходному порядку, нажав кнопку Cancel.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 22

Кластеры Использование функций для работы с кластерами Используйте функции кластера для

Кластеры

Использование функций для работы с кластерами
Используйте функции кластера для создания и

манипулирования кластерами. Например, вы можете выполнять следующие операции:
Извлекать отдельные элементы из кластера
Добавлять отдельные элементы в кластер
Разделять кластер на отдельные элементы
Используйте функцию Bundle для сборки кластера, функции Bundle и Bundle by Name - для модификации кластера, а функции Unbundle и Unbundle by Name для разборки кластера. Вы можете также помещать функции Bundle, Bundle by Name, Unbundle и Unbundle by Name на блок-диаграмму, щелкнув по терминалу кластера правой кнопкой мыши и выбрав из контекстного меню Cluster, Class & Variant Palette.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 23

Кластеры Использование функций для работы с кластерами Функции Bundle и Unbundle

Кластеры

Использование функций для работы с кластерами
Функции Bundle и Unbundle автоматически содержат

нужное количество терминалов. Функции Bundle by Name и Unbundle by Name появляются с первым элементом кластера. Используйте инструмент Positioning для изменения размеров функций Bundle by Name и Unbundle by Name для отображения других элементов кластера.
Сборка кластеров
Используйте функцию Bundle для сборки кластера из отдельных элементов или изменения значений отдельных элементов существующего кластера, не задавая новых значений для всех элементов. Используйте инструмент Positioning для изменения размера функции, или щелкните правой кнопкой мыши по входу элемента и выберите из контекстного меню Add Input.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 24

Кластеры Изменение кластера При подключении входа кластера вы можете подключать только

Кластеры

Изменение кластера
При подключении входа кластера вы можете подключать только те элементы,

которые хотите изменить. Например, кластер Input Cluster на рисунке содержит три элемента управления.
Если вы знаете порядок элементов в кластере, то можете использовать функцию Bundle для изменения значения Command, подключив элементы, как показано на рисунке. Кроме того, вы можете использовать функцию Bundle by Name для замены или доступа к именованным элементам существующего кластера.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 25

Кластеры Функция Bundle by Name работает аналогично функции Bundle, но вместо

Кластеры

Функция Bundle by Name работает аналогично функции Bundle, но вместо обращения

к элементам кластера согласно их порядку, она обращается к элементам кластера по их именам. С этой функцией можно работать с элементами кластера только по их именам. Количество входов функции не обязательно должно соответствовать количеству элементов выходного кластера (output cluster). Щелкните инструментом Operating по входному терминалу и выберите элемент из выпадающего списка. Вы можете также щелкнуть по входу правой кнопкой мыши и выбрать элемент из контекстного меню Select Item.
На рисунке вы можете использовать функцию Bundle by Name для обновления значений Command и Function значениями New Command и New Function.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 26

Кластеры Используйте функцию Bundle by Name для структур данных, которые могут

Кластеры

Используйте функцию Bundle by Name для структур данных, которые могут измениться

в ходе дальнейшего проектирования. При добавлении нового элемента в кластер или изменении порядка элементов вам не придется переподключать функцию Bundle by Name, потому что имена остаются действительными.
Разборка кластеров
Используйте функцию Unbundle для разделения кластеров на отдельные элементы. Используйте функцию Unbundle by Name для получения элементов кластера с заданными именами. Количество выходных терминалов не зависит от количества элементов входного кластера. Щелкните инструментом Operating по выходному терминалу и выберите элемент из выпадающего списка. Вы можете также щелкнуть по элементу правой кнопкой мыши и выбрать из контекстного меню Select Item.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 27

Кластеры Например, при использовании функции Unbundle с кластером на рисунке у

Кластеры

Например, при использовании функции Unbundle с кластером на рисунке у нее

появятся четыре выходных терминала, соответствующие четырем элементам кластера. Вы должны знать порядок элементов кластера, чтобы связать правильный булевский терминал не разобранного кластера с соответствующим переключателем в кластере. В этом примере элементы упорядочены сверху вниз, начиная с элемента 0. С функцией Unbundle by Name вы можете использовать любое число выходных терминалов и получать доступ к отдельным элементам в любом порядке.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»

Слайд 28

Кластеры Кластер ошибок В LabVIEW есть специальный кластер, называемый кластером ошибок.

Кластеры

Кластер ошибок
В LabVIEW есть специальный кластер, называемый кластером ошибок. LabVIEW использует

кластеры ошибок для передачи информации об ошибках. Кластеры ошибок содержит следующие элементы:
status — булевский элемент, принимающий значение TRUE при возникновении ошибки.
code — 32-разрядное целое число со знаком, служащее для идентификации ошибки.
source — строка, определяющая место происхождения ошибки.

Курс «Лабораторный практикум на стендах National Instruments» Тема «Структуры цикла и выбора»