Операция логическое ИЛИ: 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) // ложно, поскольку оба выражения ложны Таблица истинности операции ИЛИ
В программе, приведенной в листинге 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 //ложно, поскольку оба выражения ложны Таблица истинности операции И
В листинге 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|