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

Операция логическое ИЛИ: 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

Entries or enter a negative value.

1

2

3

4

5

6

Enter your number: 2

Numbers in massive greater then your number

Примечания к программе

Обратите внимание на часть программы, которая реализует ввод данных:

Readln(temp);

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

Begin

naaq[i]:= temp;

Inc(i);

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

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

end;

Программа начинает работу с чтения первого введенного значения во временную переменную temp. Затем выражение условия продолжения цикла while проверяет, имеется ли свободное место в массиве (i <= ArSize) и не является ли введенное значение отрицательным (temp > 0). Если это условие выполняется, программа копирует значение temp в массив и увеличивает индекс массива на 1. На этот момент, поскольку нумерация массива начинается с 1, значение i равно общему количеству записей. Другими словами, если начальное значение i составляет 1, то в результате первой итерации цикла присваивается значение элементу массива naaq[1], а затем переменной i присваивается значение 1.

Цикл завершается, когда массив будет заполнен или когда пользователь введет отрицательное число. Обратите внимание на то, что цикл считывает следующее значение в переменную temp только если i меньше ArSize, т.е. только в случае, когда в массиве есть свободное место.

После получения данных программа использует оператор if else для отображения комментария, если никакие новые данные не были введены (т.е. если первое введенное значение было отрицательным числом), и для обработки данных, если таковые имеются.

Определение диапазонов с помощью операции AND

Операция and позволяет также задавать последовательности операторов if else if else, каждая ветвь которых соответствует конкретному диапазону значений. Данная возможность демонстрируется в листинге 5.6. В программе из листинга 5.6 массив qualify используется для хранения адресов четырех строк. Например, элемент qualify[1] содержит адрес строки "molodoy". Программа может использовать qualify[1] подобно любой другой переменой, например, с оператором Writeln.

Листинг 5.6

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

program Project1;

 

{$APPTYPE CONSOLE}

 

Var

qualify: array [1..4] of string = ('molodoy', 'sredniy', 'nemolodoy',

'pozhiloy');

age, index: Integer;

Begin

Write('Enter your age in years: ');

Readln(age);

if (age > 17) and (age <= 35) then

index:= 1

else if (age > 35) and (age <= 50) then

index:= 2

else if (age > 50) and (age < 65) then

index:= 3

Else

index:= 4;

Writeln('You qualify for the ', qualify[index]);

 

Readln;

end.

Результат:

Enter your age in years: 87

You qualify for the pozhiloy

Введенный возраст не соответствует ни одному из проверяемых диапазонов, поэтому программа устанавливает значение индекса равным 4, а затем выводит соответствующую строку.

Примечания к программе

С помощью выражения (age > 17) and (age < 35) проверяется соответствие возраста диапазону 18-34. В выражении (age >= 35) and (age < 50) операция <= используется для включения значения 35 в указанный диапазон, который составляет 35-49. Если бы в программе использовалось выражение (age > 35) and (age < 50), значение 35 не охватывалось бы ни одной проверкой. При использовании выражений проверки на соответствие диапазону нужно обеспечить отсутствие пробелов между диапазонами и накладок диапазонов. Кроме того, следует правильно определить каждый диапазон.

Оператор if else служит для выбора индекса массива, который, в свою очередь, идентифицирует конкретную строку.

Поделиться:





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



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