Логические операции And Or Not

В жизни бывают ситуации, когда то или иное действие мы выполняем при соблюдении нескольких условий.
ЕСЛИ товар хороший И достаточно денег ТО покупаем
ЕСЛИ свет зеленый ИЛИ нет машин ТО переходим дорогу

Для записи данных конструкций в паскале существуют логические операторы (AND)И (OR)ИЛИ (NOT)НЕ, а также переменная логического типа Boolean (аналог 1 или 0)
Переменные логического типа могут принимать только два значения — False (ложь) и True (истина). Описываются они в разделе описания переменных VAR.

Var
Flag : Boolean;

ВАЖНО: Переменные и знак отношений, которые принимают участие в логическом выражении берут в скобки.
ВАЖНО: В языке Паскаль нет возможности ввода логических данных с помощью оператора read. Однако предусмотрен вывод значений переменных логического типа с помощью оператора write.

Используя операции not, and, or, xor записать сложные условия , истинные для следующей ситуации:
Число x лежит вне отрезка [-3 ,3].

var f:boolean;
x:real;
begin
write('x=');
readln(x);
f:=(x>=-3)and(x<=3);
write(f);
readln
end.

Сумма целых чисел х и у является трёхзначным числом и заканчивается на 0

var f:boolean;
x,y:integer;
begin
writeln('Введите 2 целых числа');
readln(x,y);
f:=(x+y>99)and(x+y<1000)and((x+y) mod 10=0);
write(f);
readln
end.

Является ли данное трёхзначное число перевертышем.

var
s,d,e,e, f: integer;
b1, b2: boolean;
begin
write('Введите число четырехзначное число: ');
readln(e);
s := e div 100;
d := e mod 100 div 10;
e := e mod 10 div 1;
f := e * 100 + d * 10 + s;
writeln('Данное число является палиндромом - ', f = e);
end.

С помощью логических операторов можно формировать сложные логические выражения. Логические операторы часто применяются по отношению к простым логическим выражениям.
В языке программирования Pascal предусмотрены следующие логические операции:
Конъюнкция (логическое умножение, пересечение) — and.
Выражение a and b дает значение true только в том случае, если a и b имеют значение true. Во всех остальных случаях значения выражения a and b дает false.

true and true = true
true and false = false
false and true = false
false and false = false

Дизъюнкция (логическое сложение, объединение) – or.
Выражение a or b дает значение false только в том случае, если a и b имеют значение false. Во всех остальных случаях результат – true.

true and true = true
true and false = true
false and true = true
false and false = false

Отрицание (инверсия) – not.
Выражение not a имеет значение, противоположное значению a.

not true = false
not false = true

Исключающее ИЛИ – xor.
Выражение a xor b дает значение true только в том случае, когда только один из операндов имеет значение true.

true and true = false
true and false = true
false and true = true
false and false = false

Пример:Дано 3 отрезка А,В,С. Проверить, возможно ли из них составить треугольник.
Школьный курс геометрии говорит: Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей.

var a, b, c: integer;

begin
write (' Длины сторон: ');
readln (a,b,c);

if ((a < b+c) and (b < a+c)) and (c < a+b) then
writeln ('Треугольник существует.')
else
writeln ('Треугольник не существует.');
readln
end.

Пример: Дано числа a, b, c – стороны предполагаемого треугольника. Проверить, является ли он прямоугольным.

var a, b, c: integer;
begin
write (' Длины сторон: ');
readln (a,b,c);
if ((a*a = b*b+c*c) or (b*b = a*a+c*c)) or (c*c = a*a+b*b) then
writeln ('Треугольник существует.')
else
writeln ('Треугольник не существует.');
readln
end.

Дано точка с координатами X,Y по модулю меньше 100. Написать программу, которая определит, какой координатной четверти она принадлежит. Если (0,0) вывести сообщение «0»

var
x,y:real;
answ:byte;
begin
write('X=');readln(x);
write('Y=');readln(y);
if (x=0) or (y=0) then answ:=0;
if (x>0) and (y>0) then answ:=1;
if (x<0) and (y>0)then answ:=2;
if (x<0) and (y<0) then answ:=3;
if (x>0) and (y<0) then answ:=4;
Writeln(answ);
end.

Задано 3 целых числа — длины сторон треугольника. Длины сторон не превышают 100.
Вывести «1-равносторонний», если треугольник равносторонний, «2-равнобедренный» если равнобедренный и «3-разносторонний» если разносторонний.

var
a,b,c:integer;
res:string;
begin
write('A=');readln(a);
write('B=');readln(b);
write('C=');readln(c);
if ((a=b) and (b=c)) then res:='1-равносторонний'
else if ((a<>b) and (b<>c) and (c<>a)) then res:='3-разносторонний' else res:='2-равнобедренный';
writeln(res);
end.

Что нужно знать:
Знать служебные слова AND OR NOT
Формат записи сложных логический выражений (использование скобок);
Объявлять и использовать логические переменные

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии