Складена умова – дві або більше простих умови, з’єднаних знаком логічної операції (and, or, xor, not).
Прості умови потрібно брати в дужки!
(X>0) and (y=2*z) or (z+2=x+y) xor not(x>y)
Пріоритет операції | Операція |
---|---|
1 | у дужках |
2 | / , * |
3 | +, – |
4 | =, > , < , >= , <=, <> |
5 | Not |
6 | And |
7 | or, xor |
У вказаному прикладі, спочатку обчислюються математичні вирази: у дужках виконаються операції „+” та „*”, потім обчислюються прості умови (виконуються операції “>”, “=” ), потім виконується логічна операція not, потім логічна операція and, потім логічні операції or та xor у тому порядку, в якому вони записані.
Складена умова (проста умова 1) and ( проста умова 2) вірна, якщо вірні обидві простих умови. У інших випадках така складена умова невірна.
Значення умови 1 | Значення умови 2 | Значення результату |
---|---|---|
TRUE | TRUE | TRUE |
FALSE | FALSE | FALSE |
FALSE | TRUE | FALSE |
TRUE | FALSE | FALSE |
Обчислюючи складену умову з логічною операцією and, можна не перевіряти значення другої умови, якщо одна з умов має значення FALSE . Весь вираз буде мати значення FALSE.
Операцію and називають логічним множенням.
Ствердження | Умова |
---|---|
Число X належить інтервалу [-2, 5], тобто -2<=x<=5 | (x>=-2)and(x<=5) |
Ціле число X двозначне | (x div 100=0)and(x div 10=0) |
Натуральне число X кратне 7 та закінчується цифрою 3 | (x mod 7=0)and(x mod 10=3) |
Кожне з двох цілих чисел X та Y парне | (x mod 2=0)and(y mod 2=0) |
Точка з координатами (x, y) попадає в заштриховану ділянку площини | (x>=-3)and(x<=-1) and (y>=1)and(y<=3) |
Програма | Пояснення | Результат роботи |
---|---|---|
Const X=10; Var Z:Boolean; Begin Z:=(x>2)and(x<5); writeln(z); end. | X=10, тому x>2 вірно, а x<5 невірно, тому і весь вираз невірний. | FALSE |
Const a=2; b=2;c=3; Var Z:Boolean; Begin Z:=(a>0)and(b>0)and(c>0); writeln(z); end. | a=2; b=2; c=3, тому a>0 вірно, b>0 вірно, c>0 вірно, тому і весь вираз вірний. | TRUE |
Складена умова (проста умова 1) or (проста умова 2) не вірна, якщо не вірні обидві простих умови.
У інших випадках така складена умова вірна.
Значення умови 1 | Значення умови 2 | Значення результату |
---|---|---|
FALSE | FALSE | FALSE |
TRUE | TRUE | TRUE |
FALSE | TRUE | TRUE |
TRUE | FALSE | TRUE |
Обчислюючи складену умову з логічною операцією or, можна не перевіряти значення другої умови, якщо одна з умов має значення TRUE . Весь вираз буде мати значення TRUE.
Операцію or називають логічним додаванням.
Твердження | Умова |
---|---|
Хоча б одне з чисел X та Y додатне | (x>0)or(y>0) |
Натуральне число X закінчується цифрою 2 або 3 | (x mod 10=2)or(x mod 10=3) |
Точка з координатами X та Y належить I або IIІ чверті координатної площини | (X>0)and(y>0)or(x<0)and(y<0) |
Програма | Пояснення | Результат роботи |
---|---|---|
Const X=1; y=-1; Var Z:Boolean; Begin Z:=(x*y<0)or(y>x); writeln(z); end. | X=1; y=-1, тому x*y<0 вірно, і незалежно від значення другої простої умови весь вираз вірний. | TRUE |
Const x=1; y=1; Var Z:Boolean; Begin Z:=(x*x+y*y<4)or(x>=2)and(x<=4)and(y>=2)and(y<=4); writeln(z); end. | Спочатку обчислюється значення виразу (x>=2)and(x<=4)and(y>=2)and(y<=4), а потім значення виразу x*x+y*y<4. Але значення останнього виразу TRUE, тому незалежно від значення першого виразу весь вираз вірний. | TRUE |
Складена умова (проста умова 1) xor (проста умова 2) вірна, при різних значеннях операндів. При однакових значеннях операндів така складена умова невірна.
Значення умови 1 | Значення умови 2 | Значення результату |
---|---|---|
FALSE | FALSE | FALSE |
TRUE | TRUE | FALSE |
FALSE | TRUE | TRUE |
TRUE | FALSE | TRUE |
Обчислюючи складену умову з логічною операцією xor, потрібно перевіряти значення обох умов.
Логічну операцію xor називають рос. „исключающее или”. Без цієї операції можна обійтись, але її використання значно скорочує запис.
Ствердження | Умова без xor | Умова з xor |
---|---|---|
Тільки одне з чисел X та Y парне | (x mod 2=0)and(y mod 2<>0) or (x mod 2<>0)and(y mod 2=0) | (x mod 2=0) xor (y mod 2=0) |
Програма | Пояснення | Результат роботи |
---|---|---|
Const X=1; y=-1; Var Z:Boolean; Begin Z:=(x*y<1)xor(y>x); writeln(z); end. | X=1; y=-1,
тому x*y<1 вірно, а y>x невірно. Тобто прості умови мають різні значення, тому весь вираз вірний. | TRUE |
Const X=1; y=2; Var Z:Boolean; Begin Z:=(x*y<3)xor(y>x); writeln(z); end. | X=1; y=2; тому x*y<3 вірно, а y>x вірно. Тобто прості умови мають однакові вірні значення, тому весь вираз невірний. | FALSE |
Const X=2; y=1; Var Z:Boolean; Begin Z:=(x*y=3)xor(y>x)and(x+y>2); writeln(z); end. | X=2; y=1; Спочатку обчислюється значення простих умов: x*y=3 невірно y>x невірно x+y>2 вірно. Потім обчислюється логічна операція and. (y>x)and(x+y>2)–невірно. Тоді перша умова- невірна, друга умова - невірна, значення однакові і весь вираз невірний. | FALSE |
Складена умова not (умова 1) вірна, якщо (умова 1) невірна. І навпаки, складена умова невірна, якщо (умова 1) вірна.
Значення умови 1 | Значення результату |
---|---|
FALSE | TRUE |
TRUE | FALSE |
Ствердження | Умова без not | Умова з not |
---|---|---|
Число X не належіть інтервалу [-2, 5] | (x<-2)or(x>5) | Not((x>=-2)and(x<=5)) |
Ціле число X не ділиться на 3 | X mod 3<>0 | Not (x mod 3=0) |
Програма | Пояснення | Результат роботи |
---|---|---|
Const X=10; Var Z:Boolean; Begin Z:=not((x>=1)and(x<=5)); writeln(z); end. | Операція not стоїть перед дужками, тому спочатку виконуються дії у дужках. X=10, тому (x>=1)and(x<=5) – невірно, а весь вираз вірний. | TRUE |
Const X=10; Var Z:Boolean; Begin Z:=not(x>=1)and(x<=5); writeln(z); end. | У цьому випадку not відноситься тільки до перших дужок. X=10, тому x>=1 – вірно, not(x>=1) –невірно. Наступна операція and, у якої перша умова невірна, тому значення другої умови можна не обчислювати, весь вираз буде невірний | FALSE |