- •1. Приступаем к изучению языка delphi
- •I love Delhi
- •20 Degrees Celsius is 68 degrees Fahrenheit.
- •4.2 Light are 265608 astronomical units
- •2. Представление данных переменными
- •Integer is 4 bytes
- •Integer is 2147483647
- •Integer is -2147483648
- •3. Составные типы данных
- •Volume: Integer;
- •Volume: 1.40
- •Var a: array of integer;
- •4. Циклы и выражения сравнения
- •1952 Hudson Hornet
- •1951 Kaiser
- •5. Операторы ветвления и логические операции
- •If проверяемое_условие then
- •3 Spaces, 13 charaters total in sentence
- •If проверяемое_условие then
- •27 Is right!
- •6 Entries or enter a negative value.
- •4 Numbers in massive greater then your number
- •2 Spaces
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