Складена умова
Складена умова – дві або більше простих умови, з’єднаних знаком логічної операції (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 у тому порядку, в якому вони записані.
Логічна операція AND (і, та, кожне, обидва)
Складена умова (проста умова 1) and ( проста умова 2) вірна, якщо вірні обидві простих умови. У інших випадках така складена умова невірна.
Таблиця істинності логічної операції and
Значення умови 1 | Значення умови 2 | Значення результату |
---|---|---|
TRUE | TRUE | TRUE |
FALSE | FALSE | FALSE |
FALSE | TRUE | FALSE |
TRUE | FALSE | FALSE |
Обчислюючи складену умову з логічною операцією and, можна не перевіряти значення другої умови, якщо одна з умов має значення FALSE . Весь вираз буде мати значення FALSE.
Операцію and називають логічним множенням.
Приклади складання умов з логічною операцією 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) |
Приклади обчислення логічних виразів з логічною операцією AND
Програма | Пояснення | Результат роботи |
---|---|---|
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 |
Логічна операція OR (або, хоча б одне)
Складена умова (проста умова 1) or (проста умова 2) не вірна, якщо не вірні обидві простих умови.
У інших випадках така складена умова вірна.
Таблиця істинності логічної операції or
Значення умови 1 | Значення умови 2 | Значення результату |
---|---|---|
FALSE | FALSE | FALSE |
TRUE | TRUE | TRUE |
FALSE | TRUE | TRUE |
TRUE | FALSE | TRUE |
Обчислюючи складену умову з логічною операцією or, можна не перевіряти значення другої умови, якщо одна з умов має значення TRUE . Весь вираз буде мати значення TRUE.
Операцію or називають логічним додаванням.
Приклади складання умов з логічною операцією 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) |
Приклади обчислення логічних виразів з логічною операцією OR
Програма | Пояснення | Результат роботи |
---|---|---|
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 |
Логічна операція XOR (тільки одне, при різних)
Складена умова (проста умова 1) xor (проста умова 2) вірна, при різних значеннях операндів. При однакових значеннях операндів така складена умова невірна.
Таблиця істинності логічної операції xor
Значення умови 1 | Значення умови 2 | Значення результату |
---|---|---|
FALSE | FALSE | FALSE |
TRUE | TRUE | FALSE |
FALSE | TRUE | TRUE |
TRUE | FALSE | TRUE |
Обчислюючи складену умову з логічною операцією xor, потрібно перевіряти значення обох умов.
Логічну операцію 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) |
Приклади обчислення логічних виразів з логічною операцією XOR
Програма | Пояснення | Результат роботи |
---|---|---|
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 (не).
Складена умова not (умова 1) вірна, якщо (умова 1) невірна. І навпаки, складена умова невірна, якщо (умова 1) вірна.
Таблиця істинності логічної операції not
Значення умови 1 | Значення результату |
---|---|
FALSE | TRUE |
TRUE | FALSE |
Приклади складання умов з логічною операцією NOT
Ствердження | Умова без 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) |
Приклади обчислення логічних виразів з логічною операцією NOT
Програма | Пояснення | Результат роботи |
---|---|---|
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 |
Немає коментарів:
Дописати коментар