Особливості застосування операторів управління програмою

За допомогою операторів управління (control statements) користувач може організувати розгалуження програми, циклічне виконання окремих фрагментів програми та здійснювати перехід в програмі блоку для виконання іншої її частини.

Мова програмування SCL підтримує такі оператори управління:

• IF - оператор для виконання розгалуження в програмі за умовою, що перевіряється в ставленні до булевої змінної;

• CASE - оператор для виконання розгалуження в програмі за умовою, що перевіряється щодо цілої змінної або параметра типу INT;

• FOR - оператор для організації в програмі циклів зі змінною, яка є лічильником циклів;

• WHILE - оператор для організації в програмі циклів, які ініціюються при виконанні певної умови;

• REPEAT - оператор для організації в програмі циклів із завершенням за умовою;

• CONTINUE - оператор для завершення поточного проходу циклу в програмі;

• EXIT - оператор для виходу з циклу в програмі;

• GOTO - оператор для переходу в нову точку програми, зазначену міткою;

• RETURN - оператор для виходу з програми блоку.

Оператор IF управляє виконанням тієї чи іншої частини програми в залежності від стану булевої змінної. За допомогою оператора IF користувач може запрограмувати виконання програми різними, зумовленими умовами, гілками.

В даному прикладі, як і в попередньому, condition має значення TRUE або FALSE. Якщо condition має значення TRUE, то виконуються оператори після ключового слова THEN. Якщо condition має значення FALSE, то виконуються оператори після ключового слова ELSE.

Можна використовувати будь-яку кількість комбінацій ключових слів ELSEIF. THEN. між ключовими словами IF. THEN. і ELSE. Ключове слово ELSE і наступні оператори не є обов'язковими.

IF Actual_value> Setpoint

THEN greater_than: = TRUE;

ELSEIF Actual_value

THEN greater_than: = FALSE;

ELSE greater_than: = FALSE;

У наведеному прикладі, якщо змінна Actual_value більше, ніж змінна Setpoint. то виконуються оператори, які йдуть після ключового слова THEN. Якщо, навпаки, змінна Actual_value менше, ніж змінна Setpoint. то виконуються оператори, які йдуть після ключового слова ELSEIF. Якщо обидва вирази порівняння не виконуються, то виконуються оператори після ключового слова ELSE.

Оператор CASE дозволяє вибрати для виконання потрібну послідовність операторів в програмі залежно від значення якогось параметра типу INT.

Загальна структура програми з оператором CASE може мати наступну форму:

CASE Selection OF

Список значень CONST1, CONST2 і т.д. складається з цілих (INT) констант. Для цих констант можуть використовуватися кілька варіантів форматів запису. Як константи-перемикача Constх можуть бути вказані:

• одиночне ціле число;

• діапазон цілих чисел, наприклад, 15..20;

• суміш розділених комами окремих цілих чисел і діапазоні цілих чисел, наприклад, 21,25,31..33.

При цьому кожне значення константи-перемикача Constх має бути унікальним.

Нехай значення, яке присвоюється змінної Error_number. залежить від змінної ID. Тоді програма може виглядати так:

0. Error_number: = 0;

1,3,5. Error_number: = ID + 128;

6..10. Error_number: = ID;

ELSE. Error_number: = 16 # 7F;

Оператор FOR застосовується для організації циклів з лічильником циклів. Виконання внесеного в цикл фрагмента програми буде повторюватися настільки довго, скільки змінна (лічильник циклів) буде залишатися в зазначеному діапазоні значень.

Загальна структура програми з оператором FOR може мати наступну форму:

При обробці даного оператора початкове значення limit1 присвоюється лічильнику циклів "i". Змінна, призначена лічильником циклів, повинна бути типу INT або DINT. Вона повинна мати початкове і кінцеве значення, а також крок зміни step.

Після кожного проходу програми (циклу) лічильник циклу збільшується на величину кроку збільшення step, якщо крок вказаний як позитивне число, або зменшується на величину кроку step, якщо крок вказаний як негативне число.

При програмуванні циклу рядок BY step не є обов'язковою. Якщо така умова для кроку лічильника циклу відсутня, то крок (за замовчуванням) приймається рівним +1. Якщо величина змінної-лічильника циклу виходить за межі вказаного діапазону, то програма переходить до оператора, який стоїть після ключового слова END_FOR.

Оператор FOR може бути вкладеним, тобто всередині циклу з оператором FOR можна запрограмувати інші цикли з оператором FOR, в яких як лічильники циклу використовуються інші змінні.

Всередині циклу з оператором FOR може бути запрограмований перехід до початку циклу (з використанням оператора управління CONTINUE) або повний вихід з циклу для продовження виконання програми, починаючи відразу ж після ключового слова END_FOR, (з використанням оператора управління EXIT).

Нехай, наприклад, необхідно присвоїти значення слів з PIW 128 по PIW 142 області периферії словами в області Меркера - з MW 128 по MW 142.

Програма цієї процедури буде мати такий вигляд:

FOR i: = 128 TO 142 BY 2 DO

Оператор WHILE служить для організації циклів, виконання яких триває весь час, поки виконується певна умова.

Загальна структура програми з оператором WHILE може мати наступну форму:

WHILE Condition DO

Перед кожним проходом виконується перевірка умови Condition. Якщо умова не виконується (Condition = FALSE), програма переходить до оператора, розташованого після ключового слова END_WHILE. Такий перехід можливий навіть без проходу програми циклу. Оператори Statements при цьому жодного разу не будуть виконані.

Оператор WHILE може бути вкладеним. При цьому всередині одного циклу з оператором WHILE можуть розміщуватися інші цикли з оператором WHILE.

Всередині циклу з використанням оператора WHILE може бути запрограмований перехід до початку циклу з використанням оператора управління CONTINUE або повний вихід з циклу з використанням оператора управління EXIT. Після виходу програма буде виконувати оператор, розташований після ключового слова END_WHILE.

Оператор REPEAT служить для організації циклів, виконання яких триває весь час, поки не зустрінеться умова завершення обробки циклу.

Загальна структура програми з оператором REPEAT може мати наступну форму:

Після кожного проходу циклу виконується перевірка умови Condition. Якщо умова виконується (Condition = TRUE), то цикл далі не обробляється і виконання програми буде продовжено після ключового слова END_REPEAT.

Таким чином, програма циклу буде оброблена, по крайней мере, один раз, навіть якщо при першому проході циклу виконується умова завершення його обробки.

Оператор REPEAT може бути вкладеним. При цьому всередині одного циклу з оператором REPEAT можуть розміщуватися інші цикли з оператором REPEAT.

Всередині циклу з використанням оператора REPEAT може бути запрограмований перехід до початку циклу з використанням оператора управління CONTINUE або повний вихід з циклу для продовження виконання програми, починаючи відразу ж після ключового слова END_REPEAT (з використанням оператора управління EXIT).

Нехай, наприклад, необхідно викликати системну функцію SFC 25 COMPRESS в програмі перезапуску, поки не буде завершено "стиснення" пам'яті користувача.

Оператор CONTINUE служить для завершення поточного проходу циклу в програмі, організованій за допомогою операторів FOR, WHILE або REPEAT.

Після виконання оператора CONTINUE в програмі проводиться одне з наступних дій:

• якщо цикл організований з допомогою операторів REPEAT або WHILE, перевіряється умова для виконання наступного проходу циклу;

• якщо цикл організований з оператором FOR, проводиться зміна лічильника циклу на величину кроку збільшення і перевіряється умова - знаходиться змінна лічильника циклів в допустимих для неї межах.

FOR i: = 0 TO 2 DO

FOR k: = 0 TO 7 DO

IF (k<2 & i=0) THEN CONTINUE;

Оператор EXIT служить для повного завершення обробки циклу, організованого за допомогою операторів FOR, WHILE або REPEAT. При цьому вихід з циклу з оператором EXIT не залежить від виконання умов, які перевіряються в циклі, і може виконуватися з будь-якої точки циклу. При виході з циклу з оператором EXIT програма продовжує виконуватися відразу ж після ключових слів END_FOR, END_WHILE або END_REPEAT.

Вихід з циклу з оператором EXIT здійснюється негайно з точки програми циклу, де цей оператор зустрівся.

FOR i: = 0 TO 2 DO

FOR k: = 0 TO 7 DO

IF (k = 2 i> 5) THEN EXIT;

В даному прикладі виконання циклу FOR припиняється за певної умови для лічильника циклу k за допомогою оператора EXIT.

Оператор RETURN служить для безумовного виходу з поточного блоку і переходу в основну програму. При цьому оператор RETURN пересилає стан змінної OK на вихід ENO блоку, який завершується з ним.

IF Error <> 0 THEN RETURN;

Схожі статті