Перейти к содержимому

Какие значения могут принимать логические выражения

  • автор:

Условный оператор

Проверьте истинность второго отношения при подстановке следующих значений:

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

Примечание. Название “булевы” произошло от имени математика Джорджа Буля, разработавшего в XIX веке булеву логику и алгебру логики.

Определение. Переменная, которая может принимать одно из двух значений: True (правда) или False (ложь), называется булевой (логической) переменной. Например,

К:=True;
Flag:=False;
Second:=a+sqr(x)>t

Задача. Вычислить значение модуля и квадратного корня из выражения (х-у).

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

Koren:=Sqrt(x-y);
Modul:=Abs(x-y)

В этом случае программа будет иметь вид:

Program Znachenia;
Uses
Crt;
Var
x, y : integer;
Koren, Modul : real;
Begin
ClrScr;
write (‘Введите значения переменных х и у через пробел ‘);
readln (x, y);
Koren:=Sqrt(x-y);
Modul:=Abs(x-y);
write (‘Значение квадратного корня из выражения (х-у) равно ‘, Koren);
write (‘Значение модуля выражения (х-у) равно ‘, Modul);
readln;
End.

Казалось бы, задача решена. Но мы не учли области допустимых значений для нахождения квадратного корня и модуля. Из курса математики Вы должны знать, что можно найти модуль любого числа, а вот значение подкоренного выражения должно быть неотрицательно (больше или равно нулю).

Поэтому наша программа имеет свою допустимую область исходных данных. Найдем эту область. Для этого запишем неравенство х-у>=0, то есть х>=у. Значит, если пользователем нашей программы будут введены такие числа, что при подстановке значение этого неравенства будет равно True, то квадратный корень из выражения (х-у) извлечь можно. А если значение неравенства будет равно False, то выполнение программы закончится аварийно.

Задание. Наберите текст программы. Протестируйте программу со следующими значениями переменных и сделайте вывод.

  1. х=23, у=5;
  2. х=-5, у=15;
  3. х=8, у=8.

Каждая программа, насколько это возможно, должна осуществлять контроль за допустимостью величин, участвующих в вычислениях. Здесь мы сталкиваемся с разветвлением нашего алгоритма в зависимости от условия. Для реализации таких условных переходов в языке Паскаль используют операторы If и Case, а также оператор безусловного перехода Goto.

Рассмотрим оператор If.

Для нашей задачи нужно выполнить следующий алгоритм:

если х>=у,
то вычислить значение квадратного корня,
иначе выдать на экран сообщение об ошибочном введении данных.

Запишем его с помощью оператора If. Это будет выглядеть так.

if x>=y
then
Koren:=Sqr(x-y)
else
write (‘Введены недопустимые значения переменных’);

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

В общем случае полная форма конструкции условного оператора имеет вид:

Условный оператор работает по следующему алгоритму.

Сначала вычисляется значение логического выражения, расположенного за служебным словом IF. Если его результат истина, выполняется , расположенный после слова THEN, а действия после ELSE пропускаются; если результат ложь, то, наоборот, действия после слова THEN пропускаются, а после ELSE выполняется .

Управляющая структура if может показаться негибкой, так как выполняемые действия могут быть описаны только одним оператором. Иногда может потребоваться выполнение последовательности операторов. В этом случае хотелось бы заключить всю последовательность в воображаемые скобки. В Паскале предусмотрен этот случай.

Если в качестве оператора должна выполниться серия операторов, то они заключаются в операторные скобки begin-end. Конструкция Begin . End называется составным оператором.

if
then
begin
оператор 1;
оператор 2;
.
end
else
begin
оператор 1;
оператор 2;
.
end;

Определение. Составной оператор — объединение нескольких операторов в одну группу. Группа операторов внутри составного оператора заключается в операторные скобки (begin-end).

begin
оператор 1;
оператор 2;
end;

С учетом полученных знаний преобразуем нашу программу.

Program Znachenia;
Uses
Crt;
Var
x, y : integer;
Koren, Modul : real;
Begin
ClrScr;
write (‘Введите значения переменных х и у через пробел ‘);
read (x, y);
if x>=y
then
begin
Koren:=Sqr(x-y);
Modul:=Abs(x-y);
write (‘Значение квадратного корня из выражения (х-у) равно ‘, Koren);
write (‘Значение модуля выражения (х-у) равно ‘, Modul);
end
else
write (‘Введены недопустимые значения переменных’);
readln;
End.

