Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 3/Boolean Expressions/bg: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Булеви изрази
22
33*(author: Tao Yue, state: unchanged)*
44
55[[Boolean]] изразите се използват за сравнение на две стойности и като резултат се получава истина `TRUE` или лъжа `FALSE`:
66
7-`value1 `**`оператор_за_сравнение`**` value2`
7+```
8+value1 оператор_за_сравнение value2
9+```
810
911Използват се следните оператори за сравнение:
1012
11-`<  по-малко от`\
12-`>  по-голямо от`\
13-`=  равно на`\
14-`<= по-малко или равно на`\
15-`>= по-голямо или равно на`\
16-`<> различно от`
13+```
14+< по-малко от
15+> по-голямо от
16+= равно на
17+<= по-малко или равно на
18+>= по-голямо или равно на
19+<> различно от
20+```
1721
1822Можете да присвоявате булеви изрази на булеви променливи. Тук присвояваме израз `true` на some_bool:
1923
2024``` pascal
2125 some_bool := 3 < 5;
2226```
2327
2428Сложните булеви изрази се формират с помощта на булевите оператори:
2529
26-`not    отрицание (~)`\
27-`and    конюкция, логическо умножение (^)`\
28-`or дизюнкция, логическо събиране (v)`\
29-`xor    изключващо или`
30+```
31+not отрицание (~)
32+and конюкция, логическо умножение (^)
33+or дизюнкция, логическо събиране (v)
34+xor изключващо или
35+```
3036
3137`NOT` е унарен оператор - той се прилага само към една стойност и я инвертира:
3238
3339- not true = false
3440- not false = true
3541
3642`AND` връща `TRUE` само ако и двете стойности са `TRUE`:
3743
3844- TRUE and FALSE = FALSE
3945- TRUE and TRUE = TRUE
4046
4147`OR` връща `TRUE` ако поне едната стойност е `TRUE`:
4248
4349- TRUE or TRUE = TRUE
4450- TRUE or FALSE = TRUE
4551- FALSE or TRUE = TRUE
4652- FALSE or FALSE = FALSE
4753
4854`XOR` връща `TRUE` ако едната стойност е `TRUE` а другата е `FALSE`. По този начин:
4955
5056- TRUE xor TRUE = FALSE
5157- TRUE xor FALSE = TRUE
5258- FALSE xor TRUE = TRUE
5359- FALSE xor FALSE = FALSE
5460
5561Когато комбинирате два булеви израза, използвайки сравнения и булеви оператори, бъдете внимателни и използвайте скоби:
5662
5763``` pascal
5864(3>5) or (650<1)
5965```
6066
6167Това се прави защото булевите оператори имат по-висок приоритет от операторите за сравнение:
6268
6369| Приоритет | Оператор | Забележка |
6470|-----------|-------------------|-----------------------|
6571| 1 | `not` | *най-висок приоритет* |
6672| 2 | `* / div mod and` | |
6773| 3 | `+ - or` | |
6874| 4 | `< > <= >= = <>` | *най-нисък приоритет* |
6975
7076Следователно `3 > 5 or 650 < 1` ще се изпълни като `3 > (5 or 650) < 1`, което е безмислено, защото булевия оператор **or** работи само с Boolean стойности а не с цели числа.
7177
7278Булевите оператори (`AND, OR, NOT, XOR`) може да се ипозват с Boolean променливи по същия начин, както се използват и с булеви изрази.
7379
7480Когато е възможно, не сравнявайте две реални стойности със знак за равенство. Малките грешки при закръгляването и при представянето на реалните числа могат да доведат до разлика в два иначе математически еквивалентни изрази.
7581
7682---
7783*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 3/Boolean Expressions/bg", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history