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

  • docx
  • 30.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л3-00080.docx

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


6.*Даны два числа. Меньшее из них замените полусуммой этих чисел, а большее - их произведением.

  На первый взгляд задача решается просто:

  If a>b then begin b:=(a+b)/2; a:=a*b end
        else begin a:=(a+b)/2; b:=a*b end;

  Но если выполнить эту команду, то ответ получится неверным, почему?
  Предположим a=10, B=20. Что же получится в результате выполнения оператора. Так как a<b, то условие, указанное в операторе не выполнено, следовательно, выполнится

  else begin a:=(a+b)/2; b:=a*b end;

  подставим значения и получим:

  a:=(a+b)/2=(10+20)/2=15
  b:=a*b =15*20=300 вместо 10*20=200 потому, что к этому моменту первоначальное значение а=10 изменилось и стало равно 15.

  Следовательно надо как то сохранить первоначальные значения. Можно запомнить их в дополнительных переменных:

  х:=а;
  у:=b;
  If a>b then begin b:=(x+y)/2; a:=x*y end
        else begin a:=(x+y)/2; b:=x*y end;

  а можно запомнить в дополнительных переменных полусумму и произведение:

  Program prim_6;
  Var a,b,x,y:real;
  Begin
    Write('введите два числа');
    Readln(a,b);
    X:=a*b;        {запомним значение произведения}
    Y:=(x+y)/2;    {запомним значение полусуммы}
    If a>b then begin b:=y; a:=x end
      else begin a:=y; b:=x end;
    Writeln (' a= ',a:0:2,' b=',b:0:2);
    Readln
  End

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

  Если условие выполняется, то говорят, что соответствующее выражение истинно, если не выполняется - выражение ложно. Для построения сложных условий в Паскале имеются четыре логических операции:
  NOT - отрицание (НЕТ),
  AND - логическое умножение (И),
  OR  - логическое сложение (ИЛИ),
  XOR - исключающее "или".

  Результаты логических операций для различных значений операндов приведены в таблице, где использованы обозначения: Т- true (истина), F - false (ложь).

A

B

Not A

A and B

A or B

A xor B

T

T

F

T

T

F

T

F

F

F

T

T

F

F

T

F

F

F

F

T

T

F

T

T

  где А и В результат операции отношения.

  Приоритеты логических операций: 1) not; 2) and; 3) or; 4) xor.

  Примеры логических выражений:
  a) (0<x) AND (x<=1)
  b) (a=0) OR (abs(x)<5)
  c) NOT (x=y)

  Операции отношений имеют более низкий приоритет, чем логические операции, поэтому их следует заключать в скобки при использовании с логическими операциями.

  Из переменных, констант, сравнений, логических операций и скобок можно строить логические выражения.

  Рассмотрим следующую задачу:
  Имеется прямоугольное отверстие со сторонами а и b и кирпич с ребрами х, у, z. Требуется определить пройдет ли кирпич в отверстие.

  Решение.
  Кирпич имеет три грани, каждую из которых мы можем повернуть на 90 градусов, т.е. для каждой грани надо проверит два случая. Итого шесть. Получаем условие:

  (a>x)and(b>y) or (b>x) and (a>y) or
  (a>x) and(z>y) or (z>x) and(a>y) or
  (b>x) and(z>y) or (z>x) and(b>y)

  Код программы:
  Program prim_8;
  Var a,b,x,y,z:integer;
      F:boolean;
  Begin
    Write('введите размеры отверстия');
    Readln(a,b);
    Write('введите размеры кирпича');
    Readln(x,y,z);
    If (a>x)and(b>y) or (b>x)and(a>y) or (a>x)and(z>y) or
       (z>x)and(a>y) or (b>x)and(z>y) or (z>x)and(b>y)
    then Writeln ('Кирпич пролезет в отверстие')
      Else Writeln ('Кирпич не пролезет в отверстие');
    Readln
  End

Тренировочные задания к уроку.
1. Установить, истинны или ложны следующие условия:
   (A=0) and not (B=0) or not (a=0) and (B=0) при
  a) А=0, В=0
  b) А=0, В=1

2. Ввести три числа. Выбрать и напечатать наибольшее из них.

3. Написать программу, которая требует ввода времени дня и, в зависимости от введенного значения, желает доброго утра, доброго дня, доброго вечера или спокойной ночи.

4. Даны три числа. Найдите наибольшее значение их суммы и произведения.

5. Даны три числа а, b, с. удвойте эти числа, если они являются упорядоченными по возрастанию.

6. Проверьте, есть ли среди трех заданных чисел равные.

7. Дано двузначное число. Определить:
  a) какая из его цифр больше, первая или вторая;
  b) одинаковы ли его цифры.

8. Известны площади круга и квадрата. Определить:
  a) Уместится ли круг в квадрате;
  b) Уместится ли квадрат в круге.

9. Дано трехзначное число. Выяснить, является ли оно палиндромом ("перевертышем"), т.е. таким числом, десятичная запись которого читается одинаково слева направо и справа налево.


 

Скачано с www.znanio.ru