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

Логические выражения (условия) в языке Паскаль используются в операторах 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.

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

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

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

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

Булевы типы

Результатом логического выражения всегда является булево (логическое) значение. Булев тип данных (boolean) может принимать только два значения (true или false). Эти величины упорядочены следующим образом: false < true. Это значит, что данные булевого типа являются не только результатом операций отношения, но и могут выступать в роли операндов операции отношения. Также к ним можно применять функции 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 предусмотрены следующие логические операции:

true xor true = false
true xor false = true
false xor true = true
false xor false = false

  • Конъюнкция (логическое умножение, пересечение) - 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

  • Дизъюнкция (логическое сложение, объединение) – or. Выражение a or b дает значение false только в том случае, если a и b имеют значение false. Во всех остальных случаях результат – true.

    true or true = true true or false = true false or true = true false or false = false

  • Отрицание (инверсия) – not. Выражение not a имеет значение, противоположное значению a.

    not true = false not false = true

  • Исключающее ИЛИ – xor. Выражение a xor b дает значение true только в том случае, когда только один из операндов имеет значение true.

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

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

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

Стандартные булевские функции

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

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

Лабораторная работа № 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. Определить можно ли в него вписать окружность.

Программное обеспечение - Паскаль Операции языка Паскаль

Операции языка Паскаль

Операции задают действия над операндами. В языке паскаль бывают операции бинарные и унарные. Унарные операции содержат 1 операнд, перед которым стоит знак операции. Бинарные операции имеют 2 операнда, между которыми ставится знак или символ операции. По характеру выполнения действий операции языка паскаль можно разделить на 7 групп :

  • арифметические;
  • отношения;
  • логические;
  • строковые;
  • разрядные, сдвиговые;
  • операции над множествами;
  • операции взятия адреса.

Арифметические операции. В языке паскаль имеется одна унарная операция называемая присвоением знака минус и вторая присвоение знака плюс. Бинарными являются:

  • сложение (+);
  • вычитание (-);
  • умножение (*);
  • вещественное деление (/);
  • целочисленное деление (div);
  • остаток от целочисленного деления (mod).

В языке паскаль имеются три операции деления, результатом операции деления (/) будет число с дробной частью, результатом операции div - только целое число, а результатом операции mod - остаток от целочисленного деления. Примеры:

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

Операции отношения. К ним относятся все бинарные операции:

  • больше;
  • меньше;
  • больше или равно;
  • меньше или равно
  • равно
  • неравно.

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

  • символьный - в операциях отношения сравниваются коды символов в соответствии с кодовой таблицей;
  • логический - используются значения True и False, принимающие значения 1 - истина и 0 - ложь соответственно;
  • строковый - составной тип, состоящий из символьного типа. Поэтому при использовании строк осуществляется сравнение последовательных символов в двух строках.

Например:

5.6 > 7 — False;

‘П’ < ‘Б’ — False;

‘Петров’ > ‘Иванов’ — True;

‘Иванов’ < ‘Иван’ — False.

Результатом логических операций будут логические значения True или False.

Унарные: NOT - отрицание.

Бинарные: AND - умножение (и); OR - сложение (или); XOR - сложение на модуль 2 (исключающее ИЛИ).

Операндами логического выражения могут быть только операции логического типа.

Строковые операции. Конкатенация (сцепление) - бинарная операция. Операндами могут быть только переменные строкового типа. Результат строковый, а действие операции заключается в сцеплении двух строк в одну:

A:=‘Иванов’

B:= ‘Александр’

Результат: Иванов Александр.

Последовательность выполнения операций на языке паскаль определяется 3 факторами:

  • приоритет операций;
  • порядок расположения операций;
  • использование скобок.

Уровни приоритетов выполняемых операций:

  • операции первой приоритетности, выполняются в первую очередь;
  • операции низшей приоритетности, выполняются последнюю очередь;
  • операции с равными приоритетами, выполняются слева направо в порядке их записи.

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

