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

Логические выражения (условия) в языке Паскаль используются в операторах if и при организации повторений, а именно в циклах while и repeat–until.

Примеры логических выражений:

1 . a > 2*b

2 . sin(sqr(a)) <= exp(cos(b))–2.3

3 . (a <= 3) and (b > a/2)

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

(<, >, <= , >=, =, <>)

и логических операций

and (логическое и),

or (логическое или),

not (логическое отрицание),

xor (исключающее или).

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

24 Pascal. Условный оператор if. Формат и принцип действия.

Структура условного оператора if имеет вид:

If <условие> then <оператор1> else <оператор2>;

где if, then, else – зарезервированные слова (если, тогда, иначе);

<условие> – логическое выражение;

<оператор1> и <оператор2> – любые операторы языка Паскаль (простые или составные).

Пример : if sin(а)>b then y:= a

Оператор if работает следующим образом:

<условие> (true (истина) или false (ложь)).

Если значение <условие> – true (истина), то выполняется <оператор1>, а <оператор2> игнорируется.

Если значение <условие> – false (ложь), то выполняется <оператор2>, а <оператор1> игнорируется.

Сокращенная конструкция оператора if

if < условие > then < оператор >;

Примеры : if a< 2*b then y: = a/2 ;

if a< 2*b then begin

B примере 1 оператор y:=a/2; является простым оператором языка Паскаль.

В примере 2 оператор begin y:=2*a; writeln(y) end; является составным оператором языка Паскаль.

Составной оператор – это группа операторов, заключенная в операторные скобки begin end:

begin <операторы>;

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

Оператор if сокращенной конструкции выполняется следующим образом.

Вычисляется значение логического выражения <условие>.

Если результатом является значение true, управление передается на <оператор>.

Если результатом условия является значение false, <оператор> игнорируется, и управление выполнением программы передается на следующий оператор в программе.

25 Pascal. Оператор выбора case…of. Формат и принцип действия. Оператор выбора Case

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

Данный оператор имеет структуру:

case <выражение-селектор> of

<список1>: <оператор1>;

<список2>: <оператор2>;

<список N >: <оператор N >

else <оператор>

Здесь <выражение-селектор> – выражение или, в частном случае, переменная любого скалярного типа, кроме вещественного (обычно это переменная типа byte, integer, boolean или char);

<список1, список2, ... списокN> – списки констант, значения которых может принимать выражение-селектор. Каждый из списков может представлять собой константу, диапазон констант или несколько констант (диапазонов), разделенных запятой.

Конструкция else в операторе case может отсутствовать.

Оператор case выполняется следующим образом.

    Анализируется значение выражения-селектора.

    Если значение выражения-селектора не совпадает ни с одной из констант в списках констант, управление передается оператору, стоящему после слова else, а в случае отсутствия слова else, оператору, следующему за оператором case.

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

Выражение состоит из операндов (operand – элемент данных, участвующий в операции), объединенных знаками операций. Операндами могут быть константы, переменные и вызовы функций. Тип значения выражения определяется типом его операндов и выполняемыми над ними операциями. Например,

  • выражение: b > a + 10 ;
  • b - левый операнд, a + 10 - правый операнд, > - операция отношения; результат имеет логический тип.

Важно: величины, составляющие выражение, должны быть совместимых типов.

Операции могут быть унарными и бинарными. Унарная операция относится к одному операнду и записывается перед ним (например, -х ), бинарная – выражает отношение между двумя операндами и записывается между ними (например, a + b ). Операции определяют действия над операндами, выполняемыми в соответствии с приоритетами:

  • Унарные -, not, ...
  • Операции типа умножения: *, /, div, mod, and, …
  • Операции типа сложения: +, -, or, …
  • Операции отношения: =, =, …

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

В текущем уроке разберем операции отношения, арифметические и логические операции, остальные - будем рассматривать по мере изучения материала.

Арифметические выражения и операции

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

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

К арифметическим операциям относятся:

  • унарные операции: + , - для вещественных и целых чисел;
  • бинарные операции: +, -, *, / для вещественных и целых чисел;
  • бинарные операции: div, mod для целых чисел.

Выражения и операции отношения

