boolean

Урок 7. Логика в Паскаль. Тип Boolean.

Здравствуйте, дорогие читатели нашего сайта! Сегодня, мы поговорим о логических переменных типа Boolean в Паскаль, логических операциях и решим пять задач.

Для чего нужна логика в Паскаль? Вы, я надеюсь, уже научились писать простейшие линейные программы, и сейчас, наверняка, задаетесь вопросом, как же написать нелинейную программу? Для того чтобы программа была нелинейной в Паскале, как и в других языках программирования, используют логические выражения, которые принимают значения true или false. То есть, на место любого отношения в Паскале ставится  true или false. Например,

var 
  A: integer;
begin
  A := 5;
  write(A > 0); {Будет выведено True.}
end.

Список операторов отношения:

  • больше: >
  • меньше: <
  • больше либо равно: >=
  • меньше либо равно: <=
  • равно: =
  • неравно: <>

Для того чтобы записать результат логического выражения, нам требуется специальная переменная. Эта переменная будет иметь тип boolean, она может принимать два значения — true или  false. Как создавать простые условие вы уже поняли, но как создавать сложные условия? Для этого используются специальные логические операции: and, or, not и xor. Давайте разберем каждую операцию отдельно и составим таблицы истинности. Примем за 1 —  true,а за 0 — false.

And, или конъюнкция.

And
Логическое умножение, истинно только тогда, когда оба простых высказываний истинны.

Or, или дизъюнкция.

or
Истинно, если хотя бы одно простое высказывание истинно.

Xor, или строгая дизъюнкция.

Xor
Истинно, если ровно одно из двух простых высказываний истинно.

Not, или инверсия.

Not
Если высказывание истинно, то его отрицание — ложь и наоборот.

 

Задачи Boolean.

Закрепим полученные знания, решив пару задачек.

Boolean1°. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».

program Boolean1;

var
  a: integer;

begin
  write('Введите число A: ');
  read(a);
  writeln('Число A является положительным - ', a > 0); {Простое высказывание.}
end.

Boolean2. Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».

Для того чтобы узнать, является ли данное число нечетным в Паскале предусмотрена специальная функция Odd, которая возвращает true, если число нечетное и false, если число четное.

program Boolean2;

var
  a: integer;
  b : boolean;

begin
  write('Введите число A: ');
  read(a);
  b := Odd(a);
  writeln('Число A является нечетным - ', b); { Можно обойтись и без b }
end.

Boolean3. Дано целое число A. Проверить истинность высказывания: «Число A является четным».

Для того чтобы узнать является ли число нечетным, используем уже известную нам функцию, затем инвертируем результат.

program Boolean3;

var
  a: integer;
  b : boolean;

begin
  write('Введите число A: ');  { 6 }
  read(a);
  b := Odd(a); { False }
  writeln('Число A является четным - ', not b); { True }
end.

Boolean7°. Даны три целых числа: A, B, C. Проверить истинность высказывания: «Число B находится между числами A и C».

program Boolean7;

var
  a, b, c: integer;
  b1, b2: boolean;

begin
  write('Введите число A, B, C: ');
  read(a, b, c);
  b1 := (B > A) and (B < C);   
  b2 := (B > C) and (B < A);  { Надо учитывать оба варианта }
  writeln('Число B находится между числами A и C - ', b1 or b2);
end.

Boolean10°. Даны два целых числа: A, B. Проверить истинность высказывания: «Ровно одно из чисел A и B нечетное». 

Используем xor.

program Boolean10;

var
  a,b: integer;
  c :boolean;

begin
  write('Введите число A, B: ');
  read(a,b);
  c := (Odd(a)) xor (Odd(b)); { Сколько скобок 🙂 }
  writeln('Ровно одно из чисел A и B нечетное - ', c); 
  end.

Boolean23. Дано четырехзначное число. Проверить истинность высказывания: «Данное число читается одинаково слева направо и справа налево».

Используем знания, полученные в этом уроке.

Итак, данная задача проверяет является ли введенное четырехзначное число палиндромом. Наверняка, самый известный палиндром — фраза Мальвины: «А роза упала на лапу Азора.» (Попробуйте прочитать это предложение справа налево)

program Boolean23;

var
  a, b, c, d, e, f: integer;
  b1, b2: boolean;

begin
  write('Введите число четырехзначное число: ');
  read(e);
  a := e div 1000;
  b := e mod 1000 div 100;
  c := e mod 100 div 10;
  d := e mod 100 mod 10;
  f := d * 1000 + c * 100 + b * 10 + a;
  writeln('Данное число является палиндромом - ', f = e);
end.

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

  • berl0ga

    http://i1.wp.com/learnpascal.ru/wp-content/uploads/2014/01/Untitled_artwork-2.png Ошибочка вышла, третья и четвертая строка

    • danilkonon

      спасибо. сейчас поправим.

      • berl0ga

        Также бы хотелось задания для «самостоятельной работы», т.к . просто смотря на чужое решение — мало чего поймешь. Оставлять в конце каждого урока две-три задачи и решение под спойлер, пусть думают

        • danilkonon

          так у нас же отдельная рубрика есть — решение задач.

          • berl0ga

            А в решении задач не хватает комментирования кода, ибо для новичка, если он не смог решить задачу, важно не решение, а объяснение кода

          • danilkonon

            не понятно, что комментировать. там же только ввод и вывод 🙂

          • berl0ga

            Всяко непонятное новичку abs, подумает что тормозить собрались)

          • danilkonon

            спасибо за совет

        • Омар Шайхалиев

          сначала решай сам, потом сверяй решение

  • danilkonon

    в планах. но планы слегка амбициозные. если интересно, то наши планы изложены в «о сайте»
    «

    • berl0ga

      Спасибо, следить буду за вашим сайтом, в амбициозных планах есть видеоуроки(лекции), к примеру?)

      • danilkonon

        нет 🙂

  • KOKS1999

    В самом первом примере у вас ошибка.Где write(a>5); надо write(i>5);
    write(A > 0); {Будет выведено True.}

  • Leo

    Исправьте, пожалуйста «var
    i: integer;
    begin
    i := 5;
    write(А > 0); {Будет выведено True.}
    end.», а то сразу вводит в ступор 😀

  • Вася

    Бля, про палиндромы пример, что это за цифры там, нахуй они там нужны.

  • Speed

    В 10 задании в строке пропущена выводимая переменная с

    writeln(‘Ровно одно из чисел A и B нечетное — ‘, );

  • Semyon

    var
    a, b, c, d, e, f: integer;
    b1, b2: boolean;

    begin
    write(‘Введите число четырехзначное число: ‘);
    read(e);
    a := e div 1000;
    b := e mod 1000 div 100;
    c := e mod 100 div 10;
    d := e mod 100 mod 10;
    f := d * 1000 + c * 100 + b * 10 + a;
    writeln(‘Данное число является палиндромом — ‘, f = e);
    end.
    Зачем нужно вводить переменные Boolean?

    • alen_marzz

      Незачем. На скорую руку отредактированный старенький код. Обычное дело 🙂

  • petanisimov

    var
    a: integer;
    b1: boolean;
    begin
    read(a);
    b1 := (a div 1000 = a mod 10) and (a div 100 mod 10 = a mod 100 div 10);
    writeln(b1);
    end.


    Переменных не многовато в примере?

  • Nikita

    Нужно написать конъюНкция вместо конъюкция.

  • влас сухотерин

    что значит odd?

    • odd переводится с английского «нечётный».