Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi через Прат.doc
Скачиваний:
2
Добавлен:
14.11.2019
Размер:
631.81 Кб
Скачать

27 Is right!

Логические выражения

Часто приходится проверять более одного условия. Например, для того, чтобы символ являлся строчной буквой, его значение должно быть больше или равно 'а' и меньше или равно 'z'. Еще один распространенный случай: если вы просите пользователя ответить вводом символа у или n, желательно, чтобы наряду со строчными программа принимала и прописные буквы (Y и N). Для этих целей в языке предусмотрены три логические операции, обеспечивающие объединение или изменение существующих выражений, —логическое ИЛИ (записывается как or); логическое И (записывается как and); и логическое НЕ (записывается как not). Рассмотрим эти операции подробнее.

Операция логическое ИЛИ: or

В разговорном языке слово или может указывать на то, что одно или оба условия удовлетворяют предъявляемому требованию. Например, вы можете попасть на пикник компании MegaMicro, если кто-то из членов вашей семьи — вы или ваша супруга — работает в компании MegaMicro, Inc. Эквивалентом такой конструкции в языке является операция логическое ИЛИ, записываемая как or. Эта операция объединяет два выражения в одно. Если любое или оба исходных выражения имеют значение true результирующее выражение имеет значение true. В противном случае выражение имеет значение false. Ниже приведено несколько примеров:

(5 = 5) or (5 = 9) // истинно, поскольку первое выражение истинно

(5 > 3) or (5 > 10) // истинно, поскольку первое выражение истинно

(5 > 8) or (5 < 10) // истинно, поскольку второе выражение истинно

(5 < 8) or (5 > 2) // истинно, поскольку оба выражения истинны

(5 > 8) or (5 < 2) // ложно, поскольку оба выражения ложны

Таблица истинности операции ИЛИ

Выр1

Выр2

Результат

Ложь

Ложь

Ложь

Истина

Ложь

Истина

Ложь

Истина

Истина

Истина

Истина

Истина

В программе, приведенной в листинге 5.4, операция OR в операторе if выполняется для проверки как строчных, так и прописных версий символа.

Листинг 5.4

//использование логического ИЛИ

program Project1;

{$APPTYPE CONSOLE}

var

ch: Char;

begin

Writeln('This pogramm may reformat your hard disk');

Writeln('and destroy all your data.');

Write('Do you wish to continue? <y/n> ');

Readln(ch);

if (ch = 'y') or (ch = 'Y') then //y или Y

Writeln('You were warned!'#7#7)

else if (ch = 'n') or (ch = 'N') then //n или N

Writeln('A wise choice ... bye')

else

begin

Write('That wasn''t a y or an n, so I guess I''ll trash ');

Writeln('your disk anyway.');

end;

Readln;

end.

Результат:

This pogramm may reformat your hard disk

and destroy all your data.

Do you wish to continue? <y/n> N

A wise choice ... bye

Операция логическое И: and

Операция логическое И, записываемая как and также объединяет два выражения в одно. Результирующее выражение имеет значение true только в том случае, если оба исходных выражения имеют значения true.

Приведем несколько примеров:

5 = 5 and 4 = 4 //истинно, поскольку оба выражения истинны

5 = 3 and 4 = 4 //ложно, поскольку первое выражение ложно

5 > 3 and 5 > 10 //ложно, поскольку второе выражение ложно

5 > 8 and 5 < 10 //ложно, поскольку первое выражение ложно

5 < 8 and 5 > 2 //истинно, поскольку оба выражения истинны

5 > 8 and 5 < 2 //ложно, поскольку оба выражения ложны

Таблица истинности операции И

Выр1

Выр2

Результат

Ложь

Ложь

Ложь

Истина

Ложь

Ложь

Ложь

Истина

Ложь

Истина

Истина

Истина

В листинге 5.5 продемонстрировано использование операции AND в обычной ситуации прерывания цикла while по двум различным причинам. В программе этого листинга цикл while считывает значения в массив. Одно проверочное условие (i <= ArSize) прерывает цикл, когда массив полон. Второе проверочное условие (temp > 0) предоставляет пользователю возможность досрочно выйти из цикла путем ввода отрицательного числа. Операция AND позволяет объединить две проверки в единое условие. В программе используются также два оператора if, оператор if else и цикл for; поэтому она может служить иллюстрацией к нескольким темам этой и предыдущей главы.

Листинг 5.5

//использование логического И

program Project1;

{$APPTYPE CONSOLE}

const

ArSize = 6;

var

naaq: array[1..ArSize] of Integer;

i, j, count, temp, you: Integer;

begin

Writeln('Enter numbers in massive. Program terminates when you ');

Writeln(ArSize, ' entries or enter a negative value.');

i := 1;

Readln(temp);

while (i <= ArSize) and (temp > 0) do //два критерия выхода

begin

naaq[i] := temp;

Inc(i);

if i <= ArSize then //в массиве остается свободное место,

Readln(temp); //поэтому получаем следующее значение

end;

if i = 0 then

Writeln('No data -- bye')

else

begin

Write('Enter your number: ');

Readln(you);

count := 0;

for j := 1 to i - 1 do

if naaq[j] > you then

Inc(count);

Writeln(count, ' numbers in massive greater then your number');

end;

Readln;

end.

Результат:

Enter numbers in massive. Program terminates when you

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]