Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Урок из серии Pas ABC.doc
Скачиваний:
44
Добавлен:
17.08.2019
Размер:
694.78 Кб
Скачать

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

В языке программирования Паскаль для работы с логическими операндами введены следующие логические операции:

  1. not - отрицание (инверсия);

  2. and - конъюнкция (логическое умножение);

  3. or - дизъюнкция (логическое сложение, объединение);

  4. xor - исключающее или.

Результат работы операций задается следующей таблицей истинности (таблицей значений):

Значение операнда

Значение операции

a

b

not a

a and b

a or b

a xor b

false

false

true

false

false

false

false

true

true

false

true

true

true

false

false

false

true

true

true

true

false

true

false

false

Запомнить эту таблицу очень просто. Операция отрицание меняет значение операнда на противоположное.

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

Для того чтобы логическое сложение дало истину, нужно, чтобы хотя бы один операнд был истинен.

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

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

Вообще, в логическом выражении принят следующий приоритет операций:

  1. NOT

  2. AND,*, DIV, MOD

  3. OR, XOR, +, -

  4. операции сравнения

Порядок выполнения операций можно изменить скобками. Например, в логическом выражении A OR B AND NOT(A OR B) сначала выполняется заключенная в скобки операция OR, а затем операции NOT, AND, OR.

Стандартные логические функции

  • odd(x) = true, если x нечетный (xцелый тип);

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

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

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

В языке Паскаль нет возможности ввода логических данных с помощью оператора read. Однако предусмотрен вывод значений переменных логического типа с помощью оператора write. В этом случае для идентификаторов FALSE и TRUE автоматически отводятся по 6 позиций: две - перед словом TRUE и одна - перед FALSE.

Решение задач

  1. Определить значение логического выражения:(-3>=5) Or Not(7<9) And(0<3)

  2. Чему равны значения переменных a и b после выполнения последовательности действий: a := 15 Div (16 Mod 7); b := 34 Mod a *5 - 29 Mod 5*2; a := 4 * 5 Div 3 Mod 2; b :=4 * 5 Div ( 3 Mod 2); a := a*b; b:= b*b.

Логические выражения в качестве условий применяются в условных операторах (if и case ), а также в операторах цикла.

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

Урок из серии: "Язык программирования Паскаль"

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

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

В качесве условия выбора используются логические выражение.

Полный условный оператор if: If <условие> Then <оператор 1> Else <оператор 2>;

Неполный условный оператор: If <условие> Then <оператор>;

Алгоритм выполнения полного условного оператора:

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

  2. Если условие истинно, то выполняется оператор 1, указанный после слова Then(то).

  3. Если условие ложно, то выполняется оператор 2, записанный после слова Else (иначе)

В неполном ветвлении ветвь Else отсутствует, в случае невыполнения условия ничего делать не надо. Происходит переход к следующему оператору.

Если в качестве оператора должна выполняться серия операторов, то они объединяются в операторные скобки Begin-End.

Применение условного оператора if рассмотрим на примерах.

Пример 1. С клавиатуры ввести два числа. Найти большее из них и вывести его на экран.

program primer6_1;

var a, b, m:integer;

begin

writeln('Введите два числа: ');

readln(a, b);

if a>b then m:=a

else m:=b;

writeln('Большее из них: ', m);

end.

Пример 2. Даны три отрезка. Можно ли из них построить треугольник?

Решение. Для любого треугольника сумма его двух сторон должна быть больше третьей стороны (неравенство треугольника).

Дано: a, b, c – стороны предполагаемого треугольника. Требуется сравнить длину каждого отрезка с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольник из таких отрезков не построить.

program primer6_2;

var a, b, c: integer;

begin

write (' Введите длины отрезков: ');

readln (a,b,c);

if (a < b+c) and (b < a+c) and (c < a+b) then

writeln ('Можно построить треугольник.')

else

writeln ('Нельзя построить треугольник.');

end.

Решение задач.

  1. Найти наибольшее из трех данных чисел.

  2. Запишите условный оператор, в котором значение переменной вычисляется по формуле: a + b, если a - нечетное и a*b, если a - четное.

  3. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от 0.

  4. После выполнения операторов a := 0; If a<>0 Then; a := 2 значение переменной равно двум. Объясните почему.

  5. Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае - сообщение ''M на N нацело не делится''.

Урок из серии: "Язык программирования Паскаль"

В разветвляющихся алгоритмах для выбора продолжения алгоритма наряду с условным оператором if используется оператор выбора case. Если один оператор If может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов.Оператор выбора case состоит из выражения, называемого селектором (selection - выбор альтернативы) и списка операторов, каждому из которых предшествует список констант выбора (список может состоять из одной константы).

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

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

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

. . .

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

[else <оператор>]

end;

Здесь ветвь else заключается в квадратные скобки, что говорит о том, что эта часть оператора выбора не обязательна.

Алгоритм выполнения оператора выбора:

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

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

  3. Если значение выражения не совпадает ни с одной константой, то выполняется оператор, стоящий после else, если он есть, либо управление передается на оператор end и выполнение программы продолжается.

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

Правила использования оператора:

  1. Тип константы должен совпадать с типом выражения

  2. В этой конструкции перед else стоит точка с запятой.

  3. Все константы в альтернативах должны быть уникальны в пределах оператора выбора (т.е. повторение констант в альтернативах не допускается).

Пример1. По введенному номеру дня недели вывести на экран его название.

program primer7_1; var day:byte; begin writeln('Введите номер дня недели: '); readln(day); case day of 1: writeln('Понедельник'); 2: writeln('Вторник'); 3: writeln('Среда'); 4: writeln('Четверг'); 5: writeln('Пятница'); 6: writeln('Суббота'); else writeln('Воскресенье'); end; end.

Решение задач.

  1. Составьте программу, которая переводила бы арабские цифры в римские.

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

До встречи на следующем уроке.

Урок из серии: "Язык программирования Паскаль"

Все примеры программ, приведенные в уроках, выполнены в среде программирования Pascal ABC.

Система Pascal ABC ориентирована на школьников и студентов младших курсов. Это в достаточно простая и дружественная среда программирования. Во время работы используются три основных окна: окно редактора кода, окно ввода и окно вывода.