Вариант 1 (нечетные номера компьютеров)

 

Задание 1. Сортировка столбцов таблицы по возрастанию.

Обработайте таблицу в ВП таким образом, чтобы имелась возможность сортировать различные столбцы таблицы по возрастанию. Саму сортировку осуществите с помощью функции Sort ID Array, которая находится в палитре Functions => Array.

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

После осуществления сортировки кластер следует преобразовать в массив и вернуть столбцы на свои первоначальные места.

Создайте саму таблицу и целочисленный элемент управления, который будет указывать столбец для сортировки. Заполните таблицу произвольными данными.

 

Рисунок 10 – Пример заполненной данными таблицы

 

По умолчанию заголовки столбцов и строк не видны. Чтобы заголовки столбцов стали видны в свойствах таблицы (диалоговое окно свойств вызывается из контекстного меню пунктом Properties) поставьте флажок напротив Show Column Headers. Кроме этого, чтобы появилась возможность редактировать заголовки, включите в контекстном меню таблицы опцию Editable Headers.

Как осуществить сдвиг столбца, по которому будет проводиться сортировка? Сдвиг столбца осуществите с помощью Rotate ID Array из той же палитры Functions=>Array.

Одномерный массив, который подается на вход функции Rotate ID Array, представляет собой строки таблицы. Каждую строку получите с помощью цикла For.

Если для каждой строки в отдельности поменять элементы местами, то в целом в таблице местами поменяются столбцы. Допустим, как и на рис. 10, необходимо сортировать таблицу по третьему столбцу (отсчет начинается с нуля). Иначе говоря, столбец с отчествами надо поместить на первое место. Функция Rotate ID Array перемещает n элементов из начала в конец, если n > 0. И наоборот перемещает n элементов из конца в начало, если n < 0. Если на вход n подан 0, функция строку не изменяет. Столбцы таблицы надо сдвинуть на 2 столбца влево до сортировки, и на 2 столбца вправо после.

Поэтому до использования функции сортировки необходимо подать -2 на вход n функции Rotate ID Array, а после +2.

Преобразование массива в кластер и кластер в массив осуществляют функции Array To Cluster и Cluster To Array соответственно. При преобразовании кластера в массив никаких дополнительных операций проводить не требуется. А при преобразовании массива в кластер следует указать размер кластера. Предполагается, что структура таблицы известна заранее. Делается это через пункт cluster size контекстного меню функции. В данном случае размер кластера равен 4.

Итак, вы разбили таблицу на отдельные строки. В каждой строке в цикле For поменяли местами столбцы. Сформировали из элементов строки кластер. На выходе из цикла For собрали из кластеров массив. Отсортировали массив кластеров по первому элементу в кластере. Опять использовали цикл For, в котором из каждого элемента массива кластеров получили одномерный массив. Поменяли местами столбцы обратно. На выходе цикла For собрали отсортированные строки в таблицу. Остается вывести этот результат в ту же таблицу. Вариант с новой таблицей на лицевой панели в виде элемента индикации, безусловно, возможен. Однако такой способ отображения информации при работе с таблицами по вполне понятным причинам не является общепринятым. Необходимо, чтобы отсортированная таблица отображалась в исходной таблице. В таких случаях удобно использовать локальные переменные. Локальную переменную для любого элемента управления или индикации можно создать из контекстного меню элемента, выбрав пункт Create=>Local Variable. Этот пункт контекстного меню доступен как на лицевой панели, так и на блок-диаграмме. После того, как вы создали локальную переменную, ее терминал появится рядом с терминалом элемента управления или индикации на блок-диаграмме (рис. 11).

 

Рисунок 11 – Локальная переменная и элемент управления/индикации

 

Локальную переменную можно использовать в любом месте блок-диаграммы (если это не противоречит логике выполнения программы). Ее можно использовать как для чтения данных, так и для записи. В качестве последнего используйте локальную переменную, соединив ее с полученной отсортированной таблицей. ВП готов. Перейдите на лицевую панель и испытайте программу.

 

Задание 2. Сортировка столбцов таблицы по убыванию. При этом управление должно осуществляться с лицевой панели ВП.

 

Задание 3. Сделать возможным выбор столбца пользователем по его номеру или по его названию.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: