- •1 Общие положения
- •2 Выражения
- •2.1 Арифметические выражения
- •2.2 Логические выражения
- •3 Операторы передачи управления
- •3.1 Программа разветвляющейся структуры
- •3.2 Оператор безусловного перехода
- •3.3 Оператор условного перехода if
- •3.4 Оператор выбора case
- •4 Примеры выполнения заданий алгоритмов разветвляющей структуры
- •Контрольные вопросы
- •Задания для самостоятельной подготовки
- •Отчет по лабораторной работе
- •Список рекомендуемой литературы
- •Задание к лабораторной работе
2.2 Логические выражения
Логические выражения строятся из логических констант и переменных, логических операций и операций отношения. В операциях отношения могут участвовать арифметические и логические выражения, а также символьные данные. Результатом логического выражения является значение True (истинно) или False (ложно). Для записи логических выражений используются следующие логические операции (табл. 2) и операции отношения (табл. 3).
Таблица 2 - Логические операции
Операция |
Действие |
Пример |
Not |
Отрицание |
not A |
And |
Логическое “и” |
A and B |
Or |
Логическое “или” |
A or B |
Xor |
Исключающее “или” (сложение по модулю два) |
A xor B |
Таблица 3 - Операции отношения.
Операция |
Действие |
Пример |
= |
Равно |
A=B |
<> |
Не равно |
A<>B |
< |
Меньше |
A<B |
> |
Больше |
A>B |
<= |
Меньше или равно |
A<=B |
>= |
Больше или равно |
A>=B |
При вычислении арифметических и логических выражений принят следующий приоритет операций:
not;
*, /, div, mod, and;
+, -, or, xor;
операции отношения.
Логические операции not, and, xor могут выполняться не только над логическими операндами (А, В), но и над целыми числами. В этом случае выполняется соответствующие побитовые операции с учетом двоичного представления операндов. При выполнении операций отношения оба операнда (А, В) должны быть одного и того же типа. Допускается лишь одно исключение: А - целого типа, В -вещественного (и наоборот). В логическом выражении допускается использование круглых скобок. При наличии скобок сначала выполняются действия в скобках (в первую очередь в самых внутренних), а затем вне скобок. В круглые скобки обязательно заключаются части выражения, стоящие слева от логических операций AND и OR.
Составим программу для вычисления логического выражения.
Пример 2. Вычислить логическое выражение
А=(B or C) and (D or E or F);
program log1;
const
B=False;
C=True;
D=True;
E=False;
F=True;
var
A: boolean;
begin
A: =(B or C) and ((D or E )or F);
Write('A=', A)
end.
3 Операторы передачи управления
3.1 Программа разветвляющейся структуры
Программа разветвляющейся структуры обязательно содержит условия, в зависимости, от которых предусматривают выбор одной из нескольких последовательностей операторов (ветвей). Для организации разветвлений в программах используются операторы перехода, условий и выбора. Рассмотрим их конструкции и применение.
3.2 Оператор безусловного перехода
Оператор безусловного перехода вызывает передачу управления оператору, которому предшествует метка. Общий вид такой:
goto метка;
Метка должна быть описана в разделе label. Объявление метки имеет вид: label метка;
Допускается объявить список меток:
label метка1, метка2, метка3;
Между меткой и данным оператором можно включить один или несколько пробелов.
Пример.
label 10, М2
goto М2;
10: A:=2;
. . . . . . . .
32: Y: =X/A;
Оператор, следующий непосредственно после оператора goto, всегда должен иметь метку (иначе он никогда не будет выполнен).
Между словами go и tо пробел не допускается.
При использовании элементов перехода должны соблюдаться следующие правила:
Все метки, используемые в блоке, должны быть описаны, причем каждая не более одного раза.
Метка, указанная в операторе перехода, должна помечать оператор, находящийся в том же блоке, что и сам оператор перехода. Т.е. не допускаются переходы из внешних процедур во внутренние и наоборот.
Переход внутрь структурного оператора может вызвать непредсказуемые эффекты, хотя компилятор не выдает сообщения об ошибке. Использование безусловных передач управления в программе считается теоретически избыточным и подвергается серьезной критике, так как поощряет создание малопонятных и трудно модифицируемых программ, которые вызывают большие сложности при отладке и сопровождении. При использовании операторов перехода рекомендуется соблюдать следующие правила:
следует стремиться применять операторы перехода (если кажется невозможным обойтись без них) для передачи управления только ВНИЗ по тексту программы (вперед); при необходимости передачи управления “назад” следует использовать операторы цикла.
расстояние между меткой и оператором перехода на нее не должно превышать одной страницы текста (или высоты экрана дисплея).
