Навигация:
<< >> Оглавление Указатель

Описание пользователя

Глава 2. Интерфейс пользователя

§2.14. Создание и изменение структур

Описывается создание структур – сложных типов переменных, состоящих из произвольного набора полей. Структуры позволяют объединять разнородные данные в одной переменной.

Структура в RDS – это специальный тип переменной, состоящий из произвольного количества полей, каждое из которых имеет собственное имя и тип. Чаще всего структуры используются для работы с какими-либо сложными данными: комплексными числами, векторами, кватернионами и т.п. Использовать структуры в таких случаях предпочтительнее, чем, например, матрицы. Во-первых, структура, в отличие от матрицы, всегда имеет постоянный размер в памяти, поэтому RDS работает с ней быстрее. Во-вторых, поля структуры, в отличие от элементов матрицы, имеют собственные имена, и пользователю легче запомнить, что вещественная часть комплексной переменной – это «a.Im», а не «a[0]». В-третьих, в структуре могут присутствовать поля различных типов, а все элементы матрицы или массива всегда имеют один и тот же тип.

Типы полей структуры могут быть любыми, кроме массивов (вместо них следует использовать матрицы), произвольных типов и тех структур, в которые в качестве поля входит данная структура (в этом случае структура включала бы сама себя). Каждая структура имеет уникальное имя типа, по которому к ней обращается пользователь. Для блоков RDS имя типа структуры и имена ее полей обычно не имеют значения, они опознают структуру исключительно по типам ее полей. С точки зрения модели блока, все структуры, имеющие, например, два поля, первое из которых имеет тип double, а второе – int, будут эквивалентны, как бы ни назывались типы этих структур и их поля.

Окно списка структур

Рис. 228. Окно списка структур

Структура может быть в любой момент создана или отредактирована пользователем при помощи пункта главного меню RDS «система | структуры». При этом следует иметь в виду, что, если эта структура уже используется в каких-либо блоках схемы, или в качестве типа поля в других структурах, схема может перестать работать: связи, подключенные к отдельным полям структур, отключатся при переименовании этих полей; модели, ожидающие конкретного порядка и состава полей структуры, откажутся работать при изменении порядка или типов ее полей, и т.п. По этой причине к редактированию полей уже использующихся в схеме структур следует подходить с осторожностью, и RDS предупреждает пользователя при попытке сделать это.

При выборе в главном меню RDS пункта «система | структуры» открывается окно со списком уже имеющихся в схеме структур (рис. 228). Если схема не загружена, в этом окне будет показан набор структур по умолчанию, хранящийся в файле «types.dat» в папке настроек RDS – этот набор автоматически добавляется к каждой создаваемой схеме. Список состоит из двух колонок: в колонке «тип» отображается имя типа структуры, в колонке «в блоках» – общее число блоков загруженной схемы, в которых эта структура уже используется. Если в колонке «в блоках» выводится какое-либо число, неаккуратное редактирование этой структуры может привести к неработоспособности схемы.

В нижней части окна находятся кнопки «сохранить», записывающая текущий список структур в файл «types.dat» в качестве набора по умолчанию, и «OK», закрывающая окно. Справа от списка располагаются кнопки для добавления, удаления, редактирования и изменения порядка структур:

Кнопка Действие
Кнопка: вверх Переместить выбранную структуру на одну позицию вверх по списку.
Кнопка: вниз Переместить выбранную структуру на одну позицию вниз по списку.
Кнопка: {...} Редактировать выбранную структуру (вместо нажатия этой кнопки можно сделать двойной щелчок на имени структуры в списке).
Кнопка: плюс Добавить новую структуру.
Кнопка: удалить Удалить выбранную структуру.

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

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

Окно редактирования структуры

Рис. 229. Окно редактирования структуры

В верхней части окна редактирования структуры находится поле для ввода имени ее типа. Имя типа структуры может содержать только буквы латинского алфавита, цифры и знак подчеркивания, и при этом оно не должно начинаться с цифры (эти же требования предъявляются к именам, например, в синтаксисе языка C). Имя типа должно быть уникальным, нельзя дать структуре имя типа, уже данное другой структуре. Имена типов, как и имена переменных в RDS, чувствительны к регистру: «Complex», «complex» и «COMPLEX» будут считаться разными типами.

Основную площадь окна занимает список полей структуры, фактически представляющий собой сокращенный вариант списка, используемого для задания переменных блока. Список содержит следующие колонки:

Непосредственно под списком полей отображается общее их число и строка типа – специальная строка, в которой каждому полю соответствует один или несколько символов. Эта строка используется программистами при написании моделей блоков (см. §2.5.1 руководства программиста). Справа от списка находятся кнопки, аналогичные кнопкам редактирования переменных блока, описанным в §2.9.2:

Кнопка Действие
Кнопка: вверх Переместить выбранное поле на одну позицию вверх по списку.
Кнопка: вниз Переместить выбранное поле на одну позицию вниз по списку.
Кнопка: плюс Добавить поле перед выбранным (в списке появляется пустая строка, щелкнув на которой можно ввести имя поля). Добавить поле в конец списка всегда можно, щелкнув на пустой строке после последнего поля, специальной кнопки для этого не предусмотрено.
Кнопка: удалить Удалить выбранное поле.

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

Кнопка «OK» внизу окна запоминает внесенные изменения в списке структур схемы, кнопка «отмена» закрывает окно без изменений. После закрытия окна редактирования структуры на экране снова появляется окно списка структур, изображенное на рис. 228. Если в настройках RDS разрешена отмена действий пользователя, после закрытия окна списка структур все внесенные изменения можно отменить, либо нажав Ctrl + Z, либо выбрав в главном меню RDS пункт «система | отмена» (см. §2.1).


<< >> Оглавление Указатель