Интерактивное графическое программное обеспечение PC-DMIS (Глава 22: Ветвление с использованием управления потоком), страница 4

DO/ Начинает цикл DO / UNTIL. Все операторы выполняются как минимум один раз и программа выходит из цикла, как только выражение возвращает значение "ложь".

ASSIGN/COUNT = COUNT + 1 Эта строка увеличивает значение переменной COUNT на один, так что в конце концов выполнение цикла будет прервано, когда проверка состояния возвратит значение "ложь".

COMMENT/OPER,"Measured " + COUNT + " out of " + C1.INPUT + " times." Эта строка отображает сообщение, указывающее число уже выполненных измерений от общего заданного числа повторений цикла.

UNTIL/COUNT == C1.INPUT Эта строка завершает выполнение команд внутри цикла DO / UNTIL, как только условие возвратит значение "ложь". В противном случае, после вполнение этой команды произойдет возврат к оператору DO.

Select / End Select

Пункт меню Select / End Select позволяет добавлять обычных блок, используемый в сочетании с парами CASE / END CASE и Default Case / End Default Case. Выражение для команды Select приводит данные, которые сравниваются с выражением в операторе выбора. Если два выражения возвращают одно и то же, то оператор в блоке Case / End Case Block будет выполнен. Блок SELECT / END SELECT окружает группу блоков CASE / END CASE и DEFAULT CASE / END DEFAULT CASE.

Командная строка окна Edit оператора SELECT / END SELECT: SELECT/expression END_SELECT/

Для вставки команд Select / End Select:

1.  Расположите курсор в нужном положении в окне Edit.

2.  Выберите Select / EndSelect из панели меню. Операторы SELECT / End SELECT появятся в окне Edit.

Пример кода Select / End Select

Пары, SELECT / END_SELECT, CASE / END_CASE, DEFAULT CASE / END_DEFAULT CASE, работающие вместе, возвращают множественные условия, предоставляющие широкий спектр альтернатив.

Предположим, у вас есть пять окружностей, помеченых с CIR1 по CIR5, и вы хотите, чтобы оператор мог измерить окружность, просто нажав кнопку на клавиатуре. Вы можете использовать подобный код:

Весь код

DO/

C1=COMMENT/INPUT,Type a number to measure that circle:

,FOR CIR1 - Type 1

,FOR CIR2 - Type 2

,FOR CIR3 - Type 3

,FOR CIR4 - Type 4

,FOR CIR5 - Type 5

,Any other character exits the loop

SELECT/C1.INPUT

CASE1/

CIR1=FEAT/CIRCLE

ENDMEAS/

END_CASE

CASE2/

CIR2=FEAT/CIRCLE

ENDMEAS/

END_CASE

CASE3/

CIR3=FEAT/CIRCLE

ENDMEAS/

END_CASE

CASE4

CIR4=FEAT/CIRCLE

ENDMEAS/

END_CASE

CASE5

CIR5=FEAT/CIRCLE

ENDMEAS/

END_CASE

DEFAULT CASE

COMMENT/OPER,Now exiting loop.

END_DEFAULT CASE

END_SELECT

UNTIL C1.INPUT < 1 OR C1.INPUT > 5

Пояснение к примеру кода

SELECT/C1.INPUT Эта строка воспринимает число или строковую переменную (в этом случае - число), введенную пользователем и определяет, какой блок CASE/END_CASE будет выполняться после ввода. Обратите внимание на то, что пара SELECT / END_SELECT окружает весь список кода. Все пары CASE / END_CASE и DEFAULT CASE / END_DEFAULT CASE должны находиться между этими двумя строками.

END_SELECT Отмечает конец кода, содержащегося внутри пары SELECT / END SELECT.

CASE1 - CASE5 В зависимости от значения C1.INPUT, выполняется один из блоков кода CASE. Например, если C1.INPUT возвращает значение 1, выполняется блок кода CASE 1, измеряя CIR1. Если возвращается значение 2, то выполняется блок кода CASE 2, измеряя CIR2, и так далее.

END_CASE Эти строки завершают отдельные блоки кода case.

DEFAULTCASE Если значение C1.INPUT не соответствует ни одному из определенных операторов CASE (если значение не являетяс числом от одного до пяти) выполняется блок кода DEFAULT CASE. В этом случае отображается сообщение, говорящее о том, что вы выходите из цикла.

Обратите внимание, что цикл DO / UNTIL окружает весь пример кода. Это позволяет пользователю выбирать из меню, созданного из строки COMMENT/INPUT до тех пор, пока пользователь не выберет символ, не распознаваемый операторами CASE.

Case / End Case

Пункт меню Case / EndCase позволяет добавлять условный блок в программу детали. Пункты между командами CASE и END CASE будут выполнены, если выражение для оператора выбора возвращает значение, равное выражению соответствующей команды SELECT. В противном случае, блок операторов будет пропущен. Блок операторов CASE / END CASE должен располагаться сразу после команды SELECT или END CASE предыдущего блока CASE / END CASE. Таким образом, PC-DMIS не может сравнивать несколько выражений с одним оператором выбора.