Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль-конспект ИНФОРМАТИКА.doc
Скачиваний:
59
Добавлен:
09.04.2015
Размер:
639.49 Кб
Скачать

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

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

P Or Q = Q Or P

P And Q = Q And P

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

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

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

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

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

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

  1. Закон де Моргана

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

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

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

Not(NotP) =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. Этим можно воспользоваться:

ForP:=FalseToTrueDoS;

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

For P:= True Downto False Do S;

Пример.

Написать программу для составления таблицы истинности для логической функции F=PAndNot(QOrR)AndT. Для каждого из значений логических переменных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

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

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

‘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) = 0Ord(True) = 1

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