Выражение, состоящее из операндов, связанных операцией отношения, называется выражением отношения.

Две операции отношения = и применяются ко всем типам, остальные - к операндам простого типа и к строкам.

Операции отношения, путем сравнения двух операндов, позволяют определить истинно (true ) или ложно (false) значение выражения.

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

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

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

К логическим операциям, которые подчиняются стандартным правилам алгебры логики , относятся:

  • унарная операция not ;
  • бинарные операции and, or, xor .

Логические операции и, рассмотренные выше, операции отношения широко применяются для реализации разветвляющихся и циклических алгоритмов.

Здравствуйте, дорогие читатели нашего сайта! Сегодня, мы поговорим о логических переменных типа 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, или конъюнкция.


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

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

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

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


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

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


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

Задачи Boolean.

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

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

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

. Дано целое число 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.

. Дано целое число 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.

. Даны три целых числа: 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.

. Даны два целых числа: 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.

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

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

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

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.

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

Понятие типа данных в Турбо Паскаль

Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связана такая важная характеристика, как ее тип.

Тип определяет:

· возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;

· внутреннюю форму представления данных в ЭВМ;

· операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.

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

Иерархия типов в языке Паскаль такая:

· Простые

o Порядковые

§ Логические

§ Символьные

§ Перечисляемые

§ Интервальные

o Вещественные

· Структуированные

o Массивы

o Множества

· Указатели

Логические типы данных

Прямое отношение к программированию имеет дисциплина, которая называется математической логикой. Основу математической логики составляет алгебра логики, или исчисление высказываний. Под высказыванием понимается любое утверждение, в отношении которого можно однозначно сказать, истинно оно или ложно. Например, «Луна - спутник Земли» - истинно; «5>3» - истинно; «Москва- столица Китая» - ложно; «1=0» - ложно. Истина или ложь являются логическими величинами. Логические значения приведенных выше высказываний однозначно определены; другими словами, их значения являются логическими константами. Логическое значение неравенства x < 0, где x – переменная, является переменной величиной. В зависимости от значения x оно может быть либо истиной, либо ложью. В связи с этим возникает понятие логической переменной.

Основы формального аппарата математической логики создал в середине XIX в. английский математик Джордж Буль. В его честь исчисление высказываний называют булевой алгеброй, а логические величины – булевскими.

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

Имеются три основные логические операции: отрицание, конъюнкция (логическое умножение) и дизъюнкция (логическое сложение).

Операция отрицания обозначается в математической логике значком и читается как НЕ. Это одноместная операция.

Например, (x = y) читается «не (x равно y)». В результате получится истина если x не равно y, и ложь, если x равно y. Отрицание изменяет значение логической величины на противоположное.

Операция конъюнкции обозначается значком & и читается как И. Это двухместная операция. Например, (x > 0) & (x < 1) читается «x больше 0 и x меньше 1». Данная логическая формула примет значение истина, если x Є (0,1), и ложь – в противном случае. Следовательно, результат конъюнкции – истина, если истинны оба операнда. Знак операции дизъюнкции V читается как ИЛИ. Например, (x = 0) V (x = 1) читается «x равно 0 или x равно 1». Формула дает истину, если x – двоичная цифра (0 или 1). Следовательно, дизъюнкция дает в результате истину, если хотя бы один операнд - истина.

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

Все реализации языка Pascal, в том числе и Turbo Pascal, вплоть до версии 6.0 содержали только один логический тип данных Boolean, элементы которого могут принимать лишь два вышеуказанных логических значения. В Turbo Pascal версии 7.0 добавлены еще три логических типа данных: ByteBool, WordBool и LongBool.

По аналогии с целыми и символьными типами, подразделяющимися на физические и логические, естественно предположить, что ByteBool, WordBool и LongBool - физические типы, Boolean - логический. Но в данном случае это не совсем так. Все четыре типа различны. Для Turbo Pascal логический тип Boolean более предпочтителен, так как он использует меньшее количество памяти, остальные типы были введены для обеспечения совместимости разрабатываемых программ с Windows, в которой значению False соответствует 0, а значению True – любое, отличное от 0, число.

