Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Алгебра логики в Паскале




Над аргументами логического типа определены следующие операции:

NOT (Не) - отрицание

AND (и) - конъюнкция (логическое умножение)

OR (или) - дизъюнкция (логическое сложение)

XOR (икс ор) - исключающее или

P Q Not P P And Q P Or Q P Xor Q
False False True False False False
True False False False True True
False True True False True True
True True False True True False

Все операции сравнения дают результат типа Boolean.

=, < >, <, < =, >, > =.

Например, в результате выполнения оператора

P: = X<= 5;

логическая переменная Р получит значение True, если текущее значение переменной Х меньше или равно 5. При Х>5 P = False.

В языке Паскаль принято следующее старшинство операций:

1) Not

2) And

3) Or, Xor + -

4) Операции сравнения, что это значит?

Not P = Q (Not P) = Q

P < = Q And R P < = (Q And R)

P Or Q And R P Or (Q And Q)

Для задания явного порядка - круглые скобки:

(A - B) AND (C< = D)

Законы алгебры логики в Паскале

1) Закон коммутативности (переместительный)

P Or Q = Q Or P

P And Q = Q And P

2) Закон ассоциативности (сочетательный)

(P Or Q) Or R = P Or (Q Or R)

(P And Q) And R = P And (Q And R)

3) Закон дистрибутивности (распределительный)

(P And Q) Or R = (P Or R) And (Q Or R)

(P Or Q) And R = (P And R) Or (Q And R)

4) Закон де Моргана

Not (P Or Q) = (Not P) And (Not Q)

Not (P And Q) = (Not P) Or (Not Q)

Правила отрицания:

Not (Not P) = P

Not (A = B) = A <>B

Not (A <= B) = A > B

Not (A< B) = A > = B и.т.д.

Пример.

Not ((A < = B) And (c = D)) = (A > B) Or (C < > D)

Обратим внимание на следующий факт. Логический тип в языке Паскаль задается как перечисляемый тип, содержащий лишь 2 стандартных идентификатора: True и False. Элементы перечисляемого типа упорядочены. Поэтому оказывается, что False меньше, чем True. Этим можно воспользоваться:

For P:=False To True Do S;

S - оператор, он будет выполняться сначала для значения Р, равного False, а затем для значения True. Если надо наоборот, то:

For P:= True Downto False Do S;

Пример.

Написать программу для составления таблицы истинности для логической функции F = P And Not (Q Or R) And T. Для каждого из значений логических переменных P, Q, R, T необходимо вычислить и напечатать значение функции F.

Program logic;

Var P,Q,R,T,F:Boolean;

Begin

For P:=False To True Do

For Q:=False To True Do

For R:=False To True Do

For T:=False To True Do

Begin

F:=P And Not (Q Or T) And T

Write(‘P=’,P,’Q=’,Q,’R=’,R,’T=’,T);

Write(‘F=’,F);

writeln;

End;

End.

Логические выражения очень часто используются в программах. Без них трудно обойтись при записи условных операторов, а также циклов While и Repeat.

В языке Паскаль нельзя записать двухстороннее неравенство 1< X <2. Вместо этого надо воспользоваться логическим выражением: (X>1) And (X<2).

Нельзя записать X = Y = Z, а надо: (X = Y) And (X = Z).

Если надо записать, что Х не лежит в диапазоне от - 2 до +2, то:

Not ((X>-2) And (X>=2)) или (X<=-2) Or (X>=2)

Стандартные идентификаторы True и False можно использовать в качестве логических констант. Равноправные операторы.

If P Then S;

If P=True Then S;

Функция Odd(x) = True при X=2n-1, n=1,2,3,...

False при X=2n

Символьный тип

Символьная константа - это символ, заключенный в апострофы (чтобы представить апостроф, его повторяют дважды).

‘A’, ‘R’,’+, ‘7’

В описании констант:

Const Sim = ‘A’;

A = ‘A’;

S = ‘+’;

D1 = ‘;’;

Символьная переменная принимает значение одного символа. Она описывается в разделе переменных как CHAR.

Var Bukwa: Char;

B1, B2, R: Char;

В операторе присваивания:

Bukwa: = ‘+’;

R: = Bukwa;

К символьным данным применимы операции сравнения, т.к. все символы упорядочены, каждый символ имеет свой порядковый номер.

Ввод символьных данных имеет особенности: символьные данные вводят сплошной строкой, без пробелов, т.к. пробел - это тоже символ!!!

Var S1, S2, S: Char;

Read (S1, S2, S3)

- - - - - - - - - - - - - - -

ABC —> S1 = ‘A’, S2 = ‘B’, S3 = ‘C’

A_B_C_ —> S1 = ‘A’, S2 = _, S3 = ‘B’

Формат: X: M

‘_’: 7 - вывод семи пробелов.

Результатом операции сравнения является логическая константа True или False. ‘A’<’B’

Встроенные функции:

Ord(x) -определяет порядковый номер символа Х, например, ORD(‘R’) = 82.

Chr(x) -определяет символ, стоящий по порядковому номеру Х, например, CHR(68)= ‘D’.

Эти две функции носят название функций преобразования.

Очевидно, что Chr(Ord(S)) = S; Ord(chr(68)) = 68.

Если С1 и С2 - переменные символьного типа, то С1<С2, если Ord(C1) < Ord(C2)

Pred(x) - дает предыдущий символ но относительно к Х, например,. Pred(‘N’) = ‘M’.

Succ(x) - определяет следующий за Х символ, например,. Succ(‘R’) = ‘S’, Succ(‘9’) = ‘:’

Справедливы равенства:

Ord (false) = 0 Ord (True) = 1

Succ (False) =True Pred (True) = False

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...