На занятии происходит знакомство с логическим типом Boolean в Паскале. Рассмотривается алгоритм того, как находится минимальное и максимальное число в Паскале


Сайт сайт предоставляет лабораторные задания по теме для закрепления теоретического материала и получения практических навыков программирования на Паскале. Краткие теоретические сведения позволят получить необходимый для этого минимум знаний. Решенные наглядные примеры и лабораторные задания изложены по мере увеличения их сложности, что позволит с легкостью изучить материал с нуля. Желаем удачи!

Мы уже научились писать программы, основанные на линейных алгоритмах, в Паскале. И даже уже составляем нелинейные алгоритмы — с ветвлением — в которых используются , которые принимают значения true или false .

Значения логического типа:

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

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

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

Для записи результата логического выражения используется специальная логическая переменная, которая имеет в Паскале тип boolean и может также принимать одно из двух значений - true или false .

Посмотрим, как работает та же самая задача с логической переменной:

1 2 3 4 5 6 7 8 var A: integer ; b: boolean ; begin A : = 5 ; b: = A > 0 ; write (b) ; {Будет выведено True} end .

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

Пример: Рассмотрим пример работы с типом boolean в pascal:

var a:boolean; begin a:=true; if a=true then writeln ("истина") else writeln("ложь"); end.

Для создания сложных условий используются специальные : and , or , not и xor .

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

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

Пример: Запросить два целых: X, Y. Проверить истинность высказывания: «Только одно из чисел X и Y является нечетным»

program Boolean; var x,y: integer; c:boolean; begin write("Введите X, Y: "); read(x,y); c:= (Odd(x)) xor (Odd(y)); writeln("Только одна из переменных X и Y имеет нечетное значение - ", c); end.

Рассмотрим еще одно решение задачи в Паскале с использованием логической переменной:

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

Рассмотрим решение более сложной задачи с переменной логического типа:

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

Показать решение:

1 2 3 4 5 6 7 8 9 10 11 12 13 const a= 348 ; var d_n, s_n, e_n: integer ; flag: boolean ; begin flag: = false ; s_n: = a div 100 ; d_n: = ((a mod 100 ) div 10 ) ; e_n: = a mod 10 ; if (s_n<>d_n) and (d_n<>e_n) and (e_n<>s_n) then flag: = true ; writeln (flag) ; end .

const a=348; var d_n, s_n, e_n: integer; flag:boolean; begin flag:=false; s_n:=a div 100; d_n:=((a mod 100)div 10); e_n:=a mod 10; if (s_n<>d_n) and (d_n<>e_n) and (e_n<>s_n) then flag:=true; writeln(flag); end.

Здесь каждый разряд получается путем использования операций деления нацело и взятия остатка от деления: s_n — это цифра сотого разряда, d_n — цифра десятого разряда, e_n — единицы.

Задача Boolean 3. Дано целое N > 0 . С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра «2». Если имеется, то вывести TRUE , если нет - вывести FALSE .

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

Минимальное и максимальное число в Паскале

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

  • Представим ситуацию, что мы жарим пирожки, и уже нажарили целую большую горку; теперь надо выбрать из них самый большой, т.е. в нашем случае максимальный.
  • Берем верхний пирожок, т.е. первый, и говорим, что он пока самый большой и откладываем его в сторону.
  • Затем берем второй и сравниваем с самым большим, если этот второй пирожок оказывается больше — откладываем его на место «бывшего самого большого» и говорим, что теперь он самый большой.
  • Берем следующий и повторяем действия. Так осуществляем данную процедуру со всеми пирожками.

Иногда в качестве первоначального максимума назначается самое малое возможное число (в зависимости от контекста задачи). А в качестве минимума — напротив, самое большое возможное число. Например, если сказано, что необходимо найти максимальное / минимальное среди положительных чисел, меньших 1000, то:

max: = 0 ; min: = 1000 ;