Pascaler
О проекте Теоретический материал Тестирование Архив задач
Войти в личный кабинет



О проекте


Преподавателям


Тема: Логический тип данных. Логические операции not, and, or. Нахождение значений логических выражений. Самостоятельная работа.

Переменные логического типа описываются посредством идентификатора Boolean. Они могут принимать только два значения - False (ложь) и True (истина). Описываются они также в разделе описания переменных.

Var
  Flag : Boolean;

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

В языке Турбо Паскаль имеются логические операции, применяемые к переменным логического типа. Это операции not, and, or и хor. В этой теме Вы рассмотрите три логические операции. Обозначения и результаты этих операций приведены в таблице. Рассмотрите ее.

Операция not (не) имеет один операнд и образует его логическое отрицание. Результат операции not есть False, если операнд истинен, и True, если операнд имеет значение ложь. Так,

not True False (неправда есть ложь)

not False True (неложь есть правда)

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

Результат операции or (или) есть истина, если какой-либо из ее операндов истинен, и ложен только тогда, когда оба операнда ложны.

Задание. Попробуйте определить значение булевых операций для высказываний:

  1. Школьник на зимних каникулах остается дома или уезжает куда-либо отдыхать.


  2. Филипп Киркоров является певцом и комбайнером.


  3. Школьниками являются мальчики и девочки..

Логические операции, операции отношения и арифметические операции часто встречаются в одном выражении. При этом отношения, стоящие слева и справа от знака логической операции, должны быть заключены в скобки, поскольку логические операции имеют более высокий приоритет. Вообще принят следующий приоритет операций:

  • not
  • and, *, /, div, mod
  • or, +, -
  • операции отношения..

. Логическую операцию and еще называют логическим умножением, а логическую операцию or - логическим сложением.

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

A or B and not (A or B)

Сначала выполняется заключенная в скобки операция or, а затем операции not, and, or. Если подставить вместо переменных А и В значения True и False, то, используя уже рассмотренный порядок действий, получим значение всего выражения равное True.

Задание. Запишите в тетрадь и вычислите значения выражений при a=10, b=20, c=true, d=false:

  • (a>5) and (b>5) and (a<20) and (b<30);
  • not (a<15) or not (b<30);
  • c or d and (b=20);

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

Например, после выполнения оператора write (5>2) на экран будет выведено True.

Самостоятельная работа

Выберите с учителем задание для выполнения самостоятельной работы из ниже предложенных упражнений.

  1. Вычислите значения выражения:

    а) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

    б) k mod 7 = k div5-1 при k=15;

    в) odd(trunc(10*p)) при p=0.182;

    г) not odd(n) при n=0;

    д) t and (p mod 3=0) при t=true, p=101010;

    е) (x*y<>0) and (y>x) при x=2, y=1;

    ж) (x*y<>0) or (y>x) при x=2, y=1;

    з) a or (not b) при a=False, b=True;

  2. Записать на Паскале отношение, истинное при выполнении указанного условия и ложное в противном случае:

    а) целое k делится на 7;

    б) точка (х, у) лежит вне круга радиуса R с центром в точке (1,0);

    в) натуральное число N является квадратом натурального числа;

    г) 0<x<1;

    д) x=max(x,y,z);

    е) хотя бы одна из логических переменных а и b имеет значение True;

    ж) обе логические переменные а и b имеют значение True.

  3. Указать порядок выполнения операций при вычислении выражений:

    а) a and b or not c and d;

    б) (x>=0) or not c and d.

  4. Вычислить следующие выражения при a=True, b=False:

    а) a or b and not a;

    б) (a or b) and not a;

    в) not a and b;

    г) not (a and b)

  5. Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:

    а) х принадлежит отрезку [0, 1];

    б) х лежит вне отрезка [0, 1];

    в)* х принадлежит отрезку [2, 5] или [-1, 1];

    г)* х лежит вне отрезков [2, 5] и [-1, 1];

    д) каждое из чисел х, у, z положительно;

    ж) ни одно из чисел х, у, z не является положительным;

    з) только одно из чисел х, у, z положительно;

    и) логическая переменная а имеет значение True, логическая переменная b имеет значение False;

    к)* год с порядковым номером у является високосным (год високосный, если его номер кратен 4, однако из кратных 100 високосными являются лишь кратные 400, например, 1700, 1800 и 1900 - невисокосные годы, 2000 - високосный).

  6. Нарисовать на плоскости (х,у) область, в которой и только в которой истинно указанное выражение:

    а)* (y>=x) and (y+x>=0) and (y<=1);

    б) (sqr(x)+sqr(y)<1) or (y>0) and (abs(x)<=1);

    в) (trunc(y)=0 and (round(x)=0);

    г)* (abs(x)<=1)>(abs(y)>=1);

    д) (sqr(x)+sqr(y)<=4)=(y<=x).

  7. Имеется условный оператор:
    if d<>10
      then
        writeln (‘ура!’)
      else
        writeln (‘плохо...’);

    Можно ли заменить его следующими операторами:

    а) if d=10
          then
            writeln (‘ура!’)
          else
            writeln (‘плохо...’);

    б) if not (d=10)
          then
            writeln (‘ура!’)
          else
            writeln (‘плохо...’);

      
    в) if not (d=10)
          then
            writeln (‘плохо...’)
          else
            writeln (‘ура!’);

    г) if not (d<>10)
          then
            writeln (‘плохо...’)
          else
            writeln (‘ура!’);

  8. Какими будут значения переменных j, k после выполнения условного оператора:
    if j>k
      then
        j:=k-2
      else
        dec (k,2);
    если исходные значения переменных равны:
      а) j=3, k=5;
      b) j=3, k=3;
      c) j=3, k=2.

Примечание. В результате выполнения оператора dec (k,2) значение переменной k уменьшается на 2.

2003—2012 © Группа «Vimedia»
Проект «Pascaler» — лучший на ХI Всероссийской конференции молодых исследователей с международным участием «Шаг в будущее», Россия, Москва, 12 – 16 апреля 2004г.