Составным оператором является и такой оператор

begin
S:=0;
end.

Cимвол “;” в данном случае разделяет оператор присваивания S:=0 и пустой оператор.

Пустой оператор не влечет никаких действий и в записи программы никак не обозначается.

Например, составной оператор

включает лишь один пустой оператор.

Если Вы обратили внимание, программа на языке Паскаль всегда содержит один составной оператор — раздел операторов программы.

Внимание! Перед служебным словом Else разделитель (точка с запятой) не ставится.

Отметим, что большинство операторов в программах на языке Паскаль заканчиваются точкой с запятой, но после некоторых операторов точка с запятой не ставится. Сформулируем общие правила употребления точки с запятой:

    Каждое описание переменной и определение константы заканчиваются точкой с запятой.

Рассмотрим еще один пример.

Задача. Вывести на экран большее из двух данных чисел.

Program Example1;
Var
x, y : integer;
Begin
writeln(‘Введите 2 числа ‘);
readln(x,y);
if x>y
then
writeln (x)
else
writeln (y);
readln;
End.

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

Неполная форма условного оператора имеет следующий вид.

Тогда если выражение, расположенное за служебным словом IF. в результате дает истину, выполняются действия после слова THEN, в противном случае эти действия пропускаются.

Задача. Составить программу, которая, если введенное число отрицательное, меняет его на противоположное.

Program Chisla;
Var
x : integer;
Begin
writeln(‘Введите число ‘);
readln(x);
if x then
x:=-x;
writeln (x);
readln;
End.

Какие значения могут принимать логические выражения

  • slide3

В языке Pascal кроме уже изученных нами числовых типов ещё есть логический, который называется Boolean. Переменные этого типа занимают `1` байт оперативной памяти и могут принимать всего два значения – true и false (истина и ложь).

Автор
Мерзляков Василий Владимирович 451 статья

§9. Логический тип переменных

В языке Pascal кроме уже изученных нами числовых типов ещё есть логический, который называется Boolean. Переменные этого типа занимают `1` байт оперативной памяти и могут принимать всего два значения – true и false (истина и ложь). Логическим переменным можно присваивать значения точно так же, как и числовым. Так же можно выводить их значения на экран, а вот вводить их с клавиатуры нельзя!

В языке Pascal определены `6` операций сравнения, результатом которых является логическое значение. Это операции: «больше» (>) , «больше или равно» (>=) , «меньше» (<) , «меньше или равно» (<=) , «равно» (=) , и «не равно» (<>) . Например, операция 5 > 2 выдаст значение true , а операция x<>3 выдаст значение true , если переменная `X` имеет любое значение, кроме `3`. Сравнивать можно не только числа (причём как целые, так и вещественные), но и логические значения. При этом считается, что значение true больше, чем значение false .
Помимо операций сравнения ещё существуют и логические операции: AND (конъюнкция, логическое умножение, операция «И»), OR (дизъюнкция, логическое сложение, операция «ИЛИ»), NOT (отрицание, инверсия), XOR (строгая дизъюнкция, исключающее «ИЛИ», сложение по модулю `2`). В скобках указаны возможные названия данных операций в алгебре логики. Операнды этих операций должны быть логического типа. Результат вычислений также будет логический. При этом операции AND, OR, XOR имеют по два операнда, а операция NOT – всего один, который записывается справа от названия операции. Названия логических операций являются ключевыми словами языка. Приведём таблицы результатов логических операций для всех возможных значений операндов (в алгебре логики такие таблицы называются таблицами истинности):

y x and y

x or y

Логический результат даёт также стандартная функция odd(x) , которая применяется к целочисленному аргументу `x`:
odd(x) = true, если `x` нечётно;
odd(x) = false, если `x` чётно.
Приоритет операций в логическом выражении следующий:
1) Операция NOT .
2) Операции группы умножения AND, *, / ,div, mod
3) Операции группы сложения OR, XOR, +, —
4) Операции сравнения >, =,
Операции одного приоритета выполняются слева направо. Операции в круглых скобках имеют более высокий приоритет, чем операции вне скобок.

Записать логическое выражение, истинное в случае, когда переменная `X` имеет значение из отрезков `[2,5]` или `[-1,1]`.

Логические выражения в информатике

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

31 августа 2023

· Обновлено 7 сентября 2023

Материал на этой странице не был проверен методистами Skysmart и может содержать ошибки. Если вы заметили неточность, напишите нам на skysmart.blog@skyeng.ru.

