
- •Предисловие
- •Введение
- •1. Основные особенности языков программирования
- •2. Язык функциональных блок-схем - fbd
- •2.1. Основные понятия
- •1.2. Функции и функциональные блоки
- •Группа «Arithmetic»
- •2.3. Пример программы на языке fbd
- •3. Язык лестничных схем – ld
- •3.1. Контакты
- •3.2. Катушки
- •3.4. Функции и функциональные блоки
- •3.5. Пример программы на языке ld
- •4. Язык последовательных функциональных схем – sfc
- •4.1. Описание элементов sfc
- •4.2 Задание свойств шага
- •4.3 Задание действий
- •4.4. Переход
- •4.5. Пример программы на языке sfc
- •5. Язык структурированного текста – st
- •5.1. Операторы
- •Описание операторов
- •5.2. Примеры использования операторов в простых инструкциях
- •5.3. Сложные инструкции
- •5.4. Использование функций и функциональных блоков
- •5.5. Примеры программ на языке st
- •5.6. Пример программы на языках sfc и st
- •6. Язык списка инструкций – il
- •6.1. Операторы и модификаторы
- •Описание операторов
- •Описание модификаторов
- •6.2. Примеры выполнения инструкций
- •6.3. Использование функций и функциональных блоков
- •6.4. Пример программы на языке il
- •Заключение
- •Библиографический список
- •Оглавление
- •Языки программирования в среде Concept
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •443100, Г. Самара, ул. Молодогвардейская, 244. Корпус 8
5.3. Сложные инструкции
Инструкция выбора
IF ... THEN ... ELSEIF ... ELSE … END _IF
Синтаксис инструкции выбора:
IF <логическое выражение 1> THEN
<инструкция 1>;
< инструкция 2>;
…………….;
ELSEIF < логическое выражение 2>
< инструкция 3>;
< инструкция 4>;
…………….;
ELSE
< инструкция 5>;
< инструкция 6>;
…………….;
END_IF;
Порядок выполнения инструкции выбора:
если логическое выражение 1 равно лог. 1, то будут выполняться инструкции 1, 2, …;
если логическое выражение 1 равно лог. 0 и логическое выражение 2 равно лог. 1, то будут выполняться инструкции 3,4, …;
если логическое выражение 1 и логическое выражение 2 равны лог. 0, то будут выполняться инструкции 5,6, … .
END_IF идентифицирует конец инструкции выбора.
Примечания:
Утверждения ELSE_IF или (и) ELSE могут отсутствовать.
2. Количество вложенных инструкций IF ... THEN ... ELSIF ... THEN ... END_IF не ограничивается, но при этом усложняется анализ таких конструкций, что может привести к появлению ошибок.
Примеры реализации инструкций выбора:
IF A>B THEN (*Если A>B , то будут*)
C:=SIN_REAL(A) * COS_REAL(B); (*вычисляться значения*)
B:=C – А; (*переменных С и В*)
END_IF;
IF FLAG THEN (*Если переменная FLAG*)
C:=SIN_REAL(A) * COS_REAL(B); (*равна лог. 1, то будут*)
B:=C – A; (*вычисляться С и В,*)
ELSE (*иначе будут*)
D:=A + B; (*вычисляться D и Е *)
E:=C * A;
END_IF;
IF NOT FLAG THEN (*Если переменная FLAG*)
C:=SIN_REAL(A) * COS_REAL(B); (*равна лог. 0, то будут*)
B:=SUB_REAL(C,A); (*вычисляться С и В;*)
ELSIF M=N THEN (*если FLAG=1 и M=N, то*)
D:=ADD_REAL(A,B); (*будут вычисляться*)
E:=MUL_REAL(C,A); (*D и E *)
END_IF;
IF A>B THEN (*Если A>B, то будут*)
C:=SIN_REAL(A) * COS_REAL(B); (*вычисляться С и В*)
B:=SUB_REAL(C,A);
ELSIF M=N THEN (*если А≤В и M=N, то*)
D:=ADD_REAL(A,B); (*будут вычисляться*)
E:=MUL_REAL(C,A); (*D и E;*)
ELSE (*если А≤В и M≠N, то*)
F:=F+; (*будут вычисляться*)
G:=С/D; (*F и G*)
END_IF ;
Инструкция выбора CASE ... OF ... ELSE ... END_CASE
Обычно при написании программ не рекомендуется использовать более трех вложенных друг в друга инструкций выбора IF ... END_IF, т.к. при этом программа становится мало понятной, и более удобным оказывается применение инструкций CASE … END_CASE.
Синтаксис оператора выбора:
CASE <выражение> OF
<1-ое число>: <группа инструкций 1>;
<2-ое число >, < 3-е число >: < группа инструкций 2>;
<4-ое число >..<5-ое число >: < группа инструкций 3>;
ELSE < группа инструкций 4>;
END_CASE;
Инструкция выбора состоит из выражения (типа данных INT) и списка групп инструкции. Каждой группе предшествует метка, состоящая из одного или нескольких целых чисел (типа данных ANY_INT), или их диапазона. В инструкции выбора будет выполняться та группа инструкций, значение метки которой равно значению выражения. Утверждение ELSE может отсутствовать. END_CASE идентифицирует конец инструкции выбора.
Пример:
CASE SELECTOR OF
2: A:= B+C/(D+E);
3, 15: B:=B-C;
4..10: C:=D-E;
ELSE
F:=F+1;
G:=С/D*E;
END_CASE;
В примере:
если SELECTOR=2, то вычисляется значение переменной А;
если SELECTOR равен 3 или 15, то вычисляется значение переменной В;
если SELECTOR=(4…10), то вычисляется значение переменной С;
иначе будут вычисляться значения переменных F и G.
Инструкция цикла с известным количеством повторений FOR ... TO ... BY ... DO ... END_FOR
Синтаксис оператора цикла:
FOR <переменная управления>:=<начальное значение>
ТО <конечное значение> BY <шаг > DO
<инструкция 1>;
<инструкция 2>;
…;
END_FOR;
Здесь переменная управления, начальное значение, конечное значение и шаг – переменные типа INT или DINT. Они не могут изменяться командами внутри цикла.
Порядок выполнения оператора цикла:
а) Переменной управления присваивается начальное значение – <переменная управления>:= <начальное значение>;
б) Выполняются все инструкции (1, 2 и т.д.);
в) Переменной управления присваивается новое значение: <переменная управления>:= <переменная управления> + <шаг>;
г) Проверяется условие: <переменная управления> > <конечного значения> при положительном значении шага или <переменная управления> < <конечного значения> при отрицательном значении шага. Если условие не выполняется, то осуществляется переход к пункту б. Если же условие выполняется, то выполнение инструкции цикла заканчивается.
Утверждение END_FOR идентифицирует конец инструкции цикла.
В операторе утверждение BY может отсутствовать, тогда шаг по умолчанию будет равен 1.
Число повторений определяется начальным значением, конечным значением и управляющей переменной.
Примеры инструкций с пятью повторениями:
FOR I:=1 TO 10 BY 2 DO
С: = C * COS_REAL (B);
END_FOR;
FOR I:=10 TO 1 BY –2 DO
С: = C * COS_REAL (B);
END_FOR;
Пример цикла с шагом, заданным единице по умолчанию:
FOR I:=1 TO 5 DO
С: = C * COS_REAL (B);
END_FOR;
Инструкция EXIT
Инструкция EXIT используется для прерывания повторения инструкций (FOR, WHILE, REPEAT) перед выполнением условия окончания.
Если EXIT находится внутри вложенного повторения, самый внутренний цикл (в котором находится EXIT) покидается. Затем выполняется первая инструкция после конца цикла (END_FOR, END_WHILE или END_REPEAT) .
Пример:
SUM : = 0 ; (*Если FLAG1, то SUM=15*)
FOR I := 1 TO 3 DO (*Если FLAG=1, то SUM=6*)
FOR J := 1 TO 2 DO
IF FLAG=1 THEN EXIT;
END_IF ;
SUM := SUM + J ;
END_FOR ;
SUM := SUM + I ;
END_FOR;
Инструкция цикла с предусловием
WHILE ... DO ... END_WHILE
Синтаксис инструкции:
WHILE <булево выражение> DO
<инструкция 1>;
<инструкция 2>;
...;
END_WHILE;
Порядок выполнения инструкции цикла:
а) проверяется булево выражение и если оно истинно, то осуществляется переход к выполнению группы инструкций, иначе – выход из цикла;
б) переход к пункту а.
Утверждение END_WHILE идентифицирует конец оператора цикла.
Если при входе в инструкцию цикла булево выражение ложно (равно нулю), то группа инструкций не будет выполнена ни разу.
Пример: Необходимо выполнить группу инструкций 3 раза
А:=1;
WHILE А<=15 DO
А:=А+5;
...;
END_WHILE;
Инструкция повторения с постусловием
REPEAT ... UNTIL ... END_REPEAT
Синтаксис оператора:
REPEAT
<инструкция 1>;
<инструкция 2>;
...;
UNTIL <булево условие>
END_REPEAT;
Инструкция REPEAT вызывает повторяемое выполнение группы инструкций (по крайней мере, один раз) пока булево условие, идентифицируемое утверждением UNTIL, не станет равным лог. 1 (TRUE). Инструкция END_REPEAT идентифицирует конец инструкции повторения.
Повторение может быть завершено преждевременно с использованием EXIT утверждения.
Пример: Необходимо выполнить группу инструкций 5 раз.
var := 1;
REPEAT
var := var + 2;
…
UNTIL var >= 10;
END_REPEAT ;