Данные логического типа занимают один байт памяти. При этом значению false соответствует нулевое значение байта, а значению true соответствует любое ненулевое значение байта. Например: false всегда в машинном представлении: 00000000; true может выглядеть таким образом: 00000001 или 00010001 или 10000000.

Однако следует иметь в виду, что при выполнении операции присваивания переменной логического типа значения true, в соответствующее поле памяти всегда записывается код 00000001. В этих операциях операнды логического типа рассматриваются как единое целое - вне зависимости от битового состава их внутреннего представления. Кроме того, следует помнить, что результаты логического типа получаются при сравнении данных любых типов. Логические константы языка Turbo Pascal TRUE (истина) и FALSE (ложь) можно использовать в явном виде или обозначать именем в разделе CONST, например:

Логическая переменная тоже может принимать два значения TRUE и FALSE. Логические переменные должны быть описаны предложением:

Var <имя_переменной>: boolean; (Variableпеременная).

Например: var L,A,C:boolean;

Следует обратить внимание на то, что в разделе описания переменных необходимо определить тип переменных, используемых в программе. Например,

Var P,Q,R: Integer;

В разделе операторов логическому типу переменной можно присвоить значение логической константы, например:

L1:=true; L2:=false; L3:=L1;

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

Пример переменных с булевым значением

Лабораторная работа № 3

Тема: Логический тип (boolean).

В языке Паскаль имеются две логические константы: TRUE(истина) и FALSE(ложь). Логическая переменная может принять любое из этих значений и имеет тип boolean. Логические данные широко используются при проверке правильности некоторых условий и при сравнении величин. Результат может оказаться “истинным” или “ложным”. Над логическими данными допускаются следующие операции:

Булевские операции:

Оператор

Операция

Тип операндов

Тип результата

отрицание

логическое И

логическое ИЛИ

логическое исключающее ИЛИ

Результаты операций над логическими данными сведены в таблицу:

(A) and (B)

(A) or (B)

Из данных булевского типа, операций сравнения и булевских операций строятся логические выражения, имеющие значения типа boolean. Например: (c10) or (d

При вычислении значений булевских выражений необходимо учитывать порядок выполнения булевских операций. Наивысший приоритет имеет операция NOT, затем операция AND и затем операция OR. Операции сравнения имеют самый низкий приоритет.

Переменные булевского типа описываются в разделе описания перемененных с помощью стандартного идентификатора BOOLEAN.

Пример: a, R1, f: boolean;.

В языке Паскаль существуют функции, которые принимают тип boolean:

1. ODD(A) - значение истинно, когда А - не четное число.

2. EOLN - значение истинно, если конец строки текстового файла.

3. EOF - значение истинно, если конец текстового файла.

Пример программы:

var a,b,c:integer;

writeln(‘введите три целых числа’);

write(‘s=’,s);

В результате выполнения программы переменной s присвоится значение TRUE или FALSE, в зависимости от того было ли логическое выражение ложным или истинным, и значение переменной s выведется на экран, т.е. на экране появится TRUE или FALSE.

Задания к лабораторной работе № 3.

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

    Для произвольных вещественных чисел a, b и c определить, имеет ли квадратное уравнение хотя бы одно вещественное решение.

    Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр.

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

    Определить, есть ли среди первых трех цифр из дробной части заданного положительного вещественного числа цифра 0.

    Определить, есть ли среди цифр заданного трехзначного числа одинаковые.

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

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

    Определить, больше ли квадрат данного числа квадратного корня другого данного числа.

    Длины сторон выпуклого четырехугольника выражаются числами a,b,c,d. Определить можно ли в него вписать окружность.

Задания к лабораторной работе № 3.

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

    Для произвольных вещественных чисел a, b и c определить, имеет ли квадратное уравнение хотя бы одно вещественное решение.

    Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр.

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

    Определить, есть ли среди первых трех цифр из дробной части заданного положительного вещественного числа цифра 0.

    Определить, есть ли среди цифр заданного трехзначного числа одинаковые.

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

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

    Определить, больше ли квадрат данного числа квадратного корня другого данного числа.

    Длины сторон выпуклого четырехугольника выражаются числами a,b,c,d. Определить можно ли в него вписать окружность.