Основные логические операции

  1. Инверсия (отрицание) — это операция, которая преобразует значение истина в значение ложь и наоборот. Обозначается чаще всего символом ¬ или !. Если A — это некоторое логическое выражение, то инверсия этого выражения будет обозначаться как ¬A или !A. Пример:
    • Если A = истина, то ¬A = ложь.
    • Если A = ложь, то ¬A = истина.
  2. Конъюнкция (логическое «И») — это операция, которая возвращает значение истина только в том случае, если оба её операнда имеют значение истина. Обозначается символом ∧ или &&. Таблица истинности конъюнкции:
    • A = истина, B = истина -> A ∧ B = истина.
    • A = истина, B = ложь -> A ∧ B = ложь.
    • A = ложь, B = истина -> A ∧ B = ложь.
    • A = ложь, B = ложь -> A ∧ B = ложь.
  3. Дизъюнкция (логическое «ИЛИ») — это операция, которая возвращает значение истина, если хотя бы один из её операндов имеет значение истина. Обозначается символом ∨ или ||. Таблица истинности дизъюнкции:
    • A = истина, B = истина -> A ∨ B = истина.
    • A = истина, B = ложь -> A ∨ B = истина.
    • A = ложь, B = истина -> A ∨ B = истина.
    • A = ложь, B = ложь -> A ∨ B = ложь.

Стартуй в программировании прямо сейчас
Реши свою первую настоящую задачу на JavaScript и поделись крутым результатом с друзьями

Стартуй в программировании прямо сейчас

Влияние на работу компьютера

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

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

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

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

Логические выражения и операции. Булевый тип данных

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

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

В Паскале предусмотрены следующие операторы отношений:

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

Булевы типы

Результатом логического выражения всегда является булево (логическое) значение. Булев тип данных ( boolean ) может принимать только два значения: true (истина) или false (ложь). Эти величины упорядочены следующим образом: false < true .

var x, y: boolean; begin x := true; y := false; writeln('x = ', x); writeln('y = ', y); writeln('x < y = ', x < y); end.
x = TRUE y = FALSE x < y = FALSE

Операции and , or , not (применяемые к булевским операндам) дают булевские значения.

Это значит, что данные булевого типа являются не только результатом операций отношения, но и могут выступать в роли операндов операции отношения. Также к ним можно применять функции ord , succ , pred , процедуры inc и dec .

Значение типа boolean занимает в памяти 1 байт.

В примере шести булевым переменным присваиваются значения простых логических выражений. Значения, хранимые в таких переменных, затем выводятся на экран.

Булевый тип данных в Паскаль

Кроме типа boolean в Pascal введены еще три булевых типа — bytebool (занимает 1 байт), wordbool (занимает 2 байта) и longbool (занимает 4 байта).

Для всех булевых типов значению false соответствует 0, а значению true — любое ненулевое значение. Логические переменные, принадлежащие разным булевым типам, ведут себя по-разному при выполнении над ними операций. Ниже приводится пример, реализованный на языке FreePascal (в комментариях отображается результат).

var b:boolean; wb:wordbool; begin b:= false; b:= pred(b); writeln(b,' ',ord(b)); // TRUE 255 writeln(b=true); // TRUE wb:= false; wb:= pred(wb); writeln(wb,' ',ord(wb)); // TRUE -1 b:= true; b:= succ(b); writeln(b,' ',ord(b)); // TRUE 2 wb:= true; wb:= succ(wb); writeln(wb,' ',ord(wb)); // FALSE 0 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
true or true = true true or false = true false or true = true false or false = false
not true = false not false = true
true xor true = false true xor false = true false xor true = true false xor false = false

Последовательность выполнения логических операторов: not, and, or.

В языке Паскаль сначала выполняются логические операторы ( and , or , xor , not ), а уже потом операторы отношений ( > , >= , < , , = ), поэтому не нужно забывать расставлять скобки в сложных логических выражениях.

Логические операции в Pascal

Сложные булевы выражения могут не обрабатываться до конца, если продолжение вычислений не изменит результат. Если булево выражение в обязательном порядке нужно обрабатывать до конца, то это обеспечивается включением директивы компиляции .

Стандартные функции, возвращающие булевые значения

  • odd(x) = true, если x нечетный ( x целый);
  • eoln(x) = true, если встретился конец строки текстового файла x ;
  • eof(x) = true, если встретился конец файла x .

В остальных случаях эти функции принимают значение false .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *